Accessibility Testing Checklist
A step-by-step workflow for testing web accessibility. Work through each group in order: start with automated tools (axe, Lighthouse, Pa11y), test with a keyboard, verify with a screen reader, check visual and responsive behavior, then audit cognitive and content patterns.
Frequently asked questions
What's the difference between manual and automated accessibility testing?
Automated testing (axe, Lighthouse, Pa11y, WAVE) runs in seconds and catches roughly 30% of WCAG violations — missing alt text, low contrast, broken ARIA references, duplicate IDs, missing labels. Manual testing (keyboard navigation, screen reader walk-through, zoom and reflow checks, cognitive review) catches the other 70% — focus order, meaningful announcements, readable structure, content sequence, dragging alternatives, and time limits. You need both. Automated tests gate every PR; manual tests gate every release.
What's the difference between this and the developer checklist?
The Developer checklist is for items you can verify by reading or running code — markup, semantics, ARIA, color contrast, focus management. This Testing checklist is the QA-facing version — what to actually run, click, and listen for. They're complementary: developers self-check with the dev checklist, QA verifies with this one.
Can I use Pa11y for accessibility testing?
Yes — Pa11y is a solid command-line accessibility tester, built on the same HTML_CodeSniffer + axe rule sets that power browser extensions. It's particularly useful for batch-testing many URLs (e.g., crawling a sitemap) and for shell-script integration. For day-to-day work most teams pair Pa11y (CLI/CI) with axe DevTools (in-browser debugging) — they overlap heavily but the workflows complement each other. See the automated testing guide for setup.
How do I integrate accessibility testing into CI/CD?
Run axe-core or Pa11y as a GitHub Action / GitLab CI job on every pull request, failing the build on new violations. For component-level catches, add jest-axe (or @axe-core/playwright) to your unit and end-to-end test suites. The goal is to make accessibility regressions visible at PR time, not at release time. See the automated testing guide for tool-by-tool setup instructions.
What tools do I need for the manual portions?
A keyboard (for keyboard testing), at least one screen reader (NVDA + Firefox on Windows, VoiceOver + Safari on Mac, or JAWS + Chrome), and one automated tool like axe DevTools, Lighthouse, or Pa11y. Browser DevTools' built-in accessibility tree inspector handles most of the ARIA-debugging work.
How long does a full test run take?
Plan ~30-60 minutes per primary user flow for a thorough manual pass — keyboard, screen reader, zoom, and reduced-motion testing. Automated tools run in seconds but only catch ~30% of real issues. Most teams run automated checks per-PR and manual flows per-release.
Which screen reader should I prioritize?
If you only have time for one combination: NVDA + Firefox on Windows covers the largest accessibility user base. Add VoiceOver + Safari on iOS for mobile coverage. JAWS is the most expensive but still widely used in corporate environments — test it if your audience skews enterprise. See the Screen Reader Testing guide for setup.
Do automated tools replace manual testing?
No. Automated tools catch about 30% of WCAG violations — things like missing alt text, low contrast, broken ARIA references. They can't tell you whether a keyboard trap exists, whether focus moves logically, or whether a screen reader announces the right thing. Manual testing covers the remaining 70%.
When do I need to retest after fixing an issue?
Always retest the specific issue with the same tool/method that found it (closing the loop). For high-impact fixes (focus management, keyboard handlers, dynamic content), re-run a full flow test — not just the spot fix — because fixes can introduce regressions elsewhere.
What about color contrast on hover and focus states?
Test every state: default, hover, focus, active, disabled. Each must independently meet WCAG contrast minimums (4.5:1 normal text, 3:1 large text and UI components). The Color Contrast guide covers tooling and edge cases.
How do I test responsive breakpoints?
Test at 320px (smallest mobile), 768px (tablet), 1024px (desktop), and 200% browser zoom on each. Content must reflow, not horizontally scroll. Focus indicators must remain visible. Touch targets must meet 24×24px minimum on mobile. See the Mobile checklist for mobile-specific tests.