bbc-a11y 0.0.9 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +3 -7
- data/README.md +7 -3
- data/Rakefile +1 -2
- data/bin/a11y +2 -1
- data/features/README.md +4 -0
- data/features/exit_status.feature +14 -0
- data/features/specify_url_via_cli.feature +10 -0
- data/features/specify_url_via_config.feature +16 -0
- data/features/step_definitions/steps.rb +13 -0
- data/features/support/env.rb +5 -0
- data/features/support/web_server.rb +30 -0
- data/features/support/web_server/missing_header.html +13 -0
- data/features/support/web_server/perfect.html +14 -0
- data/lib/bbc/a11y.rb +1 -0
- data/lib/bbc/a11y/cli.rb +19 -5
- data/lib/bbc/a11y/configuration.rb +6 -1
- data/lib/bbc/a11y/cucumber_runner.rb +25 -5
- data/lib/bbc/a11y/cucumber_support.rb +9 -2
- data/lib/bbc/a11y/cucumber_support/disabled_w3c.rb +37 -0
- data/lib/bbc/a11y/cucumber_support/matchers.rb +21 -0
- data/lib/bbc/a11y/cucumber_support/page.rb +16 -6
- data/lib/bbc/a11y/version +1 -1
- data/spec/bbc/a11y/cli_spec.rb +27 -0
- data/spec/bbc/a11y/configuration_spec.rb +15 -3
- data/spec/bbc/a11y/cucumber_support/matchers_spec.rb +52 -0
- data/spec/bbc/a11y/cucumber_support/page_spec.rb +34 -10
- data/{features → standards}/01_core-purpose.md +0 -0
- data/{features → standards}/02_validation.feature +0 -0
- data/{features → standards}/03_javascript.feature +0 -0
- data/{features → standards}/04_language.feature +0 -0
- data/{features → standards}/05_page_title.feature +0 -0
- data/{features → standards}/06_main_landmark.feature +0 -0
- data/{features → standards}/07_headings.feature +0 -0
- data/{features → standards}/08_title_attribute.feature +0 -0
- data/{features → standards}/09_tabindex.feature +8 -1
- data/standards/10_form_labels.feature +88 -0
- data/{features → standards}/11_visible-on-focus.md +0 -0
- data/{features → standards}/13_colour-contrast.md +0 -0
- data/{features → standards}/14_colour-meaning.md +0 -0
- data/{features → standards}/15_focusable-controls.md +0 -0
- data/{features → standards}/16_table.md +0 -0
- data/{features → standards}/17_control-styles.md +0 -0
- data/{features → standards}/18_focus-styles.md +0 -0
- data/{features → standards}/19_form-interactions.md +0 -0
- data/{features → standards}/20_image-alt.md +0 -0
- data/{features → standards}/21_min-font-sizes.md +0 -0
- data/{features → standards}/22_resize-zoom.md +0 -0
- data/{features → standards}/step_definitions/core_content_steps.rb +0 -0
- data/standards/step_definitions/form_steps.rb +6 -0
- data/{features → standards}/step_definitions/language_steps.rb +0 -0
- data/{features → standards}/step_definitions/page_steps.rb +6 -2
- data/{features → standards}/step_definitions/w3c_steps.rb +0 -0
- data/{features → standards}/support/capybara.rb +0 -0
- data/{features → standards}/support/skipper.rb +0 -0
- data/{features → standards}/support/world.rb +0 -0
- data/{features → standards}/support/world_extender.rb +0 -0
- metadata +82 -86
- data/features/10_form-labels.md +0 -47
@@ -19,6 +19,13 @@ module BBC
|
|
19
19
|
browser.title
|
20
20
|
end
|
21
21
|
|
22
|
+
def all_elements_matching(*selectors)
|
23
|
+
results = selectors.map { |selector| browser.all(selector) }
|
24
|
+
# A Capybara::Result looks like an array, but it's not. Turn them into plain
|
25
|
+
# old nodes
|
26
|
+
results.map { |result| result.map { |element| element } }.flatten
|
27
|
+
end
|
28
|
+
|
22
29
|
def must_have_lang_attribute
|
23
30
|
expect(browser).to have_css('html[lang]')
|
24
31
|
end
|
@@ -57,12 +64,15 @@ module BBC
|
|
57
64
|
expect(bad_nodes).to be_empty
|
58
65
|
end
|
59
66
|
|
60
|
-
def
|
61
|
-
|
62
|
-
expect(
|
63
|
-
|
64
|
-
|
65
|
-
|
67
|
+
def must_not_have_any_elements_with_tabindex_greater_than(max)
|
68
|
+
bad_nodes = browser.all('[tabindex]').select { |node| node['tabindex'].to_i > max }
|
69
|
+
expect(bad_nodes).to be_empty
|
70
|
+
end
|
71
|
+
|
72
|
+
def must_not_have_elements_with_tabindex(tabindex, except: [])
|
73
|
+
nodes_with_tabindex = browser.all('[tabindex]').select { |node| node['tabindex'].to_i == tabindex }
|
74
|
+
bad_nodes = nodes_with_tabindex.reject { |node| except.include? node.tag_name }
|
75
|
+
expect(bad_nodes).to be_empty
|
66
76
|
end
|
67
77
|
|
68
78
|
def to_s
|
data/lib/bbc/a11y/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.11
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'bbc/a11y/cli'
|
2
|
+
|
3
|
+
module BBC
|
4
|
+
module A11y
|
5
|
+
describe CLI do
|
6
|
+
it "uses a single URL from the CLI args if given" do
|
7
|
+
runner = double
|
8
|
+
expect(runner).to receive(:new) do |settings, cucumber_args|
|
9
|
+
expect(settings.pages.length).to eq 1
|
10
|
+
expect(settings.pages[0].url).to eq "http://foo.com"
|
11
|
+
double(call: nil)
|
12
|
+
end
|
13
|
+
CLI.new(double, double, double, ["http://foo.com"]).call(runner)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "splits a11y and cucumber args" do
|
17
|
+
runner = double
|
18
|
+
expect(runner).to receive(:new) do |settings, cucumber_args|
|
19
|
+
expect(settings.pages.length).to eq 1
|
20
|
+
expect(cucumber_args).to eq ["--tags", "~@wip"]
|
21
|
+
double(call: nil)
|
22
|
+
end
|
23
|
+
CLI.new(double, double, double, ["http://foo.com", "--", "--tags", "~@wip"]).call(runner)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -19,15 +19,27 @@ module BBC::A11y
|
|
19
19
|
expect(BBC::A11y.configuration.pages[1].url).to eq "two.html"
|
20
20
|
end
|
21
21
|
|
22
|
-
it "allows you to specify scenarios to be skipped for a given page" do
|
22
|
+
it "allows you to specify scenarios to be skipped for a given page (using regexp)" do
|
23
23
|
BBC::A11y.configure do
|
24
24
|
page "three.html" do
|
25
|
-
skip_scenario
|
25
|
+
skip_scenario /javascript/
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
page_settings = BBC::A11y.configuration.pages[0]
|
30
|
+
test_case = double(name: "View the page with javascript disabled")
|
31
|
+
expect(page_settings.skip_test_case?(test_case)).to be_truthy
|
32
|
+
end
|
33
|
+
|
34
|
+
it "allows you to specify scenarios to be skipped for a given page (using string)" do
|
35
|
+
BBC::A11y.configure do
|
36
|
+
page "three.html" do
|
37
|
+
skip_scenario "javascript"
|
26
38
|
end
|
27
39
|
end
|
28
40
|
|
29
41
|
page_settings = BBC::A11y.configuration.pages[0]
|
30
|
-
test_case = double(name: "
|
42
|
+
test_case = double(name: "View the page with javascript disabled")
|
31
43
|
expect(page_settings.skip_test_case?(test_case)).to be_truthy
|
32
44
|
end
|
33
45
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'bbc/a11y/cucumber_support/matchers'
|
2
|
+
require 'capybara'
|
3
|
+
|
4
|
+
module BBC::A11y::CucumberSupport
|
5
|
+
describe 'matchers' do
|
6
|
+
let(:page) do
|
7
|
+
Capybara.string(html)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#have_title_attribute_or_associated_label_tag' do
|
11
|
+
context 'a form field with a title attribute' do
|
12
|
+
let(:element) { Capybara.string(<<-HTML).find('input') }
|
13
|
+
<input type="text" name="q" title="Search the BBC" />
|
14
|
+
HTML
|
15
|
+
it 'passes' do
|
16
|
+
expect(element).to have_title_attribute_or_associated_label_tag
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'a form field with a label, associated by `for` attribute' do
|
21
|
+
let(:element) { Capybara.string(<<-HTML).find('input') }
|
22
|
+
<label for="search">Search the BBC</label>
|
23
|
+
<input type="text" id="search" name="q" />
|
24
|
+
HTML
|
25
|
+
it 'passes' do
|
26
|
+
expect(element).to have_title_attribute_or_associated_label_tag
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'a form field within a label' do
|
31
|
+
let(:element) { Capybara.string(<<-HTML).find('input') }
|
32
|
+
<label for="search">
|
33
|
+
Search the BBC
|
34
|
+
<input type="text" name="q" />
|
35
|
+
</label>
|
36
|
+
HTML
|
37
|
+
it 'passes' do
|
38
|
+
expect(element).to have_title_attribute_or_associated_label_tag
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "a form field without associated label tag or title attribute" do
|
43
|
+
let(:element) { Capybara.string(<<-HTML).find('input') }
|
44
|
+
<input type="text" name="name" />
|
45
|
+
HTML
|
46
|
+
it 'fails' do
|
47
|
+
expect(element).not_to have_title_attribute_or_associated_label_tag
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -7,6 +7,22 @@ module BBC::A11y::CucumberSupport
|
|
7
7
|
Page.new(Capybara.string(html))
|
8
8
|
end
|
9
9
|
|
10
|
+
describe '#all_elements_matching' do
|
11
|
+
context 'with multiple matches' do
|
12
|
+
let(:html) { <<-HTML }
|
13
|
+
<html>
|
14
|
+
<ul>
|
15
|
+
<li><p></li>
|
16
|
+
<li></li>
|
17
|
+
</ul>
|
18
|
+
</html>
|
19
|
+
HTML
|
20
|
+
it 'returns each element that matches' do
|
21
|
+
expect(page.all_elements_matching('li', 'p').length).to eq 3
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
10
26
|
describe '#must_have_lang_attribute' do
|
11
27
|
context 'with no lang attribute' do
|
12
28
|
let(:html) { <<-HTML }
|
@@ -101,8 +117,8 @@ module BBC::A11y::CucumberSupport
|
|
101
117
|
end
|
102
118
|
end
|
103
119
|
|
104
|
-
describe "#
|
105
|
-
context "a
|
120
|
+
describe "#must_not_have_any_elements_with_tabindex_greater_than" do
|
121
|
+
context "an element with a tabindex value of 1" do
|
106
122
|
let(:html) { <<-HTML }
|
107
123
|
<html>
|
108
124
|
<body>
|
@@ -111,13 +127,21 @@ module BBC::A11y::CucumberSupport
|
|
111
127
|
</html>
|
112
128
|
HTML
|
113
129
|
|
114
|
-
it "fails" do
|
115
|
-
expect { page.
|
130
|
+
it "fails for zero" do
|
131
|
+
expect { page.must_not_have_any_elements_with_tabindex_greater_than 0 }.
|
132
|
+
to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "passes for 1" do
|
136
|
+
expect { page.must_not_have_any_elements_with_tabindex_greater_than 0 }.
|
116
137
|
to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
117
138
|
end
|
118
139
|
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe "#must_not_have_elements_with_tabindex" do
|
119
143
|
|
120
|
-
context "
|
144
|
+
context "an element that's in the list of exceptions" do
|
121
145
|
let(:html) { <<-HTML }
|
122
146
|
<html>
|
123
147
|
<body>
|
@@ -127,11 +151,11 @@ module BBC::A11y::CucumberSupport
|
|
127
151
|
HTML
|
128
152
|
|
129
153
|
it "passes" do
|
130
|
-
expect { page.
|
154
|
+
expect { page.must_not_have_elements_with_tabindex(0, except: 'a') }.not_to raise_error
|
131
155
|
end
|
132
156
|
end
|
133
157
|
|
134
|
-
context "
|
158
|
+
context "an element not in the list of exceptions" do
|
135
159
|
let(:html) { <<-HTML }
|
136
160
|
<html>
|
137
161
|
<body>
|
@@ -141,12 +165,12 @@ module BBC::A11y::CucumberSupport
|
|
141
165
|
HTML
|
142
166
|
|
143
167
|
it "fails" do
|
144
|
-
expect { page.
|
168
|
+
expect { page.must_not_have_elements_with_tabindex(0, except: 'a') }.
|
145
169
|
to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
146
170
|
end
|
147
171
|
end
|
148
172
|
|
149
|
-
context "a
|
173
|
+
context "a different tabindex value" do
|
150
174
|
let(:html) { <<-HTML }
|
151
175
|
<html>
|
152
176
|
<body>
|
@@ -156,7 +180,7 @@ module BBC::A11y::CucumberSupport
|
|
156
180
|
HTML
|
157
181
|
|
158
182
|
it "passes" do
|
159
|
-
expect { page.
|
183
|
+
expect { page.must_not_have_elements_with_tabindex(0, except: 'a') }.not_to raise_error
|
160
184
|
end
|
161
185
|
end
|
162
186
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -41,4 +41,11 @@ Feature: Correctly use `tabindex` attributes
|
|
41
41
|
|
42
42
|
Scenario: Check all tabindex values
|
43
43
|
When I visit the page
|
44
|
-
Then there should be no elements with a tabindex attribte of
|
44
|
+
Then there should be no elements with a tabindex attribte of 1 or greater
|
45
|
+
And there should be no elements with a tabindex attribute of 0 except for:
|
46
|
+
| a |
|
47
|
+
| button |
|
48
|
+
| input |
|
49
|
+
| select |
|
50
|
+
| textarea |
|
51
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
Feature: Correctly use form labels
|
2
|
+
|
3
|
+
Form fields that allow input (`select`, and `textarea` elements, and all
|
4
|
+
`input` element types other than image, submit, reset, button, or hidden)
|
5
|
+
**must** have an associated label, either in the form of a `<label>` element
|
6
|
+
or, for simple forms when no visible label is required, a `title` attribute.
|
7
|
+
|
8
|
+
Rationale
|
9
|
+
---------
|
10
|
+
|
11
|
+
Form labels are important for all users in order to understand what the form
|
12
|
+
field is however they are essential for speech output users who cannot easily
|
13
|
+
infer what the form element is by looking at the surrounding content.
|
14
|
+
|
15
|
+
While there are WAI-ARIA attributes that allow for labelling of forms it is
|
16
|
+
not supported in all versions of assistive technologies that BBC users could
|
17
|
+
reasonably expect to be able to use.
|
18
|
+
|
19
|
+
Techniques
|
20
|
+
----------
|
21
|
+
|
22
|
+
Pass:
|
23
|
+
|
24
|
+
```
|
25
|
+
<label for="search">Search the BBC</label>
|
26
|
+
<input type="text" id="search" name="q" />
|
27
|
+
|
28
|
+
<label for="search">
|
29
|
+
Search the BBC
|
30
|
+
<input type="text" name="q" />
|
31
|
+
</label>
|
32
|
+
|
33
|
+
<input type="text" name="q" title="Search the BBC" />
|
34
|
+
```
|
35
|
+
|
36
|
+
Fail:
|
37
|
+
|
38
|
+
```
|
39
|
+
<input type="text" name="name" title="Name" />
|
40
|
+
<input type="text" name="email" title="Email" />
|
41
|
+
|
42
|
+
<input type="text" name="q" value="Search the BBC" />
|
43
|
+
|
44
|
+
<input type="text" name="q" aria-label="Search the BBC" />
|
45
|
+
|
46
|
+
<input type="text" name="q" placeholder="Search the BBC" />
|
47
|
+
```
|
48
|
+
|
49
|
+
Tests
|
50
|
+
-----
|
51
|
+
..
|
52
|
+
| Procedure | Expected Result | Type |
|
53
|
+
| --------- | --------------- | ---- |
|
54
|
+
| Use WAVE Toolbar (or similar) to identify accessibility errors errors | There must be no 'ERROR: Form label missing' or 'ARIA label or description' messages | Tool |
|
55
|
+
| Check every `select`, and `textarea` elements, and all `input` element types other than image, submit, reset, button, or hidden | Every element must have either an associated `<label>` or a title attribute | Manual / Automated |
|
56
|
+
..
|
57
|
+
Notes
|
58
|
+
-----
|
59
|
+
..
|
60
|
+
Hopefully the second test can be automated. Associated labels are those that
|
61
|
+
wrap the element (`<label>Foo <input type="text" /></label>`) and those that
|
62
|
+
have a `for` attribute value that matches the `id` attribute of a field element
|
63
|
+
(`<label for="foo">Bar</label><input type="text" id="foo" />`). In the second
|
64
|
+
case the `<label>` can wrap the form element, but does not have to.
|
65
|
+
|
66
|
+
Scenario: Validate use of labels
|
67
|
+
When I visit the page
|
68
|
+
Then the following form elements must have a title attribute or associated label tag:
|
69
|
+
| select |
|
70
|
+
| textarea |
|
71
|
+
| input[type=checkbox] |
|
72
|
+
| input[type=color] |
|
73
|
+
| input[type=date] |
|
74
|
+
| input[type=datetime] |
|
75
|
+
| input[type=datetime-local] |
|
76
|
+
| input[type=email] |
|
77
|
+
| input[type=file] |
|
78
|
+
| input[type=month] |
|
79
|
+
| input[type=number] |
|
80
|
+
| input[type=password] |
|
81
|
+
| input[type=radio] |
|
82
|
+
| input[type=range] |
|
83
|
+
| input[type=search] |
|
84
|
+
| input[type=tel] |
|
85
|
+
| input[type=text] |
|
86
|
+
| input[type=time] |
|
87
|
+
| input[type=url] |
|
88
|
+
| input[type=week] |
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
Then(/^the following form elements must have a title attribute or associated label tag:$/) do |table|
|
2
|
+
selectors = table.raw.flatten
|
3
|
+
page.all_elements_matching(*selectors).each do |element|
|
4
|
+
expect(element).to have_title_attribute_or_associated_label_tag
|
5
|
+
end
|
6
|
+
end
|
File without changes
|
@@ -41,6 +41,10 @@ Then(/^any form fields with associated labels do not have a title attribute$/) d
|
|
41
41
|
page.must_have_no_form_fields_with_label_and_title
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
page.
|
44
|
+
Given(/^there should be no elements with a tabindex attribte of (\d+) or greater$/) do |max_tabindex|
|
45
|
+
page.must_not_have_any_elements_with_tabindex_greater_than max_tabindex.to_i
|
46
|
+
end
|
47
|
+
|
48
|
+
Given(/^there should be no elements with a tabindex attribute of (\d+) except for:$/) do |tabindex, elements|
|
49
|
+
page.must_not_have_elements_with_tabindex(tabindex.to_i, except: elements.raw.flatten)
|
46
50
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbc-a11y
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wynne
|
@@ -9,146 +9,146 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: 2.0.0.rc
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - ~>
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 2.0.0.rc
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rspec
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - ~>
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '3.0'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '3.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: capybara
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: poltergeist
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: w3c_validators
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: cld
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- -
|
95
|
+
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: colorize
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- -
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- -
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: aruba
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- -
|
123
|
+
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: pry
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- -
|
130
|
+
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '0'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- -
|
137
|
+
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: rake
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- -
|
144
|
+
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- -
|
151
|
+
- - ">="
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
description: A tool for testing the compliance of web URLs against the BBC's accessibilty
|
@@ -159,7 +159,7 @@ executables:
|
|
159
159
|
extensions: []
|
160
160
|
extra_rdoc_files: []
|
161
161
|
files:
|
162
|
-
- .rspec
|
162
|
+
- ".rspec"
|
163
163
|
- CONTRIBUTING.md
|
164
164
|
- Gemfile
|
165
165
|
- LICENSE
|
@@ -177,105 +177,101 @@ files:
|
|
177
177
|
- examples/local-web-app/public/missing_header.html
|
178
178
|
- examples/local-web-app/public/perfect.html
|
179
179
|
- examples/local-web-app/readme.md
|
180
|
-
- features/
|
181
|
-
- features/
|
182
|
-
- features/
|
183
|
-
- features/
|
184
|
-
- features/
|
185
|
-
- features/
|
186
|
-
- features/
|
187
|
-
- features/
|
188
|
-
- features/
|
189
|
-
- features/10_form-labels.md
|
190
|
-
- features/11_visible-on-focus.md
|
191
|
-
- features/13_colour-contrast.md
|
192
|
-
- features/14_colour-meaning.md
|
193
|
-
- features/15_focusable-controls.md
|
194
|
-
- features/16_table.md
|
195
|
-
- features/17_control-styles.md
|
196
|
-
- features/18_focus-styles.md
|
197
|
-
- features/19_form-interactions.md
|
198
|
-
- features/20_image-alt.md
|
199
|
-
- features/21_min-font-sizes.md
|
200
|
-
- features/22_resize-zoom.md
|
201
|
-
- features/step_definitions/core_content_steps.rb
|
202
|
-
- features/step_definitions/language_steps.rb
|
203
|
-
- features/step_definitions/page_steps.rb
|
204
|
-
- features/step_definitions/w3c_steps.rb
|
205
|
-
- features/support/capybara.rb
|
206
|
-
- features/support/skipper.rb
|
207
|
-
- features/support/world.rb
|
208
|
-
- features/support/world_extender.rb
|
180
|
+
- features/README.md
|
181
|
+
- features/exit_status.feature
|
182
|
+
- features/specify_url_via_cli.feature
|
183
|
+
- features/specify_url_via_config.feature
|
184
|
+
- features/step_definitions/steps.rb
|
185
|
+
- features/support/env.rb
|
186
|
+
- features/support/web_server.rb
|
187
|
+
- features/support/web_server/missing_header.html
|
188
|
+
- features/support/web_server/perfect.html
|
209
189
|
- lib/bbc/a11y.rb
|
210
190
|
- lib/bbc/a11y/cli.rb
|
211
191
|
- lib/bbc/a11y/configuration.rb
|
212
192
|
- lib/bbc/a11y/cucumber_runner.rb
|
213
193
|
- lib/bbc/a11y/cucumber_support.rb
|
194
|
+
- lib/bbc/a11y/cucumber_support/disabled_w3c.rb
|
214
195
|
- lib/bbc/a11y/cucumber_support/heading_hierarchy.rb
|
215
196
|
- lib/bbc/a11y/cucumber_support/language_detector.rb
|
197
|
+
- lib/bbc/a11y/cucumber_support/matchers.rb
|
216
198
|
- lib/bbc/a11y/cucumber_support/page.rb
|
217
199
|
- lib/bbc/a11y/cucumber_support/per_page_checks.rb
|
218
200
|
- lib/bbc/a11y/cucumber_support/w3c.rb
|
219
201
|
- lib/bbc/a11y/version
|
202
|
+
- spec/bbc/a11y/cli_spec.rb
|
220
203
|
- spec/bbc/a11y/configuration_spec.rb
|
221
204
|
- spec/bbc/a11y/cucumber_support/heading_hierarchy_spec.rb
|
205
|
+
- spec/bbc/a11y/cucumber_support/matchers_spec.rb
|
222
206
|
- spec/bbc/a11y/cucumber_support/page_spec.rb
|
207
|
+
- standards/01_core-purpose.md
|
208
|
+
- standards/02_validation.feature
|
209
|
+
- standards/03_javascript.feature
|
210
|
+
- standards/04_language.feature
|
211
|
+
- standards/05_page_title.feature
|
212
|
+
- standards/06_main_landmark.feature
|
213
|
+
- standards/07_headings.feature
|
214
|
+
- standards/08_title_attribute.feature
|
215
|
+
- standards/09_tabindex.feature
|
216
|
+
- standards/10_form_labels.feature
|
217
|
+
- standards/11_visible-on-focus.md
|
218
|
+
- standards/13_colour-contrast.md
|
219
|
+
- standards/14_colour-meaning.md
|
220
|
+
- standards/15_focusable-controls.md
|
221
|
+
- standards/16_table.md
|
222
|
+
- standards/17_control-styles.md
|
223
|
+
- standards/18_focus-styles.md
|
224
|
+
- standards/19_form-interactions.md
|
225
|
+
- standards/20_image-alt.md
|
226
|
+
- standards/21_min-font-sizes.md
|
227
|
+
- standards/22_resize-zoom.md
|
228
|
+
- standards/step_definitions/core_content_steps.rb
|
229
|
+
- standards/step_definitions/form_steps.rb
|
230
|
+
- standards/step_definitions/language_steps.rb
|
231
|
+
- standards/step_definitions/page_steps.rb
|
232
|
+
- standards/step_definitions/w3c_steps.rb
|
233
|
+
- standards/support/capybara.rb
|
234
|
+
- standards/support/skipper.rb
|
235
|
+
- standards/support/world.rb
|
236
|
+
- standards/support/world_extender.rb
|
223
237
|
homepage: https://cucumber.pro
|
224
238
|
licenses:
|
225
239
|
- MIT
|
226
240
|
metadata: {}
|
227
241
|
post_install_message:
|
228
242
|
rdoc_options:
|
229
|
-
- --charset=UTF-8
|
243
|
+
- "--charset=UTF-8"
|
230
244
|
require_paths:
|
231
245
|
- lib
|
232
246
|
required_ruby_version: !ruby/object:Gem::Requirement
|
233
247
|
requirements:
|
234
|
-
- -
|
248
|
+
- - ">="
|
235
249
|
- !ruby/object:Gem::Version
|
236
250
|
version: 1.9.3
|
237
251
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
252
|
requirements:
|
239
|
-
- -
|
253
|
+
- - ">="
|
240
254
|
- !ruby/object:Gem::Version
|
241
255
|
version: '0'
|
242
256
|
requirements: []
|
243
257
|
rubyforge_project:
|
244
|
-
rubygems_version: 2.
|
258
|
+
rubygems_version: 2.2.2
|
245
259
|
signing_key:
|
246
260
|
specification_version: 4
|
247
|
-
summary: bbc-a11y-0.0.
|
261
|
+
summary: bbc-a11y-0.0.11
|
248
262
|
test_files:
|
249
|
-
- features/
|
250
|
-
- features/
|
251
|
-
- features/
|
252
|
-
- features/
|
253
|
-
- features/
|
254
|
-
- features/
|
255
|
-
- features/
|
256
|
-
- features/
|
257
|
-
- features/
|
258
|
-
-
|
259
|
-
- features/11_visible-on-focus.md
|
260
|
-
- features/13_colour-contrast.md
|
261
|
-
- features/14_colour-meaning.md
|
262
|
-
- features/15_focusable-controls.md
|
263
|
-
- features/16_table.md
|
264
|
-
- features/17_control-styles.md
|
265
|
-
- features/18_focus-styles.md
|
266
|
-
- features/19_form-interactions.md
|
267
|
-
- features/20_image-alt.md
|
268
|
-
- features/21_min-font-sizes.md
|
269
|
-
- features/22_resize-zoom.md
|
270
|
-
- features/step_definitions/core_content_steps.rb
|
271
|
-
- features/step_definitions/language_steps.rb
|
272
|
-
- features/step_definitions/page_steps.rb
|
273
|
-
- features/step_definitions/w3c_steps.rb
|
274
|
-
- features/support/capybara.rb
|
275
|
-
- features/support/skipper.rb
|
276
|
-
- features/support/world.rb
|
277
|
-
- features/support/world_extender.rb
|
263
|
+
- features/README.md
|
264
|
+
- features/exit_status.feature
|
265
|
+
- features/specify_url_via_cli.feature
|
266
|
+
- features/specify_url_via_config.feature
|
267
|
+
- features/step_definitions/steps.rb
|
268
|
+
- features/support/env.rb
|
269
|
+
- features/support/web_server.rb
|
270
|
+
- features/support/web_server/missing_header.html
|
271
|
+
- features/support/web_server/perfect.html
|
272
|
+
- spec/bbc/a11y/cli_spec.rb
|
278
273
|
- spec/bbc/a11y/configuration_spec.rb
|
279
274
|
- spec/bbc/a11y/cucumber_support/heading_hierarchy_spec.rb
|
275
|
+
- spec/bbc/a11y/cucumber_support/matchers_spec.rb
|
280
276
|
- spec/bbc/a11y/cucumber_support/page_spec.rb
|
281
277
|
has_rdoc:
|