rails_accessibility_testing 1.1.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.
- checksums.yaml +7 -0
- data/ARCHITECTURE.md +307 -0
- data/CHANGELOG.md +81 -0
- data/CODE_OF_CONDUCT.md +125 -0
- data/CONTRIBUTING.md +225 -0
- data/GUIDES/continuous_integration.md +326 -0
- data/GUIDES/getting_started.md +205 -0
- data/GUIDES/working_with_designers_and_content_authors.md +398 -0
- data/GUIDES/writing_accessible_views_in_rails.md +412 -0
- data/LICENSE +22 -0
- data/README.md +350 -0
- data/docs_site/404.html +11 -0
- data/docs_site/Gemfile +11 -0
- data/docs_site/Makefile +14 -0
- data/docs_site/_config.yml +41 -0
- data/docs_site/_includes/header.html +13 -0
- data/docs_site/_layouts/default.html +130 -0
- data/docs_site/assets/main.scss +4 -0
- data/docs_site/ci_integration.md +76 -0
- data/docs_site/configuration.md +114 -0
- data/docs_site/contributing.md +69 -0
- data/docs_site/getting_started.md +57 -0
- data/docs_site/index.md +57 -0
- data/exe/rails_a11y +12 -0
- data/exe/rails_server_safe +41 -0
- data/lib/generators/rails_a11y/install/generator.rb +51 -0
- data/lib/rails_accessibility_testing/accessibility_helper.rb +701 -0
- data/lib/rails_accessibility_testing/change_detector.rb +114 -0
- data/lib/rails_accessibility_testing/checks/aria_landmarks_check.rb +33 -0
- data/lib/rails_accessibility_testing/checks/base_check.rb +156 -0
- data/lib/rails_accessibility_testing/checks/color_contrast_check.rb +56 -0
- data/lib/rails_accessibility_testing/checks/duplicate_ids_check.rb +49 -0
- data/lib/rails_accessibility_testing/checks/form_errors_check.rb +40 -0
- data/lib/rails_accessibility_testing/checks/form_labels_check.rb +62 -0
- data/lib/rails_accessibility_testing/checks/heading_hierarchy_check.rb +53 -0
- data/lib/rails_accessibility_testing/checks/image_alt_text_check.rb +52 -0
- data/lib/rails_accessibility_testing/checks/interactive_elements_check.rb +66 -0
- data/lib/rails_accessibility_testing/checks/keyboard_accessibility_check.rb +36 -0
- data/lib/rails_accessibility_testing/checks/skip_links_check.rb +24 -0
- data/lib/rails_accessibility_testing/checks/table_structure_check.rb +36 -0
- data/lib/rails_accessibility_testing/cli/command.rb +259 -0
- data/lib/rails_accessibility_testing/config/yaml_loader.rb +131 -0
- data/lib/rails_accessibility_testing/configuration.rb +30 -0
- data/lib/rails_accessibility_testing/engine/rule_engine.rb +97 -0
- data/lib/rails_accessibility_testing/engine/violation.rb +58 -0
- data/lib/rails_accessibility_testing/engine/violation_collector.rb +59 -0
- data/lib/rails_accessibility_testing/error_message_builder.rb +354 -0
- data/lib/rails_accessibility_testing/integration/minitest_integration.rb +74 -0
- data/lib/rails_accessibility_testing/rspec_integration.rb +58 -0
- data/lib/rails_accessibility_testing/shared_examples.rb +93 -0
- data/lib/rails_accessibility_testing/version.rb +4 -0
- data/lib/rails_accessibility_testing.rb +83 -0
- data/lib/tasks/accessibility.rake +28 -0
- metadata +218 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Rails Accessibility Testing Gem
|
|
4
|
+
#
|
|
5
|
+
# Automatically configures accessibility testing for Rails system specs with
|
|
6
|
+
# comprehensive checks and detailed error messages.
|
|
7
|
+
#
|
|
8
|
+
# @version 1.1.0
|
|
9
|
+
# @author Regan Maharjan
|
|
10
|
+
#
|
|
11
|
+
# @example Basic usage
|
|
12
|
+
# # In spec/rails_helper.rb
|
|
13
|
+
# require 'rails_accessibility_testing'
|
|
14
|
+
#
|
|
15
|
+
# # That's it! Comprehensive accessibility checks run automatically
|
|
16
|
+
# # after each system spec that visits a page
|
|
17
|
+
#
|
|
18
|
+
# @example Manual checks in specs
|
|
19
|
+
# it 'has no accessibility issues' do
|
|
20
|
+
# visit root_path
|
|
21
|
+
# check_comprehensive_accessibility # All 11 checks
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
# @example Skip checks for specific tests
|
|
25
|
+
# it 'does something', skip_a11y: true do
|
|
26
|
+
# # This test won't run accessibility checks
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# @see RailsAccessibilityTesting::AccessibilityHelper
|
|
30
|
+
# @see RailsAccessibilityTesting::ErrorMessageBuilder
|
|
31
|
+
# @see RailsAccessibilityTesting::RSpecIntegration
|
|
32
|
+
|
|
33
|
+
require 'axe-capybara'
|
|
34
|
+
require 'axe/matchers/be_axe_clean'
|
|
35
|
+
|
|
36
|
+
# Load version
|
|
37
|
+
begin
|
|
38
|
+
require_relative 'rails_accessibility_testing/version'
|
|
39
|
+
rescue LoadError
|
|
40
|
+
module RailsAccessibilityTesting
|
|
41
|
+
VERSION = '1.1.0'
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Load core components
|
|
46
|
+
require_relative 'rails_accessibility_testing/configuration'
|
|
47
|
+
require_relative 'rails_accessibility_testing/change_detector'
|
|
48
|
+
require_relative 'rails_accessibility_testing/error_message_builder'
|
|
49
|
+
require_relative 'rails_accessibility_testing/accessibility_helper'
|
|
50
|
+
require_relative 'rails_accessibility_testing/shared_examples'
|
|
51
|
+
require_relative 'rails_accessibility_testing/rspec_integration'
|
|
52
|
+
|
|
53
|
+
# Load engine components
|
|
54
|
+
require_relative 'rails_accessibility_testing/engine/violation'
|
|
55
|
+
require_relative 'rails_accessibility_testing/engine/violation_collector'
|
|
56
|
+
require_relative 'rails_accessibility_testing/engine/rule_engine'
|
|
57
|
+
|
|
58
|
+
# Load check definitions
|
|
59
|
+
require_relative 'rails_accessibility_testing/checks/base_check'
|
|
60
|
+
require_relative 'rails_accessibility_testing/checks/form_labels_check'
|
|
61
|
+
require_relative 'rails_accessibility_testing/checks/image_alt_text_check'
|
|
62
|
+
require_relative 'rails_accessibility_testing/checks/interactive_elements_check'
|
|
63
|
+
require_relative 'rails_accessibility_testing/checks/heading_hierarchy_check'
|
|
64
|
+
require_relative 'rails_accessibility_testing/checks/keyboard_accessibility_check'
|
|
65
|
+
require_relative 'rails_accessibility_testing/checks/aria_landmarks_check'
|
|
66
|
+
require_relative 'rails_accessibility_testing/checks/form_errors_check'
|
|
67
|
+
require_relative 'rails_accessibility_testing/checks/table_structure_check'
|
|
68
|
+
require_relative 'rails_accessibility_testing/checks/duplicate_ids_check'
|
|
69
|
+
require_relative 'rails_accessibility_testing/checks/skip_links_check'
|
|
70
|
+
require_relative 'rails_accessibility_testing/checks/color_contrast_check'
|
|
71
|
+
|
|
72
|
+
# Load configuration
|
|
73
|
+
require_relative 'rails_accessibility_testing/config/yaml_loader'
|
|
74
|
+
|
|
75
|
+
# Load integrations
|
|
76
|
+
require_relative 'rails_accessibility_testing/integration/minitest_integration'
|
|
77
|
+
|
|
78
|
+
# Auto-configure when RSpec is available
|
|
79
|
+
if defined?(RSpec)
|
|
80
|
+
RSpec.configure do |config|
|
|
81
|
+
RailsAccessibilityTesting::RSpecIntegration.configure!(config)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
namespace :a11y do
|
|
4
|
+
desc "Run all accessibility tests"
|
|
5
|
+
task :test do
|
|
6
|
+
sh "bundle exec rspec spec/system/ --tag accessibility"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
desc "Run accessibility tests in watch mode"
|
|
10
|
+
task :watch do
|
|
11
|
+
sh "bundle exec rspec spec/system/ --tag accessibility --watch"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
desc "Run all system tests (includes accessibility)"
|
|
15
|
+
task :system do
|
|
16
|
+
sh "bundle exec rspec spec/system/"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
desc "Run accessibility tests for a specific file"
|
|
20
|
+
task :file, [:file] do |t, args|
|
|
21
|
+
file = args[:file] || "spec/system/rte_loaded_spec.rb"
|
|
22
|
+
sh "bundle exec rspec #{file}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
desc "Run accessibility tests (alias for a11y:test)"
|
|
27
|
+
task a11y: "a11y:test"
|
|
28
|
+
|
metadata
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: rails_accessibility_testing
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Regan Maharjan
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-11-18 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: axe-core-capybara
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '4.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '4.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: capybara
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '3.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '3.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: bundler
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '2.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '13.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '13.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: yard
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.9'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.9'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rspec
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '3.12'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '3.12'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: capybara
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '3.0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '3.0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: selenium-webdriver
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '4.0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '4.0'
|
|
125
|
+
description: Comprehensive, opinionated but configurable accessibility testing gem
|
|
126
|
+
for Rails. Integrates seamlessly into your test suite with RSpec and Minitest support.
|
|
127
|
+
Includes CLI tool, Rails generator, YAML configuration, and 11+ WCAG 2.1 AA aligned
|
|
128
|
+
checks with actionable error messages.
|
|
129
|
+
email:
|
|
130
|
+
- imregan@umich.edu
|
|
131
|
+
executables:
|
|
132
|
+
- rails_a11y
|
|
133
|
+
- rails_server_safe
|
|
134
|
+
extensions: []
|
|
135
|
+
extra_rdoc_files: []
|
|
136
|
+
files:
|
|
137
|
+
- ARCHITECTURE.md
|
|
138
|
+
- CHANGELOG.md
|
|
139
|
+
- CODE_OF_CONDUCT.md
|
|
140
|
+
- CONTRIBUTING.md
|
|
141
|
+
- GUIDES/continuous_integration.md
|
|
142
|
+
- GUIDES/getting_started.md
|
|
143
|
+
- GUIDES/working_with_designers_and_content_authors.md
|
|
144
|
+
- GUIDES/writing_accessible_views_in_rails.md
|
|
145
|
+
- LICENSE
|
|
146
|
+
- README.md
|
|
147
|
+
- docs_site/404.html
|
|
148
|
+
- docs_site/Gemfile
|
|
149
|
+
- docs_site/Makefile
|
|
150
|
+
- docs_site/_config.yml
|
|
151
|
+
- docs_site/_includes/header.html
|
|
152
|
+
- docs_site/_layouts/default.html
|
|
153
|
+
- docs_site/assets/main.scss
|
|
154
|
+
- docs_site/ci_integration.md
|
|
155
|
+
- docs_site/configuration.md
|
|
156
|
+
- docs_site/contributing.md
|
|
157
|
+
- docs_site/getting_started.md
|
|
158
|
+
- docs_site/index.md
|
|
159
|
+
- exe/rails_a11y
|
|
160
|
+
- exe/rails_server_safe
|
|
161
|
+
- lib/generators/rails_a11y/install/generator.rb
|
|
162
|
+
- lib/rails_accessibility_testing.rb
|
|
163
|
+
- lib/rails_accessibility_testing/accessibility_helper.rb
|
|
164
|
+
- lib/rails_accessibility_testing/change_detector.rb
|
|
165
|
+
- lib/rails_accessibility_testing/checks/aria_landmarks_check.rb
|
|
166
|
+
- lib/rails_accessibility_testing/checks/base_check.rb
|
|
167
|
+
- lib/rails_accessibility_testing/checks/color_contrast_check.rb
|
|
168
|
+
- lib/rails_accessibility_testing/checks/duplicate_ids_check.rb
|
|
169
|
+
- lib/rails_accessibility_testing/checks/form_errors_check.rb
|
|
170
|
+
- lib/rails_accessibility_testing/checks/form_labels_check.rb
|
|
171
|
+
- lib/rails_accessibility_testing/checks/heading_hierarchy_check.rb
|
|
172
|
+
- lib/rails_accessibility_testing/checks/image_alt_text_check.rb
|
|
173
|
+
- lib/rails_accessibility_testing/checks/interactive_elements_check.rb
|
|
174
|
+
- lib/rails_accessibility_testing/checks/keyboard_accessibility_check.rb
|
|
175
|
+
- lib/rails_accessibility_testing/checks/skip_links_check.rb
|
|
176
|
+
- lib/rails_accessibility_testing/checks/table_structure_check.rb
|
|
177
|
+
- lib/rails_accessibility_testing/cli/command.rb
|
|
178
|
+
- lib/rails_accessibility_testing/config/yaml_loader.rb
|
|
179
|
+
- lib/rails_accessibility_testing/configuration.rb
|
|
180
|
+
- lib/rails_accessibility_testing/engine/rule_engine.rb
|
|
181
|
+
- lib/rails_accessibility_testing/engine/violation.rb
|
|
182
|
+
- lib/rails_accessibility_testing/engine/violation_collector.rb
|
|
183
|
+
- lib/rails_accessibility_testing/error_message_builder.rb
|
|
184
|
+
- lib/rails_accessibility_testing/integration/minitest_integration.rb
|
|
185
|
+
- lib/rails_accessibility_testing/rspec_integration.rb
|
|
186
|
+
- lib/rails_accessibility_testing/shared_examples.rb
|
|
187
|
+
- lib/rails_accessibility_testing/version.rb
|
|
188
|
+
- lib/tasks/accessibility.rake
|
|
189
|
+
homepage: https://github.com/rayraycodes/rails_accessibility_testing
|
|
190
|
+
licenses:
|
|
191
|
+
- MIT
|
|
192
|
+
metadata:
|
|
193
|
+
homepage_uri: https://github.com/rayraycodes/rails_accessibility_testing
|
|
194
|
+
source_code_uri: https://github.com/rayraycodes/rails_accessibility_testing
|
|
195
|
+
changelog_uri: https://github.com/rayraycodes/rails_accessibility_testing/blob/main/CHANGELOG.md
|
|
196
|
+
documentation_uri: https://rayraycodes.github.io/rails-accessibility-testing/
|
|
197
|
+
rubygems_mfa_required: 'true'
|
|
198
|
+
post_install_message:
|
|
199
|
+
rdoc_options: []
|
|
200
|
+
require_paths:
|
|
201
|
+
- lib
|
|
202
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
203
|
+
requirements:
|
|
204
|
+
- - ">="
|
|
205
|
+
- !ruby/object:Gem::Version
|
|
206
|
+
version: '0'
|
|
207
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
|
+
requirements:
|
|
209
|
+
- - ">="
|
|
210
|
+
- !ruby/object:Gem::Version
|
|
211
|
+
version: '0'
|
|
212
|
+
requirements: []
|
|
213
|
+
rubygems_version: 3.0.3.1
|
|
214
|
+
signing_key:
|
|
215
|
+
specification_version: 4
|
|
216
|
+
summary: The RSpec + RuboCop of accessibility for Rails. Catch WCAG violations before
|
|
217
|
+
they reach production.
|
|
218
|
+
test_files: []
|