Accessibility Testing Tools for Developers: Catch Issues Before Your Users Do
Web accessibility is not optional. Over 1 billion people worldwide have some form of disability. In the US, the ADA applies to websites, and lawsuits over inaccessible websites have increased dramatically — over 4,000 federal ADA web accessibility lawsuits were filed in 2024. Beyond legal risk, inaccessible websites exclude customers and users.
The good news: many accessibility issues are detectable with automated tools, and the remaining issues can be caught with systematic manual testing. The bad news: most development teams do not test for accessibility at all, or they run a Lighthouse audit once and call it done.
Here is a practical guide to the tools and workflows that make accessibility testing part of your development process, not an afterthought.
What Automated Tools Can and Cannot Catch
This is the most important thing to understand about accessibility testing: automated tools can detect approximately 30-50% of accessibility issues. The rest require human judgment.
What Automated Tools Catch Well
- Missing alt text on images
- Missing form labels
- Insufficient color contrast
- Missing document language
- Duplicate IDs
- Invalid ARIA attributes
- Missing heading hierarchy
- Keyboard focus indicators
- Empty buttons and links
What Requires Human Testing
- Whether alt text is actually meaningful (not just present)
- Whether the reading order makes sense
- Whether custom widgets are operable with a keyboard
- Whether focus management is correct in modals and dynamic content
- Whether animations are problematic for vestibular disorders
- Whether the site is usable with a screen reader (not just technically compliant)
- Whether content is understandable at different zoom levels
- Whether error messages are helpful and accessible
Automated Testing Tools
axe by Deque
axe is the industry standard accessibility testing engine. It powers many other tools and can be used as a browser extension, CLI, or library integrated into your test suite.
axe DevTools (Browser Extension)
Install the axe DevTools extension for Chrome or Firefox. Open DevTools, navigate to the axe tab, and scan the current page. The results show each issue with its WCAG rule, severity, affected element, and remediation guidance.
Strengths:
- Clear, actionable issue descriptions
- Highlights affected elements in the page
- Groups issues by severity (critical, serious, moderate, minor)
- Zero false positives — axe only reports issues it is certain about
- "Best practices" section for issues beyond strict WCAG requirements
axe-core (Library)
axe-core is the open-source JavaScript library that powers axe DevTools. Integrate it into your automated test suite:
// With Playwright
const { test, expect } = require('@playwright/test');
const AxeBuilder = require('@axe-core/playwright').default;
test('should pass accessibility checks', async ({ page }) => {
await page.goto('https://example.com');
const results = await new AxeBuilder({ page }).analyze();
expect(results.violations).toEqual([]);
});
// With Cypress
import 'cypress-axe';
it('should pass accessibility checks', () => {
cy.visit('/');
cy.injectAxe();
cy.checkA11y();
});
Strengths:
- Integrates with Playwright, Cypress, Selenium, Jest, and more
- Runs in CI — catch regressions before they ship
- Configurable rules — disable specific checks or target specific WCAG levels
- Zero false positives policy — reliable enough to fail CI builds on violations
- Open source (MPL 2.0)
Best Practice: Run axe-core in your end-to-end tests on every page and every interactive state (modals open, dropdowns expanded, form errors displayed).
Lighthouse Accessibility Audit
Lighthouse includes an accessibility audit powered by axe-core. It is less comprehensive than running axe directly (fewer rules), but convenient because it runs alongside performance, SEO, and best practices audits.
When to use: Quick checks and CI integration where you want a single tool for multiple audits.
When not to use: As your only accessibility testing — the rule set is too limited.
WAVE
WAVE (Web Accessibility Evaluation Tool) by WebAIM provides a visual overlay showing accessibility issues directly on your page. Elements with issues are highlighted with icons indicating the type and severity.
Strengths:
- Visual overlay makes it easy to see issues in context
- Shows page structure (headings, landmarks, ARIA)
- Contrast checker with real-time preview
- Useful for explaining issues to non-technical stakeholders
- Free browser extension and web-based checker
Limitations:
- Cannot be automated or run in CI
- Visual overlay can be overwhelming on pages with many issues
- Some false positives (unlike axe's zero false positive policy)
Best For: Visual review during development and explaining accessibility issues to designers and product managers.
Pa11y
Pa11y is an open-source accessibility testing tool focused on CI integration and automated monitoring. It can test individual pages or crawl entire sites.
Pa11y CLI:
pa11y https://example.com
Pa11y CI:
# .pa11yci.json
{
"defaults": {
"standard": "WCAG2AA"
},
"urls": [
"https://example.com/",
"https://example.com/about",
"https://example.com/contact"
]
}
pa11y-ci
Pa11y Dashboard: A web dashboard that monitors accessibility over time.
Strengths:
- Simple CLI interface
- CI-friendly with exit codes based on issue severity
- Dashboard for ongoing monitoring
- Site crawling for testing all pages
- Uses HTML_CodeSniffer or axe-core as the testing engine
Limitations:
- Less detailed remediation guidance than axe DevTools
- Dashboard requires self-hosting
- Limited handling of dynamic content (SPAs)
Best For: CI enforcement and site-wide accessibility monitoring.
Manual Testing Tools
Screen Readers
Testing with a screen reader is the most important manual accessibility test. If a screen reader user cannot navigate your site, no amount of automated testing will catch the problem.
VoiceOver (macOS/iOS): Built into every Mac and iPhone. Press Cmd+F5 to enable on Mac.
NVDA (Windows): Free, open-source screen reader. Download from nvaccess.org.
JAWS (Windows): The most widely used screen reader professionally. Expensive ($90/year) but important for comprehensive testing.
TalkBack (Android): Built into Android devices.
Basic Screen Reader Testing Checklist
- Can you navigate the page using only headings (H key in NVDA/VoiceOver)?
- Are all images described with meaningful alt text?
- Can you complete all forms using only the keyboard?
- Are form errors announced when they appear?
- Do modals trap focus correctly and announce their content?
- Are dynamic content updates (AJAX, live regions) announced?
- Is the reading order logical?
Keyboard Testing
Navigate your entire site using only the keyboard:
- Tab: Move forward through interactive elements
- Shift+Tab: Move backward
- Enter/Space: Activate buttons and links
- Arrow keys: Navigate within widgets (menus, tabs, radio groups)
- Escape: Close modals and popups
What to check:
- Can you reach every interactive element with Tab?
- Is there a visible focus indicator on every focused element?
- Can you operate all controls (dropdowns, date pickers, sliders)?
- Can you escape modals and return to the triggering element?
- Are there any keyboard traps (elements you can Tab into but not out of)?
Color Contrast Checkers
WebAIM Contrast Checker (https://webaim.org/resources/contrastchecker/): Enter foreground and background colors to check WCAG contrast ratios.
Stark (Figma plugin): Check contrast during design, not just development.
Chrome DevTools: Inspect an element, click the color swatch in the Styles panel — DevTools shows the contrast ratio and WCAG compliance level.
WCAG requirements:
- Normal text: 4.5:1 ratio minimum (AA)
- Large text (18px bold or 24px regular): 3:1 ratio minimum (AA)
- Enhanced (AAA): 7:1 for normal text, 4.5:1 for large text
CI/CD Integration Strategy
Level 1: Basic (Every Team Should Do This)
Add axe-core to your end-to-end tests. Fail builds on critical and serious violations.
// playwright.config.js — add to existing e2e tests
test('homepage accessibility', async ({ page }) => {
await page.goto('/');
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa'])
.analyze();
expect(results.violations).toEqual([]);
});
Level 2: Comprehensive
Add Pa11y CI to test all pages, not just those covered by e2e tests. Run on staging before production deployment.
Level 3: Continuous Monitoring
Use a monitoring service that tracks accessibility compliance over time and alerts on regressions. Options include Siteimprove, Level Access, and self-hosted Pa11y Dashboard.
WCAG Compliance Levels
WCAG 2.1 Level A: Minimum accessibility. Addresses the most severe barriers. 30 success criteria.
WCAG 2.1 Level AA: The target for most websites and the basis of most legal requirements. 50 success criteria (includes Level A).
WCAG 2.1 Level AAA: Highest accessibility. 78 success criteria. Difficult to achieve for all content types. Not typically a legal requirement.
WCAG 2.2: Released in 2023, adds criteria for focus appearance, dragging movements, and accessible authentication. Increasingly the standard for new projects.
Target Level AA for your projects. It covers the issues that matter most for real users and satisfies most legal requirements.
Recommendations
Every developer: Install the axe DevTools browser extension and check it during development. This takes 10 seconds and catches the most common issues.
Every project: Integrate axe-core into your e2e test suite. Fail CI on critical violations. This prevents accessibility regressions from shipping.
Teams serious about accessibility: Add keyboard testing and screen reader testing to your QA process. Automated tools catch formatting issues; manual testing catches usability issues.
Organizations with legal requirements: Combine automated testing (axe + Pa11y) with periodic manual audits (screen reader testing, keyboard testing, assistive technology testing). Consider a professional accessibility audit annually.
The most impactful step is the simplest one: run axe on every page before you ship. It takes minutes to set up, costs nothing, and catches the issues that affect the most users. Everything else builds on that foundation.