ScreenshotNeo

BlogComparisons

In-Test vs. Out-of-Test Accessibility Automation: What’s the Difference?

Learn how in-test and out-of-test accessibility checks differ, what each covers, and how to choose a workflow that pairs automation with manual evaluation.

By the ScreenshotNeo team4 October 202610 min read

In-test accessibility automation runs a scan during the test; out-of-test automation analyzes data captured by tests after their code has finished. The main differences are when the scan runs, how findings connect to test failures and artifacts, and what infrastructure the workflow depends on. Neither approach proves an application is fully accessible. Automated rules catch only certain detectable issues, so keep manual evaluation and application-specific assertions in the process.

1. What “in-test” and “out-of-test” mean

These terms describe where accessibility analysis sits in a testing workflow:

  • In-test: A test invokes an accessibility scanner at a chosen point while the test is running. For example, a Cypress test can call an axe-core scan through a community integration such as cypress-axe.
  • Out-of-test: A separate service processes information captured during test runs after the test code has run. Cypress describes its Accessibility service as analyzing Test Replay data in Cypress Cloud rather than running accessibility checks during Cypress test execution.

This is an architecture and workflow distinction, not a measure of accessibility quality. Both approaches can only examine states that their tests reach and that their scanning or recording workflow captures.

2. How in-test checks work

An in-test check is a scan placed into a test journey. The test author chooses when to run it, which often means choosing which page or interaction state to inspect. A check after initial page load covers that state; it does not automatically cover a dialog, validation error, expanded menu, or later workflow state.

That control makes in-test scanning useful when a team wants findings associated with a specific test step or wants to use an existing test setup. It also makes coverage a test-design responsibility. Teams need to decide which meaningful states to visit and scan, and maintain those checks as journeys change.

Example: add a scan to a Cypress test

The following illustrates the placement of a scan using the cypress-axe community plugin. Install and configure the plugin according to its project documentation, then invoke the scan after the page reaches the state you want to inspect:

// cypress/e2e/accessibility.cy.js
// Assumes cypress-axe is installed and its commands are registered.
describe('checkout accessibility', () => {
  it('scans the checkout page', () => {
    cy.visit('/checkout');
    cy.injectAxe();
    cy.checkA11y();
  });
});

To cover a state that appears after an interaction, perform that interaction and scan again. The exact commands and configuration depend on the plugin version and the application’s test setup; see the Cypress accessibility documentation for its discussion of in-test scanning and community plugins.

Operational tradeoffs

A scan runs in the test path, so it adds work to that path. The impact depends on the number of scans, the suite, the environment, and how often tests run; there is no universal runtime penalty supported by the available evidence. Cypress’s vendor-authored article also describes possible execution time, flakiness, noisy results, and tester-training costs when adding many checks. Treat those as potential operational concerns, not guaranteed outcomes or independent benchmark findings.

3. How out-of-test checks work

In an out-of-test workflow, functional tests run and the platform captures data about their execution. A separate service later analyzes that data for accessibility findings. In Cypress’s implementation, the vendor says Cypress Cloud processes Test Replay data, applies axe-core rules and Cypress custom logic, and organizes results into reports.

Cypress describes features such as HTML and CSS snapshots, page- or component-oriented reports, run comparisons, and links between findings and test runs or branches. These are claims about Cypress Accessibility specifically, not properties shared by every out-of-test system. Cypress also describes its service as a separately purchased premium product that depends on Cypress Cloud recordings; check the vendor’s current product information for availability and terms.

Separating analysis from the functional test execution can keep the scan itself out of that test path, according to Cypress’s description of its service. That does not mean the approach sees every possible application state. Its coverage still depends on the journeys that were actually recorded. A state that no test reaches cannot be analyzed from that test’s recording.

4. Comparison at a glance

Decision point In-test checks Out-of-test processing
When analysis runs During test execution, when a test invokes the scan After test code runs, on captured test data
Who selects scan points Test authors choose where to invoke scans Recorded test journeys supply the states a service can process
Test changes Requires an integration or scan command in the test workflow Cypress says its Accessibility service needs no accessibility assertions in tests
Feedback and context Findings can be tied to the scan point or test workflow Cypress describes reports, snapshots, comparisons, and links to test runs
Test-path work Scans add work during the test; impact varies by implementation and suite Cypress says its service processes data separately from functional test runs
Portability and dependencies A plugin can run within a Cypress test workflow Cypress Accessibility relies on Cypress Cloud recordings and is a separate service
Human evaluation Still needed, along with app-specific assertions Still needed, along with app-specific assertions

The reporting and execution details in the out-of-test column describe Cypress’s product as documented by Cypress. They should not be assumed of other services without checking their documentation.

5. Which approach should you choose?

Choose based on how your team wants to place checks and review findings, then verify that the workflow covers the states and expectations that matter to your application.

In-test checks may fit when

  • You want test authors to choose explicit scan points in a journey.
  • You already have a test workflow that can host a scanner integration.
  • You want the scan to be part of the test’s own execution and feedback loop.
  • You can maintain tests that reach important interactive states, not only initial page loads.

Out-of-test processing may fit when

  • Your team wants accessibility analysis to happen after functional test execution.
  • You value the specific reporting and captured context offered by a service such as Cypress Accessibility.
  • Your tests already exercise the states you want analyzed, and the service can access their recordings.
  • The platform dependency and separate service cost fit your workflow.

