@axe-core/playwright 4.3.2-alpha.211 → 4.3.3-alpha.213
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/README.md +2 -24
- package/dist/AxePartialRunner.js +7 -11
- package/dist/AxePartialRunner.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +40 -18
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +25 -16
- package/src/utils.ts +2 -2
- package/tests/axe-playwright.spec.ts +52 -98
- package/tests/fixtures/context.html +0 -2
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ new AxeBuilder({ page })
|
|
|
83
83
|
});
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
### AxeBuilder#include(selector: String
|
|
86
|
+
### AxeBuilder#include(selector: String)
|
|
87
87
|
|
|
88
88
|
Adds a CSS selector to the list of elements to include in analysis
|
|
89
89
|
|
|
@@ -91,18 +91,7 @@ Adds a CSS selector to the list of elements to include in analysis
|
|
|
91
91
|
new AxeBuilder({ page }).include('.results-panel');
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
```js
|
|
97
|
-
new AxeBuilder({ page })
|
|
98
|
-
.include('.selector-one')
|
|
99
|
-
.include('.selector-two')
|
|
100
|
-
.include('.selector-three');
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Note: arrays with more than one index when passing multiple CSS selectors are not currently supported example: ` .include(['#foo', '#bar', '#baz'])`
|
|
104
|
-
|
|
105
|
-
### AxeBuilder#exclude(selector: String | String[])
|
|
94
|
+
### AxeBuilder#exclude(selector: String)
|
|
106
95
|
|
|
107
96
|
Add a CSS selector to the list of elements to exclude from analysis
|
|
108
97
|
|
|
@@ -110,17 +99,6 @@ Add a CSS selector to the list of elements to exclude from analysis
|
|
|
110
99
|
new AxeBuilder({ page }).exclude('.another-element');
|
|
111
100
|
```
|
|
112
101
|
|
|
113
|
-
Method chaining is also available, add multiple CSS selectors to the list of elements to exclude from analysis
|
|
114
|
-
|
|
115
|
-
```js
|
|
116
|
-
new AxeBuilder({ page })
|
|
117
|
-
.exclude('.selector-one')
|
|
118
|
-
.exclude('.selector-two')
|
|
119
|
-
.exclude('.selector-three');
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Note: arrays with more than one index when passing multiple CSS selectors are not currently supported example: ` .exclude(['#foo', '#bar', '#baz'])`
|
|
123
|
-
|
|
124
102
|
### AxeBuilder#options(options: [axe.RunOptions](https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter))
|
|
125
103
|
|
|
126
104
|
Specifies options to be used by `axe.run`. Will override any other configured options. including calls to `AxeBuilder#withRules()` and `AxeBuilder#withTags()`. See [axe-core API documentation](https://github.com/dequelabs/axe-core/blob/master/doc/API.md) for information on its structure.
|
package/dist/AxePartialRunner.js
CHANGED
|
@@ -35,14 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
ar[i] = from[i];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
39
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
40
|
+
to[j] = from[i];
|
|
41
|
+
return to;
|
|
46
42
|
};
|
|
47
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
44
|
exports.caught = void 0;
|
|
@@ -51,7 +47,7 @@ var AxePartialRunner = /** @class */ (function () {
|
|
|
51
47
|
if (initiator === void 0) { initiator = false; }
|
|
52
48
|
this.initiator = initiator;
|
|
53
49
|
this.childRunners = [];
|
|
54
|
-
this.partialPromise =
|
|
50
|
+
this.partialPromise = exports.caught(partialPromise);
|
|
55
51
|
}
|
|
56
52
|
AxePartialRunner.prototype.addChildResults = function (childResultRunner) {
|
|
57
53
|
this.childRunners.push(childResultRunner);
|
|
@@ -67,12 +63,12 @@ var AxePartialRunner = /** @class */ (function () {
|
|
|
67
63
|
case 1:
|
|
68
64
|
parentPartial = _a.sent();
|
|
69
65
|
childPromises = this.childRunners.map(function (childRunner) {
|
|
70
|
-
return childRunner ?
|
|
66
|
+
return childRunner ? exports.caught(childRunner.getPartials()) : [null];
|
|
71
67
|
});
|
|
72
68
|
return [4 /*yield*/, Promise.all(childPromises)];
|
|
73
69
|
case 2:
|
|
74
70
|
childPartials = (_a.sent()).flat(1);
|
|
75
|
-
return [2 /*return*/, __spreadArray([parentPartial], childPartials
|
|
71
|
+
return [2 /*return*/, __spreadArray([parentPartial], childPartials)];
|
|
76
72
|
case 3:
|
|
77
73
|
e_1 = _a.sent();
|
|
78
74
|
if (this.initiator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AxePartialRunner.js","sourceRoot":"","sources":["../src/AxePartialRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AxePartialRunner.js","sourceRoot":"","sources":["../src/AxePartialRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA;IAIE,0BACE,cAA0C,EAClC,SAA0B;QAA1B,0BAAA,EAAA,iBAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;QAJ5B,iBAAY,GAAmC,EAAE,CAAC;QAMxD,IAAI,CAAC,cAAc,GAAG,cAAM,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IAEM,0CAAe,GAAtB,UAAuB,iBAA0C;QAC/D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAEY,sCAAW,GAAxB;;;;;;;wBAE0B,qBAAM,IAAI,CAAC,cAAc,EAAA;;wBAAzC,aAAa,GAAG,SAAyB;wBACzC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW;4BACrD,OAAO,WAAW,CAAC,CAAC,CAAC,cAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBAClE,CAAC,CAAC,CAAC;wBACoB,qBAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAA;;wBAAjD,aAAa,GAAG,CAAC,SAAgC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;wBAChE,qCAAQ,aAAa,GAAK,aAAa,GAAE;;;wBAEzC,IAAI,IAAI,CAAC,SAAS,EAAE;4BAClB,MAAM,GAAC,CAAC;yBACT;wBACD,sBAAO,CAAC,IAAI,CAAC,EAAC;;;;;KAEjB;IACH,uBAAC;AAAD,CAAC,AA9BD,IA8BC;;AAED,2EAA2E;AAC3E,oHAAoH;AACvG,QAAA,MAAM,GAAG,CAAC,UAAC,CAAa;IACnC,OAAO,UAAI,CAAa,IAAiB,OAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAf,CAAe,CAAC;IACzD,yDAAyD;AAC3D,CAAC,CAAC,CAAC,cAAO,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,14 +14,14 @@ export default class AxeBuilder {
|
|
|
14
14
|
* @param String selector
|
|
15
15
|
* @returns this
|
|
16
16
|
*/
|
|
17
|
-
include(selector: string
|
|
17
|
+
include(selector: string): this;
|
|
18
18
|
/**
|
|
19
19
|
* Selector to exclude in analysis.
|
|
20
20
|
* This may be called any number of times.
|
|
21
21
|
* @param String selector
|
|
22
22
|
* @returns this
|
|
23
23
|
*/
|
|
24
|
-
exclude(selector: string
|
|
24
|
+
exclude(selector: string): this;
|
|
25
25
|
/**
|
|
26
26
|
* Set options to be passed into axe-core
|
|
27
27
|
* @param RunOptions options
|
|
@@ -88,4 +88,5 @@ export default class AxeBuilder {
|
|
|
88
88
|
*/
|
|
89
89
|
private runPartialRecursive;
|
|
90
90
|
private finishRun;
|
|
91
|
+
private axeConfigure;
|
|
91
92
|
}
|
package/dist/index.js
CHANGED
|
@@ -60,7 +60,6 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
60
60
|
* @returns this
|
|
61
61
|
*/
|
|
62
62
|
AxeBuilder.prototype.include = function (selector) {
|
|
63
|
-
selector = Array.isArray(selector) ? selector : [selector];
|
|
64
63
|
this.includes.push(selector);
|
|
65
64
|
return this;
|
|
66
65
|
};
|
|
@@ -71,7 +70,6 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
71
70
|
* @returns this
|
|
72
71
|
*/
|
|
73
72
|
AxeBuilder.prototype.exclude = function (selector) {
|
|
74
|
-
selector = Array.isArray(selector) ? selector : [selector];
|
|
75
73
|
this.excludes.push(selector);
|
|
76
74
|
return this;
|
|
77
75
|
};
|
|
@@ -154,7 +152,7 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
154
152
|
return __generator(this, function (_b) {
|
|
155
153
|
switch (_b.label) {
|
|
156
154
|
case 0:
|
|
157
|
-
context =
|
|
155
|
+
context = utils_1.normalizeContext(this.includes, this.excludes);
|
|
158
156
|
_a = this, page = _a.page, options = _a.option;
|
|
159
157
|
page.evaluate(this.script());
|
|
160
158
|
return [4 /*yield*/, page.evaluate('typeof window.axe.runPartial === "function"')];
|
|
@@ -191,23 +189,28 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
191
189
|
*/
|
|
192
190
|
AxeBuilder.prototype.inject = function (frames) {
|
|
193
191
|
return __awaiter(this, void 0, void 0, function () {
|
|
194
|
-
var _i, frames_1, iframe;
|
|
195
|
-
return __generator(this, function (
|
|
196
|
-
switch (
|
|
192
|
+
var _i, frames_1, iframe, _a, _b;
|
|
193
|
+
return __generator(this, function (_c) {
|
|
194
|
+
switch (_c.label) {
|
|
197
195
|
case 0:
|
|
198
196
|
_i = 0, frames_1 = frames;
|
|
199
|
-
|
|
197
|
+
_c.label = 1;
|
|
200
198
|
case 1:
|
|
201
|
-
if (!(_i < frames_1.length)) return [3 /*break*/,
|
|
199
|
+
if (!(_i < frames_1.length)) return [3 /*break*/, 6];
|
|
202
200
|
iframe = frames_1[_i];
|
|
203
201
|
return [4 /*yield*/, iframe.evaluate(this.script())];
|
|
204
202
|
case 2:
|
|
205
|
-
|
|
206
|
-
_a
|
|
207
|
-
|
|
203
|
+
_c.sent();
|
|
204
|
+
_b = (_a = iframe).evaluate;
|
|
205
|
+
return [4 /*yield*/, this.axeConfigure()];
|
|
206
|
+
case 3: return [4 /*yield*/, _b.apply(_a, [_c.sent()])];
|
|
207
|
+
case 4:
|
|
208
|
+
_c.sent();
|
|
209
|
+
_c.label = 5;
|
|
210
|
+
case 5:
|
|
208
211
|
_i++;
|
|
209
212
|
return [3 /*break*/, 1];
|
|
210
|
-
case
|
|
213
|
+
case 6: return [2 /*return*/];
|
|
211
214
|
}
|
|
212
215
|
});
|
|
213
216
|
});
|
|
@@ -217,7 +220,7 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
217
220
|
* @returns String
|
|
218
221
|
*/
|
|
219
222
|
AxeBuilder.prototype.script = function () {
|
|
220
|
-
return
|
|
223
|
+
return this.source;
|
|
221
224
|
};
|
|
222
225
|
AxeBuilder.prototype.runLegacy = function (context) {
|
|
223
226
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -315,17 +318,21 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
315
318
|
};
|
|
316
319
|
AxeBuilder.prototype.finishRun = function (partialResults) {
|
|
317
320
|
return __awaiter(this, void 0, void 0, function () {
|
|
318
|
-
var _a, page, options, context, blankPage;
|
|
319
|
-
return __generator(this, function (
|
|
320
|
-
switch (
|
|
321
|
+
var _a, page, options, context, blankPage, _b, _c;
|
|
322
|
+
return __generator(this, function (_d) {
|
|
323
|
+
switch (_d.label) {
|
|
321
324
|
case 0:
|
|
322
325
|
_a = this, page = _a.page, options = _a.option;
|
|
323
326
|
context = page.context();
|
|
324
327
|
return [4 /*yield*/, context.newPage()];
|
|
325
328
|
case 1:
|
|
326
|
-
blankPage =
|
|
329
|
+
blankPage = _d.sent();
|
|
327
330
|
assert(blankPage, 'Please make sure that you have popup blockers disabled.');
|
|
328
331
|
blankPage.evaluate(this.script());
|
|
332
|
+
_c = (_b = blankPage).evaluate;
|
|
333
|
+
return [4 /*yield*/, this.axeConfigure()];
|
|
334
|
+
case 2:
|
|
335
|
+
_c.apply(_b, [_d.sent()]);
|
|
329
336
|
return [4 /*yield*/, blankPage
|
|
330
337
|
.evaluate(browser_1.axeFinishRun, {
|
|
331
338
|
partialResults: partialResults,
|
|
@@ -334,7 +341,22 @@ var AxeBuilder = /** @class */ (function () {
|
|
|
334
341
|
.finally(function () {
|
|
335
342
|
blankPage.close();
|
|
336
343
|
})];
|
|
337
|
-
case
|
|
344
|
+
case 3: return [2 /*return*/, _d.sent()];
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
};
|
|
349
|
+
AxeBuilder.prototype.axeConfigure = function () {
|
|
350
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
351
|
+
var hasRunPartial;
|
|
352
|
+
return __generator(this, function (_a) {
|
|
353
|
+
switch (_a.label) {
|
|
354
|
+
case 0: return [4 /*yield*/, this.page.evaluate('typeof window.axe?.runPartial === "function"')];
|
|
355
|
+
case 1:
|
|
356
|
+
hasRunPartial = _a.sent();
|
|
357
|
+
return [2 /*return*/, "\n ;axe.configure({\n " + (!this.legacyMode && !hasRunPartial
|
|
358
|
+
? 'allowedOrigins: ["<unsafe_all_origins>"],'
|
|
359
|
+
: 'allowedOrigins: ["<same_origin>"],') + "\n branding: { application: 'playwright' }\n })\n "];
|
|
338
360
|
}
|
|
339
361
|
});
|
|
340
362
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uBAAyB;AACzB,+BAAiC;AAQjC,iCAAwD;AAExD,qCAKmB;AACnB,uDAAkD;AAElD;IAQE,oBAAY,EAAwC;YAAtC,IAAI,UAAA,EAAE,SAAS,eAAA;QAFrB,eAAU,GAAG,KAAK,CAAC;QAGzB,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,MAAM,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IAEI,4BAAO,GAAd,UAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AnalyzePageParams, AnalyzePageResponse } from './types';
|
|
|
6
6
|
* @param Array exclude
|
|
7
7
|
* @returns ContextObject
|
|
8
8
|
*/
|
|
9
|
-
export declare const normalizeContext: (includes: string[]
|
|
9
|
+
export declare const normalizeContext: (includes: string[], excludes: string[]) => ContextObject;
|
|
10
10
|
/**
|
|
11
11
|
* Analyze the page.
|
|
12
12
|
* @param AnalyzePageParams analyzeContext
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AAEI,IAAM,gBAAgB,GAAG,UAC9B,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AAEI,IAAM,gBAAgB,GAAG,UAC9B,QAAkB,EAClB,QAAkB;;IAElB,IAAM,IAAI,GAAkB;QAC1B,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAClD,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,IAAI,WAAI,QAAQ,EAAE;KAChC;IAED,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B;AAEF;;;;GAIG;AAEI,IAAM,WAAW,GAAG,UAAC,EAGR;QAFlB,OAAO,aAAA,EACP,OAAO,aAAA;IAEP,8DAA8D;IAC9D,IAAM,OAAO,GAAI,MAAc,CAAC,GAAG,CAAC;IAEpC,eAAe;IACf,OAAO,OAAO;SACX,GAAG,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;SACvC,IAAI,CAAC,UAAC,OAAmB;QACxB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,SAAA,EAAE,CAAC;IAClC,CAAC,CAAC;SACD,KAAK,CAAC,UAAC,GAAU;QAChB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAhBW,QAAA,WAAW,eAgBtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axe-core/playwright",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.3-alpha.213+e670bee",
|
|
4
4
|
"description": "Provides a method to inject and analyze web pages using axe",
|
|
5
5
|
"contributors": [
|
|
6
6
|
{
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"prepare": "npm run build"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"axe-core": "^4.3.
|
|
40
|
-
"playwright": "^1.
|
|
39
|
+
"axe-core": "^4.3.3",
|
|
40
|
+
"playwright": "^1.13.1"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@types/chai": "^4.2.
|
|
43
|
+
"@types/chai": "^4.2.21",
|
|
44
44
|
"@types/express": "^4.17.13",
|
|
45
45
|
"@types/mocha": "^8.2.3",
|
|
46
|
-
"@types/node": "^14.17.
|
|
46
|
+
"@types/node": "^14.17.9",
|
|
47
47
|
"@types/test-listen": "^1.1.0",
|
|
48
48
|
"axe-test-fixtures": "github:dequelabs/axe-test-fixtures#v1",
|
|
49
49
|
"chai": "^4.3.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"rimraf": "^3.0.2",
|
|
54
54
|
"test-listen": "^1.1.0",
|
|
55
55
|
"ts-node": "^9.1.1",
|
|
56
|
-
"typescript": "^4.
|
|
56
|
+
"typescript": "^4.3.5"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"playwright": ">= 1.0.0"
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"functions": 100,
|
|
78
78
|
"lines": 95
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "e670bee3ef75c692451ba4a6b13580cb8d7a5b68"
|
|
81
81
|
}
|
package/src/index.ts
CHANGED
|
@@ -19,8 +19,8 @@ import AxePartialRunner from './AxePartialRunner';
|
|
|
19
19
|
|
|
20
20
|
export default class AxeBuilder {
|
|
21
21
|
private page: Page;
|
|
22
|
-
private includes: string[]
|
|
23
|
-
private excludes: string[]
|
|
22
|
+
private includes: string[];
|
|
23
|
+
private excludes: string[];
|
|
24
24
|
private option: RunOptions;
|
|
25
25
|
private source: string;
|
|
26
26
|
private legacyMode = false;
|
|
@@ -42,8 +42,7 @@ export default class AxeBuilder {
|
|
|
42
42
|
* @returns this
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
|
-
public include(selector: string
|
|
46
|
-
selector = Array.isArray(selector) ? selector : [selector];
|
|
45
|
+
public include(selector: string): this {
|
|
47
46
|
this.includes.push(selector);
|
|
48
47
|
return this;
|
|
49
48
|
}
|
|
@@ -55,8 +54,7 @@ export default class AxeBuilder {
|
|
|
55
54
|
* @returns this
|
|
56
55
|
*/
|
|
57
56
|
|
|
58
|
-
public exclude(selector: string
|
|
59
|
-
selector = Array.isArray(selector) ? selector : [selector];
|
|
57
|
+
public exclude(selector: string): this {
|
|
60
58
|
this.excludes.push(selector);
|
|
61
59
|
return this;
|
|
62
60
|
}
|
|
@@ -169,9 +167,7 @@ export default class AxeBuilder {
|
|
|
169
167
|
return await this.finishRun(partials);
|
|
170
168
|
} catch (error) {
|
|
171
169
|
throw new Error(
|
|
172
|
-
`${
|
|
173
|
-
(error as Error).message
|
|
174
|
-
}\n Please check out https://github.com/dequelabs/axe-core-npm/blob/develop/packages/playwright/error-handling.md`
|
|
170
|
+
`${error.message}\n Please check out https://github.com/dequelabs/axe-core-npm/blob/develop/packages/playwright/error-handling.md`
|
|
175
171
|
);
|
|
176
172
|
}
|
|
177
173
|
}
|
|
@@ -185,6 +181,7 @@ export default class AxeBuilder {
|
|
|
185
181
|
private async inject(frames: Frame[]): Promise<void> {
|
|
186
182
|
for (const iframe of frames) {
|
|
187
183
|
await iframe.evaluate(this.script());
|
|
184
|
+
await iframe.evaluate(await this.axeConfigure());
|
|
188
185
|
}
|
|
189
186
|
}
|
|
190
187
|
|
|
@@ -194,13 +191,7 @@ export default class AxeBuilder {
|
|
|
194
191
|
*/
|
|
195
192
|
|
|
196
193
|
private script(): string {
|
|
197
|
-
return
|
|
198
|
-
${this.source}
|
|
199
|
-
axe.configure({
|
|
200
|
-
${this.legacyMode ? '' : 'allowedOrigins: ["<unsafe_all_origins>"],'}
|
|
201
|
-
branding: { application: 'playwright' }
|
|
202
|
-
})
|
|
203
|
-
`;
|
|
194
|
+
return this.source;
|
|
204
195
|
}
|
|
205
196
|
|
|
206
197
|
private async runLegacy(context: ContextObject): Promise<AxeResults> {
|
|
@@ -286,6 +277,7 @@ export default class AxeBuilder {
|
|
|
286
277
|
);
|
|
287
278
|
|
|
288
279
|
blankPage.evaluate(this.script());
|
|
280
|
+
blankPage.evaluate(await this.axeConfigure());
|
|
289
281
|
|
|
290
282
|
return await blankPage
|
|
291
283
|
.evaluate(axeFinishRun, {
|
|
@@ -296,4 +288,21 @@ export default class AxeBuilder {
|
|
|
296
288
|
blankPage.close();
|
|
297
289
|
});
|
|
298
290
|
}
|
|
291
|
+
|
|
292
|
+
private async axeConfigure(): Promise<string> {
|
|
293
|
+
const hasRunPartial = await this.page.evaluate<boolean>(
|
|
294
|
+
'typeof window.axe?.runPartial === "function"'
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
return `
|
|
298
|
+
;axe.configure({
|
|
299
|
+
${
|
|
300
|
+
!this.legacyMode && !hasRunPartial
|
|
301
|
+
? 'allowedOrigins: ["<unsafe_all_origins>"],'
|
|
302
|
+
: 'allowedOrigins: ["<same_origin>"],'
|
|
303
|
+
}
|
|
304
|
+
branding: { application: 'playwright' }
|
|
305
|
+
})
|
|
306
|
+
`;
|
|
307
|
+
}
|
|
299
308
|
}
|
package/src/utils.ts
CHANGED
|
@@ -9,8 +9,8 @@ import type { AnalyzePageParams, AnalyzePageResponse } from './types';
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export const normalizeContext = (
|
|
12
|
-
includes: string[]
|
|
13
|
-
excludes: string[]
|
|
12
|
+
includes: string[],
|
|
13
|
+
excludes: string[]
|
|
14
14
|
): ContextObject => {
|
|
15
15
|
const base: ContextObject = {
|
|
16
16
|
exclude: []
|
|
@@ -61,7 +61,7 @@ describe('@axe-core/playwright', () => {
|
|
|
61
61
|
page,
|
|
62
62
|
axeSource: axeLegacySource
|
|
63
63
|
}).analyze();
|
|
64
|
-
assert.strictEqual(results.testEngine.version, '4.
|
|
64
|
+
assert.strictEqual(results.testEngine.version, '4.2.3');
|
|
65
65
|
assert.isNotNull(results);
|
|
66
66
|
assert.isArray(results.violations);
|
|
67
67
|
assert.isArray(results.incomplete);
|
|
@@ -128,7 +128,7 @@ describe('@axe-core/playwright', () => {
|
|
|
128
128
|
axeSource: 'throw new Error()'
|
|
129
129
|
}).analyze();
|
|
130
130
|
} catch (e) {
|
|
131
|
-
error = e
|
|
131
|
+
error = e;
|
|
132
132
|
}
|
|
133
133
|
assert.isNotNull(error);
|
|
134
134
|
});
|
|
@@ -143,7 +143,7 @@ describe('@axe-core/playwright', () => {
|
|
|
143
143
|
.withRules('label')
|
|
144
144
|
.analyze();
|
|
145
145
|
} catch (e) {
|
|
146
|
-
error = e
|
|
146
|
+
error = e;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
assert.isNotNull(error);
|
|
@@ -413,95 +413,6 @@ describe('@axe-core/playwright', () => {
|
|
|
413
413
|
|
|
414
414
|
assert.notInclude(flattenTarget, '.exclude');
|
|
415
415
|
});
|
|
416
|
-
|
|
417
|
-
it('with chaining includes', async () => {
|
|
418
|
-
await page.goto(`${addr}/context.html`);
|
|
419
|
-
|
|
420
|
-
const results = await new AxeBuilder({ page })
|
|
421
|
-
.include('.include')
|
|
422
|
-
.include('.include2')
|
|
423
|
-
.analyze();
|
|
424
|
-
const flattenTarget = flatPassesTargets(results);
|
|
425
|
-
|
|
426
|
-
assert.strictEqual(flattenTarget[0], '.include');
|
|
427
|
-
assert.strictEqual(flattenTarget[1], '.include2');
|
|
428
|
-
assert.notInclude(flattenTarget, '.exclude');
|
|
429
|
-
assert.notInclude(flattenTarget, '.exclude2');
|
|
430
|
-
});
|
|
431
|
-
|
|
432
|
-
it('with chaining excludes', async () => {
|
|
433
|
-
await page.goto(`${addr}/context.html`);
|
|
434
|
-
const results = await new AxeBuilder({ page })
|
|
435
|
-
.exclude('.exclude')
|
|
436
|
-
.exclude('.exclude2')
|
|
437
|
-
.analyze();
|
|
438
|
-
const flattenTarget = flatPassesTargets(results);
|
|
439
|
-
|
|
440
|
-
assert.notInclude(flattenTarget, '.exclude');
|
|
441
|
-
assert.notInclude(flattenTarget, '.exclude2');
|
|
442
|
-
});
|
|
443
|
-
|
|
444
|
-
it('with chaining includes and excludes', async () => {
|
|
445
|
-
await page.goto(`${addr}/context.html`);
|
|
446
|
-
const results = await new AxeBuilder({ page })
|
|
447
|
-
.include('.include')
|
|
448
|
-
.include('.include2')
|
|
449
|
-
.exclude('.exclude')
|
|
450
|
-
.exclude('.exclude2')
|
|
451
|
-
.analyze();
|
|
452
|
-
const flattenTarget = flatPassesTargets(results);
|
|
453
|
-
|
|
454
|
-
assert.strictEqual(flattenTarget[0], '.include');
|
|
455
|
-
assert.strictEqual(flattenTarget[1], '.include2');
|
|
456
|
-
assert.notInclude(flattenTarget, '.exclude');
|
|
457
|
-
assert.notInclude(flattenTarget, '.exclude2');
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
it('with include using an array of strings', async () => {
|
|
461
|
-
await page.goto(`${addr}/context.html`);
|
|
462
|
-
const expected = ['.selector-one', '.selector-two', '.selector-three'];
|
|
463
|
-
|
|
464
|
-
const axeSource = `
|
|
465
|
-
window.axe = {
|
|
466
|
-
configure(){},
|
|
467
|
-
run({ include }){
|
|
468
|
-
return Promise.resolve({ include })
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
`;
|
|
472
|
-
const results = new AxeBuilder({ page, axeSource: axeSource }).include([
|
|
473
|
-
'.selector-one',
|
|
474
|
-
'.selector-two',
|
|
475
|
-
'.selector-three'
|
|
476
|
-
]);
|
|
477
|
-
|
|
478
|
-
const { include: actual } = (await results.analyze()) as any;
|
|
479
|
-
|
|
480
|
-
assert.deepEqual(actual[0], expected);
|
|
481
|
-
});
|
|
482
|
-
|
|
483
|
-
it('with exclude using an array of strings', async () => {
|
|
484
|
-
await page.goto(`${addr}/context.html`);
|
|
485
|
-
const expected = ['.selector-one', '.selector-two', '.selector-three'];
|
|
486
|
-
|
|
487
|
-
const axeSource = `
|
|
488
|
-
window.axe = {
|
|
489
|
-
configure(){},
|
|
490
|
-
run({ exclude }){
|
|
491
|
-
return Promise.resolve({ exclude })
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
`;
|
|
495
|
-
const results = new AxeBuilder({ page, axeSource: axeSource }).exclude([
|
|
496
|
-
'.selector-one',
|
|
497
|
-
'.selector-two',
|
|
498
|
-
'.selector-three'
|
|
499
|
-
]);
|
|
500
|
-
|
|
501
|
-
const { exclude: actual } = (await results.analyze()) as any;
|
|
502
|
-
|
|
503
|
-
assert.deepEqual(actual[0], expected);
|
|
504
|
-
});
|
|
505
416
|
});
|
|
506
417
|
|
|
507
418
|
describe('axe.finishRun errors', () => {
|
|
@@ -526,7 +437,7 @@ describe('@axe-core/playwright', () => {
|
|
|
526
437
|
assert.fail('Should have thrown');
|
|
527
438
|
} catch (err) {
|
|
528
439
|
assert.match(
|
|
529
|
-
|
|
440
|
+
err.message,
|
|
530
441
|
/Please make sure that you have popup blockers disabled./
|
|
531
442
|
);
|
|
532
443
|
}
|
|
@@ -542,7 +453,7 @@ describe('@axe-core/playwright', () => {
|
|
|
542
453
|
}).analyze();
|
|
543
454
|
assert.fail('Should have thrown');
|
|
544
455
|
} catch (err) {
|
|
545
|
-
assert.match(
|
|
456
|
+
assert.match(err.message, /Please check out/);
|
|
546
457
|
}
|
|
547
458
|
});
|
|
548
459
|
});
|
|
@@ -599,7 +510,7 @@ describe('@axe-core/playwright', () => {
|
|
|
599
510
|
page,
|
|
600
511
|
axeSource: axeLegacySource
|
|
601
512
|
}).analyze();
|
|
602
|
-
assert.strictEqual(results.testEngine.version, '4.
|
|
513
|
+
assert.strictEqual(results.testEngine.version, '4.2.3');
|
|
603
514
|
assert.isNotNull(results);
|
|
604
515
|
assert.isArray(results.violations);
|
|
605
516
|
assert.isArray(results.incomplete);
|
|
@@ -616,7 +527,7 @@ describe('@axe-core/playwright', () => {
|
|
|
616
527
|
axeSource: axeLegacySource + axeCrasherSource
|
|
617
528
|
}).analyze();
|
|
618
529
|
} catch (e) {
|
|
619
|
-
error = e
|
|
530
|
+
error = e;
|
|
620
531
|
}
|
|
621
532
|
assert.isNotNull(error);
|
|
622
533
|
});
|
|
@@ -699,12 +610,55 @@ describe('@axe-core/playwright', () => {
|
|
|
699
610
|
|
|
700
611
|
const nodes = violations[0].nodes;
|
|
701
612
|
assert.deepEqual(nodes[0].target, ['#light-frame', 'input']);
|
|
702
|
-
assert.deepEqual(nodes[1].target, [
|
|
703
|
-
assert.deepEqual(nodes[2].target, [
|
|
613
|
+
assert.deepEqual(nodes[1].target, [
|
|
704
614
|
['#shadow-root', '#shadow-frame'],
|
|
705
615
|
'input'
|
|
706
616
|
]);
|
|
617
|
+
assert.deepEqual(nodes[2].target, ['#slotted-frame', 'input']);
|
|
707
618
|
});
|
|
708
619
|
});
|
|
709
620
|
});
|
|
621
|
+
|
|
622
|
+
describe('allowedOrigins', () => {
|
|
623
|
+
const getAllowedOrigins = async (): Promise<string[]> => {
|
|
624
|
+
return await page.evaluate('axe._audit.allowedOrigins');
|
|
625
|
+
};
|
|
626
|
+
|
|
627
|
+
it('should not set when running runPartial and not legacy mode', async () => {
|
|
628
|
+
await page.goto(`${addr}/index.html`);
|
|
629
|
+
await new AxeBuilder({ page }).analyze();
|
|
630
|
+
const allowedOrigins = await getAllowedOrigins();
|
|
631
|
+
assert.deepEqual(allowedOrigins, [addr]);
|
|
632
|
+
assert.lengthOf(allowedOrigins, 1);
|
|
633
|
+
});
|
|
634
|
+
|
|
635
|
+
it('should not set when running runPartial and legacy mode', async () => {
|
|
636
|
+
await page.goto(`${addr}/index.html`);
|
|
637
|
+
await new AxeBuilder({ page }).setLegacyMode(true).analyze();
|
|
638
|
+
const allowedOrigins = await getAllowedOrigins();
|
|
639
|
+
assert.deepEqual(allowedOrigins, [addr]);
|
|
640
|
+
assert.lengthOf(allowedOrigins, 1);
|
|
641
|
+
});
|
|
642
|
+
|
|
643
|
+
it('should not set when running legacy source and legacy mode', async () => {
|
|
644
|
+
await page.goto(`${addr}/index.html`);
|
|
645
|
+
await new AxeBuilder({ page, axeSource: axeLegacySource })
|
|
646
|
+
.setLegacyMode(true)
|
|
647
|
+
.analyze();
|
|
648
|
+
const allowedOrigins = await getAllowedOrigins();
|
|
649
|
+
assert.deepEqual(allowedOrigins, [addr]);
|
|
650
|
+
assert.lengthOf(allowedOrigins, 1);
|
|
651
|
+
});
|
|
652
|
+
|
|
653
|
+
it('should set when running legacy source and not legacy mode', async () => {
|
|
654
|
+
await page.goto(`${addr}/index.html`);
|
|
655
|
+
await new AxeBuilder({
|
|
656
|
+
page,
|
|
657
|
+
axeSource: axeLegacySource
|
|
658
|
+
}).analyze();
|
|
659
|
+
const allowedOrigins = await getAllowedOrigins();
|
|
660
|
+
assert.deepEqual(allowedOrigins, ['*']);
|
|
661
|
+
assert.lengthOf(allowedOrigins, 1);
|
|
662
|
+
});
|
|
663
|
+
});
|
|
710
664
|
});
|