The TestCafe module that allows you to use the aXe accessibility engine in TestCafe tests.
Installation
yarn add -D axe-core @testcafe-community/axe
Or using npm:
npm i -D axe-core @testcafe-community/axe
How to use
You can write a TestCafe test with automated accessibility checks like this.
Add the following clientScript in your testcafe config:
"clientScripts":[{"module":"axe-core/axe.min.js"}]
import { checkForViolations } from '@testcafe-community/axe';
fixture `TestCafe tests with Axe`
.page `http://example.com`;
test('Automated accessibility testing', async t => {
await checkForViolations(t);
});
If any accessibility issues are found, you will see a detailed report in the error log.

aXe options
The @testcafe-community/axe
module allows you to define the context
and options
axe.run parameters in a TestCafe test.
import { checkForViolations } from '@testcafe-community/axe';
test('Automated accessibility testing', async (t) => {
const context = { exclude: [['select']] };
const options = { rules: { 'html-has-lang': { enabled: false } } };
await checkForViolations(t, context, options);
});
Legacy API
This project was forked from axe-testcafe which has been dormant for quite some time. If you prefer to use that API you can still use that:
import { axeCheck, createReport } from 'axe-testcafe';
fixture `TestCafe tests with Axe`
.page `http://example.com`;
test('Automated accessibility testing', async t => {
const { error, violations } = await axeCheck(t);
await t.expect(violations.length === 0).ok(createReport(violations));
});
Using full axe result object and axe.configure
If you prefer to use a custom reporter for axe results you can get result object using runAxe function:
import { runAxe } from '@testcafe-community/axe';
import { createHtmlReport } from 'axe-html-reporter';
fixture `TestCafe tests with Axe`
.page `http://example.com`;
test('Automated accessibility testing', async t => {
const { error, results } = await runAxe();
await t.expect(error).eql(null, `axe check failed with an error: ${error}`);
createHtmlReport({
violations: results.violations,
passes: results.passes,
incomplete: results.incomplete,
url: results.url,
projectKey: 'EXAMPLE',
});
});