2.2 KiB
2.2 KiB
Accessibility Testing
This directory contains tests for WCAG 2.1 AAA compliance.
Overview
The accessibility testing framework uses multiple tools to provide comprehensive coverage:
- axe-core: JavaScript library for automated accessibility testing
- Pa11y: Command-line tool for accessibility testing
- Manual testing checklist: For criteria that cannot be automatically tested
Requirements
- Node.js and npm
- Pa11y:
npm install -g pa11y
- axe-core:
npm install axe-core
- Playwright:
npm install playwright
Running Tests
To run all accessibility tests:
./run-accessibility-tests.sh [base-url]
Default base URL is http://localhost:8080
if not specified.
Individual Test Scripts
axe-test.js
: Runs axe-core against all pagespa11y-test.sh
: Runs Pa11y against all pagesmanual-checklist.md
: Checklist for manual testing
WCAG 2.1 AAA Compliance
These tests check for WCAG 2.1 AAA compliance, which includes:
-
Perceivable:
- 7:1 contrast ratio for text
- Text spacing customization
- No loss of content when text is resized
- Audio description for video
-
Operable:
- No timing constraints
- No interruptions
- Multiple ways to find content
- Proper heading structure
-
Understandable:
- Unusual words are defined
- Abbreviations are expanded
- Reading level appropriate for audience
- Context-sensitive help available
-
Robust:
- Proper ARIA usage
- Compatibility with assistive technologies
Test Reports
Reports are saved in the ../reports
directory:
axe-summary.json
: Summary of axe-core test resultspa11y-summary.json
: Summary of Pa11y test resultsaccessibility-summary.json
: Combined summary of all tests
Manual Testing
Some WCAG 2.1 AAA criteria require manual testing. Use the manual-checklist.md
file to document these tests.
Additional Tools
For more comprehensive testing, consider using:
- Accessibility Insights for Web: Browser extension for detailed accessibility testing
- NVDA or VoiceOver: Screen readers for testing screen reader compatibility
- Keyboard-only navigation: Test all functionality without using a mouse