Automated vs Manual Accessibility Testing
What Automated Testing Catches
Automated tools excel at structural and syntactic checks where the pass/fail criteria can be expressed as a deterministic rule. These checks require no human judgment, produce consistent results regardless of who runs them, and scale across thousands of pages without additional effort per page.
Missing alt attributes on images are the most straightforward automated check. The tool examines every img element and flags those without an alt attribute. This catches images that are completely invisible to screen reader users, one of the most common and impactful accessibility failures on the web. Automated tools can also detect empty alt text on images that appear to be informational based on their context, though this determination is less reliable.
Color contrast ratios are calculated precisely by automated tools. They measure the luminance ratio between foreground text color and background color, comparing it against the 4.5:1 threshold for normal text and 3:1 for large text. Tools like axe-core can evaluate contrast even when background colors are set through CSS gradients, though images behind text are harder to evaluate automatically.
Form label associations are verified by checking whether each form input has a programmatically associated label through the label element's for attribute, aria-label, or aria-labelledby. Missing labels are one of the top five most common accessibility failures and one of the easiest for automated tools to detect because the relationship is either present in the HTML or it is not.
HTML validation issues like duplicate id attributes, missing lang attributes on the html element, and deprecated or invalid ARIA attribute values are purely syntactic checks that automated tools handle perfectly. These issues are invisible to sighted users but cause real problems for assistive technology that relies on valid, well-structured HTML to interpret page content.
Heading hierarchy violations (skipping levels, multiple h1 elements) and missing landmark roles (no main element, no nav element) are structural checks that automated tools perform reliably. They examine the DOM tree and verify that headings follow a logical sequence and that landmark regions divide the page into navigable sections.
What Automated Testing Misses
The fundamental limitation of automated testing is that it can only check things that have deterministic, machine-verifiable answers. Many WCAG success criteria require human judgment to evaluate, and automated tools either skip these criteria entirely or flag them as "needs review" without making a determination.
Alt text quality is the clearest example. An automated tool can detect that an image has alt text, but it cannot evaluate whether that alt text accurately describes the image. An image of a bar chart showing quarterly revenue with alt="chart" technically passes the automated check (the alt attribute exists and is not empty) but fails the WCAG requirement because the alt text does not convey the information the chart presents to sighted users. Evaluating alt text quality requires a human who can see the image, understand its purpose in context, and judge whether the text alternative provides equivalent information.
Keyboard interaction patterns require manual testing because they depend on the specific behavior of each interactive component. An automated tool can check whether an element is focusable (has tabindex or is a native interactive element), but it cannot determine whether a custom dropdown responds correctly to arrow keys, whether a modal traps focus appropriately, or whether keyboard shortcuts conflict with screen reader commands. These interaction patterns must be tested by a person actually using the keyboard to navigate and operate each widget.
Focus order and reading order require human judgment about whether the sequence makes logical sense. An automated tool can detect when tabindex values create an explicit order, but the vast majority of tab order issues involve elements whose visual position (controlled by CSS flexbox, grid, or absolute positioning) differs from their DOM order. The tool cannot determine whether the visual layout or the DOM order represents the "correct" reading sequence, because that depends on the content's meaning.
Dynamic content behavior, including modal focus management, live region announcements, accordion and tab panel state changes, and AJAX-loaded content updates, requires interactive manual testing. An automated tool can check whether aria-live attributes exist on specific elements, but it cannot verify that the live region actually announces the right content at the right time, that focus moves to a modal when it opens, or that focus returns to the trigger when the modal closes. These behaviors only manifest during interaction, not from static analysis.
Cognitive accessibility criteria like clear language, predictable navigation, and meaningful error messages are inherently subjective. Whether link text is "meaningful" depends on its surrounding context. Whether an error message is "specific enough" depends on the user's expected knowledge level. Whether navigation is "consistent" depends on comparing multiple pages across the site. No automated rule can make these determinations reliably.
The 30-40% Coverage Reality
The claim that automated tools catch 30-40% of accessibility issues is not marketing caution or false modesty. It is a well-researched finding confirmed by multiple independent studies. The UK Government Digital Service tested automated tools against manually audited government websites and found that automation detected 30% of known issues. Deque Systems' internal research found that axe-core catches approximately 57% of the WCAG criteria that can be automated, which translates to roughly 30-40% of all WCAG Level AA criteria including those that require human judgment. WebAIM's research on the top million websites consistently finds that even pages with zero automated errors still have accessibility problems when manually tested.
This coverage gap has a specific cause: approximately half of WCAG 2.1 Level AA success criteria either cannot be tested automatically at all or can only be partially checked. Criterion 1.1.1 (Non-text Content) can be automatically checked for the presence of alt text but not for the quality of that text. Criterion 2.4.6 (Headings and Labels) can be automatically checked for heading presence but not for whether headings are descriptive. Criterion 1.3.1 (Info and Relationships) can be automatically checked for some structural elements but not for whether the semantic meaning of the markup accurately represents the content's relationships.
Teams that rely solely on automated testing create a dangerous false confidence. A "zero violations" result from Lighthouse or axe-core means you passed the automated checks, not that your site is accessible. The majority of real-world accessibility barriers, the ones that prevent actual disabled users from completing tasks, require human evaluation to detect.
When to Use Automated Testing
Automated testing provides the most value as a continuous regression prevention mechanism. Embed axe-core or cypress-axe into your test suite, run it on every pull request, and prevent new accessibility violations from entering the codebase. This catches the low-hanging fruit automatically: someone adds an image without alt text, introduces a form field without a label, or uses a color combination that fails contrast, and the CI build fails before the code merges. Over time, this continuous checking establishes a baseline where the most common automated-detectable issues simply do not occur because they are caught during development.
Use automated testing for site-wide scanning to identify systemic issues. Running axe-core against every page in your sitemap reveals patterns: if the same contrast failure appears on 200 pages, the fix is probably a CSS variable change in one file rather than 200 individual edits. Automated scanning at scale highlights which issues come from shared templates and components versus which are page-specific content problems.
Use automated testing for quick health checks during development. The axe DevTools browser extension gives developers immediate feedback as they build, letting them fix accessibility issues in the same development session where they were introduced rather than discovering them during QA or, worse, through a user complaint or legal notice.
When to Use Manual Testing
Manual testing is essential for any page or component that involves complex interactions. Custom widgets (tabs, accordions, carousels, modal dialogs, date pickers, autocomplete fields), embedded content (maps, video players, third-party widgets), and multi-step workflows (checkout flows, onboarding sequences, form wizards) all require a human tester to navigate them with keyboard and screen reader to verify they work correctly.
Content quality evaluation requires manual review. Alt text, link text, heading text, error messages, instructions, and labels all need human judgment to determine whether they are meaningful, descriptive, and appropriate for their context. An automated tool can verify that these elements exist, but only a human can evaluate whether they communicate effectively.
User flow validation requires manual testing because it tests sequences of actions rather than individual page states. A login flow might have no automated violations on any individual step, but if the error message when authentication fails is vague, if the password field's visibility toggle is not keyboard-accessible, or if success redirects focus to an unexpected location, those issues only surface through manual interaction.
Screen reader compatibility testing is inherently manual. Screen readers interact with the browser's accessibility tree, which is an abstraction of the DOM that the operating system provides to assistive technology. The accessibility tree's structure, the order in which content is exposed, and the names and roles assigned to elements all vary between browsers and screen reader combinations. Testing with NVDA on Firefox, JAWS on Chrome, and VoiceOver on Safari each reveal different issues because each combination interprets HTML, CSS, and ARIA differently.
Combining Both Approaches Effectively
The most effective accessibility testing strategy uses automated testing as a continuous safety net and manual testing as a periodic deep evaluation, with each approach informing the other.
Start by adding automated accessibility checks to your CI/CD pipeline. This takes minimal setup (a few lines of code to integrate axe-core into your existing test framework) and immediately prevents the most common violations from reaching production. Set a threshold that reflects your current state: if you have 50 existing violations, set the threshold at 50 to prevent new ones while you work on remediation, then ratchet it down as you fix issues.
Schedule manual testing cycles aligned with your release process. Before each major release, have a team member (or an external auditor) perform keyboard testing and screen reader testing on new features and updated pages. Focus manual testing effort on the areas where automated tools provide the least coverage: interactive components, form workflows, dynamic content, and content quality.
Use findings from manual testing to improve your automated checks. If manual testing reveals a recurring pattern, like custom dropdown components that consistently fail keyboard accessibility, consider creating a custom axe-core rule or a Playwright test specifically for that component pattern. This shifts detection of that specific issue from manual (expensive, periodic) to automated (cheap, continuous).
Use automated scanning to prioritize manual testing effort. If automated scanning reveals that certain page templates or component types have high error counts, start your manual testing there, because pages with many automated violations are likely to have proportionally more manual-only issues as well.
Document the split in your accessibility testing plan. Specify which checks are automated (and in which pipeline stage), which checks require manual evaluation (and how often), and which require specialized tools like screen readers or color blindness simulators. This documentation ensures coverage does not depend on any single person's memory and provides evidence of due diligence if your organization faces an accessibility complaint.
Automated testing catches structural violations quickly and at scale but only covers 30-40% of WCAG issues. Manual testing with keyboards and screen readers covers the rest. Use automation continuously in CI/CD and manual testing periodically before releases, because neither approach alone provides adequate coverage.