Class: SiteInspector::Endpoint::Accessibility
- Inherits:
-
Check
- Object
- Check
- SiteInspector::Endpoint::Accessibility
show all
- Defined in:
- lib/site-inspector/checks/accessibility.rb
Defined Under Namespace
Classes: Pa11yError
Constant Summary
collapse
- STANDARDS =
{
wcag2a: 'WCAG2A', wcag2aa: 'WCAG2AA',
wcag2aaa: 'WCAG2AAA',
section508: 'Section508'
}.freeze
- DEFAULT_LEVEL =
:error
- REQUIRED_PA11Y_VERSION =
'~> 5.0'
Instance Attribute Summary
Attributes inherited from Check
#endpoint
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Check
enabled=, #host, #initialize, #inspect, #name, name, #request, #response
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_sym, *arguments, &block) ⇒ Object
92
93
94
95
96
97
98
|
# File 'lib/site-inspector/checks/accessibility.rb', line 92
def method_missing(method_sym, *arguments, &block)
if standard?(method_sym)
run_pa11y(method_sym)
else
super
end
end
|
Class Method Details
.enabled? ⇒ Boolean
36
37
38
|
# File 'lib/site-inspector/checks/accessibility.rb', line 36
def enabled?
@@enabled && pa11y?
end
|
.pa11y ⇒ Object
40
41
42
43
44
45
46
|
# File 'lib/site-inspector/checks/accessibility.rb', line 40
def pa11y
@pa11y ||= begin
node_bin = File.expand_path('../../../node_modules/pa11y/bin', File.dirname(__FILE__))
path = ['*', node_bin].join(File::PATH_SEPARATOR)
Cliver::Dependency.new('pa11y.js', REQUIRED_PA11Y_VERSION, path: path)
end
end
|
.pa11y? ⇒ Boolean
30
31
32
33
34
|
# File 'lib/site-inspector/checks/accessibility.rb', line 30
def pa11y?
return @pa11y_detected if defined? @pa11y_detected
@pa11y_detected = !!pa11y.detect
end
|
.pa11y_version ⇒ Object
23
24
25
26
27
28
|
# File 'lib/site-inspector/checks/accessibility.rb', line 23
def pa11y_version
@pa11y_version ||= begin
output, status = run_command('--version')
output.strip if status.exitstatus.zero?
end
end
|
.run_command(args) ⇒ Object
48
49
50
|
# File 'lib/site-inspector/checks/accessibility.rb', line 48
def run_command(args)
Open3.capture2e(pa11y.detect, *args)
end
|
Instance Method Details
#check ⇒ Object
Also known as:
to_h
85
86
87
88
89
|
# File 'lib/site-inspector/checks/accessibility.rb', line 85
def check
@check ||= run_pa11y(standard)
rescue Pa11yError
nil
end
|
#errors ⇒ Object
81
82
83
|
# File 'lib/site-inspector/checks/accessibility.rb', line 81
def errors
check[:results].count { |r| r['type'] == 'error' } if check
end
|
#level ⇒ Object
53
54
55
|
# File 'lib/site-inspector/checks/accessibility.rb', line 53
def level
@level ||= DEFAULT_LEVEL
end
|
#level=(level) ⇒ Object
57
58
59
60
61
|
# File 'lib/site-inspector/checks/accessibility.rb', line 57
def level=(level)
raise ArgumentError, "Invalid level '#{level}'" unless %i[error warning notice].include?(level)
@level = level
end
|
#respond_to_missing?(method_sym, include_private = false) ⇒ Boolean
100
101
102
103
104
105
106
|
# File 'lib/site-inspector/checks/accessibility.rb', line 100
def respond_to_missing?(method_sym, include_private = false)
if standard?(method_sym)
true
else
super
end
end
|
#standard ⇒ Object
67
68
69
|
# File 'lib/site-inspector/checks/accessibility.rb', line 67
def standard
@standard ||= STANDARDS.keys.first
end
|
#standard=(standard) ⇒ Object
71
72
73
74
75
|
# File 'lib/site-inspector/checks/accessibility.rb', line 71
def standard=(standard)
raise ArgumentError, "Unknown standard '#{standard}'" unless standard?(standard)
@standard = standard
end
|
#standard?(standard) ⇒ Boolean
63
64
65
|
# File 'lib/site-inspector/checks/accessibility.rb', line 63
def standard?(standard)
STANDARDS.key?(standard)
end
|
#valid? ⇒ Boolean
77
78
79
|
# File 'lib/site-inspector/checks/accessibility.rb', line 77
def valid?
check[:valid] if check
end
|