@axe-core/watcher 3.4.0-next.89306425 → 3.4.0-next.ab2e92b9
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/dist/EventForwarder.d.ts +11 -0
- package/dist/EventForwarder.js +57 -0
- package/dist/EventForwarder.js.map +1 -0
- package/dist/cypress.js +35 -3
- package/dist/cypress.js.map +1 -1
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare class EventForwarder {
|
|
2
|
+
private emitter;
|
|
3
|
+
private tasks;
|
|
4
|
+
on: Cypress.PluginEvents;
|
|
5
|
+
constructor();
|
|
6
|
+
/**
|
|
7
|
+
* Forwards all the events registered so far to cypress
|
|
8
|
+
*/
|
|
9
|
+
forward(on: Cypress.PluginEvents): void;
|
|
10
|
+
}
|
|
11
|
+
export default EventForwarder;
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
16
|
+
class EventForwarder {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.emitter = new eventemitter3_1.default();
|
|
19
|
+
this.tasks = {};
|
|
20
|
+
this.on = (action, fn) => {
|
|
21
|
+
if (action === 'task') {
|
|
22
|
+
Object.assign(this.tasks, fn);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.emitter.on(action, fn);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Forwards all the events registered so far to cypress
|
|
31
|
+
*/
|
|
32
|
+
forward(on) {
|
|
33
|
+
if (Object.keys(this.tasks).length > 0) {
|
|
34
|
+
on('task', this.tasks);
|
|
35
|
+
}
|
|
36
|
+
for (const event of this.emitter.eventNames()) {
|
|
37
|
+
// We handle `before:browser:launch` event differently than others because
|
|
38
|
+
// this handler is expected to return launchOptions while other handlers
|
|
39
|
+
// do not return value.
|
|
40
|
+
if (event === 'before:browser:launch') {
|
|
41
|
+
on('before:browser:launch', (browser, launchOptions) => this.emitter
|
|
42
|
+
.listeners(event)
|
|
43
|
+
.reduce((prevLaunchOptions, listener) => listener(browser, prevLaunchOptions), launchOptions));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
47
|
+
on(event, (...args) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
for (const listener of this.emitter.listeners(event)) {
|
|
49
|
+
yield listener(...args);
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = EventForwarder;
|
|
57
|
+
//# sourceMappingURL=EventForwarder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventForwarder.js","sourceRoot":"","sources":["../src/EventForwarder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAYA,kEAAwC;AAExC,MAAM,cAAc;IAKlB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAY,EAAE,CAAA;QACjC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAQ,EAAE;YAC7B,IAAI,MAAM,KAAK,MAAM,EAAE;gBACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;aAC9B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAqC,CAAC,CAAA;aAC/D;QACH,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,EAAwB;QACrC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;SACvB;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;YAC7C,0EAA0E;YAC1E,wEAAwE;YACxE,uBAAuB;YACvB,IAAI,KAAK,KAAK,uBAAuB,EAAE;gBACrC,EAAE,CACA,uBAAuB,EACvB,CACE,OAAwB,EACxB,aAA2C,EAC3C,EAAE,CACF,IAAI,CAAC,OAAO;qBACT,SAAS,CAAC,KAAK,CAAC;qBAChB,MAAM,CACL,CAAC,iBAAiB,EAAE,QAAQ,EAAE,EAAE,CAC9B,QAAQ,CACN,OAAO,EACP,iBAAiB,CACyB,EAC9C,aAAa,CACd,CACN,CAAA;aACF;iBAAM;gBACL,iEAAiE;gBACjE,EAAE,CAAC,KAAY,EAAE,CAAO,GAAG,IAAe,EAAE,EAAE;oBAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBACpD,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;qBACxB;gBACH,CAAC,CAAA,CAAC,CAAA;aACH;SACF;IACH,CAAC;CACF;AAED,kBAAe,cAAc,CAAA"}
|
package/dist/cypress.js
CHANGED
|
@@ -27,6 +27,7 @@ exports.cypressConfig = void 0;
|
|
|
27
27
|
const fs_1 = __importDefault(require("fs"));
|
|
28
28
|
const util_1 = require("./util");
|
|
29
29
|
const sendResultsToServer_1 = __importDefault(require("./sendResultsToServer"));
|
|
30
|
+
const EventForwarder_1 = __importDefault(require("./EventForwarder"));
|
|
30
31
|
/**
|
|
31
32
|
* Create a Cypress config that uses the axe Watcher extension.
|
|
32
33
|
*
|
|
@@ -46,8 +47,21 @@ const cypressConfig = (config) => {
|
|
|
46
47
|
'*/__cypress/iframes/*'
|
|
47
48
|
]
|
|
48
49
|
});
|
|
49
|
-
return Object.assign(Object.assign({}, userConfig), { e2e: Object.assign(Object.assign({}, userConfig.e2e), { setupNodeEvents(
|
|
50
|
+
return Object.assign(Object.assign({}, userConfig), { e2e: Object.assign(Object.assign({}, userConfig.e2e), { setupNodeEvents(cypressOn, ...args) {
|
|
50
51
|
var _a, _b;
|
|
52
|
+
/**
|
|
53
|
+
* If the user supplies `setupNodeEvents` config and registers events using `on` handler
|
|
54
|
+
* provided by cypress, the users' custom events are overridden by ours.
|
|
55
|
+
* @see https://github.com/dequelabs/jazzband/issues/668
|
|
56
|
+
*
|
|
57
|
+
* Here instead of registering the same event multiple times either by user or us,
|
|
58
|
+
* we accumulate the events registered using `EventForwarder` which is proposed by David Sveningsson.
|
|
59
|
+
* @see https://github.com/cypress-io/cypress/issues/5240#issuecomment-1462214696
|
|
60
|
+
*
|
|
61
|
+
* Afterwards, we forward the accumulated events to cypress `on` handler.
|
|
62
|
+
*/
|
|
63
|
+
const eventForwarder = new EventForwarder_1.default();
|
|
64
|
+
const on = eventForwarder.on;
|
|
51
65
|
(_b = (_a = userConfig.e2e) === null || _a === void 0 ? void 0 : _a.setupNodeEvents) === null || _b === void 0 ? void 0 : _b.call(_a, on, ...args);
|
|
52
66
|
on('before:browser:launch', (browser, launchOptions) => {
|
|
53
67
|
// We only support Chrome.
|
|
@@ -56,8 +70,21 @@ const cypressConfig = (config) => {
|
|
|
56
70
|
launchOptions.args.includes('--headless')) {
|
|
57
71
|
throw new util_1.HeadlessNotSupportedError('In Cypress, "--headless=new" became the default headless mode in Cypress version 12.15.0. Ensure your Cypress version is up to date and that you are not using a "before:browser:launch" configuration that adds "--headless" to launchOptions.args.');
|
|
58
72
|
}
|
|
59
|
-
// Load the extension.
|
|
60
|
-
|
|
73
|
+
// Load the extension. Merge extention args if provided by the user
|
|
74
|
+
const launchOptionsArgs = [
|
|
75
|
+
...launchOptions.args,
|
|
76
|
+
...util_1.extensionArgs
|
|
77
|
+
].reduce((prev, arg) => {
|
|
78
|
+
const [key, value] = arg.split('=');
|
|
79
|
+
if (!prev[key]) {
|
|
80
|
+
prev[key] = [];
|
|
81
|
+
}
|
|
82
|
+
if (value) {
|
|
83
|
+
prev[key].push(value);
|
|
84
|
+
}
|
|
85
|
+
return prev;
|
|
86
|
+
}, {});
|
|
87
|
+
launchOptions.args = Object.entries(launchOptionsArgs).map(([key, value]) => value.length > 0 ? [key, value.join(',')].join('=') : key);
|
|
61
88
|
}
|
|
62
89
|
return launchOptions;
|
|
63
90
|
});
|
|
@@ -73,6 +100,11 @@ const cypressConfig = (config) => {
|
|
|
73
100
|
fs_1.default.unlinkSync(`cypress/axe-watcher/${result}`);
|
|
74
101
|
}
|
|
75
102
|
}));
|
|
103
|
+
/**
|
|
104
|
+
* Forward the accumulated events to cypress.
|
|
105
|
+
* For more information, see commnet on #44
|
|
106
|
+
*/
|
|
107
|
+
eventForwarder.forward(cypressOn);
|
|
76
108
|
} }) });
|
|
77
109
|
};
|
|
78
110
|
exports.cypressConfig = cypressConfig;
|
package/dist/cypress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAmB;AACnB,iCAMe;AACf,gFAAuD;
|
|
1
|
+
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":"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"}
|