Introduction to Accessibility Testing
Accessibility testing ensures that digital products are usable by everyone, including people with disabilities. With over 1 billion people worldwide living with some form of disability, accessibility is not just a legal requirement but a moral imperative and business opportunity.
This guide provides comprehensive frameworks for documenting accessibility test results, ensuring WCAG 2.1 compliance, and creating inclusive digital experiences.
WCAG 2.1 Compliance Levels
Understanding Conformance Levels
Level | Description | Requirements | Typical Use Case |
---|---|---|---|
A | Minimum level | Essential accessibility features | Basic compliance, minimum legal requirement |
AA | Mid-range level | Recommended standard | Most websites, industry standard, legal requirement in many countries |
AAA | Highest level | Enhanced accessibility | Government sites, specialized accessibility-focused applications |
WCAG 2.1 Principles (POUR)
Perceivable: Information and user interface components must be presentable to users in ways they can perceive
- Text alternatives for non-text content
- Captions and transcripts for multimedia
- Adaptable content structure
- Distinguishable visual and audio content
Operable: User interface components and navigation must be operable
- Keyboard accessibility
- Sufficient time to read and use content
- No content that causes seizures
- Navigable and findable content
Understandable: Information and operation of user interface must be understandable
- Readable text content
- Predictable functionality
- Input assistance and error prevention
Robust: Content must be robust enough to be interpreted by a wide variety of user agents, including assistive technologies
- Compatible with current and future tools
- Valid, semantic HTML
- Proper ARIA usage
Accessibility Test Report Template
Executive Summary Template
# ACCESSIBILITY TEST REPORT
## Executive Summary
**Application**: E-Commerce Web Platform
**Test Date**: October 8, 2025
**Tester**: Alex Rodriguez (Accessibility Specialist)
**Target Compliance**: WCAG 2.1 Level AA
**Overall Result**: 78% Compliant (Needs Improvement)
### Key Findings
- **Critical Issues**: 12 issues blocking accessibility
- **High Priority**: 23 issues significantly impacting usability
- **Medium Priority**: 45 issues affecting user experience
- **Low Priority**: 18 minor accessibility concerns
### Compliance Summary
| Principle | Level A | Level AA | Level AAA |
|-----------|---------|----------|-----------|
| Perceivable | 85% | 72% | 45% |
| Operable | 90% | 78% | 52% |
| Understandable | 88% | 81% | 60% |
| Robust | 82% | 75% | N/A |
### Recommendation
Prioritize fixing all Critical and High Priority issues within 30 days to achieve WCAG 2.1 Level AA compliance.
## Test Scope
### Pages Tested
1. Homepage (/)
2. Product Listing (/products)
3. Product Detail (/products/[id])
4. Shopping Cart (/cart)
5. Checkout (/checkout)
6. User Account (/account)
7. Search Results (/search)
8. Help Center (/help)
### Testing Tools Used
- **Automated**: axe DevTools, WAVE, Lighthouse
- **Manual**: NVDA Screen Reader, JAWS, VoiceOver
- **Keyboard Navigation**: Manual testing
- **Color Contrast**: Contrast Checker, Colorblind Simulator
### Assistive Technologies Tested
- NVDA 2024.3 (Windows)
- JAWS 2024 (Windows)
- VoiceOver (macOS, iOS)
- TalkBack (Android)
- Dragon NaturallySpeaking (Voice control)
## Detailed Findings
### Critical Issues (12 Found)
#### Issue #1: Missing Alt Text for Product Images
**WCAG Criterion**: 1.1.1 Non-text Content (Level A)
**Severity**: Critical
**Impact**: Screen reader users cannot identify products
**Location**: Product listing page (/products)
**Description**:
Product images lack alternative text descriptions. Screen readers announce "image" without providing meaningful information about the product.
**Evidence**:
```html
<!-- Current (Non-compliant) -->
<img src="/images/product-123.jpg" />
<!-- Should be -->
<img src="/images/product-123.jpg"
alt="Blue cotton t-shirt with round neck, size medium" />
User Impact:
- Screen reader users: Cannot identify products
- Users with images disabled: No product information
- SEO impact: Reduced search visibility
Recommendation: Add descriptive alt text to all product images. Include:
- Product name
- Key visual characteristics (color, style)
- Size information when visible
Priority: P0 - Critical Estimated Effort: 2 days (100+ images)
Issue #2: Keyboard Trap in Modal Dialogs
WCAG Criterion: 2.1.2 No Keyboard Trap (Level A) Severity: Critical Impact: Keyboard users cannot escape modal dialogs
Location: Add to Cart modal, Login popup
Description: When users open modal dialogs using keyboard navigation, focus becomes trapped inside the modal. Pressing Esc or Tab does not close the modal or allow navigation outside.
Evidence: Video recording shows keyboard navigation test where user cannot exit modal using standard keyboard commands.
Steps to Reproduce:
- Navigate to product page using Tab key
- Press Enter on “Add to Cart” button
- Modal opens
- Try to close modal using Esc key - FAILS
- Try to Tab outside modal - FAILS
User Impact:
- Keyboard-only users: Cannot continue shopping
- Screen reader users: Stuck in modal context
- Affects: ~15% of users with motor disabilities
Recommendation: Implement proper focus management:
// Add keyboard event handler
modal.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
closeModal();
returnFocusToTrigger();
}
});
// Trap focus within modal
trapFocus(modal);
// Return focus on close
function closeModal() {
modal.close();
triggerButton.focus();
}
Priority: P0 - Critical Estimated Effort: 1 day
High Priority Issues (23 Found)
Issue #3: Insufficient Color Contrast
WCAG Criterion: 1.4.3 Contrast (Minimum) (Level AA) Severity: High Impact: Low vision users cannot read text
Location: Multiple pages - secondary buttons, form labels, footer links
Description: Text elements fail to meet minimum 4.5:1 contrast ratio requirement. Particularly problematic for light gray text on white backgrounds.
Evidence:
Element | Foreground | Background | Contrast Ratio | Required | Status |
---|---|---|---|---|---|
Secondary button | #999999 | #FFFFFF | 2.8:1 | 4.5:1 | FAIL |
Form label | #AAAAAA | #FFFFFF | 2.3:1 | 4.5:1 | FAIL |
Footer link | #888888 | #F5F5F5 | 3.2:1 | 4.5:1 | FAIL |
User Impact:
- Low vision users: Cannot read text
- Colorblind users: Reduced readability
- Aging users: Eye strain and difficulty
- Outdoor users: Sunlight glare makes text invisible
Recommendation: Update color palette to meet contrast requirements:
/* Update CSS */
.secondary-button {
color: #595959; /* Was #999999 - New ratio: 7.0:1 ✓ */
}
.form-label {
color: #4A4A4A; /* Was #AAAAAA - New ratio: 9.7:1 ✓ */
}
.footer-link {
color: #666666; /* Was #888888 - New ratio: 5.7:1 ✓ */
}
Priority: P1 - High Estimated Effort: 3 days (design review + implementation)
Issue #4: Form Validation Without Text Alternative
WCAG Criterion: 3.3.1 Error Identification (Level A) Severity: High Impact: Users cannot understand form errors
Location: Checkout form, Registration form
Description: Form validation errors are indicated only by red border color without text explanation. Screen readers do not announce errors.
Evidence:
<!-- Current (Non-compliant) -->
<input type="email"
class="error"
value="invalid-email" />
<!-- Should be -->
<input type="email"
class="error"
value="invalid-email"
aria-invalid="true"
aria-describedby="email-error" />
<span id="email-error" role="alert">
Please enter a valid email address
</span>
User Impact:
- Screen reader users: No error notification
- Colorblind users: Cannot see red border
- Cognitive disability: No clear guidance
Recommendation: Implement accessible form validation:
- Add text error messages
- Use aria-invalid attribute
- Link errors with aria-describedby
- Announce errors with role=“alert”
Priority: P1 - High Estimated Effort: 2 days
Medium Priority Issues (45 Found)
Issue #5: Missing Landmark Regions
WCAG Criterion: 2.4.1 Bypass Blocks (Level A) Severity: Medium Impact: Screen reader navigation inefficiency
Recommendation:
<header role="banner">
<nav role="navigation" aria-label="Main navigation">
<!-- Navigation content -->
</nav>
</header>
<main role="main">
<!-- Main content -->
</main>
<footer role="contentinfo">
<!-- Footer content -->
</footer>
Priority: P2 - Medium Estimated Effort: 1 day
Testing Methodology
Automated Testing
// Example: axe-core integration for automated testing
const { AxePuppeteer } = require('@axe-core/puppeteer');
const puppeteer = require('puppeteer');
async function runAccessibilityTest(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const results = await new AxePuppeteer(page)
.withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa'])
.analyze();
console.log(`Violations found: ${results.violations.length}`);
results.violations.forEach(violation => {
console.log(`
Issue: ${violation.description}
WCAG: ${violation.tags.join(', ')}
Impact: ${violation.impact}
Elements affected: ${violation.nodes.length}
`);
});
await browser.close();
return results;
}
// Run tests
const pages = [
'https://example.com/',
'https://example.com/products',
'https://example.com/checkout'
];
pages.forEach(async (page) => {
await runAccessibilityTest(page);
});
Manual Testing Checklist
## Manual Accessibility Test Checklist
### Keyboard Navigation
- [ ] All interactive elements accessible via Tab key
- [ ] Logical tab order follows visual layout
- [ ] Focus indicators clearly visible
- [ ] No keyboard traps
- [ ] All functionality available via keyboard
- [ ] Skip links present and functional
- [ ] Modal dialogs manage focus correctly
### Screen Reader Testing
- [ ] All images have appropriate alt text
- [ ] Form labels properly associated
- [ ] Error messages announced
- [ ] Dynamic content updates announced
- [ ] ARIA landmarks properly implemented
- [ ] ARIA live regions for updates
- [ ] Table headers properly associated
- [ ] List structures properly marked up
### Visual Testing
- [ ] Color contrast meets WCAG AA standards
- [ ] Text remains readable at 200% zoom
- [ ] No information conveyed by color alone
- [ ] Text spacing adjustable
- [ ] Content reflows at 320px width
- [ ] No horizontal scrolling at 100% zoom
### Multimedia
- [ ] Videos have captions
- [ ] Audio has transcripts
- [ ] Auto-play can be paused
- [ ] No flashing content >3 times per second
### Forms
- [ ] All form fields have labels
- [ ] Required fields clearly marked
- [ ] Error messages are clear and helpful
- [ ] Error prevention for critical actions
- [ ] Success confirmation provided
### Cognitive Accessibility
- [ ] Consistent navigation across pages
- [ ] Predictable functionality
- [ ] Clear headings and labels
- [ ] Simple, clear language
- [ ] Help and documentation available
Remediation Plan
Priority Matrix
Priority | Timeline | Issues | Effort | Impact |
---|---|---|---|---|
P0 - Critical | Week 1 | 12 | 8 days | Blocks basic usage |
P1 - High | Week 2-3 | 23 | 15 days | Significantly impacts UX |
P2 - Medium | Week 4-6 | 45 | 20 days | Improves experience |
P3 - Low | Week 7-8 | 18 | 8 days | Polish and refinement |
Implementation Roadmap
## Week 1: Critical Issues
**Goal**: Fix all blocking accessibility issues
- [ ] Add alt text to all images
- [ ] Fix keyboard traps in modals
- [ ] Implement skip links
- [ ] Fix form label associations
- [ ] Add ARIA labels to unlabeled buttons
**Testing**: Daily automated scans, manual verification
## Week 2-3: High Priority Issues
**Goal**: Achieve basic WCAG 2.1 AA compliance
- [ ] Fix color contrast issues
- [ ] Implement accessible form validation
- [ ] Add landmark regions
- [ ] Fix heading hierarchy
- [ ] Implement focus management
**Testing**: Screen reader testing, keyboard navigation
## Week 4-6: Medium Priority Issues
**Goal**: Enhance accessibility experience
- [ ] Add ARIA live regions for dynamic content
- [ ] Implement accessible data tables
- [ ] Add breadcrumb navigation
- [ ] Enhance mobile accessibility
- [ ] Improve error recovery
**Testing**: Full WCAG 2.1 AA audit
## Week 7-8: Low Priority Issues
**Goal**: Polish and AAA-level enhancements
- [ ] Add extended descriptions where helpful
- [ ] Implement reading level indicators
- [ ] Add sign language videos for key content
- [ ] Enhance keyboard shortcuts
- [ ] Document accessibility features
**Testing**: User testing with people with disabilities
Continuous Monitoring
Automated Testing in CI/CD
# .github/workflows/accessibility.yml
name: Accessibility Tests
on: [push, pull_request]
jobs:
a11y-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: npm install
- name: Build application
run: npm run build
- name: Start server
run: npm start &
- name: Run axe tests
run: npm run test:a11y
- name: Upload results
uses: actions/upload-artifact@v2
with:
name: accessibility-report
path: accessibility-report.html
- name: Comment PR with results
uses: actions/github-script@v5
with:
script: |
const results = require('./accessibility-results.json');
const violations = results.violations.length;
if (violations > 0) {
core.setFailed(`Found ${violations} accessibility violations`);
}
Conclusion
Accessibility testing is an ongoing process that requires automated tools, manual testing, and user feedback. By following WCAG 2.1 guidelines and implementing comprehensive testing strategies, organizations can create inclusive digital experiences that serve all users effectively.
Regular accessibility audits, continuous monitoring, and prioritized remediation ensure that applications remain accessible as they evolve. Remember that accessibility benefits everyone, improving usability, SEO, and overall user experience.