How to export axe-core JSON for an engineering handoff

Already running accessibility checks? Save the original results object rather than copying a screenshot or a formatted console table. A11y starts with the findings you captured in your own environment.

1. Save the complete results object

In an existing test harness with axe-core configured, capture the result of axe.run() and write it as JSON. For example, when your existing browser test exposes axe in the page:

const results = await page.evaluate(async () => {
  return await axe.run();
});
await writeFile('axe-results.json', JSON.stringify(results, null, 2));

This snippet assumes your own browser test, axe injection, and Node file-writing import are already configured. Follow the official axe-core documentation for installation and scope options.

2. Check the input before uploading

The JSON should contain a violations array with the original rule IDs, impact, tags, and node evidence. Use the original export rather than editing findings into a custom format. The upload limit is 2 MB. A valid report is checked again by the service before checkout.

Scan the relevant page state: an authenticated flow, staging route, local build, or CI test. Automated results describe the state you tested; they do not cover every interaction or establish full WCAG conformance.

3. Turn findings into remediation work

Upload your report, review Stripe Checkout, and receive a remediation backlog by email. Keep the original scan for comparison when your team implements and retests changes.

Validate my axe-core JSON

Agency client handoff workflow · Remediation workflow