Skip to content

Commit

Permalink
feat(webdriverio): allow AxeBuilder to use different version of axe…
Browse files Browse the repository at this point in the history
…-core (#333)

* feat(webdriverio): allow `AxeBuilder` to use different version of axe-core

* path is hard

* ignore fixtures
  • Loading branch information
michael-siek committed Aug 16, 2021
1 parent 3c9aff1 commit 25a8c1b
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 10 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
packages/cli/src/testutils/*
packages/cli/src/**/**/*.test.ts
packages/webdriverjs/src/test/fixtures/*
packages/webdriverio/fixtures/*
packages/puppeteer/test/fixtures/*
**/dist/*
4 changes: 4 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,8 @@
"*.{json,css,md,html}": [
"prettier --write"
]
},
"dependencies": {
"axe-test-fixtures": "github:dequelabs/axe-test-fixtures"
}
}
1 change: 1 addition & 0 deletions packages/webdriverio/fixtures/external
20 changes: 11 additions & 9 deletions packages/webdriverio/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { RunOptions, AxeResults } from 'axe-core';
import { source } from 'axe-core';
import * as fs from 'fs';
import * as assert from 'assert';
import * as cssesc from 'cssesc';
import type {
Expand All @@ -22,13 +22,15 @@ export default class AxeBuilder {
private excludes: string[];
private option: RunOptions;
private disableFrameSelectors: string[];
constructor({ client }: Options) {
constructor({ client, axeSource }: Options) {
assert(
isWebdriverClient(client),
'An instantiated WebdriverIO client greater than v5 is required'
);
const sourceDir = require.resolve('axe-core');
const source = fs.readFileSync(sourceDir, 'utf-8');
this.client = client;
this.axeSource = source;
this.axeSource = axeSource || source;
this.includes = [];
this.excludes = [];
this.option = {};
Expand Down Expand Up @@ -240,13 +242,13 @@ export default class AxeBuilder {
* @returns {String}
*/

private frameSelector(): string {
let selector = 'frame';
for (const disableFrameSelector of this.disableFrameSelectors) {
selector += `:not(${disableFrameSelector})`;
}
return selector;
private frameSelector(): string {
let selector = 'frame';
for (const disableFrameSelector of this.disableFrameSelectors) {
selector += `:not(${disableFrameSelector})`;
}
return selector;
}

/**
* Set browsing context - when `null` sets top level page as context
Expand Down
22 changes: 21 additions & 1 deletion packages/webdriverio/src/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ describe('@axe-core/webdriverio', () => {
let server: Server;
let addr: string;
let client: webdriverio.BrowserObject;

const axeSourcePath = path.resolve(
'./fixtures/external/axe-core@legacy.js'
);
const axeSource = fs.readFileSync(axeSourcePath, 'utf-8');
beforeEach(async () => {
const app = express();
let binaryPath;
Expand Down Expand Up @@ -109,6 +112,23 @@ describe('@axe-core/webdriverio', () => {
});

describe('analyze', () => {
describe('axeSource', () => {
it('returns results with different version of axeSource', async () => {
await client.url(`${addr}/index.html`);
const results = await new AxeBuilder({
client,
axeSource
}).analyze();

assert.isNotNull(results);
assert.strictEqual(results.testEngine.version, '4.0.3');
assert.isArray(results.violations);
assert.isArray(results.incomplete);
assert.isArray(results.passes);
assert.isArray(results.inapplicable);
});
});

it('returns results', async () => {
await client.url(`${addr}/index.html`);
const results = await new AxeBuilder({ client }).analyze();
Expand Down
1 change: 1 addition & 0 deletions packages/webdriverio/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export type CallbackFunction = (

export interface Options {
client: BrowserObject;
axeSource?: string;
}

declare global {
Expand Down

0 comments on commit 25a8c1b

Please sign in to comment.