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