@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.
@@ -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(on, ...args) {
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
- launchOptions.args.push(...util_1.extensionArgs);
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;
@@ -1 +1 @@
1
- {"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAmB;AACnB,iCAMe;AACf,gFAAuD;AAEvD;;;;GAIG;AAEI,MAAM,aAAa,GAAG,CAC3B,MAA6C,EACtB,EAAE;IACzB,MAAM,EAAE,GAAG,KAAoB,MAAM,EAArB,UAAU,UAAK,MAAM,EAA/B,OAAsB,CAAS,CAAA;IAErC,IAAA,qBAAc,kCACT,GAAG;QACN,sDAAsD;QACtD,OAAO,EAAE,IAAI,IACb,CAAA;IACF,IAAA,oBAAa,EAAC;QACZ,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE;YACb,0BAA0B;YAC1B,4BAA4B;YAC5B,4BAA4B;YAC5B,uBAAuB;SACxB;KACF,CAAC,CAAA;IAEF,uCACK,UAAU,KACb,GAAG,kCACE,UAAU,CAAC,GAAG,KACjB,eAAe,CAAC,EAAE,EAAE,GAAG,IAAI;;gBACzB,MAAA,MAAA,UAAU,CAAC,GAAG,0CAAE,eAAe,mDAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;gBAE9C,EAAE,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE;oBACrD,0BAA0B;oBAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC7B,IACE,OAAO,CAAC,UAAU;4BAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EACzC;4BACA,MAAM,IAAI,gCAAyB,CACjC,sPAAsP,CACvP,CAAA;yBACF;wBAED,sBAAsB;wBACtB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAa,CAAC,CAAA;qBAC1C;oBAED,OAAO,aAAa,CAAA;gBACtB,CAAC,CAAC,CAAA;gBAEF,wEAAwE;gBACxE,EAAE,CAAC,WAAW,EAAE,GAAS,EAAE;oBACzB,MAAM,OAAO,GAAG,YAAE;yBACf,WAAW,CAAC,qBAAqB,CAAC;yBAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;oBACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAC1B,uBAAuB,MAAM,EAAE,EAC/B,MAAM,CACP,CAAA;wBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;wBAC/B,MAAM,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAA;wBACjC,YAAE,CAAC,UAAU,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAA;qBAC/C;gBACH,CAAC,CAAA,CAAC,CAAA;YACJ,CAAC,OAEJ;AACH,CAAC,CAAA;AAhEY,QAAA,aAAa,iBAgEzB"}
1
+ {"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":"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"}