@axe-core/watcher 3.12.0 → 3.13.1-next.13e7eef5
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.js +3 -3
- package/dist/Controller.js.map +1 -1
- package/dist/cypress.d.ts +2 -1
- package/dist/cypress.js +39 -14
- package/dist/cypress.js.map +1 -1
- package/dist/cypressCommands.js +7 -2
- package/dist/cypressCommands.js.map +1 -1
- package/dist/git.d.ts +2 -1
- package/dist/git.js +5 -4
- package/dist/git.js.map +1 -1
- package/dist/playwright.d.ts +1 -1
- package/dist/playwright.js +6 -4
- package/dist/playwright.js.map +1 -1
- package/dist/playwrightTest.js +7 -3
- package/dist/playwrightTest.js.map +1 -1
- package/dist/playwrightWrapping.d.ts +1 -1
- package/dist/playwrightWrapping.js +41 -41
- package/dist/playwrightWrapping.js.map +1 -1
- package/dist/puppeteer.d.ts +1 -1
- package/dist/puppeteer.js +7 -5
- package/dist/puppeteer.js.map +1 -1
- package/dist/puppeteerWrapping.d.ts +1 -1
- package/dist/puppeteerWrapping.js +45 -46
- package/dist/puppeteerWrapping.js.map +1 -1
- package/dist/sendResultsToServer.d.ts +2 -0
- package/dist/sendResultsToServer.js +21 -58
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +39 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/headlessNotSupportedError.d.ts +5 -0
- package/dist/utils/headlessNotSupportedError.js +17 -0
- package/dist/utils/headlessNotSupportedError.js.map +1 -0
- package/dist/utils/headlessNotSupportedError.test.d.ts +1 -0
- package/dist/utils/headlessNotSupportedError.test.js +21 -0
- package/dist/utils/headlessNotSupportedError.test.js.map +1 -0
- package/dist/utils/initializeSession.d.ts +11 -0
- package/dist/utils/initializeSession.js +64 -0
- package/dist/utils/initializeSession.js.map +1 -0
- package/dist/utils/initializeSession.test.d.ts +1 -0
- package/dist/utils/initializeSession.test.js +183 -0
- package/dist/utils/initializeSession.test.js.map +1 -0
- package/dist/utils/isValidExcludePattern.d.ts +2 -0
- package/dist/utils/isValidExcludePattern.js +10 -0
- package/dist/utils/isValidExcludePattern.js.map +1 -0
- package/dist/utils/isValidExcludePattern.test.d.ts +1 -0
- package/dist/utils/isValidExcludePattern.test.js +17 -0
- package/dist/utils/isValidExcludePattern.test.js.map +1 -0
- package/dist/utils/mergeChromeArgs.d.ts +12 -0
- package/dist/utils/mergeChromeArgs.js +73 -0
- package/dist/utils/mergeChromeArgs.js.map +1 -0
- package/dist/utils/mergeChromeArgs.test.d.ts +1 -0
- package/dist/utils/mergeChromeArgs.test.js +260 -0
- package/dist/utils/mergeChromeArgs.test.js.map +1 -0
- package/dist/utils/proxyHandlers.d.ts +12 -0
- package/dist/utils/proxyHandlers.js +62 -0
- package/dist/utils/proxyHandlers.js.map +1 -0
- package/dist/utils/proxyHandlers.test.d.ts +1 -0
- package/dist/utils/proxyHandlers.test.js +28 -0
- package/dist/utils/proxyHandlers.test.js.map +1 -0
- package/dist/utils/readVariables.d.ts +7 -0
- package/dist/utils/readVariables.js +17 -0
- package/dist/utils/readVariables.js.map +1 -0
- package/dist/utils/updateAutoAnalyze.d.ts +7 -0
- package/dist/utils/updateAutoAnalyze.js +20 -0
- package/dist/utils/updateAutoAnalyze.js.map +1 -0
- package/dist/utils/writeExtensionManifest.d.ts +7 -0
- package/dist/utils/writeExtensionManifest.js +18 -0
- package/dist/utils/writeExtensionManifest.js.map +1 -0
- package/dist/utils/writeVariables.d.ts +88 -0
- package/dist/utils/writeVariables.js +139 -0
- package/dist/utils/writeVariables.js.map +1 -0
- package/dist/utils/writeVariables.test.d.ts +1 -0
- package/dist/utils/writeVariables.test.js +201 -0
- package/dist/utils/writeVariables.test.js.map +1 -0
- package/dist/wdio.d.ts +1 -1
- package/dist/wdio.js +17 -9
- package/dist/wdio.js.map +1 -1
- package/dist/webdriver.d.ts +1 -1
- package/dist/webdriver.js +6 -4
- package/dist/webdriver.js.map +1 -1
- package/dist/webdriverWrapping.d.ts +1 -1
- package/dist/webdriverWrapping.js +16 -16
- package/dist/webdriverWrapping.js.map +1 -1
- package/extension/axe.js +2 -0
- package/extension/axe.js.LICENSE.txt +11 -0
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/extension/content.js.LICENSE.txt +0 -12
- package/extension/manifest.json +1 -1
- package/package.json +2 -2
- package/dist/util.d.ts +0 -96
- package/dist/util.js +0 -243
- package/dist/util.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
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 sync_request_1 = __importDefault(require("sync-request"));
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const createDebugger_1 = __importDefault(require("../createDebugger"));
|
|
9
|
+
const uuid_1 = require("uuid");
|
|
10
|
+
const debugLogger = (0, createDebugger_1.default)('config:initializeSession');
|
|
11
|
+
/** Initialize a new session. */
|
|
12
|
+
function initializeSession({ apiKey, serverURL, watcherVersion, sessionID, buildID, gitCommitSha }) {
|
|
13
|
+
(0, assert_1.default)(apiKey, 'API key is required');
|
|
14
|
+
(0, assert_1.default)(serverURL, 'Server URL is required');
|
|
15
|
+
(0, assert_1.default)(watcherVersion, 'Watcher version is required');
|
|
16
|
+
(0, assert_1.default)(!(sessionID && typeof sessionID !== 'string'), 'Session ID must be a string');
|
|
17
|
+
(0, assert_1.default)(!(buildID && typeof buildID !== 'string'), 'Build ID must be a string');
|
|
18
|
+
(0, assert_1.default)(!(sessionID && buildID), 'Session ID and Build ID are mutually exclusive. `sessionId` is deprecated, please use `buildID` instead');
|
|
19
|
+
(0, assert_1.default)(!(gitCommitSha && typeof gitCommitSha !== 'string'), 'Git commit SHA must be a string');
|
|
20
|
+
const url = new URL(`/api-pub/watcher/sessions`, serverURL);
|
|
21
|
+
const res = (0, sync_request_1.default)('POST', url.toString(), {
|
|
22
|
+
headers: {
|
|
23
|
+
'X-API-Key': apiKey
|
|
24
|
+
},
|
|
25
|
+
json: {
|
|
26
|
+
watcher_version: watcherVersion,
|
|
27
|
+
session_id: sessionID,
|
|
28
|
+
build_id: buildID,
|
|
29
|
+
git_commit_sha: gitCommitSha
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const body = JSON.parse(res.getBody('utf8'));
|
|
33
|
+
if (body.errors.length) {
|
|
34
|
+
debugLogger('Error initializing session:', body.errors);
|
|
35
|
+
throw new Error(body.errors.join(', '));
|
|
36
|
+
}
|
|
37
|
+
if (body.warnings.length) {
|
|
38
|
+
debugLogger('Warning initializing session:', body.warnings);
|
|
39
|
+
// eslint-disable-next-line no-console -- We want to emit a warning to the user's console
|
|
40
|
+
console.warn(body.warnings.join(', '));
|
|
41
|
+
}
|
|
42
|
+
if (body.session_id) {
|
|
43
|
+
debugLogger('Session initialized successfully:', body.session_id);
|
|
44
|
+
return body.session_id;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Here we account for an old version of Walnut's initializeSession, which does not return a session_id.
|
|
48
|
+
* See https://github.com/dequelabs/jazzband/issues/1451
|
|
49
|
+
* TODO: This can eventually be removed when this can no longer be the case. https://github.com/dequelabs/jazzband/issues/1453
|
|
50
|
+
*/
|
|
51
|
+
if (sessionID) {
|
|
52
|
+
debugLogger('Session failed to initialize. Returning the provided sessionID:', sessionID);
|
|
53
|
+
return sessionID;
|
|
54
|
+
}
|
|
55
|
+
if (buildID) {
|
|
56
|
+
debugLogger('Session failed to initialize based on the provided buildID:', buildID);
|
|
57
|
+
throw new Error('Failed to initialize session based on build_id. Try again later.');
|
|
58
|
+
}
|
|
59
|
+
const generatedID = (0, uuid_1.v4)();
|
|
60
|
+
debugLogger('Session did not initialize successfully. Returning a generated UUID:', generatedID);
|
|
61
|
+
return generatedID;
|
|
62
|
+
}
|
|
63
|
+
exports.default = initializeSession;
|
|
64
|
+
//# sourceMappingURL=initializeSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializeSession.js","sourceRoot":"","sources":["../../src/utils/initializeSession.ts"],"names":[],"mappings":";;;;;AAAA,gEAAkC;AAClC,oDAA2B;AAC3B,uEAA8C;AAC9C,+BAAiC;AAEjC,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC,0BAA0B,CAAC,CAAA;AAkB9D,gCAAgC;AAChC,SAAS,iBAAiB,CAAC,EACzB,MAAM,EACN,SAAS,EACT,cAAc,EACd,SAAS,EACT,OAAO,EACP,YAAY,EACY;IACxB,IAAA,gBAAM,EAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACrC,IAAA,gBAAM,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAA;IAC3C,IAAA,gBAAM,EAAC,cAAc,EAAE,6BAA6B,CAAC,CAAA;IACrD,IAAA,gBAAM,EACJ,CAAC,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,EAC7C,6BAA6B,CAC9B,CAAA;IACD,IAAA,gBAAM,EAAC,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,2BAA2B,CAAC,CAAA;IAC9E,IAAA,gBAAM,EACJ,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EACvB,yGAAyG,CAC1G,CAAA;IACD,IAAA,gBAAM,EACJ,CAAC,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,CAAC,EACnD,iCAAiC,CAClC,CAAA;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,IAAA,sBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC1C,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;SACpB;QACD,IAAI,EAAE;YACJ,eAAe,EAAE,cAAc;YAC/B,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;YACjB,cAAc,EAAE,YAAY;SAC7B;KACF,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAA8B,CAAA;IAEzE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,6BAA6B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE3D,yFAAyF;QACzF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,WAAW,CAAC,mCAAmC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED;;;;OAIG;IAEH,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CACT,iEAAiE,EACjE,SAAS,CACV,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,WAAW,CACT,6DAA6D,EAC7D,OAAO,CACR,CAAA;QACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,SAAI,GAAE,CAAA;IAE1B,WAAW,CACT,sEAAsE,EACtE,WAAW,CACZ,CAAA;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,kBAAe,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
require("mocha");
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
9
|
+
const proxyquire_1 = __importDefault(require("proxyquire"));
|
|
10
|
+
const initializeSession_1 = __importDefault(require("./initializeSession"));
|
|
11
|
+
describe('initializeSession', () => {
|
|
12
|
+
afterEach(sinon_1.default.restore);
|
|
13
|
+
const defaultParams = {
|
|
14
|
+
apiKey: 'abc',
|
|
15
|
+
serverURL: 'http://localhost:3000',
|
|
16
|
+
watcherVersion: '1.0.0',
|
|
17
|
+
sessionID: null,
|
|
18
|
+
buildID: null,
|
|
19
|
+
gitCommitSha: null
|
|
20
|
+
};
|
|
21
|
+
describe('validating input', () => {
|
|
22
|
+
describe('when the API key is missing', () => {
|
|
23
|
+
it('throws an error', () => {
|
|
24
|
+
chai_1.assert.throws(() => {
|
|
25
|
+
//@ts-expect-error - expected missing apiKey
|
|
26
|
+
(0, initializeSession_1.default)({});
|
|
27
|
+
}, 'API key is required');
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe('when the server URL is missing', () => {
|
|
31
|
+
it('throws an error', () => {
|
|
32
|
+
chai_1.assert.throws(() => {
|
|
33
|
+
//@ts-expect-error - expected missing serverURL
|
|
34
|
+
(0, initializeSession_1.default)({ apiKey: 'abc' });
|
|
35
|
+
}, 'Server URL is required');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('when the watcher version is missing', () => {
|
|
39
|
+
it('throws an error', () => {
|
|
40
|
+
chai_1.assert.throws(() => {
|
|
41
|
+
//@ts-expect-error - expected missing watcherVersion
|
|
42
|
+
(0, initializeSession_1.default)({
|
|
43
|
+
apiKey: 'abc',
|
|
44
|
+
serverURL: 'http://localhost:3000'
|
|
45
|
+
});
|
|
46
|
+
}, 'Watcher version is required');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('when the session ID is not a string', () => {
|
|
50
|
+
it('throws an error', () => {
|
|
51
|
+
chai_1.assert.throws(() => {
|
|
52
|
+
(0, initializeSession_1.default)({
|
|
53
|
+
...defaultParams,
|
|
54
|
+
//@ts-expect-error - expected sessionID to be a string
|
|
55
|
+
sessionID: 123
|
|
56
|
+
});
|
|
57
|
+
}, 'Session ID must be a string');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('when the build ID is not a string', () => {
|
|
61
|
+
it('throws an error', () => {
|
|
62
|
+
chai_1.assert.throws(() => {
|
|
63
|
+
(0, initializeSession_1.default)({
|
|
64
|
+
...defaultParams,
|
|
65
|
+
//@ts-expect-error - expected buildID to be a string
|
|
66
|
+
buildID: 123
|
|
67
|
+
});
|
|
68
|
+
}, 'Build ID must be a string');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('when both session ID and build ID are provided', () => {
|
|
72
|
+
it('throws an error', () => {
|
|
73
|
+
chai_1.assert.throws(() => {
|
|
74
|
+
(0, initializeSession_1.default)({
|
|
75
|
+
...defaultParams,
|
|
76
|
+
sessionID: 'abc',
|
|
77
|
+
buildID: '123'
|
|
78
|
+
});
|
|
79
|
+
}, 'Session ID and Build ID are mutually exclusive. `sessionId` is deprecated, please use `buildID` instead');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('when the git commit SHA is not a string', () => {
|
|
83
|
+
it('throws an error', () => {
|
|
84
|
+
chai_1.assert.throws(() => {
|
|
85
|
+
(0, initializeSession_1.default)({
|
|
86
|
+
...defaultParams,
|
|
87
|
+
//@ts-expect-error - expected gitCommitSha to be a string
|
|
88
|
+
gitCommitSha: 123
|
|
89
|
+
});
|
|
90
|
+
}, 'Git commit SHA must be a string');
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('when the server returns a non-200 response', () => {
|
|
95
|
+
afterEach(sinon_1.default.restore);
|
|
96
|
+
it('throws an error', () => {
|
|
97
|
+
const requestStub = sinon_1.default
|
|
98
|
+
.stub()
|
|
99
|
+
.returns({ statusCode: 500, getBody: () => '{"errors":["boom"]}' });
|
|
100
|
+
const fn = (0, proxyquire_1.default)('./initializeSession', {
|
|
101
|
+
'sync-request': requestStub
|
|
102
|
+
}).default;
|
|
103
|
+
chai_1.assert.throws(() => {
|
|
104
|
+
fn(defaultParams);
|
|
105
|
+
}, 'boom');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe('when the server returns a 200 response', () => {
|
|
109
|
+
it('does not throw an error', () => {
|
|
110
|
+
const expectedBody = {
|
|
111
|
+
errors: [],
|
|
112
|
+
warnings: [],
|
|
113
|
+
session_id: 'abc'
|
|
114
|
+
};
|
|
115
|
+
const requestStub = sinon_1.default.stub().returns({
|
|
116
|
+
statusCode: 200,
|
|
117
|
+
getBody: () => JSON.stringify(expectedBody)
|
|
118
|
+
});
|
|
119
|
+
const fn = (0, proxyquire_1.default)('./initializeSession', {
|
|
120
|
+
'sync-request': requestStub
|
|
121
|
+
}).default;
|
|
122
|
+
const invoke = fn(defaultParams);
|
|
123
|
+
chai_1.assert.doesNotThrow(() => invoke);
|
|
124
|
+
chai_1.assert.deepEqual(invoke, expectedBody.session_id);
|
|
125
|
+
});
|
|
126
|
+
describe('and no session_id is returned', () => {
|
|
127
|
+
const expectedBody = {
|
|
128
|
+
errors: [],
|
|
129
|
+
warnings: []
|
|
130
|
+
};
|
|
131
|
+
const sessionID = 'xyz';
|
|
132
|
+
describe('and a sessionID is provided', () => {
|
|
133
|
+
it('uses the sessionID', () => {
|
|
134
|
+
const requestStub = sinon_1.default.stub().returns({
|
|
135
|
+
statusCode: 200,
|
|
136
|
+
getBody: () => JSON.stringify(expectedBody)
|
|
137
|
+
});
|
|
138
|
+
const fn = (0, proxyquire_1.default)('./initializeSession', {
|
|
139
|
+
'sync-request': requestStub
|
|
140
|
+
}).default;
|
|
141
|
+
const invoke = fn({
|
|
142
|
+
...defaultParams,
|
|
143
|
+
...{ sessionID }
|
|
144
|
+
});
|
|
145
|
+
chai_1.assert.deepEqual(invoke, sessionID);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe('and a buildID is provided', () => {
|
|
149
|
+
it('throws', () => {
|
|
150
|
+
const requestStub = sinon_1.default.stub().returns({
|
|
151
|
+
statusCode: 200,
|
|
152
|
+
getBody: () => JSON.stringify(expectedBody)
|
|
153
|
+
});
|
|
154
|
+
const fn = (0, proxyquire_1.default)('./initializeSession', {
|
|
155
|
+
'sync-request': requestStub
|
|
156
|
+
}).default;
|
|
157
|
+
const buildID = 'def';
|
|
158
|
+
chai_1.assert.throws(() => fn({
|
|
159
|
+
...defaultParams,
|
|
160
|
+
...{ buildID }
|
|
161
|
+
}), 'Failed to initialize session based on build_id. Try again later.');
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('and neither a sessionID nor a buildID are provided', () => {
|
|
165
|
+
it('uses a generated UUID', () => {
|
|
166
|
+
const requestStub = sinon_1.default.stub().returns({
|
|
167
|
+
statusCode: 200,
|
|
168
|
+
getBody: () => JSON.stringify(expectedBody)
|
|
169
|
+
});
|
|
170
|
+
const generatedID = 'ghi';
|
|
171
|
+
const uuidStub = sinon_1.default.stub().returns(generatedID);
|
|
172
|
+
const fn = (0, proxyquire_1.default)('./initializeSession', {
|
|
173
|
+
'sync-request': requestStub,
|
|
174
|
+
uuid: { v4: uuidStub }
|
|
175
|
+
}).default;
|
|
176
|
+
const invoke = fn(defaultParams);
|
|
177
|
+
chai_1.assert.deepEqual(invoke, generatedID);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=initializeSession.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializeSession.test.js","sourceRoot":"","sources":["../../src/utils/initializeSession.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const isValidExcludePattern = (pattern) => {
|
|
4
|
+
const isValid = pattern.every(p => typeof p === 'string');
|
|
5
|
+
if (!isValid) {
|
|
6
|
+
throw new Error(`Invalid exclude pattern: ${pattern}. Please refer to the minimatch usage documentation.`);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
exports.default = isValidExcludePattern;
|
|
10
|
+
//# sourceMappingURL=isValidExcludePattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidExcludePattern.js","sourceRoot":"","sources":["../../src/utils/isValidExcludePattern.ts"],"names":[],"mappings":";;AAAA,MAAM,qBAAqB,GAAG,CAAC,OAAkB,EAAQ,EAAE;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;IAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,sDAAsD,CAC1F,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,kBAAe,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
require("mocha");
|
|
7
|
+
const chai_1 = require("chai");
|
|
8
|
+
const isValidExcludePattern_1 = __importDefault(require("./isValidExcludePattern"));
|
|
9
|
+
describe('isValidExcludePattern', () => {
|
|
10
|
+
it('returns true for valid exclude patterns', () => {
|
|
11
|
+
chai_1.assert.doesNotThrow(() => (0, isValidExcludePattern_1.default)(['foo', 'bar']));
|
|
12
|
+
});
|
|
13
|
+
it('returns false for invalid exclude patterns', () => {
|
|
14
|
+
chai_1.assert.throws(() => (0, isValidExcludePattern_1.default)(['foo', 'bar', 1]));
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=isValidExcludePattern.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidExcludePattern.test.js","sourceRoot":"","sources":["../../src/utils/isValidExcludePattern.test.ts"],"names":[],"mappings":";;;;;AAAA,iBAAc;AACd,+BAA6B;AAC7B,oFAA2D;AAE3D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,aAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAqB,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,aAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,+BAAqB,EAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A helper function to merge the user provided arguments with the extension args
|
|
3
|
+
* for Chrome.
|
|
4
|
+
*
|
|
5
|
+
* @param args The user provided arguments to merge with the extension args.
|
|
6
|
+
* @param disableOtherExtensions Whether to disable other extensions.
|
|
7
|
+
* @returns The merged arguments to pass to Chrome.
|
|
8
|
+
*/
|
|
9
|
+
declare function mergeChromeArgs(userArgs: string[], { disableOtherExtensions }: {
|
|
10
|
+
disableOtherExtensions: boolean;
|
|
11
|
+
}): string[];
|
|
12
|
+
export default mergeChromeArgs;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("./constants");
|
|
4
|
+
// Extension flags for Chrome
|
|
5
|
+
const DISABLE_OTHER_EXTENSIONS_FLAG = '--disable-extensions-except';
|
|
6
|
+
const LOAD_EXTENSION_FLAG = '--load-extension';
|
|
7
|
+
/**
|
|
8
|
+
* A helper function to merge the user provided arguments with the extension args
|
|
9
|
+
* for Chrome.
|
|
10
|
+
*
|
|
11
|
+
* @param args The user provided arguments to merge with the extension args.
|
|
12
|
+
* @param disableOtherExtensions Whether to disable other extensions.
|
|
13
|
+
* @returns The merged arguments to pass to Chrome.
|
|
14
|
+
*/
|
|
15
|
+
function mergeChromeArgs(userArgs, { disableOtherExtensions }) {
|
|
16
|
+
/**
|
|
17
|
+
* It's possible for the user to do:
|
|
18
|
+
* `--load-extension=/path/A, --load-extension=/path/B`
|
|
19
|
+
*
|
|
20
|
+
* We only want to append our extension path onto
|
|
21
|
+
* the last occurrence of `--load-extension`.
|
|
22
|
+
*/
|
|
23
|
+
let loadExtensionFlagIndex = -1;
|
|
24
|
+
let disableExtensionsFlagIndex = -1;
|
|
25
|
+
/**
|
|
26
|
+
* We do not want to modify the user's args directly.
|
|
27
|
+
* We only want to modify and merge the extension args
|
|
28
|
+
* with the user's args if they exist.
|
|
29
|
+
*
|
|
30
|
+
* It's possible for some integrations like WebDriverJS
|
|
31
|
+
* to optionally include the `--` prefix in the flag,
|
|
32
|
+
* when we check for the extension flag we need to account for this.
|
|
33
|
+
*/
|
|
34
|
+
for (const [index, arg] of userArgs.entries()) {
|
|
35
|
+
if (arg.includes(LOAD_EXTENSION_FLAG) || arg.includes('load-extension')) {
|
|
36
|
+
loadExtensionFlagIndex = index;
|
|
37
|
+
}
|
|
38
|
+
if (arg.includes(DISABLE_OTHER_EXTENSIONS_FLAG) ||
|
|
39
|
+
arg.includes('disable-extensions-except')) {
|
|
40
|
+
disableExtensionsFlagIndex = index;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// The user has provided a `--load-extension` flag
|
|
44
|
+
// We want to append our extension path to the list of extensions.
|
|
45
|
+
if (loadExtensionFlagIndex !== -1) {
|
|
46
|
+
userArgs[loadExtensionFlagIndex] += `,${constants_1.PATH_TO_EXTENSION}`;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
userArgs.push(`${LOAD_EXTENSION_FLAG}=${constants_1.PATH_TO_EXTENSION}`);
|
|
50
|
+
}
|
|
51
|
+
// If the user has already disabled other extensions, we want to append
|
|
52
|
+
// our extension path to the list of disabled extensions.
|
|
53
|
+
if (disableExtensionsFlagIndex !== -1) {
|
|
54
|
+
userArgs[disableExtensionsFlagIndex] += `,${constants_1.PATH_TO_EXTENSION}`;
|
|
55
|
+
/**
|
|
56
|
+
* Puppeteer and Playwright by default include `--disable-extensions` which
|
|
57
|
+
* disables all extensions. We need to explicitly enable the axe-core/watcher
|
|
58
|
+
* extension.
|
|
59
|
+
*
|
|
60
|
+
* @see https://github.com/GoogleChrome/chrome-launcher/blob/main/docs/chrome-flags-for-tools.md#sources
|
|
61
|
+
*
|
|
62
|
+
* Cypress does not include `--disable-extensions` by default but does include
|
|
63
|
+
* their own extension outside of `--load-extension` so we do not able to disable it
|
|
64
|
+
* when injecting the axe-core/watcher extension.
|
|
65
|
+
*/
|
|
66
|
+
}
|
|
67
|
+
else if (disableOtherExtensions) {
|
|
68
|
+
userArgs.push(`${DISABLE_OTHER_EXTENSIONS_FLAG}=${constants_1.PATH_TO_EXTENSION}`);
|
|
69
|
+
}
|
|
70
|
+
return userArgs;
|
|
71
|
+
}
|
|
72
|
+
exports.default = mergeChromeArgs;
|
|
73
|
+
//# sourceMappingURL=mergeChromeArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeChromeArgs.js","sourceRoot":"","sources":["../../src/utils/mergeChromeArgs.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,6BAA6B;AAC7B,MAAM,6BAA6B,GAAG,6BAA6B,CAAA;AACnE,MAAM,mBAAmB,GAAG,kBAAkB,CAAA;AAE9C;;;;;;;GAOG;AAEH,SAAS,eAAe,CACtB,QAAkB,EAClB,EACE,sBAAsB,EAGvB;IAED;;;;;;OAMG;IACH,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAA;IAC/B,IAAI,0BAA0B,GAAG,CAAC,CAAC,CAAA;IAEnC;;;;;;;;OAQG;IACH,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxE,sBAAsB,GAAG,KAAK,CAAA;QAChC,CAAC;QAED,IACE,GAAG,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC3C,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EACzC,CAAC;YACD,0BAA0B,GAAG,KAAK,CAAA;QACpC,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,kEAAkE;IAClE,IAAI,sBAAsB,KAAK,CAAC,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,6BAAiB,EAAE,CAAA;IAC7D,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,GAAG,mBAAmB,IAAI,6BAAiB,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,uEAAuE;IACvE,yDAAyD;IACzD,IAAI,0BAA0B,KAAK,CAAC,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,0BAA0B,CAAC,IAAI,IAAI,6BAAiB,EAAE,CAAA;QAE/D;;;;;;;;;;WAUG;IACL,CAAC;SAAM,IAAI,sBAAsB,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,6BAA6B,IAAI,6BAAiB,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,kBAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|