rails_accessibility_testing 1.5.0 → 1.5.1
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 +4 -4
- data/README.md +39 -25
- data/lib/generators/rails_a11y/install/templates/accessibility.yml.erb +49 -0
- data/lib/generators/rails_a11y/install/templates/all_pages_accessibility_spec.rb.erb +66 -0
- data/lib/generators/rails_a11y/install/templates/initializer.rb.erb +24 -0
- data/lib/rails_accessibility_testing/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed1c4100059b21f4a777e9691fec08fe59fc59f7accecc5b8f47e15b68b913ed
|
|
4
|
+
data.tar.gz: b65e45644fd839d960ef461b5a3c350903c93ad0a89337f5f3423e2d87b7c57a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 827873b27a3a9ee68c39090838d3d422a628567df1134ea4ed807be28b909e5fe3b976fb232493633ed8f521ebf2c94eca8ce051b78b844a86424095ffcc31fc
|
|
7
|
+
data.tar.gz: 2f682ff20a50b1a0ec99911f0d260a6fc6400df9aac19451538efe882a7c7dd98582895e8dd151ad4bd1d80ec998a7c86ac6906b22da46beef048f2a7226490c
|
data/README.md
CHANGED
|
@@ -31,28 +31,34 @@ Rails Accessibility Testing fills a critical gap in the Rails testing ecosystem.
|
|
|
31
31
|
|
|
32
32
|
### 🆕 Version 1.5.0 Highlights
|
|
33
33
|
|
|
34
|
-
####
|
|
35
|
-
- **
|
|
34
|
+
#### 🎯 Live Accessibility Scanner
|
|
35
|
+
- **Real-time scanning**: Automatically scans pages as you browse during development
|
|
36
|
+
- **Smart cancellation**: Cancels scans when you navigate to new pages, focusing on current page
|
|
37
|
+
- **Integrated workflow**: Works seamlessly with `bin/dev` via Procfile.dev
|
|
38
|
+
- **Detailed reporting**: Shows exactly what's being scanned with page URLs and view files
|
|
39
|
+
|
|
40
|
+
#### 📝 Enhanced Error Reporting
|
|
41
|
+
- **View file priority**: Rails view files shown prominently instead of URLs
|
|
42
|
+
- **Comprehensive summaries**: Overall test report showing all pages tested with statistics
|
|
43
|
+
- **Accurate error counting**: Properly tracks and displays error/warning counts
|
|
44
|
+
- **Persistent output**: Errors stay visible in terminal (no clearing)
|
|
45
|
+
|
|
46
|
+
#### 🔍 Smart View File Detection
|
|
47
|
+
- **Intelligent matching**: Automatically finds view files even when action names don't match
|
|
36
48
|
- **Controller directory scanning**: Searches all view files to find the correct template
|
|
37
49
|
- **Fuzzy matching**: Handles variations and naming conventions
|
|
50
|
+
- **Partial detection**: Shows exact partial file when issues are found
|
|
38
51
|
|
|
39
|
-
####
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
42
|
-
- **
|
|
43
|
-
- **Element-to-partial mapping**: Shows exact partial file when issues are found
|
|
52
|
+
#### ⚡ Performance Optimizations
|
|
53
|
+
- **Optimized DOM queries**: Faster image alt checks without JavaScript evaluation
|
|
54
|
+
- **Removed delays**: Eliminated unnecessary sleep calls in live scanner
|
|
55
|
+
- **Efficient scanning**: ~25-30% faster page scans
|
|
44
56
|
|
|
45
|
-
####
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
|
|
51
|
-
#### Enhanced Developer Experience
|
|
52
|
-
- **Friendly test summaries**: Clear passed/failed/skipped counts with reasons
|
|
53
|
-
- **Progress indicators**: Real-time feedback during checks
|
|
54
|
-
- **Cleaner output**: Suppressed verbose skipped test messages
|
|
55
|
-
- **Better error context**: Shows view files, partials, and element details
|
|
57
|
+
#### 🎨 Enhanced Developer Experience
|
|
58
|
+
- **Real-time progress**: Step-by-step feedback during accessibility checks
|
|
59
|
+
- **Clear summaries**: Comprehensive test reports with view files and statistics
|
|
60
|
+
- **Better error context**: Shows view files, paths, and element details
|
|
61
|
+
- **Focused scanning**: Live scanner adapts to your browsing behavior
|
|
56
62
|
|
|
57
63
|
## 🚀 Quick Start
|
|
58
64
|
|
|
@@ -436,17 +442,25 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for detailed architecture documentation.
|
|
|
436
442
|
|
|
437
443
|
### Major Improvements
|
|
438
444
|
|
|
439
|
-
1.
|
|
445
|
+
1. **🎯 Live Accessibility Scanner**
|
|
446
|
+
- Real-time scanning as you browse during development
|
|
447
|
+
- Integrated with `bin/dev` via Procfile.dev
|
|
448
|
+
- Smart cancellation when navigating to new pages
|
|
449
|
+
- Detailed reporting showing exactly what's being scanned
|
|
450
|
+
|
|
451
|
+
2. **📝 Enhanced Error Reporting**
|
|
452
|
+
- View files shown prominently instead of URLs
|
|
453
|
+
- Comprehensive overall test summaries
|
|
454
|
+
- Accurate error counting and persistent output
|
|
455
|
+
- Better context with view files and element details
|
|
456
|
+
|
|
457
|
+
3. **🔍 Smart View File Detection**
|
|
440
458
|
- Automatically finds view files even when action names don't match
|
|
441
459
|
- Scans controller directories intelligently
|
|
442
460
|
- Handles edge cases and naming variations
|
|
461
|
+
- Advanced partial detection and mapping
|
|
443
462
|
|
|
444
|
-
|
|
445
|
-
- Scans view files to discover all rendered partials
|
|
446
|
-
- Maps accessibility issues to exact partial files
|
|
447
|
-
- Supports namespaced partials and multiple locations
|
|
448
|
-
|
|
449
|
-
3. **Performance Optimizations**
|
|
463
|
+
4. **⚡ Performance Optimizations**
|
|
450
464
|
- Page scanning cache prevents duplicate work
|
|
451
465
|
- Smart change detection only tests affected pages
|
|
452
466
|
- First-run optimization for faster initial setup
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Rails A11y Configuration
|
|
2
|
+
#
|
|
3
|
+
# This file configures accessibility checks for your Rails application.
|
|
4
|
+
# See https://github.com/your-org/rails-a11y for full documentation.
|
|
5
|
+
|
|
6
|
+
# WCAG compliance level (A, AA, AAA)
|
|
7
|
+
wcag_level: AA
|
|
8
|
+
|
|
9
|
+
# Global check configuration
|
|
10
|
+
# Set to false to disable a check globally
|
|
11
|
+
checks:
|
|
12
|
+
form_labels: true
|
|
13
|
+
image_alt_text: true
|
|
14
|
+
interactive_elements: true
|
|
15
|
+
heading_hierarchy: true
|
|
16
|
+
keyboard_accessibility: true
|
|
17
|
+
aria_landmarks: true
|
|
18
|
+
form_errors: true
|
|
19
|
+
table_structure: true
|
|
20
|
+
duplicate_ids: true
|
|
21
|
+
skip_links: true
|
|
22
|
+
color_contrast: false # Disabled by default (requires JS evaluation)
|
|
23
|
+
|
|
24
|
+
# Profile-specific configurations
|
|
25
|
+
# Override global settings for different environments
|
|
26
|
+
|
|
27
|
+
development:
|
|
28
|
+
checks:
|
|
29
|
+
color_contrast: false # Skip in dev for speed
|
|
30
|
+
# Add other dev-specific overrides here
|
|
31
|
+
|
|
32
|
+
test:
|
|
33
|
+
checks:
|
|
34
|
+
# Test environment uses global settings by default
|
|
35
|
+
# Add test-specific overrides here
|
|
36
|
+
|
|
37
|
+
ci:
|
|
38
|
+
checks:
|
|
39
|
+
color_contrast: true # Full checks in CI
|
|
40
|
+
# Add CI-specific overrides here
|
|
41
|
+
|
|
42
|
+
# Ignored rules with reasons
|
|
43
|
+
# Use this to temporarily ignore specific rules while fixing issues
|
|
44
|
+
# Always include a reason and plan to fix
|
|
45
|
+
ignored_rules:
|
|
46
|
+
# - rule: form_labels
|
|
47
|
+
# reason: "Legacy form, scheduled for refactor in Q2"
|
|
48
|
+
# comment: "Will be fixed in PR #123"
|
|
49
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe 'All Pages Accessibility', type: :system do
|
|
4
|
+
# Test all GET routes for accessibility
|
|
5
|
+
# Generated automatically by rails_a11y:install generator
|
|
6
|
+
|
|
7
|
+
# Helper method to get all testable routes
|
|
8
|
+
def self.get_testable_routes
|
|
9
|
+
return [] unless defined?(Rails) && Rails.application
|
|
10
|
+
|
|
11
|
+
Rails.application.routes.routes.select do |route|
|
|
12
|
+
next false unless route.verb.to_s.include?('GET')
|
|
13
|
+
|
|
14
|
+
path_spec = route.path.spec.to_s
|
|
15
|
+
|
|
16
|
+
# Exclude API routes, internal Rails routes, and format-specific routes
|
|
17
|
+
next false if path_spec =~ /\.(json|xml|js)/
|
|
18
|
+
next false if path_spec =~ /rails/
|
|
19
|
+
next false if path_spec =~ /active_storage/
|
|
20
|
+
next false if path_spec =~ /action_cable/
|
|
21
|
+
next false if path_spec =~ /letter_opener/
|
|
22
|
+
next false if path_spec =~ /up/
|
|
23
|
+
next false if path_spec =~ /recede_historical_location/
|
|
24
|
+
next false if path_spec =~ /resume_historical_location/
|
|
25
|
+
next false if path_spec =~ /refresh_historical_location/
|
|
26
|
+
|
|
27
|
+
# Skip routes with complex requirements
|
|
28
|
+
next false if path_spec.include?('destroy') || path_spec.include?('delete')
|
|
29
|
+
|
|
30
|
+
# Skip routes with multiple required params (too complex to test automatically)
|
|
31
|
+
param_count = path_spec.scan(/\(:(\w+)\)/).length
|
|
32
|
+
next false if param_count > 1
|
|
33
|
+
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Test each route
|
|
39
|
+
get_testable_routes.each do |route|
|
|
40
|
+
path = RailsAccessibilityTesting::ChangeDetector.route_to_path(route)
|
|
41
|
+
next unless path
|
|
42
|
+
|
|
43
|
+
it "checks accessibility for #{path}" do
|
|
44
|
+
begin
|
|
45
|
+
visit path
|
|
46
|
+
|
|
47
|
+
# Wait for page to load
|
|
48
|
+
sleep 0.5
|
|
49
|
+
|
|
50
|
+
# Skip if redirected to sign in (requires authentication)
|
|
51
|
+
if page.current_url.include?('sign_in') || page.current_url.include?('login')
|
|
52
|
+
skip "Skipping #{path}: requires authentication"
|
|
53
|
+
elsif page.has_content?('Error') || page.has_content?('404') || page.has_content?('Not Found')
|
|
54
|
+
skip "Skipping #{path}: page not found or error"
|
|
55
|
+
else
|
|
56
|
+
# Page loaded successfully, run accessibility checks
|
|
57
|
+
check_comprehensive_accessibility
|
|
58
|
+
end
|
|
59
|
+
rescue => e
|
|
60
|
+
# Skip routes that can't be accessed
|
|
61
|
+
skip "Skipping #{path}: #{e.message}"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Rails A11y Configuration
|
|
4
|
+
#
|
|
5
|
+
# Configure accessibility testing behavior for your Rails application.
|
|
6
|
+
#
|
|
7
|
+
# @see https://github.com/your-org/rails-a11y for documentation
|
|
8
|
+
|
|
9
|
+
RailsAccessibilityTesting.configure do |config|
|
|
10
|
+
# Automatically run checks after system specs
|
|
11
|
+
# Set to false to disable automatic checks
|
|
12
|
+
config.auto_run_checks = true
|
|
13
|
+
|
|
14
|
+
# Logger for accessibility check output
|
|
15
|
+
# Set to nil to use default logger
|
|
16
|
+
# config.logger = Rails.logger
|
|
17
|
+
|
|
18
|
+
# Configuration file path (relative to Rails.root)
|
|
19
|
+
# config.config_path = 'config/accessibility.yml'
|
|
20
|
+
|
|
21
|
+
# Default profile to use (development, test, ci)
|
|
22
|
+
# config.default_profile = :test
|
|
23
|
+
end
|
|
24
|
+
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_accessibility_testing
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.
|
|
4
|
+
version: 1.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Regan Maharjan
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-11-
|
|
11
|
+
date: 2025-11-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: axe-core-capybara
|
|
@@ -106,6 +106,9 @@ files:
|
|
|
106
106
|
- exe/rails_a11y
|
|
107
107
|
- exe/rails_server_safe
|
|
108
108
|
- lib/generators/rails_a11y/install/install_generator.rb
|
|
109
|
+
- lib/generators/rails_a11y/install/templates/accessibility.yml.erb
|
|
110
|
+
- lib/generators/rails_a11y/install/templates/all_pages_accessibility_spec.rb.erb
|
|
111
|
+
- lib/generators/rails_a11y/install/templates/initializer.rb.erb
|
|
109
112
|
- lib/rails_accessibility_testing.rb
|
|
110
113
|
- lib/rails_accessibility_testing/accessibility_helper.rb
|
|
111
114
|
- lib/rails_accessibility_testing/change_detector.rb
|