@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.
Files changed (97) hide show
  1. package/dist/Controller.js +3 -3
  2. package/dist/Controller.js.map +1 -1
  3. package/dist/cypress.d.ts +2 -1
  4. package/dist/cypress.js +39 -14
  5. package/dist/cypress.js.map +1 -1
  6. package/dist/cypressCommands.js +7 -2
  7. package/dist/cypressCommands.js.map +1 -1
  8. package/dist/git.d.ts +2 -1
  9. package/dist/git.js +5 -4
  10. package/dist/git.js.map +1 -1
  11. package/dist/playwright.d.ts +1 -1
  12. package/dist/playwright.js +6 -4
  13. package/dist/playwright.js.map +1 -1
  14. package/dist/playwrightTest.js +7 -3
  15. package/dist/playwrightTest.js.map +1 -1
  16. package/dist/playwrightWrapping.d.ts +1 -1
  17. package/dist/playwrightWrapping.js +41 -41
  18. package/dist/playwrightWrapping.js.map +1 -1
  19. package/dist/puppeteer.d.ts +1 -1
  20. package/dist/puppeteer.js +7 -5
  21. package/dist/puppeteer.js.map +1 -1
  22. package/dist/puppeteerWrapping.d.ts +1 -1
  23. package/dist/puppeteerWrapping.js +45 -46
  24. package/dist/puppeteerWrapping.js.map +1 -1
  25. package/dist/sendResultsToServer.d.ts +2 -0
  26. package/dist/sendResultsToServer.js +21 -58
  27. package/dist/sendResultsToServer.js.map +1 -1
  28. package/dist/utils/constants.d.ts +4 -0
  29. package/dist/utils/constants.js +39 -0
  30. package/dist/utils/constants.js.map +1 -0
  31. package/dist/utils/headlessNotSupportedError.d.ts +5 -0
  32. package/dist/utils/headlessNotSupportedError.js +17 -0
  33. package/dist/utils/headlessNotSupportedError.js.map +1 -0
  34. package/dist/utils/headlessNotSupportedError.test.d.ts +1 -0
  35. package/dist/utils/headlessNotSupportedError.test.js +21 -0
  36. package/dist/utils/headlessNotSupportedError.test.js.map +1 -0
  37. package/dist/utils/initializeSession.d.ts +11 -0
  38. package/dist/utils/initializeSession.js +64 -0
  39. package/dist/utils/initializeSession.js.map +1 -0
  40. package/dist/utils/initializeSession.test.d.ts +1 -0
  41. package/dist/utils/initializeSession.test.js +183 -0
  42. package/dist/utils/initializeSession.test.js.map +1 -0
  43. package/dist/utils/isValidExcludePattern.d.ts +2 -0
  44. package/dist/utils/isValidExcludePattern.js +10 -0
  45. package/dist/utils/isValidExcludePattern.js.map +1 -0
  46. package/dist/utils/isValidExcludePattern.test.d.ts +1 -0
  47. package/dist/utils/isValidExcludePattern.test.js +17 -0
  48. package/dist/utils/isValidExcludePattern.test.js.map +1 -0
  49. package/dist/utils/mergeChromeArgs.d.ts +12 -0
  50. package/dist/utils/mergeChromeArgs.js +73 -0
  51. package/dist/utils/mergeChromeArgs.js.map +1 -0
  52. package/dist/utils/mergeChromeArgs.test.d.ts +1 -0
  53. package/dist/utils/mergeChromeArgs.test.js +260 -0
  54. package/dist/utils/mergeChromeArgs.test.js.map +1 -0
  55. package/dist/utils/proxyHandlers.d.ts +12 -0
  56. package/dist/utils/proxyHandlers.js +62 -0
  57. package/dist/utils/proxyHandlers.js.map +1 -0
  58. package/dist/utils/proxyHandlers.test.d.ts +1 -0
  59. package/dist/utils/proxyHandlers.test.js +28 -0
  60. package/dist/utils/proxyHandlers.test.js.map +1 -0
  61. package/dist/utils/readVariables.d.ts +7 -0
  62. package/dist/utils/readVariables.js +17 -0
  63. package/dist/utils/readVariables.js.map +1 -0
  64. package/dist/utils/updateAutoAnalyze.d.ts +7 -0
  65. package/dist/utils/updateAutoAnalyze.js +20 -0
  66. package/dist/utils/updateAutoAnalyze.js.map +1 -0
  67. package/dist/utils/writeExtensionManifest.d.ts +7 -0
  68. package/dist/utils/writeExtensionManifest.js +18 -0
  69. package/dist/utils/writeExtensionManifest.js.map +1 -0
  70. package/dist/utils/writeVariables.d.ts +88 -0
  71. package/dist/utils/writeVariables.js +139 -0
  72. package/dist/utils/writeVariables.js.map +1 -0
  73. package/dist/utils/writeVariables.test.d.ts +1 -0
  74. package/dist/utils/writeVariables.test.js +201 -0
  75. package/dist/utils/writeVariables.test.js.map +1 -0
  76. package/dist/wdio.d.ts +1 -1
  77. package/dist/wdio.js +17 -9
  78. package/dist/wdio.js.map +1 -1
  79. package/dist/webdriver.d.ts +1 -1
  80. package/dist/webdriver.js +6 -4
  81. package/dist/webdriver.js.map +1 -1
  82. package/dist/webdriverWrapping.d.ts +1 -1
  83. package/dist/webdriverWrapping.js +16 -16
  84. package/dist/webdriverWrapping.js.map +1 -1
  85. package/extension/axe.js +2 -0
  86. package/extension/axe.js.LICENSE.txt +11 -0
  87. package/extension/background.js +1 -1
  88. package/extension/content.js +1 -1
  89. package/extension/content.js.LICENSE.txt +0 -12
  90. package/extension/manifest.json +1 -1
  91. package/package.json +2 -2
  92. package/dist/util.d.ts +0 -96
  93. package/dist/util.js +0 -243
  94. package/dist/util.js.map +0 -1
  95. package/dist/utils/index.d.ts +0 -2
  96. package/dist/utils/index.js +0 -20
  97. 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,2 @@
1
+ declare const isValidExcludePattern: (pattern: unknown[]) => void;
2
+ export default isValidExcludePattern;
@@ -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';