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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -7
  3. data/README.md +7 -3
  4. data/Rakefile +1 -2
  5. data/bin/a11y +2 -1
  6. data/features/README.md +4 -0
  7. data/features/exit_status.feature +14 -0
  8. data/features/specify_url_via_cli.feature +10 -0
  9. data/features/specify_url_via_config.feature +16 -0
  10. data/features/step_definitions/steps.rb +13 -0
  11. data/features/support/env.rb +5 -0
  12. data/features/support/web_server.rb +30 -0
  13. data/features/support/web_server/missing_header.html +13 -0
  14. data/features/support/web_server/perfect.html +14 -0
  15. data/lib/bbc/a11y.rb +1 -0
  16. data/lib/bbc/a11y/cli.rb +19 -5
  17. data/lib/bbc/a11y/configuration.rb +6 -1
  18. data/lib/bbc/a11y/cucumber_runner.rb +25 -5
  19. data/lib/bbc/a11y/cucumber_support.rb +9 -2
  20. data/lib/bbc/a11y/cucumber_support/disabled_w3c.rb +37 -0
  21. data/lib/bbc/a11y/cucumber_support/matchers.rb +21 -0
  22. data/lib/bbc/a11y/cucumber_support/page.rb +16 -6
  23. data/lib/bbc/a11y/version +1 -1
  24. data/spec/bbc/a11y/cli_spec.rb +27 -0
  25. data/spec/bbc/a11y/configuration_spec.rb +15 -3
  26. data/spec/bbc/a11y/cucumber_support/matchers_spec.rb +52 -0
  27. data/spec/bbc/a11y/cucumber_support/page_spec.rb +34 -10
  28. data/{features → standards}/01_core-purpose.md +0 -0
  29. data/{features → standards}/02_validation.feature +0 -0
  30. data/{features → standards}/03_javascript.feature +0 -0
  31. data/{features → standards}/04_language.feature +0 -0
  32. data/{features → standards}/05_page_title.feature +0 -0
  33. data/{features → standards}/06_main_landmark.feature +0 -0
  34. data/{features → standards}/07_headings.feature +0 -0
  35. data/{features → standards}/08_title_attribute.feature +0 -0
  36. data/{features → standards}/09_tabindex.feature +8 -1
  37. data/standards/10_form_labels.feature +88 -0
  38. data/{features → standards}/11_visible-on-focus.md +0 -0
  39. data/{features → standards}/13_colour-contrast.md +0 -0
  40. data/{features → standards}/14_colour-meaning.md +0 -0
  41. data/{features → standards}/15_focusable-controls.md +0 -0
  42. data/{features → standards}/16_table.md +0 -0
  43. data/{features → standards}/17_control-styles.md +0 -0
  44. data/{features → standards}/18_focus-styles.md +0 -0
  45. data/{features → standards}/19_form-interactions.md +0 -0
  46. data/{features → standards}/20_image-alt.md +0 -0
  47. data/{features → standards}/21_min-font-sizes.md +0 -0
  48. data/{features → standards}/22_resize-zoom.md +0 -0
  49. data/{features → standards}/step_definitions/core_content_steps.rb +0 -0
  50. data/standards/step_definitions/form_steps.rb +6 -0
  51. data/{features → standards}/step_definitions/language_steps.rb +0 -0
  52. data/{features → standards}/step_definitions/page_steps.rb +6 -2
  53. data/{features → standards}/step_definitions/w3c_steps.rb +0 -0
  54. data/{features → standards}/support/capybara.rb +0 -0
  55. data/{features → standards}/support/skipper.rb +0 -0
  56. data/{features → standards}/support/world.rb +0 -0
  57. data/{features → standards}/support/world_extender.rb +0 -0
  58. metadata +82 -86
  59. 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 must_not_have_any_positive_tabindex_values
61
- nodes_with_positive_tabindex = browser.all('[tabindex]').select { |node| node['tabindex'].to_i > 0 }
62
- expect(nodes_with_positive_tabindex).to be_empty
63
- nodes_with_zero_tabindex = browser.all('[tabindex]').select { |node| node['tabindex'].to_i == 0 }
64
- bad_nodes_with_zero_tabindex = nodes_with_zero_tabindex.reject { |node| node.tag_name =~ /^a|button|input|select|textarea$/ }
65
- expect(bad_nodes_with_zero_tabindex).to be_empty
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
@@ -1 +1 @@
1
- 0.0.9
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 /^foo/
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: "foo_page.html")
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 "#must_not_have_any_positive_tabindex_values" do
105
- context "a positive tabindex value" do
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.must_not_have_any_positive_tabindex_values }.
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 "a zero tabindex value on a focusable element (<a>, <button>, <input>, <select>, <textarea>)" do
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.must_not_have_any_positive_tabindex_values }.not_to raise_error
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 "a zero tabindex value on a non-focusable element" do
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.must_not_have_any_positive_tabindex_values }.
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 negative tabindex value" do
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.must_not_have_any_positive_tabindex_values }.not_to raise_error
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
@@ -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 0 or greater
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
@@ -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
@@ -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
- Then(/^there should be no elements with a tabindex attribte of 0 or greater$/) do
45
- page.must_not_have_any_positive_tabindex_values
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
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.9
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-03-10 00:00:00.000000000 Z
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/01_core-purpose.md
181
- - features/02_validation.feature
182
- - features/03_javascript.feature
183
- - features/04_language.feature
184
- - features/05_page_title.feature
185
- - features/06_main_landmark.feature
186
- - features/07_headings.feature
187
- - features/08_title_attribute.feature
188
- - features/09_tabindex.feature
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.0.14
258
+ rubygems_version: 2.2.2
245
259
  signing_key:
246
260
  specification_version: 4
247
- summary: bbc-a11y-0.0.9
261
+ summary: bbc-a11y-0.0.11
248
262
  test_files:
249
- - features/01_core-purpose.md
250
- - features/02_validation.feature
251
- - features/03_javascript.feature
252
- - features/04_language.feature
253
- - features/05_page_title.feature
254
- - features/06_main_landmark.feature
255
- - features/07_headings.feature
256
- - features/08_title_attribute.feature
257
- - features/09_tabindex.feature
258
- - features/10_form-labels.md
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: