Skip to content

Commit

Permalink
feat: Improved example for usage of runAxe() with external HTML repor…
Browse files Browse the repository at this point in the history
…ter (#5)

* feat: updated types to include runAxe and configureAxe, added configureAxe, updated axe-core to include 4.0.2 version

* feat: updated types to include runAxe and configureAxe, added configureAxe, updated axe-core to include 4.0.2 version

* docs: code review update, README.md update

* docs: improved example for runAxe()

Initially, I submitted PR where runAxe() is exported to use it directly with custom axe result reporters. 
In this change I providing an example with `axe-html-reporter`.
  • Loading branch information
lpelypenko authored Oct 15, 2020
1 parent 1e672f3 commit e8d311a
Showing 1 changed file with 96 additions and 87 deletions.
183 changes: 96 additions & 87 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,87 +1,96 @@
# @testcafe-community/axe
The TestCafe module that allows you to use the [aXe](https://github.com/dequelabs/axe-core) accessibility engine in TestCafe tests.

## Installation

```bash
yarn add -D axe-core @testcafe-community/axe
```

Or using npm:

```bash
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:

```js
"clientScripts":[{"module":"axe-core/axe.min.js"}]
```

```js
import { checkForViolations } from '@testcafe-community/axe';

fixture `TestCafe tests with Axe`
.page `http://example.com`;

test('Automated accessibility testing', async t => {
// do stuff on your page
await checkForViolations(t);
});
```

If any accessibility issues are found, you will see a detailed report in the error log.

![Accessibility errors](https://github.com/testcafe-community/axe/blob/master/errors.png)

## aXe options

The `@testcafe-community/axe` module allows you to define the `context` and `options` [axe.run parameters](https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#api-name-axerun) in a TestCafe test.

```js
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](https://github.com/helen-dikareva/axe-testcafe) which has been dormant for quite some time. If you prefer to use that API you can still use that:

```js
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:

```js
import { runAxe } from '@testcafe-community/axe';

fixture `TestCafe tests with Axe`
.page `http://example.com`;

test('Automated accessibility testing', async t => {
const { error, results } = await runAxe(t);
// results constant contains full axe Results object (https://www.deque.com/axe/core-documentation/api-documentation/#results-object)
});
```
# @testcafe-community/axe
The TestCafe module that allows you to use the [aXe](https://github.com/dequelabs/axe-core) accessibility engine in TestCafe tests.

## Installation

```bash
yarn add -D axe-core @testcafe-community/axe
```

Or using npm:

```bash
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:

```js
"clientScripts":[{"module":"axe-core/axe.min.js"}]
```

```js
import { checkForViolations } from '@testcafe-community/axe';

fixture `TestCafe tests with Axe`
.page `http://example.com`;

test('Automated accessibility testing', async t => {
// do stuff on your page
await checkForViolations(t);
});
```

If any accessibility issues are found, you will see a detailed report in the error log.

![Accessibility errors](https://github.com/testcafe-community/axe/blob/master/errors.png)

## aXe options

The `@testcafe-community/axe` module allows you to define the `context` and `options` [axe.run parameters](https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#api-name-axerun) in a TestCafe test.

```js
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](https://github.com/helen-dikareva/axe-testcafe) which has been dormant for quite some time. If you prefer to use that API you can still use that:

```js
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:

```js
import { runAxe } from '@testcafe-community/axe';
import { createHtmlReport } from 'axe-html-reporter'; // example of custom html report for axe results

fixture `TestCafe tests with Axe`
.page `http://example.com`;

test('Automated accessibility testing', async t => {
const { error, results } = await runAxe(); // "context" and "options" parameters are optional
// "results" constant contains full axe Results object (https://www.deque.com/axe/core-documentation/api-documentation/#results-object)
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',
}); // creates HTML report with the default file name `accessibilityReport.html`
});
```

0 comments on commit e8d311a

Please sign in to comment.