@axe-core/watcher 3.23.0-next.65042bad → 3.23.0-next.86c61d3a
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/cypress/cypress.js +4 -7
- package/dist/cypress/cypress.js.map +1 -1
- package/dist/sendResultsToServer.js +12 -4
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/initializeSession.js +6 -3
- package/dist/utils/initializeSession.js.map +1 -1
- package/dist/utils/shouldUseEnvProxy.d.ts +5 -0
- package/dist/utils/shouldUseEnvProxy.js +24 -0
- package/dist/utils/shouldUseEnvProxy.js.map +1 -0
- package/dist/utils/sync-fetch-worker.mjs +135 -43
- package/dist/utils/sync-fetch.d.ts +1 -1
- package/dist/utils/sync-fetch.js +52 -44
- package/dist/utils/sync-fetch.js.map +1 -1
- package/dist/utils/test-constants.d.ts +14 -0
- package/dist/utils/test-constants.js +12 -0
- package/dist/utils/test-constants.js.map +1 -0
- package/dist/utils/writeVariables.d.ts +5 -0
- package/dist/utils/writeVariables.js +2 -4
- package/dist/utils/writeVariables.js.map +1 -1
- package/extension/axe-versions/axe-core@4.11.0/axe.min.js +12 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/README.md +9 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/_template.json +1131 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/da.json +799 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/de.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/el.json +1069 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/es.json +790 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/eu.json +789 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/fr.json +994 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/he.json +1017 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/it.json +1108 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ja.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ko.json +1003 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/nl.json +48 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/no_NB.json +799 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pl.json +1109 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pt_BR.json +970 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pt_PT.json +1123 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ru.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/zh_CN.json +1116 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/zh_TW.json +1108 -0
- package/extension/axe-versions-mapper.js +2 -0
- package/extension/axe.js +1 -1
- package/extension/axe.js.LICENSE.txt +1 -1
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +8 -7
package/dist/cypress/cypress.js
CHANGED
@@ -23,18 +23,15 @@ exports.cypressEnabledTestingModes = '__AXE_WATCHER_CYPRESS_TESTING_TYPES';
|
|
23
23
|
exports.cypressAxeWatcherDebug = '__AXE_WATCHER_DEBUG';
|
24
24
|
const cypressConfig = (config) => {
|
25
25
|
const { axe, ...userConfig } = config;
|
26
|
-
const { DEBUG
|
26
|
+
const { DEBUG } = process.env;
|
27
27
|
const hasWatcherDebug = DEBUG && DEBUG.includes('axe-watcher');
|
28
|
-
const isProjectIdFeatureFlagEnabled = AXE_WATCHER_PROJECT_ID && AXE_WATCHER_PROJECT_ID.toLowerCase() === 'true';
|
29
28
|
const testingTypes = (0, exports.normalizeTestingTypes)(axe.testingTypes);
|
30
|
-
if (
|
29
|
+
if (!axe.projectId) {
|
31
30
|
console.warn('Warning: `projectId` within axe configuration will become a mandatory field in a future release. Please supply your `projectId` found on your projects page');
|
32
31
|
}
|
33
|
-
const { projectId, ...axeCommonConfig } = axe;
|
34
32
|
(0, writeVariables_1.default)({
|
35
|
-
...
|
36
|
-
cypress: true
|
37
|
-
...(isProjectIdFeatureFlagEnabled && { projectId })
|
33
|
+
...axe,
|
34
|
+
cypress: true
|
38
35
|
});
|
39
36
|
(0, writeExtensionManifest_1.default)({
|
40
37
|
all_frames: true,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../../src/cypress/cypress.ts"],"names":[],"mappings":";;;;;;AAAA,iFAAwD;AACxD,uEAA8C;AAC9C,6EAEgC;AAChC,6FAA2D;AAC3D,kFAA8E;AAC9E,+EAAsD;AACtD,uEAA8C;AAC9C,2EAAkD;AAClD,0DAAsD;AAEtD,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC,mBAAmB,CAAC,CAAA;AAE1C,QAAA,aAAa,GAAG,8BAA8B,CAAA;AAC9C,QAAA,oBAAoB,GAAG,kCAAkC,CAAA;AACzD,QAAA,4BAA4B,GAAG,4BAA4B,CAAA;AAC3D,QAAA,0BAA0B,GAAG,iCAAiC,CAAA;AAC9D,QAAA,qBAAqB,GAAG,2BAA2B,CAAA;AACnD,QAAA,0BAA0B,GAAG,qCAAqC,CAAA;AAClE,QAAA,sBAAsB,GAAG,qBAAqB,CAAA;AAQpD,MAAM,aAAa,GAAG,CAC3B,MAAoD,EAC7B,EAAE;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAA;IACrC,MAAM,EAAE,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"cypress.js","sourceRoot":"","sources":["../../src/cypress/cypress.ts"],"names":[],"mappings":"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"}
|
@@ -38,11 +38,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
39
39
|
exports.MaximumRetriesReached = exports.sendResultsToServer = exports.MAX_RETRIES = exports.MAX_PAGE_STATES_PER_REQUEST = void 0;
|
40
40
|
const undici_1 = require("undici");
|
41
|
-
const uuid_1 = require("uuid");
|
42
41
|
const readVariables_1 = __importDefault(require("./utils/readVariables"));
|
43
42
|
const linearBackoff_1 = __importDefault(require("./utils/linearBackoff"));
|
44
43
|
const createAbortController_1 = __importStar(require("./utils/createAbortController"));
|
45
44
|
const isCI_1 = require("./utils/isCI");
|
45
|
+
const shouldUseEnvProxy_1 = require("./utils/shouldUseEnvProxy");
|
46
46
|
const { version } = require('../package.json');
|
47
47
|
exports.MAX_PAGE_STATES_PER_REQUEST = 5;
|
48
48
|
exports.MAX_RETRIES = 3;
|
@@ -65,6 +65,10 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
65
65
|
...git_data
|
66
66
|
};
|
67
67
|
const { signal, cleanup } = (0, createAbortController_1.default)();
|
68
|
+
let dispatcher = (0, undici_1.getGlobalDispatcher)();
|
69
|
+
if ((0, shouldUseEnvProxy_1.shouldUseEnvProxy)()) {
|
70
|
+
dispatcher = new undici_1.EnvHttpProxyAgent();
|
71
|
+
}
|
68
72
|
try {
|
69
73
|
const res = await fetch(resultsURL, {
|
70
74
|
method: 'PUT',
|
@@ -73,7 +77,7 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
73
77
|
'Content-Type': 'application/json',
|
74
78
|
'X-API-Key': api_key
|
75
79
|
},
|
76
|
-
dispatcher
|
80
|
+
dispatcher,
|
77
81
|
body: JSON.stringify(body),
|
78
82
|
signal
|
79
83
|
});
|
@@ -153,7 +157,7 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
153
157
|
};
|
154
158
|
results.forEach(result => {
|
155
159
|
if (result.screenshot) {
|
156
|
-
result.screenshot_id =
|
160
|
+
result.screenshot_id = crypto.randomUUID();
|
157
161
|
}
|
158
162
|
});
|
159
163
|
const requestErrorHandler = (error) => {
|
@@ -175,6 +179,10 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
175
179
|
if (catchResult) {
|
176
180
|
return Promise.resolve(catchResult);
|
177
181
|
}
|
182
|
+
let dispatcher = (0, undici_1.getGlobalDispatcher)();
|
183
|
+
if ((0, shouldUseEnvProxy_1.shouldUseEnvProxy)()) {
|
184
|
+
dispatcher = new undici_1.EnvHttpProxyAgent();
|
185
|
+
}
|
178
186
|
await Promise.all(results.map(async ({ screenshot, screenshot_id }) => {
|
179
187
|
if (!screenshot) {
|
180
188
|
return;
|
@@ -184,7 +192,7 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
184
192
|
const { ok } = await fetch(url, {
|
185
193
|
method: 'POST',
|
186
194
|
redirect: 'follow',
|
187
|
-
dispatcher
|
195
|
+
dispatcher,
|
188
196
|
headers: {
|
189
197
|
'Content-Type': 'image/png',
|
190
198
|
'X-API-Key': api_key
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
1
|
+
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":"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"}
|
@@ -4,10 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const assert_1 = __importDefault(require("assert"));
|
7
|
-
const uuid_1 = require("uuid");
|
8
7
|
const createDebugger_1 = __importDefault(require("../createDebugger"));
|
9
8
|
const sync_fetch_1 = require("./sync-fetch");
|
10
9
|
const debugLogger = (0, createDebugger_1.default)('config:initializeSession');
|
10
|
+
const uuidRegex = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
|
11
|
+
const validateUUID = (uuid) => {
|
12
|
+
return typeof uuid === 'string' && uuidRegex.test(uuid);
|
13
|
+
};
|
11
14
|
function initializeSession({ apiKey, projectId, serverURL, watcherVersion, sessionID, buildID, gitCommitSha, gitUrl, gitBranch, gitCommitAuthor, gitIsDirty, gitDefaultBranch, gitCommitMessage, gitTag, gitCommitEmail, configOverrides, runOptions, isCanonicalSource }) {
|
12
15
|
(0, assert_1.default)(apiKey, 'API key is required');
|
13
16
|
(0, assert_1.default)(serverURL, 'Server URL is required');
|
@@ -26,7 +29,7 @@ function initializeSession({ apiKey, projectId, serverURL, watcherVersion, sessi
|
|
26
29
|
(0, assert_1.default)(gitCommitEmail === null || typeof gitCommitEmail === 'string', 'Git Commit Email must be a string or null');
|
27
30
|
(0, assert_1.default)(configOverrides === null || typeof configOverrides === 'object', 'Configuration Overrides must be an object or null');
|
28
31
|
(0, assert_1.default)(runOptions === null || typeof runOptions === 'object', 'Run Options must be an object or null');
|
29
|
-
(0, assert_1.default)(projectId === null || (
|
32
|
+
(0, assert_1.default)(projectId === null || validateUUID(projectId), 'Project ID must be a valid v4 UUID or null');
|
30
33
|
const url = new URL(`/api-pub/watcher/sessions`, serverURL);
|
31
34
|
if (isCanonicalSource) {
|
32
35
|
debugLogger('Initializing session from canonical source');
|
@@ -66,7 +69,7 @@ function initializeSession({ apiKey, projectId, serverURL, watcherVersion, sessi
|
|
66
69
|
method: 'POST',
|
67
70
|
body: JSON.stringify(payload)
|
68
71
|
});
|
69
|
-
const body =
|
72
|
+
const body = res.body;
|
70
73
|
const error = body.error || (body.errors?.length && body.errors[0]);
|
71
74
|
if (error) {
|
72
75
|
debugLogger('Error initializing session:', error);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initializeSession.js","sourceRoot":"","sources":["../../src/utils/initializeSession.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B
|
1
|
+
{"version":3,"file":"initializeSession.js","sourceRoot":"","sources":["../../src/utils/initializeSession.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.shouldUseEnvProxy = void 0;
|
4
|
+
const shouldUseEnvProxy = function () {
|
5
|
+
const envVars = [
|
6
|
+
'NODE_USE_ENV_PROXY',
|
7
|
+
'AXE_WATCHER_USE_ENV_PROXY',
|
8
|
+
'AXE_USE_ENV_PROXY'
|
9
|
+
];
|
10
|
+
for (const envVar of envVars) {
|
11
|
+
const value = process.env[envVar.toLowerCase()] ?? process.env[envVar];
|
12
|
+
if (value !== undefined) {
|
13
|
+
if (value === '0') {
|
14
|
+
return false;
|
15
|
+
}
|
16
|
+
if (value !== '') {
|
17
|
+
return true;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
return false;
|
22
|
+
};
|
23
|
+
exports.shouldUseEnvProxy = shouldUseEnvProxy;
|
24
|
+
//# sourceMappingURL=shouldUseEnvProxy.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"shouldUseEnvProxy.js","sourceRoot":"","sources":["../../src/utils/shouldUseEnvProxy.ts"],"names":[],"mappings":";;;AAIO,MAAM,iBAAiB,GAAG;IAC/B,MAAM,OAAO,GAAG;QACd,oBAAoB;QACpB,2BAA2B;QAC3B,mBAAmB;KACpB,CAAA;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAA;YACd,CAAC;YACD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AArBY,QAAA,iBAAiB,qBAqB7B"}
|
@@ -6,72 +6,164 @@
|
|
6
6
|
*/
|
7
7
|
|
8
8
|
import { isMainThread, workerData } from 'node:worker_threads'
|
9
|
-
import { EnvHttpProxyAgent } from 'undici'
|
9
|
+
import { EnvHttpProxyAgent, getGlobalDispatcher } from 'undici'
|
10
10
|
|
11
11
|
if (isMainThread) {
|
12
12
|
throw new Error('This script should only be run as a worker thread')
|
13
13
|
}
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
/**
|
16
|
+
* The core Error type used when this worker fails.
|
17
|
+
* It is the only error to exit the message bus.
|
18
|
+
* Any other errors are causes of this one.
|
19
|
+
*/
|
20
|
+
class FetchWorkerError extends Error {
|
21
|
+
constructor(context) {
|
22
|
+
super('FetchWorkerError')
|
23
|
+
this.name = 'FetchWorkerError'
|
24
|
+
this.context = context
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
/**
|
29
|
+
* A specific error used when we encounter an error that
|
30
|
+
* can not be serialized.
|
31
|
+
*/
|
32
|
+
class OverrideError extends Error {
|
33
|
+
constructor(message, sourceName) {
|
34
|
+
super(message)
|
35
|
+
this.name = 'OverrideError'
|
36
|
+
this.sourceName = sourceName
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Attempt to sanitize a URL by redacting sensitive information.
|
42
|
+
* If the URL cannot be parsed, it is returned as-is.
|
43
|
+
*
|
44
|
+
* @internal
|
45
|
+
*
|
46
|
+
* @param {string} url - The URL to sanitize.
|
47
|
+
*
|
48
|
+
* @returns {string} The sanitized URL with sensitive information redacted.
|
49
|
+
*/
|
50
|
+
const sanitizeUrl = url => {
|
51
|
+
try {
|
52
|
+
const parsedUrl = new URL(url)
|
53
|
+
|
54
|
+
if (parsedUrl.username !== '') {
|
55
|
+
parsedUrl.username = 'REDACTED'
|
56
|
+
}
|
57
|
+
if (parsedUrl.password !== '') {
|
58
|
+
parsedUrl.password = 'REDACTED'
|
59
|
+
}
|
60
|
+
|
61
|
+
return parsedUrl.toString()
|
62
|
+
} catch {
|
63
|
+
return url
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Tested source in ./shouldUseEnvProxy.ts
|
69
|
+
* This has to be duplicated since we can't import here and
|
70
|
+
* it is ran in a worker thread. Once Node 22+ is our
|
71
|
+
* minimum, we can convert this file to TS since that has
|
72
|
+
* erasable types.
|
73
|
+
*/
|
74
|
+
const shouldUseEnvProxy = function () {
|
75
|
+
const envVars = [
|
76
|
+
'NODE_USE_ENV_PROXY',
|
77
|
+
'AXE_WATCHER_USE_ENV_PROXY',
|
78
|
+
'AXE_USE_ENV_PROXY'
|
79
|
+
]
|
17
80
|
|
18
|
-
const
|
19
|
-
const
|
20
|
-
|
21
|
-
|
22
|
-
)
|
81
|
+
for (const envVar of envVars) {
|
82
|
+
const value = process.env[envVar.toLowerCase()] ?? process.env[envVar]
|
83
|
+
|
84
|
+
if (value !== undefined) {
|
85
|
+
if (value === '0') {
|
86
|
+
return false
|
87
|
+
}
|
88
|
+
if (value !== '') {
|
89
|
+
return true
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
return false
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* @typedef {Object} WorkerData
|
99
|
+
* @property {string} url - The URL to fetch.
|
100
|
+
* @property {Object} options - The fetch options.
|
101
|
+
* @property {number} timeout - The timeout in milliseconds.
|
102
|
+
* @property {MessagePort} port - The message port for communication.
|
103
|
+
*/
|
104
|
+
const { url, options, timeout, port } = workerData
|
23
105
|
|
24
106
|
try {
|
107
|
+
let dispatcher = getGlobalDispatcher()
|
108
|
+
|
109
|
+
if (shouldUseEnvProxy()) {
|
110
|
+
dispatcher = new EnvHttpProxyAgent()
|
111
|
+
}
|
112
|
+
|
25
113
|
const response = await fetch(url, {
|
26
114
|
...options,
|
27
|
-
dispatcher
|
115
|
+
dispatcher,
|
28
116
|
signal: AbortSignal.timeout(timeout)
|
29
117
|
})
|
30
118
|
|
31
|
-
const
|
32
|
-
const
|
119
|
+
const contentType = response.headers.get('Content-Type')
|
120
|
+
const isResponseJson = contentType?.startsWith('application/json') ?? false
|
121
|
+
const body = isResponseJson ? await response.json() : await response.text()
|
122
|
+
|
123
|
+
const responseData = {
|
33
124
|
status: response.status,
|
34
125
|
statusText: response.statusText,
|
126
|
+
// Headers can't be serialized directly
|
35
127
|
headers: Object.fromEntries(response.headers.entries()),
|
36
128
|
body,
|
37
129
|
ok: response.ok
|
38
|
-
}
|
130
|
+
}
|
39
131
|
|
40
|
-
|
41
|
-
|
132
|
+
port.postMessage({
|
133
|
+
data: responseData
|
134
|
+
})
|
135
|
+
} catch (error) {
|
136
|
+
const HTTP_PROXY = process.env.http_proxy || process.env.HTTP_PROXY
|
137
|
+
const HTTPS_PROXY = process.env.https_proxy || process.env.HTTPS_PROXY
|
138
|
+
const NO_PROXY = process.env.no_proxy || process.env.NO_PROXY
|
42
139
|
|
43
|
-
|
44
|
-
|
140
|
+
const context = {
|
141
|
+
url: sanitizeUrl(url),
|
142
|
+
env: {
|
143
|
+
HTTP_PROXY: HTTP_PROXY ? sanitizeUrl(HTTP_PROXY) : undefined,
|
144
|
+
HTTPS_PROXY: HTTPS_PROXY ? sanitizeUrl(HTTPS_PROXY) : undefined,
|
145
|
+
NO_PROXY,
|
146
|
+
NODE_EXTRA_CA_CERTS: process.env.NODE_EXTRA_CA_CERTS,
|
147
|
+
NODE_TLS_REJECT_UNAUTHORIZED: process.env.NODE_TLS_REJECT_UNAUTHORIZED
|
148
|
+
}
|
45
149
|
}
|
46
150
|
|
47
|
-
const
|
48
|
-
|
49
|
-
BUFFER_LAYOUT.LENGTH_OFFSET,
|
50
|
-
BUFFER_LAYOUT.LENGTH_VIEW_SIZE
|
51
|
-
)
|
52
|
-
lengthView[0] = encoded.length
|
53
|
-
responseBuffer.set(encoded)
|
151
|
+
const err = new FetchWorkerError(context)
|
152
|
+
err.cause = error
|
54
153
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
const encoded = encoder.encode(errorMessage)
|
64
|
-
|
65
|
-
if (encoded.length <= responseBuffer.length - 4) {
|
66
|
-
const lengthView = new Uint32Array(
|
67
|
-
sharedBuffer,
|
68
|
-
BUFFER_LAYOUT.LENGTH_OFFSET,
|
69
|
-
BUFFER_LAYOUT.LENGTH_VIEW_SIZE
|
70
|
-
)
|
71
|
-
lengthView[0] = encoded.length
|
72
|
-
responseBuffer.set(encoded)
|
154
|
+
if (error instanceof DOMException) {
|
155
|
+
if (error.name === 'TimeoutError') {
|
156
|
+
const timeoutError = new OverrideError(
|
157
|
+
`The operation was aborted due to timeout (${timeout}ms)`,
|
158
|
+
'TimeoutError'
|
159
|
+
)
|
160
|
+
err.cause = timeoutError
|
161
|
+
}
|
73
162
|
}
|
74
163
|
|
75
|
-
|
76
|
-
|
164
|
+
port.postMessage({
|
165
|
+
error: err
|
166
|
+
})
|
167
|
+
} finally {
|
168
|
+
port.close()
|
77
169
|
}
|
@@ -5,7 +5,7 @@ export interface SyncFetchResponse {
|
|
5
5
|
status: number;
|
6
6
|
statusText: string;
|
7
7
|
headers: Record<string, string>;
|
8
|
-
body:
|
8
|
+
body: unknown;
|
9
9
|
ok: boolean;
|
10
10
|
}
|
11
11
|
export declare function syncFetch(url: string, options?: RequestInit, customOptions?: SyncFetchCustomOptions): SyncFetchResponse;
|
package/dist/utils/sync-fetch.js
CHANGED
@@ -3,70 +3,78 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.syncFetch = syncFetch;
|
4
4
|
const node_worker_threads_1 = require("node:worker_threads");
|
5
5
|
const node_path_1 = require("node:path");
|
6
|
-
const WORKER_STATUS = {
|
7
|
-
PENDING: 0,
|
8
|
-
SUCCESS: 1,
|
9
|
-
ERROR: 2
|
10
|
-
};
|
11
|
-
const BUFFER_LAYOUT = {
|
12
|
-
STATUS_INDEX: 0,
|
13
|
-
LENGTH_OFFSET: 12,
|
14
|
-
RESPONSE_OFFSET: 16,
|
15
|
-
LENGTH_VIEW_SIZE: 1,
|
16
|
-
DEFAULT_BUFFER_SIZE: 1024 * 1024
|
17
|
-
};
|
18
6
|
function syncFetch(url, options = {}, customOptions = {
|
19
7
|
timeout: 30000
|
20
8
|
}) {
|
21
9
|
const timeout = customOptions.timeout || 30000;
|
22
10
|
const processingBuffer = 3000;
|
23
11
|
const mainThreadTimeout = timeout + processingBuffer;
|
24
|
-
const
|
25
|
-
const
|
26
|
-
|
12
|
+
const { port1, port2 } = new node_worker_threads_1.MessageChannel();
|
13
|
+
const sleepBuffer = new SharedArrayBuffer(4);
|
14
|
+
const sleepArray = new Int32Array(sleepBuffer);
|
27
15
|
const worker = new node_worker_threads_1.Worker((0, node_path_1.join)(__dirname, 'sync-fetch-worker.mjs'), {
|
28
16
|
name: 'sync-fetch',
|
29
17
|
eval: false,
|
30
18
|
workerData: {
|
31
19
|
url,
|
32
20
|
options,
|
33
|
-
sharedBuffer,
|
34
21
|
timeout,
|
35
|
-
|
36
|
-
|
37
|
-
|
22
|
+
port: port2
|
23
|
+
},
|
24
|
+
transferList: [port2]
|
38
25
|
});
|
26
|
+
const { startTime } = performance.mark('axe-watcher:sync-fetch:start');
|
27
|
+
let message;
|
39
28
|
try {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
}
|
44
|
-
const status = Atomics.load(int32Array, BUFFER_LAYOUT.STATUS_INDEX);
|
45
|
-
if (status === WORKER_STATUS.ERROR) {
|
46
|
-
const lengthView = new Uint32Array(sharedBuffer, BUFFER_LAYOUT.LENGTH_OFFSET, BUFFER_LAYOUT.LENGTH_VIEW_SIZE);
|
47
|
-
const responseLength = lengthView[0];
|
48
|
-
const responseBuffer = new Uint8Array(sharedBuffer, BUFFER_LAYOUT.RESPONSE_OFFSET, responseLength);
|
49
|
-
const decoder = new TextDecoder();
|
50
|
-
const errorMessage = decoder.decode(responseBuffer);
|
51
|
-
throw new Error(`Fetch failed: ${errorMessage}`);
|
52
|
-
}
|
53
|
-
if (status === WORKER_STATUS.SUCCESS) {
|
54
|
-
const lengthView = new Uint32Array(sharedBuffer, BUFFER_LAYOUT.LENGTH_OFFSET, BUFFER_LAYOUT.LENGTH_VIEW_SIZE);
|
55
|
-
const responseLength = lengthView[0];
|
56
|
-
const responseBuffer = new Uint8Array(sharedBuffer, BUFFER_LAYOUT.RESPONSE_OFFSET, responseLength);
|
57
|
-
const decoder = new TextDecoder();
|
58
|
-
const responseText = decoder.decode(responseBuffer);
|
59
|
-
try {
|
60
|
-
return JSON.parse(responseText);
|
61
|
-
}
|
62
|
-
catch {
|
63
|
-
throw new Error('Failed to parse response data');
|
29
|
+
while (message === undefined) {
|
30
|
+
if (performance.now() - startTime > mainThreadTimeout) {
|
31
|
+
throw new Error(`Request timed out - worker thread did not respond within ${mainThreadTimeout}ms`);
|
64
32
|
}
|
33
|
+
Atomics.wait(sleepArray, 0, 0, 5);
|
34
|
+
message = (0, node_worker_threads_1.receiveMessageOnPort)(port1);
|
35
|
+
}
|
36
|
+
const { data, error } = message.message;
|
37
|
+
if (error) {
|
38
|
+
const syncErr = new Error('Sync Fetch Failed');
|
39
|
+
syncErr.cause = error;
|
40
|
+
throw syncErr;
|
65
41
|
}
|
66
|
-
|
42
|
+
return data;
|
67
43
|
}
|
68
44
|
finally {
|
45
|
+
performance.mark('axe-watcher:sync-fetch:end');
|
46
|
+
port1.close();
|
69
47
|
worker.terminate();
|
48
|
+
const clone = structuredClone(options);
|
49
|
+
clone.headers = sanitizeHeaders(clone.headers);
|
50
|
+
performance.measure('axe-watcher:sync-fetch', {
|
51
|
+
start: 'axe-watcher:sync-fetch:start',
|
52
|
+
end: 'axe-watcher:sync-fetch:end',
|
53
|
+
detail: {
|
54
|
+
url,
|
55
|
+
options: clone,
|
56
|
+
timeout,
|
57
|
+
status: message?.message.type || 'no-response',
|
58
|
+
response: {
|
59
|
+
status: message?.message.data?.status,
|
60
|
+
statusText: message?.message.data?.statusText
|
61
|
+
}
|
62
|
+
}
|
63
|
+
});
|
64
|
+
}
|
65
|
+
}
|
66
|
+
function sanitizeHeaders(headers) {
|
67
|
+
if (!headers) {
|
68
|
+
return undefined;
|
69
|
+
}
|
70
|
+
const sanitized = {};
|
71
|
+
for (const [key, value] of Object.entries(headers)) {
|
72
|
+
if (key.toLowerCase() === 'x-api-key'.toLowerCase()) {
|
73
|
+
sanitized[key.toLowerCase()] = 'REDACTED';
|
74
|
+
continue;
|
75
|
+
}
|
76
|
+
sanitized[key.toLowerCase()] = value;
|
70
77
|
}
|
78
|
+
return sanitized;
|
71
79
|
}
|
72
80
|
//# sourceMappingURL=sync-fetch.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sync-fetch.js","sourceRoot":"","sources":["../../src/utils/sync-fetch.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"sync-fetch.js","sourceRoot":"","sources":["../../src/utils/sync-fetch.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/**
|
2
|
+
* Session IDs to be shared throughout tests that need to
|
3
|
+
* simulate various behaviors of initializing a session.
|
4
|
+
* Independently exported so importing from other files
|
5
|
+
* doesn't create side effects.
|
6
|
+
*/
|
7
|
+
export declare const specialResponseSessionIds: {
|
8
|
+
readonly 'fail-server-error': "fail-server-error";
|
9
|
+
readonly 'fail-legacy-errors': "fail-legacy-errors";
|
10
|
+
readonly 'fail-timeout': "fail-timeout";
|
11
|
+
readonly 'success-project-id-included': "success-project-id-included";
|
12
|
+
readonly 'success-project-id-excluded': "success-project-id-excluded";
|
13
|
+
readonly 'mock-session-id': "mock-session-id";
|
14
|
+
};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.specialResponseSessionIds = void 0;
|
4
|
+
exports.specialResponseSessionIds = {
|
5
|
+
'fail-server-error': 'fail-server-error',
|
6
|
+
'fail-legacy-errors': 'fail-legacy-errors',
|
7
|
+
'fail-timeout': 'fail-timeout',
|
8
|
+
'success-project-id-included': 'success-project-id-included',
|
9
|
+
'success-project-id-excluded': 'success-project-id-excluded',
|
10
|
+
'mock-session-id': 'mock-session-id'
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=test-constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"test-constants.js","sourceRoot":"","sources":["../../src/utils/test-constants.ts"],"names":[],"mappings":";;;AAMa,QAAA,yBAAyB,GAAG;IAEvC,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,cAAc,EAAE,cAAc;IAC9B,6BAA6B,EAAE,6BAA6B;IAC5D,6BAA6B,EAAE,6BAA6B;IAC5D,iBAAiB,EAAE,iBAAiB;CAC5B,CAAA"}
|
@@ -112,6 +112,11 @@ export interface CypressAxeConfiguration extends AxeConfiguration {
|
|
112
112
|
* Default: 'e2e'
|
113
113
|
*/
|
114
114
|
testingTypes?: CypressTestingType | CypressTestingType[];
|
115
|
+
/**
|
116
|
+
* Associates the test run with a specific project.
|
117
|
+
* Should be the UUID provided in your Axe account.
|
118
|
+
*/
|
119
|
+
projectId?: string;
|
115
120
|
}
|
116
121
|
export interface CypressConfiguration {
|
117
122
|
axe: CypressAxeConfiguration;
|