@axe-core/cli 4.7.3 → 4.7.4-2456ed6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -45
- package/package.json +8 -11
- package/src/bin/cli.test.ts +32 -1
- package/src/bin/cli.ts +4 -0
- package/src/bin/index.ts +53 -3
- package/src/lib/events.ts +1 -11
- package/src/lib/utils.test.ts +45 -15
- package/src/lib/utils.ts +21 -17
- package/src/lib/webdriver.ts +6 -1
- package/src/testutils/axe-core@2.5.0.js +54 -66
- package/src/testutils/simple-clean.html +11 -0
- package/src/types.ts +2 -1
- package/dist/package.json +0 -91
- package/dist/src/bin/cli.d.ts +0 -2
- package/dist/src/bin/cli.js +0 -39
- package/dist/src/bin/cli.js.map +0 -1
- package/dist/src/bin/cli.test.d.ts +0 -1
- package/dist/src/bin/cli.test.js +0 -241
- package/dist/src/bin/cli.test.js.map +0 -1
- package/dist/src/bin/index.d.ts +0 -5
- package/dist/src/bin/index.js +0 -120
- package/dist/src/bin/index.js.map +0 -1
- package/dist/src/lib/axe-test-urls.d.ts +0 -4
- package/dist/src/lib/axe-test-urls.js +0 -89
- package/dist/src/lib/axe-test-urls.js.map +0 -1
- package/dist/src/lib/axe-test-urls.test.d.ts +0 -1
- package/dist/src/lib/axe-test-urls.test.js +0 -73
- package/dist/src/lib/axe-test-urls.test.js.map +0 -1
- package/dist/src/lib/events.d.ts +0 -10
- package/dist/src/lib/events.js +0 -57
- package/dist/src/lib/events.js.map +0 -1
- package/dist/src/lib/events.test.d.ts +0 -1
- package/dist/src/lib/events.test.js +0 -31
- package/dist/src/lib/events.test.js.map +0 -1
- package/dist/src/lib/index.d.ts +0 -4
- package/dist/src/lib/index.js +0 -36
- package/dist/src/lib/index.js.map +0 -1
- package/dist/src/lib/utils.d.ts +0 -15
- package/dist/src/lib/utils.js +0 -120
- package/dist/src/lib/utils.js.map +0 -1
- package/dist/src/lib/utils.test.d.ts +0 -1
- package/dist/src/lib/utils.test.js +0 -140
- package/dist/src/lib/utils.test.js.map +0 -1
- package/dist/src/lib/webdriver.d.ts +0 -4
- package/dist/src/lib/webdriver.js +0 -46
- package/dist/src/lib/webdriver.js.map +0 -1
- package/dist/src/lib/webdriver.test.d.ts +0 -1
- package/dist/src/lib/webdriver.test.js +0 -102
- package/dist/src/lib/webdriver.test.js.map +0 -1
- package/dist/src/testutils/index.d.ts +0 -19
- package/dist/src/testutils/index.js +0 -51
- package/dist/src/testutils/index.js.map +0 -1
- package/dist/src/types.d.ts +0 -36
- package/dist/src/types.js +0 -18
- package/dist/src/types.js.map +0 -1
|
@@ -1096,15 +1096,14 @@
|
|
|
1096
1096
|
}
|
|
1097
1097
|
axe._load = function (audit) {
|
|
1098
1098
|
'use strict';
|
|
1099
|
-
axe.utils.respondable.subscribe(
|
|
1100
|
-
|
|
1101
|
-
keepalive,
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
});
|
|
1099
|
+
axe.utils.respondable.subscribe(
|
|
1100
|
+
'axe.ping',
|
|
1101
|
+
function (data, keepalive, respond) {
|
|
1102
|
+
respond({
|
|
1103
|
+
axe: true
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1106
|
+
);
|
|
1108
1107
|
axe.utils.respondable.subscribe('axe.start', runCommand);
|
|
1109
1108
|
axe._audit = new Audit(audit);
|
|
1110
1109
|
};
|
|
@@ -1843,16 +1842,20 @@
|
|
|
1843
1842
|
timeout = setTimeout(function () {
|
|
1844
1843
|
reject(err('Axe in frame timed out', node));
|
|
1845
1844
|
}, 3e4);
|
|
1846
|
-
axe.utils.respondable(
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1845
|
+
axe.utils.respondable(
|
|
1846
|
+
win,
|
|
1847
|
+
'axe.start',
|
|
1848
|
+
parameters,
|
|
1849
|
+
undefined,
|
|
1850
|
+
function (data) {
|
|
1851
|
+
clearTimeout(timeout);
|
|
1852
|
+
if (data instanceof Error === false) {
|
|
1853
|
+
resolve(data);
|
|
1854
|
+
} else {
|
|
1855
|
+
reject(data);
|
|
1856
|
+
}
|
|
1854
1857
|
}
|
|
1855
|
-
|
|
1858
|
+
);
|
|
1856
1859
|
});
|
|
1857
1860
|
};
|
|
1858
1861
|
function collectResultsFromFrames(
|
|
@@ -3779,8 +3782,7 @@
|
|
|
3779
3782
|
checkboxgroup: {
|
|
3780
3783
|
description:
|
|
3781
3784
|
'Ensures related <input type="checkbox"> elements have a group and that that group designation is consistent',
|
|
3782
|
-
help:
|
|
3783
|
-
'Checkbox inputs with the same name attribute value must be part of a group'
|
|
3785
|
+
help: 'Checkbox inputs with the same name attribute value must be part of a group'
|
|
3784
3786
|
},
|
|
3785
3787
|
'color-contrast': {
|
|
3786
3788
|
description:
|
|
@@ -3789,8 +3791,7 @@
|
|
|
3789
3791
|
},
|
|
3790
3792
|
'definition-list': {
|
|
3791
3793
|
description: 'Ensures <dl> elements are structured correctly',
|
|
3792
|
-
help:
|
|
3793
|
-
'<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script> or <template> elements'
|
|
3794
|
+
help: '<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script> or <template> elements'
|
|
3794
3795
|
},
|
|
3795
3796
|
dlitem: {
|
|
3796
3797
|
description: 'Ensures <dt> and <dd> elements are contained by a <dl>',
|
|
@@ -3830,8 +3831,7 @@
|
|
|
3830
3831
|
'href-no-hash': {
|
|
3831
3832
|
description:
|
|
3832
3833
|
'Ensures that href values are valid link references to promote only using anchors as links',
|
|
3833
|
-
help:
|
|
3834
|
-
'Anchors must only be used as links with valid URLs or URL fragments'
|
|
3834
|
+
help: 'Anchors must only be used as links with valid URLs or URL fragments'
|
|
3835
3835
|
},
|
|
3836
3836
|
'html-has-lang': {
|
|
3837
3837
|
description: 'Ensures every HTML document has a lang attribute',
|
|
@@ -3850,8 +3850,7 @@
|
|
|
3850
3850
|
'image-redundant-alt': {
|
|
3851
3851
|
description:
|
|
3852
3852
|
'Ensure button and link text is not repeated as image alternative',
|
|
3853
|
-
help:
|
|
3854
|
-
'Text of buttons and links should not be repeated in the image alternative'
|
|
3853
|
+
help: 'Text of buttons and links should not be repeated in the image alternative'
|
|
3855
3854
|
},
|
|
3856
3855
|
'input-image-alt': {
|
|
3857
3856
|
description:
|
|
@@ -3874,8 +3873,7 @@
|
|
|
3874
3873
|
},
|
|
3875
3874
|
'link-in-text-block': {
|
|
3876
3875
|
description: 'Links can be distinguished without relying on color',
|
|
3877
|
-
help:
|
|
3878
|
-
'Links must be distinguished from surrounding text in a way that does not rely on color'
|
|
3876
|
+
help: 'Links must be distinguished from surrounding text in a way that does not rely on color'
|
|
3879
3877
|
},
|
|
3880
3878
|
'link-name': {
|
|
3881
3879
|
description: 'Ensures links have discernible text',
|
|
@@ -3883,8 +3881,7 @@
|
|
|
3883
3881
|
},
|
|
3884
3882
|
list: {
|
|
3885
3883
|
description: 'Ensures that lists are structured correctly',
|
|
3886
|
-
help:
|
|
3887
|
-
'<ul> and <ol> must only directly contain <li>, <script> or <template> elements'
|
|
3884
|
+
help: '<ul> and <ol> must only directly contain <li>, <script> or <template> elements'
|
|
3888
3885
|
},
|
|
3889
3886
|
listitem: {
|
|
3890
3887
|
description: 'Ensures <li> elements are used semantically',
|
|
@@ -3914,14 +3911,12 @@
|
|
|
3914
3911
|
},
|
|
3915
3912
|
'p-as-heading': {
|
|
3916
3913
|
description: 'Ensure p elements are not used to style headings',
|
|
3917
|
-
help:
|
|
3918
|
-
'Bold, italic text and font-size are not used to style p elements as a heading'
|
|
3914
|
+
help: 'Bold, italic text and font-size are not used to style p elements as a heading'
|
|
3919
3915
|
},
|
|
3920
3916
|
radiogroup: {
|
|
3921
3917
|
description:
|
|
3922
3918
|
'Ensures related <input type="radio"> elements have a group and that the group designation is consistent',
|
|
3923
|
-
help:
|
|
3924
|
-
'Radio inputs with the same name attribute value must be part of a group'
|
|
3919
|
+
help: 'Radio inputs with the same name attribute value must be part of a group'
|
|
3925
3920
|
},
|
|
3926
3921
|
region: {
|
|
3927
3922
|
description:
|
|
@@ -3949,32 +3944,27 @@
|
|
|
3949
3944
|
'table-duplicate-name': {
|
|
3950
3945
|
description:
|
|
3951
3946
|
'Ensure that tables do not have the same summary and caption',
|
|
3952
|
-
help:
|
|
3953
|
-
'The <caption> element should not contain the same text as the summary attribute'
|
|
3947
|
+
help: 'The <caption> element should not contain the same text as the summary attribute'
|
|
3954
3948
|
},
|
|
3955
3949
|
'table-fake-caption': {
|
|
3956
3950
|
description:
|
|
3957
3951
|
'Ensure that tables with a caption use the <caption> element.',
|
|
3958
|
-
help:
|
|
3959
|
-
'Data or header cells should not be used to give caption to a data table.'
|
|
3952
|
+
help: 'Data or header cells should not be used to give caption to a data table.'
|
|
3960
3953
|
},
|
|
3961
3954
|
'td-has-header': {
|
|
3962
3955
|
description:
|
|
3963
3956
|
'Ensure that each non-empty data cell in a large table has one or more table headers',
|
|
3964
|
-
help:
|
|
3965
|
-
'All non-empty td element in table larger than 3 by 3 must have an associated table header'
|
|
3957
|
+
help: 'All non-empty td element in table larger than 3 by 3 must have an associated table header'
|
|
3966
3958
|
},
|
|
3967
3959
|
'td-headers-attr': {
|
|
3968
3960
|
description:
|
|
3969
3961
|
'Ensure that each cell in a table using the headers refers to another cell in that table',
|
|
3970
|
-
help:
|
|
3971
|
-
'All cells in a table element that use the headers attribute must only refer to other cells of that same table'
|
|
3962
|
+
help: 'All cells in a table element that use the headers attribute must only refer to other cells of that same table'
|
|
3972
3963
|
},
|
|
3973
3964
|
'th-has-data-cells': {
|
|
3974
3965
|
description:
|
|
3975
3966
|
'Ensure that each table header in a data table refers to data cells',
|
|
3976
|
-
help:
|
|
3977
|
-
'All th elements and elements with role=columnheader/rowheader must have data cells they describe'
|
|
3967
|
+
help: 'All th elements and elements with role=columnheader/rowheader must have data cells they describe'
|
|
3978
3968
|
},
|
|
3979
3969
|
'valid-lang': {
|
|
3980
3970
|
description: 'Ensures lang attributes have valid values',
|
|
@@ -9136,29 +9126,27 @@
|
|
|
9136
9126
|
}
|
|
9137
9127
|
return set;
|
|
9138
9128
|
};
|
|
9139
|
-
var sortRolesByOptimalAriaContext =
|
|
9140
|
-
roles,
|
|
9141
|
-
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9145
|
-
|
|
9146
|
-
return score + (ariaAttributes.indexOf(attribute) > -1 ? 1 : 0);
|
|
9147
|
-
}, 0);
|
|
9148
|
-
};
|
|
9149
|
-
var scored = roles.map(function (role) {
|
|
9150
|
-
return {
|
|
9151
|
-
score: getScore(role),
|
|
9152
|
-
name: role
|
|
9129
|
+
var sortRolesByOptimalAriaContext =
|
|
9130
|
+
function sortRolesByOptimalAriaContext(roles, ariaAttributes) {
|
|
9131
|
+
var getScore = function getScore(role) {
|
|
9132
|
+
var allowedAriaAttributes = aria.allowedAttr(role);
|
|
9133
|
+
return allowedAriaAttributes.reduce(function (score, attribute) {
|
|
9134
|
+
return score + (ariaAttributes.indexOf(attribute) > -1 ? 1 : 0);
|
|
9135
|
+
}, 0);
|
|
9153
9136
|
};
|
|
9154
|
-
|
|
9155
|
-
|
|
9156
|
-
|
|
9157
|
-
|
|
9158
|
-
|
|
9159
|
-
|
|
9160
|
-
|
|
9161
|
-
|
|
9137
|
+
var scored = roles.map(function (role) {
|
|
9138
|
+
return {
|
|
9139
|
+
score: getScore(role),
|
|
9140
|
+
name: role
|
|
9141
|
+
};
|
|
9142
|
+
});
|
|
9143
|
+
var sorted = scored.sort(function (scoredRoleA, scoredRoleB) {
|
|
9144
|
+
return scoredRoleB.score - scoredRoleA.score;
|
|
9145
|
+
});
|
|
9146
|
+
return sorted.map(function (sortedRole) {
|
|
9147
|
+
return sortedRole.name;
|
|
9148
|
+
});
|
|
9149
|
+
};
|
|
9162
9150
|
var roles = Object.keys(lookupTables.role).map(function (role) {
|
|
9163
9151
|
var lookup = lookupTables.role[role];
|
|
9164
9152
|
return {
|
package/src/types.ts
CHANGED
|
@@ -6,7 +6,7 @@ export * from './lib';
|
|
|
6
6
|
export interface EventParams {
|
|
7
7
|
silentMode: boolean;
|
|
8
8
|
timer: boolean;
|
|
9
|
-
cliReporter: (...args:
|
|
9
|
+
cliReporter: (...args: unknown[]) => void;
|
|
10
10
|
verbose: boolean;
|
|
11
11
|
exit: boolean;
|
|
12
12
|
}
|
|
@@ -23,6 +23,7 @@ export interface WebdriverConfigParams {
|
|
|
23
23
|
browser: string;
|
|
24
24
|
timeout: number;
|
|
25
25
|
chromedriverPath?: string;
|
|
26
|
+
chromePath?: string;
|
|
26
27
|
path?: string;
|
|
27
28
|
chromeOptions?: string[];
|
|
28
29
|
builder?: Builder;
|
package/dist/package.json
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@axe-core/cli",
|
|
3
|
-
"version": "4.7.3",
|
|
4
|
-
"description": "A CLI for accessibility testing using axe-core",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Wilco Fiers",
|
|
7
|
-
"organization": "Deque Systems, Inc.",
|
|
8
|
-
"url": "http://github.com/wilcofiers/"
|
|
9
|
-
},
|
|
10
|
-
"contributors": [
|
|
11
|
-
{
|
|
12
|
-
"name": "Michael Siek (me@michaelsiek.com)"
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"repository": {
|
|
16
|
-
"type": "git",
|
|
17
|
-
"url": "https://github.com/dequelabs/axe-core-npm.git"
|
|
18
|
-
},
|
|
19
|
-
"license": "MPL-2.0",
|
|
20
|
-
"main": "dist/src/lib/index.js",
|
|
21
|
-
"typings": "dist/src/types.d.ts",
|
|
22
|
-
"bin": {
|
|
23
|
-
"axe": "./dist/src/bin/cli.js"
|
|
24
|
-
},
|
|
25
|
-
"publishConfig": {
|
|
26
|
-
"access": "public"
|
|
27
|
-
},
|
|
28
|
-
"engines": {
|
|
29
|
-
"node": ">=8"
|
|
30
|
-
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"prebuild": "rimraf dist",
|
|
33
|
-
"build": "tsc",
|
|
34
|
-
"test": "mocha --timeout 60000 -r ts-node/register 'src/**/**.test.ts'",
|
|
35
|
-
"coverage": "nyc npm run test",
|
|
36
|
-
"prepare": "npm run build"
|
|
37
|
-
},
|
|
38
|
-
"keywords": [
|
|
39
|
-
"axe-core",
|
|
40
|
-
"accessibility",
|
|
41
|
-
"a11y",
|
|
42
|
-
"wcag",
|
|
43
|
-
"cli",
|
|
44
|
-
"testing"
|
|
45
|
-
],
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@axe-core/webdriverjs": "^4.7.3",
|
|
48
|
-
"axe-core": "^4.7.0",
|
|
49
|
-
"chromedriver": "^113.0.0",
|
|
50
|
-
"colors": "^1.4.0",
|
|
51
|
-
"commander": "^9.4.1",
|
|
52
|
-
"selenium-webdriver": "^4.8.1"
|
|
53
|
-
},
|
|
54
|
-
"devDependencies": {
|
|
55
|
-
"@types/chai": "^4.3.3",
|
|
56
|
-
"@types/chromedriver": "^81.0.1",
|
|
57
|
-
"@types/mocha": "^10.0.0",
|
|
58
|
-
"@types/mock-fs": "^4.13.1",
|
|
59
|
-
"@types/selenium-webdriver": "^4.1.5",
|
|
60
|
-
"chai": "^4.3.6",
|
|
61
|
-
"execa": "5.1.0",
|
|
62
|
-
"mocha": "^10.0.0",
|
|
63
|
-
"mock-fs": "^5.1.4",
|
|
64
|
-
"nyc": "^15.1.0",
|
|
65
|
-
"rimraf": "^3.0.2",
|
|
66
|
-
"tempy": "1.0.0",
|
|
67
|
-
"ts-node": "^10.9.1",
|
|
68
|
-
"typescript": "^4.8.4"
|
|
69
|
-
},
|
|
70
|
-
"nyc": {
|
|
71
|
-
"checkCoverage": true,
|
|
72
|
-
"extension": [
|
|
73
|
-
".ts"
|
|
74
|
-
],
|
|
75
|
-
"reporter": [
|
|
76
|
-
"text-summary",
|
|
77
|
-
"html"
|
|
78
|
-
],
|
|
79
|
-
"statements": 95,
|
|
80
|
-
"branches": 92,
|
|
81
|
-
"functions": 94,
|
|
82
|
-
"lines": 95,
|
|
83
|
-
"exclude": [
|
|
84
|
-
"dist",
|
|
85
|
-
"coverage",
|
|
86
|
-
"**/*.test.ts",
|
|
87
|
-
"src/testutils"
|
|
88
|
-
]
|
|
89
|
-
},
|
|
90
|
-
"gitHead": "ad1c229716920cbc359553e0bcb2e0b20ac55ac9"
|
|
91
|
-
}
|
package/dist/src/bin/cli.d.ts
DELETED
package/dist/src/bin/cli.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const commander_1 = require("commander");
|
|
8
|
-
const package_json_1 = require("../../package.json");
|
|
9
|
-
const utils_1 = require("../lib/utils");
|
|
10
|
-
const _1 = __importDefault(require("."));
|
|
11
|
-
const program = new commander_1.Command();
|
|
12
|
-
program
|
|
13
|
-
.version(package_json_1.version)
|
|
14
|
-
.usage('<url...> [options]')
|
|
15
|
-
.option('-i, --include <list>', 'CSS selector of included elements, comma separated', utils_1.splitList)
|
|
16
|
-
.option('-e, --exclude <list>', 'CSS selector of excluded elements, comma separated', utils_1.splitList)
|
|
17
|
-
.option('-r, --rules <list>', 'IDs of rules to run, comma separated', utils_1.splitList)
|
|
18
|
-
.option('-t, --tags <list>', 'Tags of rules to run, comma separated', utils_1.splitList)
|
|
19
|
-
.option('-l, --disable <list>', 'IDs of rules to disable, comma separated', utils_1.splitList)
|
|
20
|
-
.option('-b, --browser [browser-name]', 'Which browser to run (Webdriver required)')
|
|
21
|
-
.option('-s, --save [filename]', 'Save the output as a JSON file. Filename is optional')
|
|
22
|
-
.option('-j, --stdout', 'Output results to STDOUT and silence all other output')
|
|
23
|
-
.option('-d, --dir <path>', 'Output directory')
|
|
24
|
-
.option('-a, --axe-source <path>', 'Path to axe.js file')
|
|
25
|
-
.option('-q, --exit', 'Exit with `1` failure code if any a11y tests fail')
|
|
26
|
-
.option('-v, --verbose', 'Output metadata like test tool name, version and environment')
|
|
27
|
-
.option('--load-delay <n>', 'Set how much time (milliseconds) axe will wait after page load before running the audit (default: 0)')
|
|
28
|
-
.option('--timeout <n>', 'Set how much time (seconds) axe has to run',
|
|
29
|
-
// @ts-ignore
|
|
30
|
-
90)
|
|
31
|
-
.option('--timer', 'Log the time it takes to run')
|
|
32
|
-
.option('--show-errors [boolean]', 'Display the full error stack', true)
|
|
33
|
-
// TODO: Replace this with a reporter option, this required adding
|
|
34
|
-
.option('--no-reporter', 'Turn the CLI reporter off')
|
|
35
|
-
.option('--chrome-options [options]', 'Options to provide to headless Chrome', utils_1.splitList)
|
|
36
|
-
.option('--chromedriver-path <path>', 'Absolute path to the desired chromedriver executable')
|
|
37
|
-
.action(_1.default);
|
|
38
|
-
program.parse(process.argv);
|
|
39
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/src/bin/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/bin/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,qDAA6C;AAC7C,wCAAyC;AACzC,yCAAoB;AAEpB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,sBAAO,CAAC;KAChB,KAAK,CAAC,oBAAoB,CAAC;KAC3B,MAAM,CACL,sBAAsB,EACtB,oDAAoD,EACpD,iBAAS,CACV;KACA,MAAM,CACL,sBAAsB,EACtB,oDAAoD,EACpD,iBAAS,CACV;KACA,MAAM,CACL,oBAAoB,EACpB,sCAAsC,EACtC,iBAAS,CACV;KACA,MAAM,CACL,mBAAmB,EACnB,uCAAuC,EACvC,iBAAS,CACV;KACA,MAAM,CACL,sBAAsB,EACtB,0CAA0C,EAC1C,iBAAS,CACV;KACA,MAAM,CACL,8BAA8B,EAC9B,2CAA2C,CAC5C;KACA,MAAM,CACL,uBAAuB,EACvB,sDAAsD,CACvD;KACA,MAAM,CACL,cAAc,EACd,uDAAuD,CACxD;KACA,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;KAC9C,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,CAAC;KACxD,MAAM,CAAC,YAAY,EAAE,mDAAmD,CAAC;KACzE,MAAM,CACL,eAAe,EACf,8DAA8D,CAC/D;KACA,MAAM,CACL,kBAAkB,EAClB,sGAAsG,CACvG;KACA,MAAM,CACL,eAAe,EACf,4CAA4C;AAC5C,aAAa;AACb,EAAE,CACH;KACA,MAAM,CAAC,SAAS,EAAE,8BAA8B,CAAC;KACjD,MAAM,CAAC,yBAAyB,EAAE,8BAA8B,EAAE,IAAI,CAAC;IACxE,kEAAkE;KACjE,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CACL,4BAA4B,EAC5B,uCAAuC,EACvC,iBAAS,CACV;KACA,MAAM,CACL,4BAA4B,EAC5B,sDAAsD,CACvD;KACA,MAAM,CAAC,UAAG,CAAC,CAAC;AAEf,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'mocha';
|
package/dist/src/bin/cli.test.js
DELETED
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
require("mocha");
|
|
16
|
-
const chai_1 = require("chai");
|
|
17
|
-
const tempy_1 = __importDefault(require("tempy"));
|
|
18
|
-
const http_1 = __importDefault(require("http"));
|
|
19
|
-
const path_1 = __importDefault(require("path"));
|
|
20
|
-
const fs_1 = __importDefault(require("fs"));
|
|
21
|
-
const package_json_1 = require("../../package.json");
|
|
22
|
-
const testutils_1 = __importDefault(require("../testutils/"));
|
|
23
|
-
const SIMPLE_HTML_FILE = path_1.default.join(__dirname, '..', 'testutils', 'simple.html');
|
|
24
|
-
const SIMPLE_HTML_SOURCE = fs_1.default.readFileSync(SIMPLE_HTML_FILE, 'utf8');
|
|
25
|
-
const PATH_TO_AXE_250 = path_1.default.resolve(__dirname, '..', 'testutils', 'axe-core@2.5.0.js');
|
|
26
|
-
describe('cli', () => {
|
|
27
|
-
it('--help', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
-
const result = yield (0, testutils_1.default)('--help');
|
|
29
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
30
|
-
chai_1.assert.include(result.stdout, 'Options:');
|
|
31
|
-
}));
|
|
32
|
-
it('--version', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
-
const result = yield (0, testutils_1.default)('--version');
|
|
34
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
35
|
-
chai_1.assert.deepEqual(result.stdout, package_json_1.version);
|
|
36
|
-
}));
|
|
37
|
-
describe('given a file:// url', () => {
|
|
38
|
-
it('should run an analysis', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`);
|
|
40
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
41
|
-
chai_1.assert.include(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
42
|
-
}));
|
|
43
|
-
});
|
|
44
|
-
describe('given a http:// url', () => {
|
|
45
|
-
let port;
|
|
46
|
-
let server;
|
|
47
|
-
before(done => {
|
|
48
|
-
server = http_1.default.createServer((req, res) => {
|
|
49
|
-
res.setHeader('Content-Type', 'text/html');
|
|
50
|
-
res.write(SIMPLE_HTML_SOURCE);
|
|
51
|
-
res.end();
|
|
52
|
-
});
|
|
53
|
-
server.listen(0, () => {
|
|
54
|
-
port = server.address().port;
|
|
55
|
-
done();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
after(done => server.close(done));
|
|
59
|
-
it('should run an analysis', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
-
const result = yield (0, testutils_1.default)(`http://127.0.0.1:${port}/`);
|
|
61
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
62
|
-
chai_1.assert.include(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
63
|
-
}));
|
|
64
|
-
});
|
|
65
|
-
describe('--axe-source', () => {
|
|
66
|
-
it('should use the provided version of axe-core', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--axe-source', PATH_TO_AXE_250);
|
|
68
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
69
|
-
chai_1.assert.include(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
70
|
-
chai_1.assert.include(result.stdout, 'Running axe-core 2.5.0');
|
|
71
|
-
}));
|
|
72
|
-
it('error when given invalid axe source path', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--axe-source', 'foobar');
|
|
74
|
-
chai_1.assert.equal(result.exitCode, 2);
|
|
75
|
-
chai_1.assert.include(result.stderr, 'Unable to find the axe-core source file');
|
|
76
|
-
}));
|
|
77
|
-
});
|
|
78
|
-
// cannot run in ci we _should_ have the ability to add arguments to firefox not just chrome to allow users to run this headless
|
|
79
|
-
describe.skip('--browser', () => {
|
|
80
|
-
it('should change the browser', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
81
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--browser', 'firefox', '--verbose');
|
|
82
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
83
|
-
chai_1.assert.include(result.stdout, 'Firefox');
|
|
84
|
-
}));
|
|
85
|
-
});
|
|
86
|
-
describe('--rules', () => {
|
|
87
|
-
it('should only run the rules with the provided IDs', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
88
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--rules', 'region');
|
|
89
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
90
|
-
chai_1.assert.include(result.stdout, 'Violation of "region" with');
|
|
91
|
-
}));
|
|
92
|
-
});
|
|
93
|
-
describe('--tags', () => {
|
|
94
|
-
it('should only run rules with the provided tags', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--tags', 'cat.parsing,wcag222');
|
|
96
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
97
|
-
// Region is tagged with "cat.keyboard", "best-practice"
|
|
98
|
-
chai_1.assert.notInclude(result.stdout, 'Violation of "region" with');
|
|
99
|
-
}));
|
|
100
|
-
});
|
|
101
|
-
describe('--exit', () => {
|
|
102
|
-
it('should exit non-zero if violations are found', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
-
try {
|
|
104
|
-
yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--exit');
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
chai_1.assert.equal(error.exitCode, 1);
|
|
108
|
-
chai_1.assert.include(error.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
109
|
-
}
|
|
110
|
-
}));
|
|
111
|
-
});
|
|
112
|
-
describe('--dir', () => {
|
|
113
|
-
let reportDir;
|
|
114
|
-
beforeEach(() => {
|
|
115
|
-
reportDir = tempy_1.default.directory();
|
|
116
|
-
});
|
|
117
|
-
it('should save a JSON report to the provided directory', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
118
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--dir', reportDir);
|
|
119
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
120
|
-
const files = fs_1.default.readdirSync(reportDir);
|
|
121
|
-
const report = files.find(f => f.endsWith('.json'));
|
|
122
|
-
(0, chai_1.assert)(report, 'Did not create JSON report');
|
|
123
|
-
}));
|
|
124
|
-
});
|
|
125
|
-
describe('--include', () => {
|
|
126
|
-
it('should set a list of elements to include', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
127
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--include', 'marquee');
|
|
128
|
-
chai_1.assert.notInclude(result.stdout, 'Violation of "region"');
|
|
129
|
-
chai_1.assert.include(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
130
|
-
}));
|
|
131
|
-
it('should throw error if CSS selector is not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
132
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--include', '#hazaar', '--show-errors');
|
|
133
|
-
chai_1.assert.include(result.stderr, 'javascript error: No elements found for include in page Context');
|
|
134
|
-
chai_1.assert.equal(result.exitCode, 1);
|
|
135
|
-
}));
|
|
136
|
-
it('should throw error if invalid selector is provided', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--include', '#123', '--show-errors');
|
|
138
|
-
chai_1.assert.include(result.stderr, 'is not a valid selector');
|
|
139
|
-
chai_1.assert.equal(result.exitCode, 1);
|
|
140
|
-
}));
|
|
141
|
-
});
|
|
142
|
-
describe('--exclude', () => {
|
|
143
|
-
it('should set a list of elements to exclude', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--exclude', 'marquee');
|
|
145
|
-
chai_1.assert.notInclude(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
146
|
-
}));
|
|
147
|
-
it('should throw error if invalid selector is provided', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
148
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--exclude', '#123', '--show-errors');
|
|
149
|
-
chai_1.assert.include(result.stderr, 'is not a valid selector');
|
|
150
|
-
chai_1.assert.equal(result.exitCode, 1);
|
|
151
|
-
}));
|
|
152
|
-
});
|
|
153
|
-
describe('--disable', () => {
|
|
154
|
-
it('should not run rules with the provided IDs', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
155
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--disable', 'region');
|
|
156
|
-
chai_1.assert.notInclude(result.stdout, 'Violation of "region" with');
|
|
157
|
-
}));
|
|
158
|
-
});
|
|
159
|
-
describe('--stdout', () => {
|
|
160
|
-
it('should only emit JSON to stdout', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
161
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--stdout');
|
|
162
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
163
|
-
chai_1.assert.doesNotThrow(() => JSON.parse(result.stdout), 'Emitted invalid JSON');
|
|
164
|
-
}));
|
|
165
|
-
});
|
|
166
|
-
describe('--timer', () => {
|
|
167
|
-
it('should log the time it takes to run', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--timer');
|
|
169
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
170
|
-
chai_1.assert.isEmpty(result.stderr);
|
|
171
|
-
chai_1.assert.include(result.stdout, 'axe-core execution time');
|
|
172
|
-
chai_1.assert.include(result.stdout, 'Total test time');
|
|
173
|
-
}));
|
|
174
|
-
});
|
|
175
|
-
describe('--no-reporter', () => {
|
|
176
|
-
it('should log the time it takes to run', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
177
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--no-reporter');
|
|
178
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
179
|
-
chai_1.assert.notInclude(result.stdout, 'Violation of "marquee" with 1 occurrences!');
|
|
180
|
-
}));
|
|
181
|
-
});
|
|
182
|
-
describe('--show-errors', () => {
|
|
183
|
-
it('should log the time it takes to run defaults to show errors', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
184
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--include', '#hazaar');
|
|
185
|
-
chai_1.assert.equal(result.exitCode, 1);
|
|
186
|
-
chai_1.assert.include(result.stderr, 'Error: JavascriptError: javascript error:');
|
|
187
|
-
}));
|
|
188
|
-
it('do not show errors when passed false', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
189
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--include', '#hazaar', '--show-errors', 'false');
|
|
190
|
-
chai_1.assert.equal(result.exitCode, 1);
|
|
191
|
-
chai_1.assert.include(result.stderr, 'An error occurred while testing this page.');
|
|
192
|
-
}));
|
|
193
|
-
});
|
|
194
|
-
describe('--save', () => {
|
|
195
|
-
let reportDir;
|
|
196
|
-
beforeEach(() => {
|
|
197
|
-
reportDir = tempy_1.default.directory();
|
|
198
|
-
});
|
|
199
|
-
it('should save the output as a JSON file', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--save', 'test-name.json', '--dir', reportDir);
|
|
201
|
-
const [report] = fs_1.default.readdirSync(reportDir);
|
|
202
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
203
|
-
chai_1.assert.equal(report, 'test-name.json');
|
|
204
|
-
}));
|
|
205
|
-
});
|
|
206
|
-
describe('--load-delay', () => {
|
|
207
|
-
it('should set how much time axe will wait after a page loads before running the audit', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
208
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--load-delay', '1000');
|
|
209
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
210
|
-
chai_1.assert.include(result.stdout, 'Waiting for 1000 milliseconds after page load');
|
|
211
|
-
}));
|
|
212
|
-
});
|
|
213
|
-
describe('--verbose', () => {
|
|
214
|
-
it('should output metadata such as test tool name, version and environment', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
215
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--verbose');
|
|
216
|
-
chai_1.assert.equal(result.exitCode, 0);
|
|
217
|
-
chai_1.assert.include(result.stdout, 'Test Runner');
|
|
218
|
-
chai_1.assert.include(result.stdout, 'Test Engine');
|
|
219
|
-
chai_1.assert.include(result.stdout, 'Test Environment');
|
|
220
|
-
}));
|
|
221
|
-
});
|
|
222
|
-
describe('--timeout', () => {
|
|
223
|
-
// Timeout the page immediately. Ideally we'd block the page for awhile, then timeout based on that. This seemed easier for now tho.
|
|
224
|
-
it('should set the page load timeout', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
225
|
-
try {
|
|
226
|
-
yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--timeout', '0');
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
chai_1.assert.notEqual(error.exitCode, 0);
|
|
230
|
-
chai_1.assert.include(error.stderr, 'An error occurred while testing this page.');
|
|
231
|
-
}
|
|
232
|
-
}));
|
|
233
|
-
});
|
|
234
|
-
describe('--chromedriver-path', () => {
|
|
235
|
-
it('should throw error if path does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
236
|
-
const result = yield (0, testutils_1.default)(`file://${SIMPLE_HTML_FILE}`, '--chromedriver-path="someinvalidpath"', '--show-errors');
|
|
237
|
-
chai_1.assert.include(result.stderr, 'The specified executable path does not exist');
|
|
238
|
-
}));
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
//# sourceMappingURL=cli.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../../src/bin/cli.test.ts"],"names":[],"mappings":"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"}
|