You can also combine automated checks with other testing methods. Whichever architecture you choose, write explicit assertions for application-specific expectations that a generic scanner cannot know, such as whether a particular control has the accessible name your users need.

6. Build meaningful state coverage

Automated coverage follows the states a test actually reaches. A useful coverage plan starts with user journeys and identifies the states where the interface changes in ways that could affect accessibility.

  1. List key journeys. Include high-value tasks such as signing in, searching, submitting a form, and completing a purchase, where relevant to your application.
  2. Identify changed states. Consider dialogs, menus, validation messages, loading and error states, expanded content, and confirmation screens.
  3. Make tests reach those states. A scan or captured recording cannot inspect a state that the test never visits.
  4. Place scans or confirm capture. For in-test checks, add scans at the selected points. For out-of-test processing, confirm that the recording contains the states needed for analysis.
  5. Add targeted assertions. Assert application-specific expectations that automated rules cannot infer from generic markup.
  6. Plan manual evaluation. Use human review to cover gaps that automated checks cannot establish.

Do not interpret a clean scan as proof of conformance. Cypress’s documentation explicitly cautions that no scan can prove an interface is fully accessible and recommends manual testing and explicit assertions. The W3C’s ACT Rules Format describes a way to document test rules and limitations to improve consistent interpretation; it does not prescribe in-test or out-of-test architecture.

7. Running the functional journeys that accessibility workflows inspect

Both architectures depend on the pages and states exercised by browser journeys. For separate visual evidence, screenshot capture can help a team review what a test reached; it does not replace semantic accessibility checks or manual evaluation. ScreenshotNeo is a website screenshot API and MCP server from ScreenshotNeo. Its API can capture a page as PNG, JPEG, WebP, or PDF, and its options include waiting for a selector or network idle and capturing a selected element.

8. Or skip the browser setup

If you need a screenshot artifact from a page without setting up browser automation, make one API request. See the ScreenshotNeo API documentation for parameters and options.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const bytes = new Uint8Array(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));

ScreenshotNeo accepts cookie or consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits cost nothing, and response headers report the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Screenshot capture is useful visual evidence, while accessibility scanners, manual evaluation, and targeted assertions address different parts of the review.

Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.

9. Troubleshooting automated accessibility workflows

Symptom Likely cause What to do
A scan passes, but a later dialog or error state has an issue The scan ran only on an earlier state Make the test reach the relevant state and scan it, or verify that the out-of-test recording includes it.
Out-of-test reports do not include a page or component No recorded journey reached it, or the relevant state was not captured Check test journeys and recording coverage; add a journey that visits the missing state.
Findings appear noisy or inconsistent Dynamic content, changing test data, or unstable page states can make results harder to interpret Stabilize test data and state transitions, then review findings against the captured page context. Avoid suppressing a finding until its cause is understood.
In-test suite takes longer after scans are added Scans add work on the test execution path Review scan frequency and placement, and measure the effect in your own suite before changing coverage.
Team cannot assert whether a control has the right accessible name A generic rules scan cannot infer every product-specific expectation Add an explicit assertion for the expected name and have a person evaluate the relevant interaction.
A clean automated report is treated as an accessibility sign-off Scanner results are being interpreted as proof of full accessibility Pair automated findings with manual evaluation and application-specific assertions.
Out-of-test approach cannot be adopted in the current setup The chosen service may require a particular test recording platform or plan Check the service’s current platform dependencies, access requirements, and pricing; consider an in-test integration if it fits the existing stack.

10. Performance, reliability, and cost

Performance

In-test scans add work to test execution, but the size of the effect depends on the test suite and scan setup. Measure in your environment rather than assuming a fixed delay. Cypress says its out-of-test processing does not add scan time to functional test runs; this is a vendor description of its service workflow, not an independently established performance benchmark.

Reliability

Both approaches inherit the reliability of the journeys and states they observe. If tests fail to reach a state, a scan cannot cover it. Dynamic pages and unstable test data can complicate result review. Out-of-test processing also depends on successful capture and the service’s platform; in-test checks depend on the scanner integration being available and invoked at the intended point.

Cost

For in-test scanning, account for the tooling and maintenance in your own test environment. For hosted out-of-test products, check current plan access and pricing directly with the vendor; Cypress describes Cypress Accessibility as a separately purchased premium service. The available research does not establish comparative prices or a universal cost winner. More scans or recorded journeys can also require operational capacity, so choose coverage based on the states that matter rather than treating scan count as a quality score.

11. Frequently asked questions

Is out-of-test accessibility automation the same as an accessibility audit?

No. It is a way to process data from test runs. It does not establish that every user flow or accessibility requirement has been evaluated; manual assessment and targeted assertions remain important.

Can an out-of-test service find issues in a state that tests never visit?

Not from those test recordings. Coverage depends on the states exercised and captured by the journeys.

Does in-test scanning require a commercial accessibility platform?

Not necessarily. Cypress documentation describes community integrations such as cypress-axe for running axe-core scans during tests. Specific setup and ongoing support depend on the integration you choose.

Does the W3C ACT Rules Format require one of these architectures?

No. It concerns documenting test rules and their limitations for consistent interpretation, not where a scan must execute.

Sources and further reading