@axe-core/watcher 3.11.0-rc.e230efa3 → 3.11.1-next.974a6e3c
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/Controller.d.ts +9 -1
- package/dist/Controller.js +21 -7
- package/dist/Controller.js.map +1 -1
- package/dist/EventForwarder.js +4 -6
- package/dist/EventForwarder.js.map +1 -1
- package/dist/createDebugger.d.ts +9 -0
- package/dist/createDebugger.js +27 -0
- package/dist/createDebugger.js.map +1 -0
- package/dist/cypress.js +38 -41
- package/dist/cypress.js.map +1 -1
- package/dist/cypressCommands.d.ts +2 -0
- package/dist/cypressCommands.js +61 -82
- package/dist/cypressCommands.js.map +1 -1
- package/dist/playwright.js +3 -2
- package/dist/playwright.js.map +1 -1
- package/dist/playwrightTest.js +4 -1
- package/dist/playwrightTest.js.map +1 -1
- package/dist/puppeteer.js +3 -2
- package/dist/puppeteer.js.map +1 -1
- package/dist/sendResultsToServer.d.ts +6 -1
- package/dist/sendResultsToServer.js +26 -4
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/util.d.ts +11 -1
- package/dist/util.js +78 -7
- package/dist/util.js.map +1 -1
- package/dist/wdio.js +3 -3
- package/dist/wdio.js.map +1 -1
- package/dist/webdriver.js +8 -3
- package/dist/webdriver.js.map +1 -1
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +5 -3
package/dist/Controller.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import type { Debugger } from 'debug';
|
|
2
|
+
interface ControllerParams {
|
|
3
|
+
/** The namespace for the debug logger. */
|
|
4
|
+
debugLoggerName: string;
|
|
5
|
+
}
|
|
1
6
|
declare abstract class Controller {
|
|
2
7
|
protected abstract executeScript<A = unknown, T = void>(fn: string | ((...args: A[]) => Promise<T>), ...args: unknown[]): Promise<T>;
|
|
3
8
|
protected isStopped: boolean;
|
|
9
|
+
protected debugLogger: Debugger;
|
|
10
|
+
constructor({ debugLoggerName }: ControllerParams);
|
|
4
11
|
start(): Promise<void>;
|
|
5
12
|
stop(): Promise<void>;
|
|
6
|
-
analyze({ __UserRequestedAnalyze }?: {
|
|
13
|
+
analyze({ __Method, __UserRequestedAnalyze }?: {
|
|
14
|
+
__Method?: string;
|
|
7
15
|
__UserRequestedAnalyze?: boolean;
|
|
8
16
|
}): Promise<void>;
|
|
9
17
|
flush(): Promise<void>;
|
package/dist/Controller.js
CHANGED
|
@@ -5,9 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const util_1 = require("./util");
|
|
7
7
|
const sendResultsToServer_1 = __importDefault(require("./sendResultsToServer"));
|
|
8
|
+
const createDebugger_1 = __importDefault(require("./createDebugger"));
|
|
8
9
|
class Controller {
|
|
9
|
-
constructor() {
|
|
10
|
+
constructor({ debugLoggerName }) {
|
|
10
11
|
this.isStopped = false;
|
|
12
|
+
this.debugLogger = (0, createDebugger_1.default)(debugLoggerName);
|
|
11
13
|
}
|
|
12
14
|
async start() {
|
|
13
15
|
(0, util_1.updateAutoAnalyze)(true);
|
|
@@ -45,19 +47,24 @@ class Controller {
|
|
|
45
47
|
});
|
|
46
48
|
});
|
|
47
49
|
}
|
|
48
|
-
async analyze({ __UserRequestedAnalyze = true } = {}) {
|
|
50
|
+
async analyze({ __Method, __UserRequestedAnalyze = true } = {}) {
|
|
51
|
+
this.debugLogger(`Analyze: Invoked${__Method ? ` - ${__Method}` : ''}`);
|
|
49
52
|
// If the user didn't request an analyze, and we're in manual mode, don't do anything.
|
|
50
53
|
if (this.isStopped && !__UserRequestedAnalyze) {
|
|
54
|
+
this.debugLogger('Analyze: Skipped', {
|
|
55
|
+
isStopped: this.isStopped,
|
|
56
|
+
__UserRequestedAnalyze
|
|
57
|
+
});
|
|
51
58
|
return;
|
|
52
59
|
}
|
|
53
|
-
await this.executeScript((userRequestedAnalyze) => {
|
|
60
|
+
const result = await this.executeScript((userRequestedAnalyze) => {
|
|
54
61
|
if (!['http:', 'https:', 'file:'].includes(window.location.protocol)) {
|
|
55
|
-
return Promise.resolve();
|
|
62
|
+
return Promise.resolve({ message: 'Skipped - Invalid protocol' });
|
|
56
63
|
}
|
|
57
64
|
return new Promise(resolve => {
|
|
58
|
-
const fn = () => {
|
|
65
|
+
const fn = (event) => {
|
|
59
66
|
window.removeEventListener('axe:manual-mode-analyze-done', fn);
|
|
60
|
-
resolve();
|
|
67
|
+
resolve(event.detail);
|
|
61
68
|
};
|
|
62
69
|
window.addEventListener('axe:manual-mode-analyze-done', fn);
|
|
63
70
|
const event = new CustomEvent('axe:manual-mode-analyze', {
|
|
@@ -66,8 +73,10 @@ class Controller {
|
|
|
66
73
|
window.dispatchEvent(event);
|
|
67
74
|
});
|
|
68
75
|
}, __UserRequestedAnalyze);
|
|
76
|
+
this.debugLogger(`Analyze: ${result.message}`);
|
|
69
77
|
}
|
|
70
78
|
async flush() {
|
|
79
|
+
this.debugLogger('Flush: Invoked (may analyze implicitly)');
|
|
71
80
|
const results = await this.executeScript(() => {
|
|
72
81
|
if (!['http:', 'https:', 'file:'].includes(window.location.protocol)) {
|
|
73
82
|
return Promise.resolve([]);
|
|
@@ -88,7 +97,12 @@ class Controller {
|
|
|
88
97
|
window.dispatchEvent(event);
|
|
89
98
|
});
|
|
90
99
|
});
|
|
91
|
-
|
|
100
|
+
this.debugLogger(`Flush: Received ${results.length} results`);
|
|
101
|
+
await (0, sendResultsToServer_1.default)({
|
|
102
|
+
results,
|
|
103
|
+
debugLogger: this.debugLogger
|
|
104
|
+
});
|
|
105
|
+
this.debugLogger('Flush: Complete');
|
|
92
106
|
}
|
|
93
107
|
}
|
|
94
108
|
exports.default = Controller;
|
package/dist/Controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Controller.js","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":";;;;;AAAA,iCAA0C;AAC1C,gFAAwE;
|
|
1
|
+
{"version":3,"file":"Controller.js","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":"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"}
|
package/dist/EventForwarder.js
CHANGED
|
@@ -34,12 +34,10 @@ class EventForwarder {
|
|
|
34
34
|
.reduce((prevLaunchOptions, listener) => listener(browser, prevLaunchOptions), launchOptions));
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
});
|
|
37
|
+
for (const listener of this.emitter.listeners(event)) {
|
|
38
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
39
|
+
on(event, listener);
|
|
40
|
+
}
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
}
|
|
@@ -1 +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,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAqC,CAAC,CAAA;YAChE,CAAC;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,CAAC;YACvC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9C,0EAA0E;YAC1E,wEAAwE;YACxE,uBAAuB;YACvB,IAAI,KAAK,KAAK,uBAAuB,EAAE,CAAC;gBACtC,EAAE,CACA,uBAAuB,EACvB,CACE,OAAwB,EACxB,aAAiD,EACjD,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,CAC+B,EACpD,aAAa,CACd,CACN,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,
|
|
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,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAqC,CAAC,CAAA;YAChE,CAAC;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,CAAC;YACvC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9C,0EAA0E;YAC1E,wEAAwE;YACxE,uBAAuB;YACvB,IAAI,KAAK,KAAK,uBAAuB,EAAE,CAAC;gBACtC,EAAE,CACA,uBAAuB,EACvB,CACE,OAAwB,EACxB,aAAiD,EACjD,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,CAC+B,EACpD,aAAa,CACd,CACN,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,iEAAiE;oBACjE,EAAE,CAAC,KAAY,EAAE,QAAQ,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,kBAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a debug logger with the given namespace
|
|
4
|
+
*
|
|
5
|
+
* @param namespace The namespace for the debug logger for example: `PlaywrightController` or `PlaywrightWrapping`.
|
|
6
|
+
* @returns debug instance
|
|
7
|
+
*/
|
|
8
|
+
declare function createDebugger(namespace: string): debug.Debugger;
|
|
9
|
+
export default createDebugger;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const debug_1 = __importDefault(require("debug"));
|
|
7
|
+
/**
|
|
8
|
+
* The prefix for the debug logger allows users to filter logs by the prefix
|
|
9
|
+
* using the debug package.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```bash
|
|
13
|
+
* DEBUG=axe-watcher:* yarn test
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const NAMESPACE_PREFIX = 'axe-watcher';
|
|
17
|
+
/**
|
|
18
|
+
* Creates a debug logger with the given namespace
|
|
19
|
+
*
|
|
20
|
+
* @param namespace The namespace for the debug logger for example: `PlaywrightController` or `PlaywrightWrapping`.
|
|
21
|
+
* @returns debug instance
|
|
22
|
+
*/
|
|
23
|
+
function createDebugger(namespace) {
|
|
24
|
+
return (0, debug_1.default)(`${NAMESPACE_PREFIX}:${namespace}`);
|
|
25
|
+
}
|
|
26
|
+
exports.default = createDebugger;
|
|
27
|
+
//# sourceMappingURL=createDebugger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDebugger.js","sourceRoot":"","sources":["../src/createDebugger.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAEtC;;;;;GAKG;AAEH,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,IAAA,eAAK,EAAC,GAAG,gBAAgB,IAAI,SAAS,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,kBAAe,cAAc,CAAA"}
|
package/dist/cypress.js
CHANGED
|
@@ -4,10 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.cypressConfig = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
7
|
const util_1 = require("./util");
|
|
9
8
|
const sendResultsToServer_1 = __importDefault(require("./sendResultsToServer"));
|
|
10
9
|
const EventForwarder_1 = __importDefault(require("./EventForwarder"));
|
|
10
|
+
const createDebugger_1 = __importDefault(require("./createDebugger"));
|
|
11
|
+
const debugLogger = (0, createDebugger_1.default)('CypressController');
|
|
11
12
|
/**
|
|
12
13
|
* Create a Cypress config that uses the axe Watcher extension.
|
|
13
14
|
*
|
|
@@ -15,6 +16,8 @@ const EventForwarder_1 = __importDefault(require("./EventForwarder"));
|
|
|
15
16
|
*/
|
|
16
17
|
const cypressConfig = (config) => {
|
|
17
18
|
const { axe, ...userConfig } = config;
|
|
19
|
+
const { DEBUG } = process.env;
|
|
20
|
+
const hasWatcherDebug = DEBUG && DEBUG.includes('axe-watcher');
|
|
18
21
|
(0, util_1.writeVariables)({
|
|
19
22
|
...axe,
|
|
20
23
|
// Let the extension know to check for Cypress frames.
|
|
@@ -30,6 +33,12 @@ const cypressConfig = (config) => {
|
|
|
30
33
|
]
|
|
31
34
|
});
|
|
32
35
|
return {
|
|
36
|
+
...(hasWatcherDebug && {
|
|
37
|
+
env: {
|
|
38
|
+
...config.env,
|
|
39
|
+
__AXE_WATCHER_DEBUG: hasWatcherDebug
|
|
40
|
+
}
|
|
41
|
+
}),
|
|
33
42
|
...userConfig,
|
|
34
43
|
e2e: {
|
|
35
44
|
...userConfig.e2e,
|
|
@@ -61,53 +70,41 @@ const cypressConfig = (config) => {
|
|
|
61
70
|
* ensure we wait for the user's `setupNodeEvents` to resolve.
|
|
62
71
|
*/
|
|
63
72
|
const userNodeEventConfig = await ((_b = (_a = userConfig.e2e) === null || _a === void 0 ? void 0 : _a.setupNodeEvents) === null || _b === void 0 ? void 0 : _b.call(_a, on, ...args));
|
|
73
|
+
on('task', {
|
|
74
|
+
__uploadAxeWatcherResults: async (results) => {
|
|
75
|
+
if (!results.length) {
|
|
76
|
+
// Indicates to Cypress that the event has been handled.
|
|
77
|
+
// @see https://docs.cypress.io/api/commands/task#Usage
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
await (0, sendResultsToServer_1.default)({
|
|
81
|
+
results,
|
|
82
|
+
debugLogger
|
|
83
|
+
});
|
|
84
|
+
return null;
|
|
85
|
+
},
|
|
86
|
+
__debugAxeWatcher: (message) => {
|
|
87
|
+
debugLogger(message);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
64
91
|
on('before:browser:launch', (browser, launchOptions) => {
|
|
65
|
-
|
|
66
|
-
|
|
92
|
+
// We only officially support Chrome, but for backcompat we are permissive and accept other
|
|
93
|
+
// Chromium-based browsers (eg, "chromium", "chrome:beta", "edge").
|
|
94
|
+
if (browser.name.startsWith('firefox') ||
|
|
95
|
+
browser.name.startsWith('electron')) {
|
|
96
|
+
throw new Error(`The @axe-core/watcher package only supports running in Chrome, but Cypress is configured with browser "${browser.name}". Please refer to our System Requirements for more information: https://docs.deque.com/developer-hub/2/en/dh-system-requirements`);
|
|
67
97
|
}
|
|
68
98
|
if (browser.isHeadless && launchOptions.args.includes('--headless')) {
|
|
69
99
|
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.');
|
|
70
100
|
}
|
|
71
|
-
// Load the extension. Merge
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const [key, value] = arg.split('=');
|
|
77
|
-
if (!prev[key]) {
|
|
78
|
-
prev[key] = [];
|
|
79
|
-
}
|
|
80
|
-
if (value) {
|
|
81
|
-
prev[key].push(value);
|
|
82
|
-
}
|
|
83
|
-
return prev;
|
|
84
|
-
}, {});
|
|
85
|
-
launchOptions.args = Object.entries(launchOptionsArgs).map(([key, value]) => value.length > 0 ? [key, value.join(',')].join('=') : key);
|
|
101
|
+
// Load the extension. Merge extension args if provided by the user
|
|
102
|
+
const existingArgs = launchOptions.args;
|
|
103
|
+
launchOptions.args = (0, util_1.mergeChromeArgs)(existingArgs, {
|
|
104
|
+
disableOtherExtensions: false
|
|
105
|
+
});
|
|
86
106
|
return launchOptions;
|
|
87
107
|
});
|
|
88
|
-
// Read the results sent from the extension, then forward to the server.
|
|
89
|
-
on('after:run', async () => {
|
|
90
|
-
let results;
|
|
91
|
-
try {
|
|
92
|
-
results = fs_1.default
|
|
93
|
-
.readdirSync('cypress/axe-watcher')
|
|
94
|
-
.filter(f => f.endsWith('.json'));
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
// this is a non-error; the test suite likely just failed early
|
|
98
|
-
// without running any scans
|
|
99
|
-
if (error.code === 'ENOENT') {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
throw error;
|
|
103
|
-
}
|
|
104
|
-
for (const result of results) {
|
|
105
|
-
const data = fs_1.default.readFileSync(`cypress/axe-watcher/${result}`, 'utf8');
|
|
106
|
-
const parsed = JSON.parse(data);
|
|
107
|
-
await (0, sendResultsToServer_1.default)(parsed);
|
|
108
|
-
fs_1.default.unlinkSync(`cypress/axe-watcher/${result}`);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
108
|
/**
|
|
112
109
|
* Forward the accumulated events to cypress.
|
|
113
110
|
* For more information, see comment on #44
|
package/dist/cypress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../src/cypress.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ declare global {
|
|
|
12
12
|
axeFlush(): Chainable<void>;
|
|
13
13
|
/** Perform an axe-core analysis. */
|
|
14
14
|
axeWatcherAnalyze(params?: {
|
|
15
|
+
__Method?: string;
|
|
15
16
|
__UserRequestedAnalyze?: boolean;
|
|
16
17
|
}): Chainable<void>;
|
|
17
18
|
/**
|
|
@@ -20,6 +21,7 @@ declare global {
|
|
|
20
21
|
* @Deprecated Use cy.axeWatcherAnalyze() instead
|
|
21
22
|
*/
|
|
22
23
|
axeAnalyze(params?: {
|
|
24
|
+
__Method?: string;
|
|
23
25
|
__UserRequestedAnalyze?: boolean;
|
|
24
26
|
}): Chainable<void>;
|
|
25
27
|
/**
|
package/dist/cypressCommands.js
CHANGED
|
@@ -27,8 +27,17 @@ exports.WRAPPED_COMMANDS = [
|
|
|
27
27
|
'trigger',
|
|
28
28
|
'type',
|
|
29
29
|
'uncheck',
|
|
30
|
+
'visit',
|
|
30
31
|
'wait'
|
|
31
32
|
];
|
|
33
|
+
/** Helper function to log debug messages */
|
|
34
|
+
const logDebugAxeWatcher = ({ message }) => {
|
|
35
|
+
// perf: we only want to log debug messages if the env has been set
|
|
36
|
+
// so it doesn't enqueue a Cypress command
|
|
37
|
+
if (Cypress.env('__AXE_WATCHER_DEBUG')) {
|
|
38
|
+
cy.task('__debugAxeWatcher', message, { log: false });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
32
41
|
const shouldAnalyzeLocation = (location) => ['http:', 'https:', 'file:'].includes(location.protocol);
|
|
33
42
|
/**
|
|
34
43
|
* Wrapped commands queue an axe run before calling the original method. This can seem
|
|
@@ -41,6 +50,9 @@ const shouldAnalyzeLocation = (location) => ['http:', 'https:', 'file:'].include
|
|
|
41
50
|
exports.WRAPPED_COMMANDS.forEach(method => Cypress.Commands.overwrite(method, (originalFn, ...args) => {
|
|
42
51
|
var _a, _b, _c, _d, _e, _f;
|
|
43
52
|
const currentCommand = (_b = (_a = cy.state('current')) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b.name;
|
|
53
|
+
// TODO: Remove the feature flag once #1109 is fully resolved.
|
|
54
|
+
const tryRequerySubject = !!Cypress.env('__AXE_WATCHER_CYPRESS_REQUERY_SUBJECT_AFTER_ANALYZE') &&
|
|
55
|
+
'getSubjectFromChain' in cy;
|
|
44
56
|
// Some commands, like "type" call other commands internally, like "click".
|
|
45
57
|
// We don't want to enqueue a run in these scenarios because it can cause
|
|
46
58
|
// promises to be returned from commands, which Cypress does not allow.
|
|
@@ -54,84 +66,50 @@ exports.WRAPPED_COMMANDS.forEach(method => Cypress.Commands.overwrite(method, (o
|
|
|
54
66
|
// to finding the "Subject". cy.getSubjectFromChain() requeries those operations to retrieve
|
|
55
67
|
// a fresh "Subject" handle.
|
|
56
68
|
const originalSubjectChain = (_f = (_e = cy).subjectChain) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
57
|
-
cy.window()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (win && !win.__AXE_WATCHER_HAS_VISITED) {
|
|
61
|
-
/**
|
|
62
|
-
* Set a flag on the Window to indicate that a wrapped method has been called.
|
|
63
|
-
* This is used to determine whether we should call `axeFlush` after the test.
|
|
64
|
-
*/
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
-
;
|
|
67
|
-
win.__AXE_WATCHER_HAS_VISITED = true;
|
|
68
|
-
}
|
|
69
|
-
})
|
|
70
|
-
.axeWatcherAnalyze({ __UserRequestedAnalyze: false })
|
|
71
|
-
// axeWatcherAnalyze is slow; it's possible for the Cypress subject to become invalidated
|
|
72
|
-
// while it's running (eg, if the subject is in some sort of remount-loop). To account for
|
|
73
|
-
// this, we ask Cypress to requery the subject object from the subjectChain before returning
|
|
74
|
-
// control to the original function.
|
|
75
|
-
//
|
|
76
|
-
// Note that we don't always have access to an original subjectChain to restore; the API is
|
|
77
|
-
// only available in Cypress 12+, and even then we might be wrapping a command that doesn't
|
|
78
|
-
// necessarily operate on a subject.
|
|
79
|
-
.then(() => {
|
|
80
|
-
var _a, _b;
|
|
81
|
-
// Some Cypress commands pick up the subject from cy.subject(), and some pick it up from a
|
|
82
|
-
// subject parameter that's passed to the command. Returning the updated subject from this
|
|
83
|
-
// .then() sets cy.subject() to handle the former...
|
|
84
|
-
return originalSubjectChain &&
|
|
85
|
-
((_b = (_a = cy).getSubjectFromChain) === null || _b === void 0 ? void 0 : _b.call(_a, originalSubjectChain));
|
|
86
|
-
})
|
|
87
|
-
.then(updatedSubject => {
|
|
88
|
-
// ...and this map handles the latter.
|
|
89
|
-
const argsWithRefreshedSubject = args.map(arg => originalSubject && arg === originalSubject ? updatedSubject : arg);
|
|
90
|
-
// originalFn might return a Promise that Cypress needs to be able to track, so it's important
|
|
91
|
-
// to propagate its return value even though we're not chaining any further cypress commands
|
|
92
|
-
// ourselves.
|
|
93
|
-
return originalFn(...argsWithRefreshedSubject);
|
|
69
|
+
const commandChain = cy.window().axeWatcherAnalyze({
|
|
70
|
+
__Method: method,
|
|
71
|
+
__UserRequestedAnalyze: false
|
|
94
72
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
Cypress
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (win && !win.__AXE_WATCHER_HAS_VISITED) {
|
|
113
|
-
/**
|
|
114
|
-
* Set a flag on the Window to indicate that a wrapped method has been called.
|
|
115
|
-
* This is used to determine whether we should call `axeFlush` after the test.
|
|
116
|
-
*/
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
118
|
-
;
|
|
119
|
-
win.__AXE_WATCHER_HAS_VISITED = true;
|
|
120
|
-
}
|
|
73
|
+
if (tryRequerySubject) {
|
|
74
|
+
commandChain
|
|
75
|
+
// axeWatcherAnalyze is slow; it's possible for the Cypress subject to become invalidated
|
|
76
|
+
// while it's running (eg, if the subject is in some sort of remount-loop). To account for
|
|
77
|
+
// this, we ask Cypress to requery the subject object from the subjectChain before returning
|
|
78
|
+
// control to the original function.
|
|
79
|
+
//
|
|
80
|
+
// Note that we don't always have access to an original subjectChain to restore; the API is
|
|
81
|
+
// only available in Cypress 12+, and even then we might be wrapping a command that doesn't
|
|
82
|
+
// necessarily operate on a subject.
|
|
83
|
+
.then(() => {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
// Some Cypress commands pick up the subject from cy.subject(), and some pick it up from a
|
|
86
|
+
// subject parameter that's passed to the command. Returning the updated subject from this
|
|
87
|
+
// .then() sets cy.subject() to handle the former...
|
|
88
|
+
return originalSubjectChain &&
|
|
89
|
+
((_b = (_a = cy).getSubjectFromChain) === null || _b === void 0 ? void 0 : _b.call(_a, originalSubjectChain));
|
|
121
90
|
})
|
|
122
|
-
.then(
|
|
123
|
-
|
|
124
|
-
|
|
91
|
+
.then(updatedSubject => {
|
|
92
|
+
// ...and this map handles the latter.
|
|
93
|
+
const argsWithRefreshedSubject = args.map(arg => originalSubject && arg === originalSubject ? updatedSubject : arg);
|
|
94
|
+
// originalFn might return a Promise that Cypress needs to be able to track, so it's important
|
|
95
|
+
// to propagate its return value even though we're not chaining any further cypress commands
|
|
96
|
+
// ourselves.
|
|
97
|
+
return originalFn(...argsWithRefreshedSubject);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
commandChain
|
|
102
|
+
// Set the subject back to the previous subject
|
|
103
|
+
.then(() => originalSubject)
|
|
104
|
+
.then(() => originalFn(...args));
|
|
105
|
+
}
|
|
106
|
+
}));
|
|
125
107
|
function axeWatcherFlushCommand() {
|
|
108
|
+
logDebugAxeWatcher({ message: 'Flush: Invoked (may analyze implicitly)' });
|
|
126
109
|
cy.window().then(win => {
|
|
127
110
|
if (!shouldAnalyzeLocation(win.location)) {
|
|
128
111
|
return Promise.resolve();
|
|
129
112
|
}
|
|
130
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
131
|
-
const hasVisited = win.__AXE_WATCHER_HAS_VISITED;
|
|
132
|
-
if (!hasVisited) {
|
|
133
|
-
return Promise.resolve();
|
|
134
|
-
}
|
|
135
113
|
return new Promise(resolve => {
|
|
136
114
|
const results = [];
|
|
137
115
|
const onAxeResult = (event) => {
|
|
@@ -140,7 +118,6 @@ function axeWatcherFlushCommand() {
|
|
|
140
118
|
const onFlushEnd = () => {
|
|
141
119
|
win.removeEventListener('axe:flush-end', onFlushEnd);
|
|
142
120
|
win.removeEventListener('axe:result', onAxeResult);
|
|
143
|
-
win.__AXE_WATCHER_HAS_VISITED = false;
|
|
144
121
|
resolve(results);
|
|
145
122
|
};
|
|
146
123
|
win.addEventListener('axe:flush-end', onFlushEnd);
|
|
@@ -148,11 +125,8 @@ function axeWatcherFlushCommand() {
|
|
|
148
125
|
const event = new CustomEvent('axe:flush-start');
|
|
149
126
|
win.dispatchEvent(event);
|
|
150
127
|
}).then(results => {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const rnd = Math.random().toString(36).slice(2);
|
|
154
|
-
const filename = `cypress/axe-watcher/${time}-${rnd}.json`;
|
|
155
|
-
cy.writeFile(filename, JSON.stringify(results, null, 2));
|
|
128
|
+
cy.task('__uploadAxeWatcherResults', results, { log: false });
|
|
129
|
+
logDebugAxeWatcher({ message: 'Flush: complete' });
|
|
156
130
|
});
|
|
157
131
|
});
|
|
158
132
|
}
|
|
@@ -160,26 +134,31 @@ const doesCypressCommandExist = (commandName) => {
|
|
|
160
134
|
//@ts-expect-error - Property 'cy' does not exist on type 'Cypress & CyEventEmitter'.ts(2339)
|
|
161
135
|
return !!Cypress.cy[commandName];
|
|
162
136
|
};
|
|
163
|
-
function axeWatcherAnalyzeCommand({ __UserRequestedAnalyze = true } = {}) {
|
|
137
|
+
function axeWatcherAnalyzeCommand({ __Method, __UserRequestedAnalyze = true } = {}) {
|
|
138
|
+
logDebugAxeWatcher({
|
|
139
|
+
message: `Analyze: Invoked${__Method ? ` - ${__Method}` : ''}`
|
|
140
|
+
});
|
|
164
141
|
const userRequestedAnalyze = __UserRequestedAnalyze;
|
|
165
142
|
cy.window().then(win => {
|
|
166
143
|
if (!shouldAnalyzeLocation(win.location)) {
|
|
167
|
-
return Promise.resolve();
|
|
144
|
+
return Promise.resolve({ message: `Skipped - Invalid protocol` });
|
|
168
145
|
}
|
|
169
146
|
// If the user didn't request an analyze, and we're in manual mode, don't do anything.
|
|
170
147
|
if (isStopped && !userRequestedAnalyze) {
|
|
171
|
-
return Promise.resolve();
|
|
148
|
+
return Promise.resolve({ message: `Skipped (Manual mode)` });
|
|
172
149
|
}
|
|
173
150
|
return new Promise(resolve => {
|
|
174
|
-
const fn = () => {
|
|
151
|
+
const fn = (event) => {
|
|
175
152
|
win.removeEventListener('axe:manual-mode-analyze-done', fn);
|
|
176
|
-
resolve();
|
|
153
|
+
resolve(event.detail);
|
|
177
154
|
};
|
|
178
155
|
win.addEventListener('axe:manual-mode-analyze-done', fn);
|
|
179
156
|
const event = new CustomEvent('axe:manual-mode-analyze', {
|
|
180
157
|
detail: { userRequestedAnalyze }
|
|
181
158
|
});
|
|
182
159
|
win.dispatchEvent(event);
|
|
160
|
+
}).then(result => {
|
|
161
|
+
logDebugAxeWatcher({ message: `Analyze: ${result === null || result === void 0 ? void 0 : result.message}` });
|
|
183
162
|
});
|
|
184
163
|
});
|
|
185
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cypressCommands.js","sourceRoot":"","sources":["../src/cypressCommands.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cypressCommands.js","sourceRoot":"","sources":["../src/cypressCommands.ts"],"names":[],"mappings":";;;AAyFA;;;;;;;GAOG;AAEH,IAAI,SAAS,GAAG,KAAK,CAAA;AAIrB,4DAA4D;AAC/C,QAAA,gBAAgB,GAAiC;IAC5D,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,gBAAgB;IAChB,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;CACP,CAAA;AAOD,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAA4B,EAAQ,EAAE;IACzE,mEAAmE;IACnE,0CAA0C;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IACvD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,QAAkB,EAAW,EAAE,CAC5D,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAE1D;;;;;;;GAOG;AACH,wBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE;;IACzD,MAAM,cAAc,GAAG,MAAA,MAAC,EAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,0CAAE,UAAU,0CAAE,IAAI,CAAA;IAE5E,8DAA8D;IAC9D,MAAM,iBAAiB,GACrB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC;QACpE,qBAAqB,IAAI,EAAE,CAAA;IAE7B,2EAA2E;IAC3E,yEAAyE;IACzE,uEAAuE;IACvE,0DAA0D;IAC1D,IAAI,cAAc,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,yFAAyF;IACzF,MAAM,eAAe,GAAG,MAAA,MAAC,EAAiB,EAAC,OAAO,kDAAI,CAAA;IACtD,wFAAwF;IACxF,4FAA4F;IAC5F,4BAA4B;IAC5B,MAAM,oBAAoB,GAAG,MAAA,MAAC,EAAiB,EAAC,YAAY,kDAAI,CAAA;IAChE,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC;QACjD,QAAQ,EAAE,MAAM;QAChB,sBAAsB,EAAE,KAAK;KAC9B,CAAC,CAAA;IAEF,IAAI,iBAAiB,EAAE,CAAC;QACtB,YAAY;YACV,yFAAyF;YACzF,0FAA0F;YAC1F,4FAA4F;YAC5F,oCAAoC;YACpC,EAAE;YACF,2FAA2F;YAC3F,2FAA2F;YAC3F,oCAAoC;aACnC,IAAI,CACH,GAAG,EAAE;;YACH,0FAA0F;YAC1F,0FAA0F;YAC1F,oDAAoD;YACpD,OAAA,oBAAoB;iBACpB,MAAA,MAAC,EAAiB,EAAC,mBAAmB,mDAAG,oBAAoB,CAAC,CAAA,CAAA;SAAA,CACjE;aACA,IAAI,CAAC,cAAc,CAAC,EAAE;YACrB,sCAAsC;YACtC,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC9C,eAAe,IAAI,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CACjC,CAAA;YAElC,8FAA8F;YAC9F,4FAA4F;YAC5F,aAAa;YACb,OAAO,UAAU,CAAC,GAAG,wBAAwB,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACN,CAAC;SAAM,CAAC;QACN,YAAY;YACV,+CAA+C;aAC9C,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;aAC3B,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAC,CACH,CAAA;AAED,SAAS,sBAAsB;IAC7B,kBAAkB,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAA;IAC1E,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,IAAI,OAAO,CAAW,OAAO,CAAC,EAAE;YACrC,MAAM,OAAO,GAAa,EAAE,CAAA;YAE5B,MAAM,WAAW,GAAG,CAAC,KAA4B,EAAQ,EAAE;gBACzD,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;YAC/B,CAAC,CAAA;YAED,MAAM,UAAU,GAAG,GAAS,EAAE;gBAC5B,GAAG,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;gBACpD,GAAG,CAAC,mBAAmB,CAAC,YAAY,EAAE,WAAyB,CAAC,CAAA;gBAEhE,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC,CAAA;YAED,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;YACjD,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAyB,CAAC,CAAA;YAE7D,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAA;YAChD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChB,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;YAC7D,kBAAkB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,uBAAuB,GAAG,CAAC,WAAmB,EAAW,EAAE;IAC/D,6FAA6F;IAC7F,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,SAAS,wBAAwB,CAAC,EAChC,QAAQ,EACR,sBAAsB,GAAG,IAAI,KAI3B,EAAE;IACJ,kBAAkB,CAAC;QACjB,OAAO,EAAE,mBAAmB,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KAC/D,CAAC,CAAA;IACF,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;IACnD,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAA;QACnE,CAAC;QAED,sFAAsF;QACtF,IAAI,SAAS,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO,IAAI,OAAO,CAAsB,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,GAAG,CAAC,KAAkB,EAAQ,EAAE;gBACtC,GAAG,CAAC,mBAAmB,CACrB,8BAA8B,EAC9B,EAAgB,CACjB,CAAA;gBACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACvB,CAAC,CAAA;YACD,GAAG,CAAC,gBAAgB,CAAC,8BAA8B,EAAE,EAAgB,CAAC,CAAA;YACtE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,yBAAyB,EAAE;gBACvD,MAAM,EAAE,EAAE,oBAAoB,EAAE;aACjC,CAAC,CAAA;YACF,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACf,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB;IAC7B,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACjC,MAAM,EAAE,GAAG,GAAS,EAAE;gBACpB,GAAG,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;gBACvD,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YACD,GAAG,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,CAAA;YACpD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,SAAS,GAAG,KAAK,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YACjC,MAAM,EAAE,GAAG,GAAS,EAAE;gBACpB,GAAG,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAA;gBACtD,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YACD,GAAG,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAA;YACnD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAA;YACnD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,wEAAwE;AACxE,gFAAgF;AAChF,gEAAgE;AAChE,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAA;AAC9D,CAAC;AAED,kDAAkD;AAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;AACxD,iDAAiD;AACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;AACtD,kDAAkD;AAClD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;AAExD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,CAAA;AACnE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAA;AAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAA;AAC7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAA"}
|
package/dist/playwright.js
CHANGED
|
@@ -18,7 +18,8 @@ function playwrightConfig(opts) {
|
|
|
18
18
|
if (config.headless) {
|
|
19
19
|
throw new util_1.HeadlessNotSupportedError('In Playwright, include "--headless=new" in the "args" property of your options instead of using "headless: true"');
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
const existingArgs = args;
|
|
22
|
+
args = (0, util_1.mergeChromeArgs)(existingArgs, { disableOtherExtensions: true });
|
|
22
23
|
return {
|
|
23
24
|
...config,
|
|
24
25
|
headless: false,
|
|
@@ -28,7 +29,7 @@ function playwrightConfig(opts) {
|
|
|
28
29
|
exports.playwrightConfig = playwrightConfig;
|
|
29
30
|
class PlaywrightController extends Controller_1.default {
|
|
30
31
|
constructor(driver) {
|
|
31
|
-
super();
|
|
32
|
+
super({ debugLoggerName: 'PlaywrightController' });
|
|
32
33
|
this.driver = driver;
|
|
33
34
|
}
|
|
34
35
|
async executeScript(fn, ...args) {
|
package/dist/playwright.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":";;;;;;AACA,iCAKe;AACf,8DAAqC;AAKrC;;;;GAIG;AAEH,SAAgB,gBAAgB,CAAC,IAAa;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;IAE1B,IAAA,qBAAc,EAAC,GAAG,CAAC,CAAA;IAEnB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,gCAAyB,CACjC,kHAAkH,CACnH,CAAA;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"playwright.js","sourceRoot":"","sources":["../src/playwright.ts"],"names":[],"mappings":";;;;;;AACA,iCAKe;AACf,8DAAqC;AAKrC;;;;GAIG;AAEH,SAAgB,gBAAgB,CAAC,IAAa;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;IAE1B,IAAA,qBAAc,EAAC,GAAG,CAAC,CAAA;IAEnB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,gCAAyB,CACjC,kHAAkH,CACnH,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAA;IACzB,IAAI,GAAG,IAAA,sBAAe,EAAC,YAAY,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAA;IAEtE,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,KAAK;QACf,IAAI;KACL,CAAA;AACH,CAAC;AApBD,4CAoBC;AAED,MAAa,oBAAqB,SAAQ,oBAAU;IAGlD,YAAY,MAAY;QACtB,KAAK,CAAC,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC,CAAA;QAElD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,EAA+B,EAC/B,GAAG,IAAe;QAElB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QACrD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAjBD,oDAiBC;AAED;;GAEG;AACI,MAAM,cAAc,GAAG;AAC5B,6DAA6D;AAC7D,cAA8B;AAC9B,6DAA6D;AAC7D,oBAA0C,EAC1B,EAAE;IAClB,MAAM,IAAI,KAAK,CAAC;;;;;;GAMf,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,cAAc,kBAa1B;AAED,2DAAqE;AAA5D,wHAAA,QAAQ,OAAsB"}
|
package/dist/playwrightTest.js
CHANGED
|
@@ -17,6 +17,7 @@ const playwrightTest = (options) => {
|
|
|
17
17
|
let base;
|
|
18
18
|
let chromium;
|
|
19
19
|
try {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
20
21
|
;
|
|
21
22
|
({ test: base, chromium } = require('@playwright/test'));
|
|
22
23
|
}
|
|
@@ -33,7 +34,9 @@ const playwrightTest = (options) => {
|
|
|
33
34
|
context: async ({}, use) => {
|
|
34
35
|
const context = await chromium.launchPersistentContext('', {
|
|
35
36
|
...config,
|
|
36
|
-
args:
|
|
37
|
+
args: (0, util_1.mergeChromeArgs)(config.args || [], {
|
|
38
|
+
disableOtherExtensions: true
|
|
39
|
+
})
|
|
37
40
|
});
|
|
38
41
|
await use(context);
|
|
39
42
|
await context.close();
|