capybara-accessible 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
+ require 'capybara/spec/test_app'
2
+
1
3
  class AccessibleApp < TestApp
2
4
  get '/accessible' do
3
5
  '<form><label for="foo">Foo</label>' +
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'capybara-accessible', type: 'feature' do
4
+ shared_examples 'a capybara accessible driver' do
5
+ context 'a page without accessibility errors' do
6
+ it 'does not raise an exception on audit failures' do
7
+ expect { visit('/accessible') }.to_not raise_error
8
+ end
9
+ end
10
+
11
+ context 'a page with inaccessible elements' do
12
+ it 'raises an exception on visiting the page' do
13
+ expect { visit('/inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
14
+ end
15
+
16
+ it 'raises an exception when visiting the page via a link' do
17
+ visit('/accessible')
18
+ expect { click_link('inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
19
+ end
20
+
21
+ context 'with configuration that excludes rules' do
22
+ before do
23
+ Capybara::Accessible::Auditor.exclusions = ['AX_TEXT_01']
24
+ end
25
+
26
+ it 'does not raise an error on an excluded rule' do
27
+ expect { visit('/excluded') }.to_not raise_error
28
+ end
29
+ end
30
+
31
+ context 'with log level set to warn' do
32
+ before do
33
+ Capybara::Accessible::Auditor.log_level = :warn
34
+ end
35
+
36
+ after do
37
+ Capybara::Accessible::Auditor.log_level = :error
38
+ end
39
+
40
+ it 'puts to stdout and does not raise an error' do
41
+ expect($stdout).to receive(:puts)
42
+ expect { visit('/inaccessible') }.to_not raise_error
43
+ end
44
+ end
45
+
46
+ context 'a page with a javascript popup' do
47
+ it 'does not raise an exception' do
48
+ visit('/alert')
49
+ expect { click_link('Alert!') }.to_not raise_error
50
+ end
51
+ end
52
+
53
+ context 'with severity set to severe' do
54
+ before do
55
+ Capybara::Accessible::Auditor.severe_rules = ['AX_TEXT_02']
56
+ end
57
+
58
+ after do
59
+ Capybara::Accessible::Auditor.severe_rules = []
60
+ end
61
+
62
+ it 'raises an exception on the image without alt text' do
63
+ expect { visit('/severe') }.to raise_error(Capybara::Accessible::InaccessibleError)
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ describe 'poltergeist driver', driver: :accessible_poltergeist do
70
+ it_behaves_like 'a capybara accessible driver'
71
+ end
72
+
73
+ describe 'selenium firefox driver', driver: :accessible_selenium do
74
+ it_behaves_like 'a capybara accessible driver'
75
+ end
76
+
77
+ describe 'selenium chrome driver', driver: :accessible_selenium_chrome do
78
+ it_behaves_like 'a capybara accessible driver'
79
+ end
80
+
81
+ end
@@ -1,20 +1,15 @@
1
- require 'rspec'
2
- require 'rspec/autorun'
3
- require 'rbconfig'
4
1
  require 'capybara'
5
- require 'capybara/spec/spec_helper'
6
2
  require 'capybara/accessible'
7
- require 'accessible_app'
8
- require 'pry'
3
+ require 'capybara/poltergeist'
4
+ require 'capybara/rspec'
9
5
 
10
- PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')).freeze
11
- $LOAD_PATH << File.join(PROJECT_ROOT, 'lib')
6
+ require 'accessible_app'
12
7
 
13
8
  RSpec.configure do |c|
14
- Capybara::SpecHelper.configure(c)
15
9
  c.around(:each, :inaccessible => true) do |example|
16
10
  Capybara::Accessible.skip_audit { example.run }
17
11
  end
18
12
  end
19
13
 
20
- Capybara.current_driver = :accessible
14
+ Capybara.app = AccessibleApp
15
+ Capybara.server = :webrick
metadata CHANGED
@@ -1,57 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-accessible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Case Commons
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-19 00:00:00.000000000 Z
11
+ date: 2019-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
- - !ruby/object:Gem::Dependency
28
- name: selenium-webdriver
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: capybara-webkit
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - ">="
46
18
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
19
+ version: 3.12.0
20
+ type: :runtime
49
21
  prerelease: false
50
22
  version_requirements: !ruby/object:Gem::Requirement
51
23
  requirements:
52
24
  - - ">="
53
25
  - !ruby/object:Gem::Version
54
- version: '0'
26
+ version: 3.12.0
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: poltergeist
57
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,33 +67,19 @@ dependencies:
95
67
  - !ruby/object:Gem::Version
96
68
  version: '0'
97
69
  - !ruby/object:Gem::Dependency
98
- name: pry
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: tddium
70
+ name: selenium-webdriver
113
71
  requirement: !ruby/object:Gem::Requirement
114
72
  requirements:
115
73
  - - ">="
116
74
  - !ruby/object:Gem::Version
117
- version: '0'
75
+ version: 3.14.0
118
76
  type: :development
119
77
  prerelease: false
120
78
  version_requirements: !ruby/object:Gem::Requirement
121
79
  requirements:
122
80
  - - ">="
123
81
  - !ruby/object:Gem::Version
124
- version: '0'
82
+ version: 3.14.0
125
83
  - !ruby/object:Gem::Dependency
126
84
  name: sinatra
127
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +94,8 @@ dependencies:
136
94
  - - ">="
137
95
  - !ruby/object:Gem::Version
138
96
  version: '0'
139
- description: Capybara extension and webdriver for automated accessibility testing
97
+ description: A Selenium based webdriver and Capybara extension that runs Google Accessibility
98
+ Developer Tools auditing assertions on page visits.
140
99
  email:
141
100
  - accessibility@casecommons.org
142
101
  executables: []
@@ -144,26 +103,26 @@ extensions: []
144
103
  extra_rdoc_files: []
145
104
  files:
146
105
  - ".gitignore"
106
+ - ".travis.yml"
147
107
  - Gemfile
148
- - LICENSE.txt
108
+ - LICENSE
149
109
  - README.md
150
110
  - Rakefile
151
111
  - capybara-accessible.gemspec
152
112
  - lib/capybara/accessible.rb
113
+ - lib/capybara/accessible/adapters/poltergeist.rb
114
+ - lib/capybara/accessible/adapters/selenium.rb
153
115
  - lib/capybara/accessible/auditor.rb
154
- - lib/capybara/accessible/driver_extensions.rb
155
- - lib/capybara/accessible/element.rb
116
+ - lib/capybara/accessible/driver.rb
117
+ - lib/capybara/accessible/extensions/driver.rb
118
+ - lib/capybara/accessible/extensions/element.rb
156
119
  - lib/capybara/accessible/railtie.rb
157
120
  - lib/capybara/accessible/tasks.rb
158
121
  - lib/capybara/accessible/version.rb
159
122
  - lib/vendor/google/accessibility-developer-tools/axs_testing.js
160
123
  - spec/accessible_app.rb
161
- - spec/poltergeist_driver_spec.rb
162
- - spec/selenium_driver_spec.rb
124
+ - spec/capybara_accessible_spec.rb
163
125
  - spec/spec_helper.rb
164
- - spec/webkit_driver_spec.rb
165
- - tddium.yml
166
- - travis.yml
167
126
  homepage: https://github.com/Casecommons/capybara-accessible
168
127
  licenses:
169
128
  - MIT
@@ -184,15 +143,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
143
  version: '0'
185
144
  requirements: []
186
145
  rubyforge_project:
187
- rubygems_version: 2.2.2
146
+ rubygems_version: 2.7.6
188
147
  signing_key:
189
148
  specification_version: 4
190
- summary: A Selenium based webdriver and Capybara extension that runs Google Accessibility
191
- Developer Tools auditing assertions on page visits.
149
+ summary: Capybara extension and webdriver for automated accessibility testing
192
150
  test_files:
193
151
  - spec/accessible_app.rb
194
- - spec/poltergeist_driver_spec.rb
195
- - spec/selenium_driver_spec.rb
152
+ - spec/capybara_accessible_spec.rb
196
153
  - spec/spec_helper.rb
197
- - spec/webkit_driver_spec.rb
198
- has_rdoc:
@@ -1,22 +0,0 @@
1
- Copyright (c) 2010-13 Case Commons, Inc.
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +0,0 @@
1
- module Capybara::Accessible::DriverExtensions
2
- def visit(path)
3
- super
4
- Capybara::Accessible::Auditor::Driver.new(self).audit!
5
- end
6
- end
@@ -1,10 +0,0 @@
1
- module Capybara
2
- module Node
3
- class Element < Base
4
- def click
5
- synchronize { base.click }
6
- Capybara::Accessible::Auditor::Node.new(@session).audit!
7
- end
8
- end
9
- end
10
- end
@@ -1,56 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Using poltergeist driver" do
4
- require "capybara/poltergeist"
5
- before do
6
- @session = Capybara::Session.new(:accessible_poltergeist, AccessibleApp)
7
- end
8
-
9
- context 'a page without accessibility errors' do
10
- it 'does not raise an exception on audit failures' do
11
- expect { @session.visit('/accessible') }.to_not raise_error
12
- end
13
- end
14
-
15
- context 'a page with inaccessible elements' do
16
- it 'raises an exception on visiting the page' do
17
- expect { @session.visit('/inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
18
- end
19
-
20
- it 'raises an exception when visiting the page via a link' do
21
- @session.visit('/accessible')
22
- expect { @session.click_link('inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
23
- end
24
-
25
- context 'with configuration that excludes rules' do
26
- before do
27
- Capybara::Accessible::Auditor.exclusions = ['AX_TEXT_01']
28
- end
29
-
30
- it 'does not raise an error on an excluded rule' do
31
- expect { @session.visit('/excluded') }.to_not raise_error
32
- end
33
- end
34
-
35
- context 'a page with a javascript popup' do
36
- it 'does not raise an exception' do
37
- @session.visit('/alert')
38
- expect { @session.click_link('Alert!') }.to_not raise_error
39
- end
40
- end
41
-
42
- context 'with severity set to severe' do
43
- before do
44
- Capybara::Accessible::Auditor.severe_rules = ['AX_TEXT_02']
45
- end
46
-
47
- after do
48
- Capybara::Accessible::Auditor.severe_rules = []
49
- end
50
-
51
- it 'raises an exception on the image without alt text' do
52
- expect { @session.visit('/severe') }.to raise_error(Capybara::Accessible::InaccessibleError)
53
- end
54
- end
55
- end
56
- end
@@ -1,70 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Using selenium driver" do
4
- before do
5
- @session = Capybara::Session.new(:accessible_selenium, AccessibleApp)
6
- end
7
-
8
- context 'a page without accessibility errors' do
9
- it 'does not raise an exception on audit failures' do
10
- expect { @session.visit('/accessible') }.to_not raise_error
11
- end
12
- end
13
-
14
- context 'a page with inaccessible elements' do
15
- it 'raises an exception on visiting the page' do
16
- expect { @session.visit('/inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
17
- end
18
-
19
- it 'raises an exception when visiting the page via a link' do
20
- @session.visit('/accessible')
21
- expect { @session.click_link('inaccessible') }.to raise_error(Capybara::Accessible::InaccessibleError)
22
- end
23
-
24
- context 'with configuration that excludes rules' do
25
- before do
26
- Capybara::Accessible::Auditor.exclusions = ['AX_TEXT_01']
27
- end
28
-
29
- it 'does not raise an error on an excluded rule' do
30
- expect { @session.visit('/excluded') }.to_not raise_error
31
- end
32
- end
33
-
34
- context 'with log level set to warn' do
35
- before do
36
- Capybara::Accessible::Auditor.log_level = :warn
37
- end
38
-
39
- after do
40
- Capybara::Accessible::Auditor.log_level = :error
41
- end
42
-
43
- it 'puts to stdout and does not raise an error' do
44
- $stdout.should_receive(:puts)
45
- expect { @session.visit('/inaccessible') }.to_not raise_error
46
- end
47
- end
48
-
49
- context 'a page with a javascript popup' do
50
- it 'does not raise an exception' do
51
- @session.visit('/alert')
52
- expect { @session.click_link('Alert!') }.to_not raise_error
53
- end
54
- end
55
-
56
- context 'with severity set to severe' do
57
- before do
58
- Capybara::Accessible::Auditor.severe_rules = ['AX_TEXT_02']
59
- end
60
-
61
- after do
62
- Capybara::Accessible::Auditor.severe_rules = []
63
- end
64
-
65
- it 'raises an exception on the image without alt text' do
66
- expect { @session.visit('/severe') }.to raise_error(Capybara::Accessible::InaccessibleError)
67
- end
68
- end
69
- end
70
- end