@axe-core/watcher 4.2.0-next.f0baa1cf → 4.2.0-next.fb9ddaf3
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 +23 -0
- package/dist/Controller.js +98 -10
- package/dist/Controller.js.map +1 -1
- package/dist/cypress/cypress.d.ts +2 -1
- package/dist/cypress/cypress.js +74 -4
- package/dist/cypress/cypress.js.map +1 -1
- package/dist/cypressCommands.js +66 -6
- package/dist/cypressCommands.js.map +1 -1
- package/dist/playwright/playwright.d.ts +1 -0
- package/dist/playwright/playwright.js +4 -0
- package/dist/playwright/playwright.js.map +1 -1
- package/dist/puppeteer/puppeteer.d.ts +1 -0
- package/dist/puppeteer/puppeteer.js +3 -0
- package/dist/puppeteer/puppeteer.js.map +1 -1
- package/dist/sendResultsToServer.d.ts +3 -0
- package/dist/sendResultsToServer.js +6 -7
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.js +2 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/saveScreenshotsLocally.d.ts +2 -0
- package/dist/utils/saveScreenshotsLocally.js +38 -0
- package/dist/utils/saveScreenshotsLocally.js.map +1 -0
- package/dist/utils/testContext.d.ts +37 -0
- package/dist/utils/testContext.js +57 -0
- package/dist/utils/testContext.js.map +1 -0
- package/dist/utils/writeVariables.d.ts +4 -3
- package/dist/utils/writeVariables.js +7 -3
- package/dist/utils/writeVariables.js.map +1 -1
- package/dist/wdio/wdio.d.ts +1 -0
- package/dist/wdio/wdio.js +3 -0
- package/dist/wdio/wdio.js.map +1 -1
- package/dist/webdriver/webdriver.d.ts +1 -0
- package/dist/webdriver/webdriver.js +3 -0
- package/dist/webdriver/webdriver.js.map +1 -1
- package/extension/axe-versions/axe-core@4.11.4/axe.min.js +12 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/README.md +9 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/_template.json +1142 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/da.json +799 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/de.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/el.json +1069 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/es.json +790 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/eu.json +789 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/fr.json +994 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/he.json +1017 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/it.json +1108 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/ja.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/ko.json +1003 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/nl.json +48 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/no_NB.json +799 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/pl.json +1109 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/pt_BR.json +970 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/pt_PT.json +1123 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/ru.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/zh_CN.json +1116 -0
- package/extension/axe-versions/axe-core@4.11.4/locales/zh_TW.json +1108 -0
- package/extension/axe-versions-mapper.js +2 -1
- package/extension/axe.js +1 -1
- package/extension/axe.js.LICENSE.txt +1 -1
- package/extension/content.js +1 -1
- package/extension/manifest.json +1 -4
- package/package.json +3 -3
- package/extension/background.js +0 -1
- package/extension/background.js.LICENSE.txt +0 -1
package/dist/Controller.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Debugger } from 'debug';
|
|
2
2
|
import { type Variables } from './utils/writeVariables';
|
|
3
3
|
import { type AxeCoreSettings } from './utils/initializeSession';
|
|
4
|
+
import { type TestContext } from './utils/testContext';
|
|
4
5
|
interface ControllerParams {
|
|
5
6
|
/** The namespace for the debug logger. */
|
|
6
7
|
debugLoggerName: string;
|
|
@@ -13,13 +14,35 @@ interface ControllerActionOptions {
|
|
|
13
14
|
timeout?: number;
|
|
14
15
|
}
|
|
15
16
|
declare abstract class Controller {
|
|
17
|
+
#private;
|
|
16
18
|
protected abstract executeScript<A = unknown, T = void>(fn: string | ((...args: A[]) => Promise<T>), ...args: unknown[]): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Capture a screenshot using the test framework's native API.
|
|
21
|
+
* Subclasses override this to provide framework-specific implementations.
|
|
22
|
+
* Returns a base64-encoded PNG string.
|
|
23
|
+
*/
|
|
24
|
+
abstract captureScreenshot(): Promise<string>;
|
|
17
25
|
protected isStopped: boolean;
|
|
18
26
|
protected debugLogger: Debugger;
|
|
19
27
|
protected timeout: Variables['timeout'];
|
|
20
28
|
protected axeCoreSettings?: AxeCoreSettings;
|
|
21
29
|
protected runOptions?: Variables['run_options'];
|
|
30
|
+
/**
|
|
31
|
+
* Per-instance test attribution. Set by framework-aware adapters
|
|
32
|
+
* (Playwright Test, WDIO runner) via `setTestContext()`. Vanilla
|
|
33
|
+
* Playwright / WDIO users don't set this — they populate the global
|
|
34
|
+
* sink instead, and `analyze`/`flush`/`stop` fall back to
|
|
35
|
+
* `this.testContext ?? getGlobalTestContext()`.
|
|
36
|
+
*/
|
|
37
|
+
protected testContext: TestContext | null;
|
|
22
38
|
constructor({ debugLoggerName, integrationName, configurationFunction }: ControllerParams);
|
|
39
|
+
/**
|
|
40
|
+
* Set or clear per-instance test attribution. Called by framework-aware
|
|
41
|
+
* adapters (Playwright Test, WDIO runner) at each test's start/end.
|
|
42
|
+
* Routes through `normalizeTestContext()` so input matches the global
|
|
43
|
+
* sink path. Pass `null` to clear.
|
|
44
|
+
*/
|
|
45
|
+
setTestContext(context: TestContext | null): void;
|
|
23
46
|
start({ timeout }?: ControllerActionOptions): Promise<void>;
|
|
24
47
|
stop({ timeout }?: ControllerActionOptions): Promise<void>;
|
|
25
48
|
analyze({ __Method, __UserRequestedAnalyze }?: {
|
package/dist/Controller.js
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
16
|
+
var _Controller_takeScreenshots, _Controller_screenshots;
|
|
5
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
18
|
const readVariables_1 = __importDefault(require("./utils/readVariables"));
|
|
7
19
|
const sendResultsToServer_1 = __importDefault(require("./sendResultsToServer"));
|
|
8
20
|
const createDebugger_1 = __importDefault(require("./createDebugger"));
|
|
9
21
|
const assertVariablesWereWritten_1 = require("./utils/assertVariablesWereWritten");
|
|
10
22
|
const constants_1 = require("./utils/constants");
|
|
23
|
+
const testContext_1 = require("./utils/testContext");
|
|
11
24
|
class Controller {
|
|
12
25
|
constructor({ debugLoggerName, integrationName, configurationFunction }) {
|
|
26
|
+
this.testContext = null;
|
|
27
|
+
_Controller_takeScreenshots.set(this, false);
|
|
28
|
+
_Controller_screenshots.set(this, {});
|
|
13
29
|
(0, assertVariablesWereWritten_1.assertVariablesWereWritten)(integrationName, configurationFunction);
|
|
14
30
|
const variables = (0, readVariables_1.default)();
|
|
15
31
|
this.axeCoreSettings = variables.axe_core_settings;
|
|
@@ -17,6 +33,10 @@ class Controller {
|
|
|
17
33
|
this.isStopped = !variables?.auto_analyze;
|
|
18
34
|
this.timeout = variables.timeout;
|
|
19
35
|
this.debugLogger = (0, createDebugger_1.default)(debugLoggerName);
|
|
36
|
+
__classPrivateFieldSet(this, _Controller_takeScreenshots, !!variables.take_screenshots, "f");
|
|
37
|
+
}
|
|
38
|
+
setTestContext(context) {
|
|
39
|
+
this.testContext = (0, testContext_1.normalizeTestContext)(context);
|
|
20
40
|
}
|
|
21
41
|
async start({ timeout } = {}) {
|
|
22
42
|
this.debugLogger(`Start: Invoked`);
|
|
@@ -63,8 +83,9 @@ class Controller {
|
|
|
63
83
|
return Promise.resolve();
|
|
64
84
|
}
|
|
65
85
|
let timer = null;
|
|
86
|
+
const screenshotId = __classPrivateFieldGet(this, _Controller_takeScreenshots, "f") ? crypto.randomUUID() : undefined;
|
|
66
87
|
await Promise.race([
|
|
67
|
-
this.executeScript(() => {
|
|
88
|
+
this.executeScript(({ testContext, screenshot_id }) => {
|
|
68
89
|
if (!['http:', 'https:', 'file:'].includes(window.location.protocol)) {
|
|
69
90
|
return Promise.resolve({ message: 'Skipped - Invalid protocol' });
|
|
70
91
|
}
|
|
@@ -80,10 +101,17 @@ class Controller {
|
|
|
80
101
|
};
|
|
81
102
|
window.addEventListener('axe:manual-mode-analyze-done', fn);
|
|
82
103
|
const event = new CustomEvent('axe:manual-mode-analyze', {
|
|
83
|
-
detail: {
|
|
104
|
+
detail: {
|
|
105
|
+
userRequestedAnalyze: false,
|
|
106
|
+
testContext,
|
|
107
|
+
screenshot_id
|
|
108
|
+
}
|
|
84
109
|
});
|
|
85
110
|
window.dispatchEvent(event);
|
|
86
111
|
});
|
|
112
|
+
}, {
|
|
113
|
+
testContext: this.testContext ?? (0, testContext_1.getGlobalTestContext)(),
|
|
114
|
+
screenshot_id: screenshotId
|
|
87
115
|
}),
|
|
88
116
|
new Promise((_, reject) => {
|
|
89
117
|
timer = setTimeout(() => {
|
|
@@ -91,8 +119,18 @@ class Controller {
|
|
|
91
119
|
}, timeout || this.timeout.stop);
|
|
92
120
|
})
|
|
93
121
|
])
|
|
94
|
-
.then(result => {
|
|
122
|
+
.then(async (result) => {
|
|
95
123
|
this.debugLogger(`Stop: ${result.message}`);
|
|
124
|
+
if (__classPrivateFieldGet(this, _Controller_takeScreenshots, "f") && result.hasViolations && screenshotId) {
|
|
125
|
+
this.debugLogger('Stop: Capturing screenshot');
|
|
126
|
+
try {
|
|
127
|
+
__classPrivateFieldGet(this, _Controller_screenshots, "f")[screenshotId] = await this.captureScreenshot();
|
|
128
|
+
this.debugLogger('Stop: Screenshot captured');
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
this.debugLogger('Stop: Screenshot capture failed', { error });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
96
134
|
})
|
|
97
135
|
.finally(() => {
|
|
98
136
|
if (timer) {
|
|
@@ -114,8 +152,9 @@ class Controller {
|
|
|
114
152
|
return;
|
|
115
153
|
}
|
|
116
154
|
let timer = null;
|
|
155
|
+
const screenshotId = __classPrivateFieldGet(this, _Controller_takeScreenshots, "f") ? crypto.randomUUID() : undefined;
|
|
117
156
|
await Promise.race([
|
|
118
|
-
this.executeScript(({ userRequestedAnalyze, isStopped, axeCoreSettings, runOptions }) => {
|
|
157
|
+
this.executeScript(({ userRequestedAnalyze, isStopped, axeCoreSettings, runOptions, testContext, screenshot_id }) => {
|
|
119
158
|
if (!['http:', 'https:', 'file:'].includes(window.location.protocol)) {
|
|
120
159
|
if (userRequestedAnalyze) {
|
|
121
160
|
return Promise.resolve({
|
|
@@ -141,7 +180,9 @@ class Controller {
|
|
|
141
180
|
userRequestedAnalyze,
|
|
142
181
|
isStopped,
|
|
143
182
|
axeCoreSettings,
|
|
144
|
-
runOptions
|
|
183
|
+
runOptions,
|
|
184
|
+
testContext,
|
|
185
|
+
screenshot_id
|
|
145
186
|
}
|
|
146
187
|
});
|
|
147
188
|
window.dispatchEvent(event);
|
|
@@ -150,7 +191,9 @@ class Controller {
|
|
|
150
191
|
userRequestedAnalyze: __UserRequestedAnalyze,
|
|
151
192
|
isStopped: this.isStopped,
|
|
152
193
|
axeCoreSettings: this.axeCoreSettings,
|
|
153
|
-
runOptions: this.runOptions
|
|
194
|
+
runOptions: this.runOptions,
|
|
195
|
+
testContext: this.testContext ?? (0, testContext_1.getGlobalTestContext)(),
|
|
196
|
+
screenshot_id: screenshotId
|
|
154
197
|
}),
|
|
155
198
|
new Promise((_, reject) => {
|
|
156
199
|
timer = setTimeout(() => {
|
|
@@ -158,11 +201,21 @@ class Controller {
|
|
|
158
201
|
}, timeout || this.timeout.analyze);
|
|
159
202
|
})
|
|
160
203
|
])
|
|
161
|
-
.then(result => {
|
|
204
|
+
.then(async (result) => {
|
|
162
205
|
this.debugLogger(`Analyze: ${result.message}`);
|
|
163
206
|
if (result.error) {
|
|
164
207
|
throw new Error(result.message);
|
|
165
208
|
}
|
|
209
|
+
if (__classPrivateFieldGet(this, _Controller_takeScreenshots, "f") && result.hasViolations && screenshotId) {
|
|
210
|
+
this.debugLogger('Analyze: Capturing screenshot');
|
|
211
|
+
try {
|
|
212
|
+
__classPrivateFieldGet(this, _Controller_screenshots, "f")[screenshotId] = await this.captureScreenshot();
|
|
213
|
+
this.debugLogger('Analyze: Screenshot captured');
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
this.debugLogger('Analyze: Screenshot capture failed', { error });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
166
219
|
})
|
|
167
220
|
.finally(() => {
|
|
168
221
|
if (timer) {
|
|
@@ -173,8 +226,9 @@ class Controller {
|
|
|
173
226
|
async flush({ timeout } = {}) {
|
|
174
227
|
this.debugLogger(`Flush: Invoked (${this.isStopped ? 'auto-analysis stopped' : 'may analyze implicitly'})`);
|
|
175
228
|
let timer = null;
|
|
229
|
+
const screenshotId = __classPrivateFieldGet(this, _Controller_takeScreenshots, "f") ? crypto.randomUUID() : undefined;
|
|
176
230
|
await Promise.race([
|
|
177
|
-
this.executeScript(({ isStopped, axeCoreSettings, runOptions }) => {
|
|
231
|
+
this.executeScript(({ isStopped, axeCoreSettings, runOptions, testContext, screenshot_id }) => {
|
|
178
232
|
if (!['http:', 'https:', 'file:'].includes(window.location.protocol)) {
|
|
179
233
|
return Promise.resolve([]);
|
|
180
234
|
}
|
|
@@ -197,7 +251,9 @@ class Controller {
|
|
|
197
251
|
detail: {
|
|
198
252
|
isStopped,
|
|
199
253
|
axeCoreSettings,
|
|
200
|
-
runOptions
|
|
254
|
+
runOptions,
|
|
255
|
+
testContext,
|
|
256
|
+
screenshot_id
|
|
201
257
|
}
|
|
202
258
|
});
|
|
203
259
|
window.dispatchEvent(event);
|
|
@@ -205,7 +261,9 @@ class Controller {
|
|
|
205
261
|
}, {
|
|
206
262
|
isStopped: this.isStopped,
|
|
207
263
|
axeCoreSettings: this.axeCoreSettings,
|
|
208
|
-
runOptions: this.runOptions
|
|
264
|
+
runOptions: this.runOptions,
|
|
265
|
+
testContext: this.testContext ?? (0, testContext_1.getGlobalTestContext)(),
|
|
266
|
+
screenshot_id: screenshotId
|
|
209
267
|
}),
|
|
210
268
|
new Promise((_, reject) => {
|
|
211
269
|
timer = setTimeout(() => {
|
|
@@ -215,6 +273,35 @@ class Controller {
|
|
|
215
273
|
])
|
|
216
274
|
.then(async (results) => {
|
|
217
275
|
this.debugLogger(`Flush: Received ${results.length} results`);
|
|
276
|
+
if (__classPrivateFieldGet(this, _Controller_takeScreenshots, "f")) {
|
|
277
|
+
for (const result of results) {
|
|
278
|
+
const hasViolations = (result.results?.violations?.length ?? 0) > 0;
|
|
279
|
+
if (!hasViolations) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
if (result.screenshot_id &&
|
|
283
|
+
result.screenshot_id in __classPrivateFieldGet(this, _Controller_screenshots, "f")) {
|
|
284
|
+
result.screenshot = __classPrivateFieldGet(this, _Controller_screenshots, "f")[result.screenshot_id];
|
|
285
|
+
}
|
|
286
|
+
else if (result.screenshot_id === screenshotId) {
|
|
287
|
+
this.debugLogger('Flush: Capturing screenshot');
|
|
288
|
+
try {
|
|
289
|
+
result.screenshot = await this.captureScreenshot();
|
|
290
|
+
this.debugLogger('Flush: Screenshot captured');
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
this.debugLogger('Flush: Screenshot capture failed', {
|
|
294
|
+
error
|
|
295
|
+
});
|
|
296
|
+
result.screenshot_id = null;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
result.screenshot_id = null;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
__classPrivateFieldSet(this, _Controller_screenshots, {}, "f");
|
|
304
|
+
}
|
|
218
305
|
await (0, sendResultsToServer_1.default)({
|
|
219
306
|
results,
|
|
220
307
|
debugLogger: this.debugLogger
|
|
@@ -228,5 +315,6 @@ class Controller {
|
|
|
228
315
|
});
|
|
229
316
|
}
|
|
230
317
|
}
|
|
318
|
+
_Controller_takeScreenshots = new WeakMap(), _Controller_screenshots = new WeakMap();
|
|
231
319
|
exports.default = Controller;
|
|
232
320
|
//# sourceMappingURL=Controller.js.map
|
package/dist/Controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Controller.js","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Controller.js","sourceRoot":"","sources":["../src/Controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export declare const cypressConfigAutoAnalyzeFlag = "__AXE_WATCHER_AUTO_ANALYZE"
|
|
|
5
5
|
export declare const cypressAxeCoreSettingsFlag = "__AXE_WATCHER_AXE_CORE_SETTINGS";
|
|
6
6
|
export declare const cypressRunOptionsFlag = "__AXE_WATCHER_RUN_OPTIONS";
|
|
7
7
|
export declare const cypressEnabledTestingModes = "__AXE_WATCHER_CYPRESS_TESTING_TYPES";
|
|
8
|
+
export declare const cypressTakeScreenshotsFlag = "__AXE_WATCHER_TAKE_SCREENSHOTS";
|
|
8
9
|
export declare const cypressAxeWatcherDebug = "__AXE_WATCHER_DEBUG";
|
|
9
10
|
/**
|
|
10
11
|
* Create a Cypress config that uses the axe Watcher extension.
|
|
@@ -18,5 +19,5 @@ export declare const cypressConfig: (config: Cypress.ConfigOptions & CypressConf
|
|
|
18
19
|
* @param userConfig The user's Cypress configuration
|
|
19
20
|
* @returns A setupNodeEvents function configured for the specified test type
|
|
20
21
|
*/
|
|
21
|
-
export declare const createSetupNodeEvents: (testType: "e2e" | "component", userConfig: Cypress.ConfigOptions) => (cypressOn: Cypress.PluginEvents, ...args: unknown[]) => Promise<void | undefined | Cypress.PluginConfigOptions>;
|
|
22
|
+
export declare const createSetupNodeEvents: (testType: "e2e" | "component", userConfig: Cypress.ConfigOptions, screenshotDir?: string) => (cypressOn: Cypress.PluginEvents, ...args: unknown[]) => Promise<void | undefined | Cypress.PluginConfigOptions>;
|
|
22
23
|
export declare const normalizeTestingTypes: (testingTypes: string | string[] | undefined) => string[];
|
package/dist/cypress/cypress.js
CHANGED
|
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.normalizeTestingTypes = exports.createSetupNodeEvents = exports.cypressConfig = exports.cypressAxeWatcherDebug = exports.cypressEnabledTestingModes = exports.cypressRunOptionsFlag = exports.cypressAxeCoreSettingsFlag = exports.cypressConfigAutoAnalyzeFlag = exports.cypressConfigRunFlag = exports.configTimeout = void 0;
|
|
6
|
+
exports.normalizeTestingTypes = exports.createSetupNodeEvents = exports.cypressConfig = exports.cypressAxeWatcherDebug = exports.cypressTakeScreenshotsFlag = exports.cypressEnabledTestingModes = exports.cypressRunOptionsFlag = exports.cypressAxeCoreSettingsFlag = exports.cypressConfigAutoAnalyzeFlag = exports.cypressConfigRunFlag = exports.configTimeout = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
7
9
|
const sendResultsToServer_1 = __importDefault(require("../sendResultsToServer"));
|
|
8
10
|
const EventForwarder_1 = __importDefault(require("../EventForwarder"));
|
|
9
11
|
const writeVariables_1 = __importDefault(require("../utils/writeVariables"));
|
|
@@ -13,6 +15,7 @@ const mergeChromeArgs_1 = __importDefault(require("../utils/mergeChromeArgs"));
|
|
|
13
15
|
const createDebugger_1 = __importDefault(require("../createDebugger"));
|
|
14
16
|
const readVariables_1 = __importDefault(require("../utils/readVariables"));
|
|
15
17
|
const checkUserArgs_1 = require("../utils/checkUserArgs");
|
|
18
|
+
const constants_1 = require("../utils/constants");
|
|
16
19
|
const debugLogger = (0, createDebugger_1.default)('CypressController');
|
|
17
20
|
exports.configTimeout = '__AXE_WATCHER_TIMEOUT_CONFIG';
|
|
18
21
|
exports.cypressConfigRunFlag = '__AXE_WATCHER_CYPRESS_CONFIG_RUN';
|
|
@@ -20,7 +23,25 @@ exports.cypressConfigAutoAnalyzeFlag = '__AXE_WATCHER_AUTO_ANALYZE';
|
|
|
20
23
|
exports.cypressAxeCoreSettingsFlag = '__AXE_WATCHER_AXE_CORE_SETTINGS';
|
|
21
24
|
exports.cypressRunOptionsFlag = '__AXE_WATCHER_RUN_OPTIONS';
|
|
22
25
|
exports.cypressEnabledTestingModes = '__AXE_WATCHER_CYPRESS_TESTING_TYPES';
|
|
26
|
+
exports.cypressTakeScreenshotsFlag = '__AXE_WATCHER_TAKE_SCREENSHOTS';
|
|
23
27
|
exports.cypressAxeWatcherDebug = '__AXE_WATCHER_DEBUG';
|
|
28
|
+
function isErrnoException(error) {
|
|
29
|
+
return error instanceof Error && 'code' in error;
|
|
30
|
+
}
|
|
31
|
+
function moveFile(src, dest) {
|
|
32
|
+
try {
|
|
33
|
+
fs_1.default.renameSync(src, dest);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (isErrnoException(error) && error.code === 'EXDEV') {
|
|
37
|
+
fs_1.default.copyFileSync(src, dest);
|
|
38
|
+
fs_1.default.unlinkSync(src);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
24
45
|
const cypressConfig = (config) => {
|
|
25
46
|
const { axe, ...userConfig } = config;
|
|
26
47
|
const { DEBUG } = process.env;
|
|
@@ -48,6 +69,7 @@ const cypressConfig = (config) => {
|
|
|
48
69
|
[exports.cypressRunOptionsFlag]: variables.run_options,
|
|
49
70
|
[exports.cypressEnabledTestingModes]: testingTypes,
|
|
50
71
|
[exports.cypressAxeWatcherDebug]: hasWatcherDebug,
|
|
72
|
+
[exports.cypressTakeScreenshotsFlag]: !!variables.take_screenshots,
|
|
51
73
|
[exports.cypressConfigAutoAnalyzeFlag]: axe.autoAnalyze === undefined ? true : axe.autoAnalyze
|
|
52
74
|
};
|
|
53
75
|
if (userConfig.e2e?.env) {
|
|
@@ -64,19 +86,19 @@ const cypressConfig = (config) => {
|
|
|
64
86
|
...userConfig,
|
|
65
87
|
e2e: {
|
|
66
88
|
...userConfig.e2e,
|
|
67
|
-
setupNodeEvents: (0, exports.createSetupNodeEvents)('e2e', userConfig)
|
|
89
|
+
setupNodeEvents: (0, exports.createSetupNodeEvents)('e2e', userConfig, variables.screenshot_dir)
|
|
68
90
|
},
|
|
69
91
|
...(shouldRunWatcherInComponentMode &&
|
|
70
92
|
userConfig.component?.devServer && {
|
|
71
93
|
component: {
|
|
72
94
|
...userConfig.component,
|
|
73
|
-
setupNodeEvents: (0, exports.createSetupNodeEvents)('component', userConfig)
|
|
95
|
+
setupNodeEvents: (0, exports.createSetupNodeEvents)('component', userConfig, variables.screenshot_dir)
|
|
74
96
|
}
|
|
75
97
|
})
|
|
76
98
|
};
|
|
77
99
|
};
|
|
78
100
|
exports.cypressConfig = cypressConfig;
|
|
79
|
-
const createSetupNodeEvents = (testType, userConfig) => {
|
|
101
|
+
const createSetupNodeEvents = (testType, userConfig, screenshotDir) => {
|
|
80
102
|
return async function setupNodeEvents(cypressOn, ...args) {
|
|
81
103
|
const eventForwarder = new EventForwarder_1.default();
|
|
82
104
|
const on = eventForwarder.on;
|
|
@@ -86,11 +108,59 @@ const createSetupNodeEvents = (testType, userConfig) => {
|
|
|
86
108
|
[exports.cypressConfigRunFlag]: true
|
|
87
109
|
});
|
|
88
110
|
}
|
|
111
|
+
const screenshotStore = {};
|
|
112
|
+
on('after:screenshot', details => {
|
|
113
|
+
if (!details.name ||
|
|
114
|
+
!details.name.startsWith(constants_1.AXE_WATCHER_SCREENSHOT_PREFIX)) {
|
|
115
|
+
return details;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const base64 = fs_1.default.readFileSync(details.path).toString('base64');
|
|
119
|
+
if (screenshotDir) {
|
|
120
|
+
fs_1.default.mkdirSync(screenshotDir, { recursive: true });
|
|
121
|
+
const dest = path_1.default.join(screenshotDir, `${details.name}.png`);
|
|
122
|
+
moveFile(details.path, dest);
|
|
123
|
+
screenshotStore[details.name] = { base64, path: dest };
|
|
124
|
+
debugLogger('Screenshot captured and moved', {
|
|
125
|
+
name: details.name,
|
|
126
|
+
dest
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
fs_1.default.unlinkSync(details.path);
|
|
131
|
+
screenshotStore[details.name] = { base64 };
|
|
132
|
+
debugLogger('Screenshot captured', { name: details.name });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
debugLogger('Failed to process screenshot file', { error });
|
|
137
|
+
}
|
|
138
|
+
return details;
|
|
139
|
+
});
|
|
89
140
|
on('task', {
|
|
90
141
|
__uploadAxeWatcherResults: async ({ results, skipped_url }) => {
|
|
91
142
|
if (!results?.length && !skipped_url) {
|
|
92
143
|
return null;
|
|
93
144
|
}
|
|
145
|
+
for (const result of results ?? []) {
|
|
146
|
+
if (!result.screenshot_id) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (!(result.screenshot_id in screenshotStore)) {
|
|
150
|
+
debugLogger('Screenshot missing for result; clearing screenshot_id', {
|
|
151
|
+
screenshot_id: result.screenshot_id
|
|
152
|
+
});
|
|
153
|
+
result.screenshot_id = null;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
const stored = screenshotStore[result.screenshot_id];
|
|
157
|
+
result.screenshot = stored.base64;
|
|
158
|
+
result.screenshot_path = stored.path ?? null;
|
|
159
|
+
delete screenshotStore[result.screenshot_id];
|
|
160
|
+
debugLogger('Screenshot attached for result', {
|
|
161
|
+
screenshot_id: result.screenshot_id
|
|
162
|
+
});
|
|
163
|
+
}
|
|
94
164
|
const sentResult = await (0, sendResultsToServer_1.default)({
|
|
95
165
|
skipped_url,
|
|
96
166
|
results,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../../src/cypress/cypress.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../../src/cypress/cypress.ts"],"names":[],"mappings":"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"}
|
package/dist/cypressCommands.js
CHANGED
|
@@ -8,7 +8,9 @@ const configTimeout = '__AXE_WATCHER_TIMEOUT_CONFIG';
|
|
|
8
8
|
const cypressAxeCoreSettingsFlag = '__AXE_WATCHER_AXE_CORE_SETTINGS';
|
|
9
9
|
const cypressRunOptionsFlag = '__AXE_WATCHER_RUN_OPTIONS';
|
|
10
10
|
const cypressEnabledTestingModes = '__AXE_WATCHER_CYPRESS_TESTING_TYPES';
|
|
11
|
+
const cypressConfigTakeScreenshotsFlag = '__AXE_WATCHER_TAKE_SCREENSHOTS';
|
|
11
12
|
let isStopped = !Cypress.env(cypressConfigAutoAnalyzeFlag);
|
|
13
|
+
const takeScreenshots = !!Cypress.env(cypressConfigTakeScreenshotsFlag);
|
|
12
14
|
exports.WRAPPED_COMMANDS = [
|
|
13
15
|
'blur',
|
|
14
16
|
'check',
|
|
@@ -34,6 +36,22 @@ const logDebugAxeWatcher = ({ message }) => {
|
|
|
34
36
|
}
|
|
35
37
|
};
|
|
36
38
|
const shouldAnalyzeLocation = (location) => ['http:', 'https:', 'file:'].includes(location.protocol);
|
|
39
|
+
function captureScreenshotSafe(screenshotId) {
|
|
40
|
+
const onFail = (err) => {
|
|
41
|
+
logDebugAxeWatcher({
|
|
42
|
+
message: `Screenshot capture failed: ${err.message}`
|
|
43
|
+
});
|
|
44
|
+
return false;
|
|
45
|
+
};
|
|
46
|
+
cy.once('fail', onFail);
|
|
47
|
+
cy.screenshot(screenshotId, {
|
|
48
|
+
capture: 'viewport',
|
|
49
|
+
overwrite: true,
|
|
50
|
+
log: false
|
|
51
|
+
}).then(() => {
|
|
52
|
+
cy.off('fail', onFail);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
37
55
|
if (!Cypress.env(cypressConfigRunFlag)) {
|
|
38
56
|
throw new Error(`Cypress is not configured for axe watcher. Please ensure that axe watcher's cypressConfig() is invoked within Cypress' defineConfig() in your ${Cypress.config('configFile')}. All tests will fail with this error.`);
|
|
39
57
|
}
|
|
@@ -100,6 +118,9 @@ function axeWatcherFlushCommand({ timeout } = {}) {
|
|
|
100
118
|
let onFlushEnd;
|
|
101
119
|
let onAxeResult;
|
|
102
120
|
let timer = null;
|
|
121
|
+
const screenshotId = takeScreenshots
|
|
122
|
+
? `${constants_1.AXE_WATCHER_SCREENSHOT_PREFIX}${crypto.randomUUID()}`
|
|
123
|
+
: undefined;
|
|
103
124
|
return Promise.race([
|
|
104
125
|
new Promise(resolve => {
|
|
105
126
|
const results = [];
|
|
@@ -115,7 +136,8 @@ function axeWatcherFlushCommand({ timeout } = {}) {
|
|
|
115
136
|
detail: {
|
|
116
137
|
isStopped,
|
|
117
138
|
axeCoreSettings: Cypress.env(cypressAxeCoreSettingsFlag),
|
|
118
|
-
runOptions: Cypress.env(cypressRunOptionsFlag)
|
|
139
|
+
runOptions: Cypress.env(cypressRunOptionsFlag),
|
|
140
|
+
screenshot_id: screenshotId
|
|
119
141
|
}
|
|
120
142
|
});
|
|
121
143
|
win.dispatchEvent(event);
|
|
@@ -126,7 +148,19 @@ function axeWatcherFlushCommand({ timeout } = {}) {
|
|
|
126
148
|
}, timeout || Cypress.env(configTimeout).flush);
|
|
127
149
|
})
|
|
128
150
|
])
|
|
129
|
-
.then(results => {
|
|
151
|
+
.then((results) => {
|
|
152
|
+
if (takeScreenshots && screenshotId) {
|
|
153
|
+
for (const result of results) {
|
|
154
|
+
const hasViolations = (result.results?.violations?.length ?? 0) > 0;
|
|
155
|
+
if (!hasViolations || !result.screenshot_id) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (result.screenshot_id === screenshotId) {
|
|
159
|
+
captureScreenshotSafe(screenshotId);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
130
164
|
cy.task('__uploadAxeWatcherResults', { results }, { log: false }).then(result => {
|
|
131
165
|
const resultWithFailureStatus = result;
|
|
132
166
|
const message = resultWithFailureStatus?.failureStatus
|
|
@@ -176,17 +210,25 @@ function axeWatcherAnalyzeCommand(subject, { __Method, __UserRequestedAnalyze =
|
|
|
176
210
|
}
|
|
177
211
|
let timer = null;
|
|
178
212
|
let fn;
|
|
213
|
+
const screenshotId = takeScreenshots
|
|
214
|
+
? `${constants_1.AXE_WATCHER_SCREENSHOT_PREFIX}${crypto.randomUUID()}`
|
|
215
|
+
: undefined;
|
|
179
216
|
return (Promise.race([
|
|
180
217
|
new Promise(resolve => {
|
|
181
218
|
fn = (event) => {
|
|
182
|
-
resolve({
|
|
219
|
+
resolve({
|
|
220
|
+
message: event.detail.message,
|
|
221
|
+
hasViolations: event.detail.hasViolations,
|
|
222
|
+
subject
|
|
223
|
+
});
|
|
183
224
|
};
|
|
184
225
|
win.addEventListener('axe:manual-mode-analyze-done', fn);
|
|
185
226
|
const event = new CustomEvent('axe:manual-mode-analyze', {
|
|
186
227
|
detail: {
|
|
187
228
|
userRequestedAnalyze,
|
|
188
229
|
axeCoreSettings: Cypress.env(cypressAxeCoreSettingsFlag),
|
|
189
|
-
runOptions: Cypress.env(cypressRunOptionsFlag)
|
|
230
|
+
runOptions: Cypress.env(cypressRunOptionsFlag),
|
|
231
|
+
screenshot_id: screenshotId
|
|
190
232
|
}
|
|
191
233
|
});
|
|
192
234
|
win.dispatchEvent(event);
|
|
@@ -199,6 +241,9 @@ function axeWatcherAnalyzeCommand(subject, { __Method, __UserRequestedAnalyze =
|
|
|
199
241
|
])
|
|
200
242
|
.then(result => {
|
|
201
243
|
logDebugAxeWatcher({ message: `Analyze: ${result?.message}` });
|
|
244
|
+
if (takeScreenshots && result?.hasViolations && screenshotId) {
|
|
245
|
+
captureScreenshotSafe(screenshotId);
|
|
246
|
+
}
|
|
202
247
|
if (result?.subject) {
|
|
203
248
|
return result.subject;
|
|
204
249
|
}
|
|
@@ -279,13 +324,25 @@ function axeWatcherStopCommand(subject, { timeout } = {}) {
|
|
|
279
324
|
}
|
|
280
325
|
let timer = null;
|
|
281
326
|
let fn;
|
|
327
|
+
const screenshotId = takeScreenshots
|
|
328
|
+
? `${constants_1.AXE_WATCHER_SCREENSHOT_PREFIX}${crypto.randomUUID()}`
|
|
329
|
+
: undefined;
|
|
282
330
|
return (Promise.race([
|
|
283
331
|
new Promise(resolve => {
|
|
284
332
|
fn = (event) => {
|
|
285
|
-
resolve({
|
|
333
|
+
resolve({
|
|
334
|
+
message: event.detail.message,
|
|
335
|
+
hasViolations: event.detail.hasViolations,
|
|
336
|
+
subject
|
|
337
|
+
});
|
|
286
338
|
};
|
|
287
339
|
win.addEventListener('axe:manual-mode-analyze-done', fn);
|
|
288
|
-
const event = new CustomEvent('axe:manual-mode-analyze'
|
|
340
|
+
const event = new CustomEvent('axe:manual-mode-analyze', {
|
|
341
|
+
detail: {
|
|
342
|
+
userRequestedAnalyze: false,
|
|
343
|
+
screenshot_id: screenshotId
|
|
344
|
+
}
|
|
345
|
+
});
|
|
289
346
|
win.dispatchEvent(event);
|
|
290
347
|
}),
|
|
291
348
|
new Promise((_, reject) => {
|
|
@@ -296,6 +353,9 @@ function axeWatcherStopCommand(subject, { timeout } = {}) {
|
|
|
296
353
|
])
|
|
297
354
|
.then(result => {
|
|
298
355
|
logDebugAxeWatcher({ message: `Stop: ${result?.message}` });
|
|
356
|
+
if (takeScreenshots && result?.hasViolations && screenshotId) {
|
|
357
|
+
captureScreenshotSafe(screenshotId);
|
|
358
|
+
}
|
|
299
359
|
isStopped = true;
|
|
300
360
|
if (result?.subject) {
|
|
301
361
|
return result.subject;
|