"In-test" vs "out-of-test" accessibility automation

August 26, 2025

By Mark Noonan

cypress accessibility

Since we've opened up free trials of Cypress Accessibility in Cypress Cloud, one question we've been answering is: how is this different to just running accessibility checks using an open source package like cypress-axe?

At a high level, the approach taken in Cypress Accessibility helps teams stop dealing with some of the slower and more manual aspects of collecting, triaging, and communicating about accessibility problems, so they get back to focusing on their primary tasks faster.

Customers have reported:

  • faster functional test execution by removing existing in-test usage of accessibility scanners
  • improved external accessibility audit results because more issues are detected and fixed by their teams in between audits
  • a more effective debugging experience due to full-page live DOM snapshots and Test Replays in the artifacts, instead of code snippets or static images

For teams where accessibility is a priority, leveraging your existing automated test pipeline to scan accessibility issues is an obvious win, though it can be challenging to scale the approach up if you are depending on checks to run within your tests themselves.

In-test accessibility checks

If you have previously worked with any kind of accessibility checks in your automation pipeline, you've been working with the "in-test" variety. In-test accessibility checks usually involve running a specific command each time you want to check accessibility, or building the checks into the test execution in other ways, such as scanning the initial state of the page, or even watching for DOM changes.

In a typical setup, your in-test checks will look something like this:

Cypress test code that visits a page, runs a checkA11y command, then opens a modal and runs another checkA11y command

This kind of accessibility automation can lead to disappointing results at scale, despite the time and effort spent on setting up accessibility checks. In some cases, adoption fails completely.

These are some of the challenges we've heard about with in-test checks:

  • Often just the first page load or step in a workflow is tested, so important issues are missed that show up after interactions
  • “Testing everything all the time”, helps capture missing workflow steps, but can lead to pipeline flakiness and increased testing time and resource consumption
  • This tradeoff requires training all testers to know about accessibility testing to make sure they test enough states while managing performance
  • Results are noisy and disorganized – you can fail a test but it's difficult to get useful artifacts out or do analysis beyond the single moment in time where something fails
  • Preventable issues still get to production without anybody being aware of them

Despite these challenges, many companies have built up custom workflows or created dedicated accessibility scanning test suites that are maintained specifically to run these kinds of checks, isolated from the main test suites.

What is out-of-test accessibility automation?

In Cypress Accessibility, no accessibility checks take place during test execution. Instead, we process the Test Replay data that is already part of a standard Cypress Cloud recording. This is possible because Cypress Accessibility is baked into the processing pipelines of Cypress Cloud itself, instead of running on your CI machines. We use a combination of rules from the Axe-Core® library and custom logic implemented by Cypress to create reports.

With Cypress Accessibility enabled, your tests will look and behave exactly the same as before, but without any explicit accessibility assertions:

Code for a Cypress test that visits a page, clicks a button to open a modal, and confirms the modal contents. No specific accessibility related assertions or commands are shown.

This means there's never a tradeoff between how many times you run an accessibility check and the overall performance of your functional test pipeline. The out-of-test execution then enables a lot of benefits that would be too slow (or just impossible) to achieve in a standard test context:

  • No setup or installation
  • No training on when to run accessibility checks
  • Inspectable, debuggable full-page HTML & CSS snapshots for every issue
  • Page/component reports with rule breakdowns from every run - not individual test failures
  • Results in Cypress Cloud, GitHub, Slack… + APIs for custom workflows and merge-blocking
  • Built-in analytics and tracking across all projects
  • On-demand diffs between any two reports to see only the net-new problems with a specific PR, and what's been fixed
  • No impact on test performance or flakiness 
  • Easy-to-share reports with complete reproduction steps and visual presentation of issues, all tied back to specific test runs, branches, and builds
  • New: additional accessibility feedback based on how your tests actually use the elements in your page, not just on their static properties

Because we avoid fighting for resources with your functional tests, we are able to run hundreds or thousands of accessibility scans, covering every step of every user journey, and then merge the data together into an actionable, deduplicated list of issues.

How to get started

There's no effort required on your part. Results are available immediately when you start your trial, bringing you to full adoption on day one, with a consistent set of standards tested on all your Cypress projects. Connect with us to set up a trial or get a personalized demo and walkthrough with reports from your own application.

Note: AXE-CORE® is a trademark of Deque Systems, Inc. in the US and other countries.