@axe-core/watcher 3.11.1 → 3.12.0-next.5a96be69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Controller.d.ts +9 -1
- package/dist/Controller.js +24 -10
- package/dist/Controller.js.map +1 -1
- package/dist/createDebugger.d.ts +9 -0
- package/dist/createDebugger.js +27 -0
- package/dist/createDebugger.js.map +1 -0
- package/dist/cypress.d.ts +1 -1
- package/dist/cypress.js +27 -7
- package/dist/cypress.js.map +1 -1
- package/dist/cypressCommands.d.ts +3 -1
- package/dist/cypressCommands.js +78 -39
- 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 +9 -7
- package/dist/playwright.js.map +1 -1
- package/dist/playwrightTest.js +8 -4
- 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 +10 -8
- package/dist/puppeteer.js.map +1 -1
- package/dist/puppeteerWrapping.d.ts +3 -2
- package/dist/puppeteerWrapping.js +100 -42
- package/dist/puppeteerWrapping.js.map +1 -1
- package/dist/sendResultsToServer.d.ts +9 -2
- package/dist/sendResultsToServer.js +25 -43
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -0
- package/dist/utils/constants.js +16 -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/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/validateApiKey.d.ts +7 -0
- package/dist/utils/validateApiKey.js +34 -0
- package/dist/utils/validateApiKey.js.map +1 -0
- package/dist/utils/validateApiKey.test.d.ts +1 -0
- package/dist/utils/validateApiKey.test.js +66 -0
- package/dist/utils/validateApiKey.test.js.map +1 -0
- package/dist/utils/validateAxeRunContext.d.ts +2 -0
- package/dist/utils/validateAxeRunContext.js +59 -0
- package/dist/utils/validateAxeRunContext.js.map +1 -0
- package/dist/utils/validateAxeRunContext.test.d.ts +1 -0
- package/dist/utils/validateAxeRunContext.test.js +100 -0
- package/dist/utils/validateAxeRunContext.test.js.map +1 -0
- package/dist/utils/validateAxeRunOptions.d.ts +13 -0
- package/dist/utils/validateAxeRunOptions.js +161 -0
- package/dist/utils/validateAxeRunOptions.js.map +1 -0
- package/dist/utils/validateAxeRunOptions.test.d.ts +1 -0
- package/dist/utils/validateAxeRunOptions.test.js +230 -0
- package/dist/utils/validateAxeRunOptions.test.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 +64 -0
- package/dist/utils/writeVariables.js +119 -0
- package/dist/utils/writeVariables.js.map +1 -0
- package/dist/utils/writeVariables.test.d.ts +1 -0
- package/dist/utils/writeVariables.test.js +184 -0
- package/dist/utils/writeVariables.test.js.map +1 -0
- package/dist/wdio.d.ts +1 -1
- package/dist/wdio.js +18 -13
- package/dist/wdio.js.map +1 -1
- package/dist/webdriver.d.ts +1 -1
- package/dist/webdriver.js +10 -8
- 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/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +10 -7
- package/dist/util.d.ts +0 -76
- package/dist/util.js +0 -235
- package/dist/util.js.map +0 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("mocha");
|
|
4
|
+
const chai_1 = require("chai");
|
|
5
|
+
const validateAxeRunOptions_1 = require("./validateAxeRunOptions");
|
|
6
|
+
describe('validateAxeRunOptions', () => {
|
|
7
|
+
describe('given no options', () => {
|
|
8
|
+
it('does not throw', () => {
|
|
9
|
+
chai_1.assert.doesNotThrow(() => {
|
|
10
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe('given an option that has not been exposed to be configured', () => {
|
|
15
|
+
it('throws', () => {
|
|
16
|
+
chai_1.assert.throws(() => {
|
|
17
|
+
//@ts-expect-error - testing invalid input
|
|
18
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ a: 'a' });
|
|
19
|
+
}, /Invalid property found in `runOptions`/i);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe('given `ancestry` property is provided', () => {
|
|
23
|
+
describe('when `ancestry` is not a boolean', () => {
|
|
24
|
+
it('throws', () => {
|
|
25
|
+
chai_1.assert.throws(() => {
|
|
26
|
+
//@ts-expect-error - testing invalid input
|
|
27
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ ancestry: 'a' });
|
|
28
|
+
}, /`ancestry` property must be a boolean./i);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('when `ancestry` is a boolean', () => {
|
|
32
|
+
it('does not throw', () => {
|
|
33
|
+
chai_1.assert.doesNotThrow(() => {
|
|
34
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ ancestry: true });
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('given `rules` property is provided', () => {
|
|
40
|
+
describe('when `rules` is not an object', () => {
|
|
41
|
+
it('throws', () => {
|
|
42
|
+
chai_1.assert.throws(() => {
|
|
43
|
+
//@ts-expect-error - testing invalid input
|
|
44
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: 'a' });
|
|
45
|
+
}, /`rules` property must be an object./i);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('when `rules` is an array', () => {
|
|
49
|
+
it('throws', () => {
|
|
50
|
+
chai_1.assert.throws(() => {
|
|
51
|
+
//@ts-expect-error - testing invalid input
|
|
52
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: ['a'] });
|
|
53
|
+
}, /`rules` property must be an object./i);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('when `rules` is an object', () => {
|
|
57
|
+
describe('when `rules` object has no value', () => {
|
|
58
|
+
it('throws', () => {
|
|
59
|
+
chai_1.assert.throws(() => {
|
|
60
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: {} });
|
|
61
|
+
}, /`rules` object must contain at least one key-value pair./i);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('when `rules` object has a value', () => {
|
|
65
|
+
describe('and the value is not an object', () => {
|
|
66
|
+
it('throws', () => {
|
|
67
|
+
chai_1.assert.throws(() => {
|
|
68
|
+
//@ts-expect-error - testing invalid input
|
|
69
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: { a: 'a' } });
|
|
70
|
+
}, /The value of the `a` key in the `rules` object must be an object./i);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('and the value is an object', () => {
|
|
74
|
+
describe('and the value has no properties', () => {
|
|
75
|
+
it('throws', () => {
|
|
76
|
+
chai_1.assert.throws(() => {
|
|
77
|
+
//@ts-expect-error - testing invalid input
|
|
78
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: { a: {} } });
|
|
79
|
+
}, /The `a` key in the `rules` object must only contain the `enabled` property./i);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('and the value has properties', () => {
|
|
83
|
+
describe('and the value does not have an `enabled` property', () => {
|
|
84
|
+
it('throws', () => {
|
|
85
|
+
chai_1.assert.throws(() => {
|
|
86
|
+
//@ts-expect-error - testing invalid input
|
|
87
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: { a: { b: 'a' } } });
|
|
88
|
+
}, /The `a` key in the `rules` object must contain an `enabled` property./i);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('and the value has an `enabled` property', () => {
|
|
92
|
+
describe('and the `enabled` property is not a boolean', () => {
|
|
93
|
+
it('throws', () => {
|
|
94
|
+
chai_1.assert.throws(() => {
|
|
95
|
+
//@ts-expect-error - testing invalid input
|
|
96
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: { a: { enabled: 'a' } } });
|
|
97
|
+
}, /The `enabled` property of the `a` key in the `rules` object must be a boolean./i);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('and the `enabled` property is a boolean', () => {
|
|
101
|
+
it('does not throw', () => {
|
|
102
|
+
chai_1.assert.doesNotThrow(() => {
|
|
103
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ rules: { a: { enabled: true } } });
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('given `runOnly` property is provided', () => {
|
|
114
|
+
describe('when `runOnly` is a string', () => {
|
|
115
|
+
it('does not throw', () => {
|
|
116
|
+
chai_1.assert.doesNotThrow(() => {
|
|
117
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: 'a' });
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('when `runOnly` is an array', () => {
|
|
122
|
+
describe('and the array is empty', () => {
|
|
123
|
+
it('throws', () => {
|
|
124
|
+
chai_1.assert.throws(() => {
|
|
125
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: [] });
|
|
126
|
+
}, /`runOnly` array must contain at least one string value./i);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('and the array is not empty', () => {
|
|
130
|
+
describe('and the array is not an array of strings', () => {
|
|
131
|
+
it('throws', () => {
|
|
132
|
+
chai_1.assert.throws(() => {
|
|
133
|
+
//@ts-expect-error - testing invalid input
|
|
134
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: ['a', 1] });
|
|
135
|
+
}, /`runOnly` array must contain only strings./i);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('and the array is an array of strings', () => {
|
|
139
|
+
it('does not throw', () => {
|
|
140
|
+
chai_1.assert.doesNotThrow(() => {
|
|
141
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: ['a, b'] });
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('when `runOnly` is not a string, array or object', () => {
|
|
148
|
+
it('throws', () => {
|
|
149
|
+
chai_1.assert.throws(() => {
|
|
150
|
+
//@ts-expect-error - testing invalid input
|
|
151
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: 1 });
|
|
152
|
+
}, /`runOnly` property must be an object, an array, or a string./i);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe('when `runOnly` is an object', () => {
|
|
156
|
+
describe('and the object has no `type` property', () => {
|
|
157
|
+
it('throws', () => {
|
|
158
|
+
chai_1.assert.throws(() => {
|
|
159
|
+
//@ts-expect-error - testing invalid input
|
|
160
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: {} });
|
|
161
|
+
}, /`runOnly` object must contain a `type` property./i);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('and the object has no `values` property', () => {
|
|
165
|
+
it('throws', () => {
|
|
166
|
+
chai_1.assert.throws(() => {
|
|
167
|
+
//@ts-expect-error - testing invalid input
|
|
168
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: { type: 'rule' } });
|
|
169
|
+
}, /`runOnly` object must contain a `values` property./i);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
describe('and the object has an invalid `type` property', () => {
|
|
173
|
+
it('throws', () => {
|
|
174
|
+
chai_1.assert.throws(() => {
|
|
175
|
+
//@ts-expect-error - testing invalid input
|
|
176
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: { type: 'a', values: ['a'] } });
|
|
177
|
+
}, /`runOnly` object's `type` property must be one of the following:/i);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe('and the object has a valid `type` property', () => {
|
|
181
|
+
describe('and the `values` property is not an array', () => {
|
|
182
|
+
it('throws', () => {
|
|
183
|
+
chai_1.assert.throws(() => {
|
|
184
|
+
//@ts-expect-error - testing invalid input
|
|
185
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: { type: 'rule', values: 'a' } });
|
|
186
|
+
}, /`runOnly` object's `values` property must be an array./i);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
describe('and the `values` property is an empty array', () => {
|
|
190
|
+
it('throws', () => {
|
|
191
|
+
chai_1.assert.throws(() => {
|
|
192
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({ runOnly: { type: 'rule', values: [] } });
|
|
193
|
+
}, /`runOnly` object's `values` property must contain at least one value./i);
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
describe('and the `values` property is an array of non-strings', () => {
|
|
197
|
+
it('throws', () => {
|
|
198
|
+
chai_1.assert.throws(() => {
|
|
199
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({
|
|
200
|
+
//@ts-expect-error - testing invalid input
|
|
201
|
+
runOnly: { type: 'rule', values: ['a', 1] }
|
|
202
|
+
});
|
|
203
|
+
}, /`runOnly` object's `values` property must contain only strings./i);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
describe('and the `values` property is an array of strings', () => {
|
|
207
|
+
it('does not throw', () => {
|
|
208
|
+
chai_1.assert.doesNotThrow(() => {
|
|
209
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({
|
|
210
|
+
runOnly: { type: 'rule', values: ['a', 'b'] }
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
describe('given a valid `runOnly` object', () => {
|
|
219
|
+
it('does not throw', () => {
|
|
220
|
+
chai_1.assert.doesNotThrow(() => {
|
|
221
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)({
|
|
222
|
+
runOnly: { type: 'rule', values: ['ruleId1'] },
|
|
223
|
+
ancestry: true,
|
|
224
|
+
rules: { a: { enabled: true } }
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
//# sourceMappingURL=validateAxeRunOptions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateAxeRunOptions.test.js","sourceRoot":"","sources":["../../src/utils/validateAxeRunOptions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 path_1 = __importDefault(require("path"));
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
/** Update the extension manifest file. */
|
|
10
|
+
function writeManifest({ all_frames, exclude_globs }) {
|
|
11
|
+
const manifestPath = path_1.default.join(constants_1.PATH_TO_EXTENSION, 'manifest.json');
|
|
12
|
+
const manifest = JSON.parse(fs_1.default.readFileSync(manifestPath, 'utf-8'));
|
|
13
|
+
manifest.content_scripts[0].all_frames = all_frames;
|
|
14
|
+
manifest.content_scripts[0].exclude_globs = exclude_globs;
|
|
15
|
+
fs_1.default.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|
|
16
|
+
}
|
|
17
|
+
exports.default = writeManifest;
|
|
18
|
+
//# sourceMappingURL=writeExtensionManifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeExtensionManifest.js","sourceRoot":"","sources":["../../src/utils/writeExtensionManifest.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,4CAAmB;AACnB,2CAA+C;AAO/C,0CAA0C;AAC1C,SAAS,aAAa,CAAC,EACrB,UAAU,EACV,aAAa,EACO;IACpB,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,6BAAiB,EAAE,eAAe,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;IACnE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAA;IACnD,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,aAAa,CAAA;IACzD,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,kBAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type axe from 'axe-core';
|
|
2
|
+
import { type RunOptions } from './validateAxeRunOptions';
|
|
3
|
+
export interface GitData {
|
|
4
|
+
git_branch?: string | null;
|
|
5
|
+
git_tag?: string | null;
|
|
6
|
+
git_default_branch?: string | null;
|
|
7
|
+
git_commit_message?: string | null;
|
|
8
|
+
git_commit_sha?: string | null;
|
|
9
|
+
git_commit_author?: string | null;
|
|
10
|
+
git_commit_email?: string | null;
|
|
11
|
+
git_url?: string | null;
|
|
12
|
+
git_is_dirty?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface AxeConfiguration {
|
|
15
|
+
/** Your axe API key. */
|
|
16
|
+
apiKey: string;
|
|
17
|
+
/** Custom axe server URL. */
|
|
18
|
+
serverURL?: string;
|
|
19
|
+
/** Your session ID. */
|
|
20
|
+
sessionId?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Whether or not to automatically run axe on the page when loaded and
|
|
23
|
+
* when changes are made.
|
|
24
|
+
*/
|
|
25
|
+
autoAnalyze?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* By default we'll scan the entire page. Provide a context object to limit
|
|
28
|
+
* the scope of the scan.
|
|
29
|
+
*
|
|
30
|
+
* @see https://www.deque.com/axe/core-documentation/api-documentation/#context-parameter
|
|
31
|
+
*/
|
|
32
|
+
runContext?: axe.ElementContext;
|
|
33
|
+
/**
|
|
34
|
+
* Provide options on how to run axe.
|
|
35
|
+
* - `rules`: Enable or disable rules using the enabled property
|
|
36
|
+
* - `runOnly`: Limit which rules are executed, based on names or tags
|
|
37
|
+
* - `ancestry`: Return CSS selector for elements, with all the element's ancestors
|
|
38
|
+
*
|
|
39
|
+
* @see https://www.deque.com/axe/core-documentation/api-documentation/#options-parameter
|
|
40
|
+
*/
|
|
41
|
+
runOptions?: RunOptions;
|
|
42
|
+
}
|
|
43
|
+
export interface Configuration {
|
|
44
|
+
axe: AxeConfiguration;
|
|
45
|
+
}
|
|
46
|
+
interface WriteVariablesParams extends AxeConfiguration {
|
|
47
|
+
cypress?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** variables.json shape. */
|
|
50
|
+
export interface Variables {
|
|
51
|
+
api_key: string;
|
|
52
|
+
server_url: string;
|
|
53
|
+
auto_analyze: boolean;
|
|
54
|
+
cypress: boolean;
|
|
55
|
+
session_id?: string;
|
|
56
|
+
run_context: axe.ElementContext | null;
|
|
57
|
+
run_options: RunOptions | null;
|
|
58
|
+
git_data?: GitData;
|
|
59
|
+
take_screenshots?: boolean;
|
|
60
|
+
experimental_advanced_rules?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/** Write the user's settings to the disk, so the extension can load them. */
|
|
63
|
+
declare function writeVariables({ apiKey, autoAnalyze, cypress, serverURL, sessionId, runContext, runOptions, takeScreenshots, experimentalAdvancedRules }: WriteVariablesParams): void;
|
|
64
|
+
export default writeVariables;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const git = __importStar(require("../git"));
|
|
30
|
+
const fs_1 = __importDefault(require("fs"));
|
|
31
|
+
const uuid_1 = require("uuid");
|
|
32
|
+
const constants_1 = require("./constants");
|
|
33
|
+
const validateAxeRunOptions_1 = require("./validateAxeRunOptions");
|
|
34
|
+
const createDebugger_1 = __importDefault(require("../createDebugger"));
|
|
35
|
+
const validateApiKey_1 = __importDefault(require("./validateApiKey"));
|
|
36
|
+
const validateAxeRunContext_1 = require("./validateAxeRunContext");
|
|
37
|
+
const debugLogger = (0, createDebugger_1.default)('config:writeVariables');
|
|
38
|
+
/** Write the user's settings to the disk, so the extension can load them. */
|
|
39
|
+
function writeVariables({ apiKey, autoAnalyze, cypress, serverURL, sessionId, runContext, runOptions,
|
|
40
|
+
// @ts-expect-error Feature flag, not part of public type
|
|
41
|
+
takeScreenshots,
|
|
42
|
+
// @ts-expect-error Feature flag, not part of public type
|
|
43
|
+
experimentalAdvancedRules }) {
|
|
44
|
+
// only log the properties if they are not undefined
|
|
45
|
+
debugLogger('Received configuration:', {
|
|
46
|
+
apiKey: '<redacted>',
|
|
47
|
+
...(autoAnalyze !== undefined && { autoAnalyze }),
|
|
48
|
+
...(serverURL !== undefined && { serverURL }),
|
|
49
|
+
...(sessionId !== undefined && { sessionId }),
|
|
50
|
+
...(runContext !== undefined && { runContext }),
|
|
51
|
+
...(runOptions !== undefined && { runOptions })
|
|
52
|
+
});
|
|
53
|
+
if (!serverURL) {
|
|
54
|
+
serverURL = constants_1.DEFAULT_SERVER_URL;
|
|
55
|
+
}
|
|
56
|
+
let urlString;
|
|
57
|
+
try {
|
|
58
|
+
urlString = new URL(serverURL).toString();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
throw new Error(`Error when converting serverURL to URL. Ensure it is formatted properly: ${err}`);
|
|
62
|
+
}
|
|
63
|
+
if (typeof runContext !== 'undefined') {
|
|
64
|
+
(0, validateAxeRunContext_1.validateAxeRunContext)(runContext);
|
|
65
|
+
debugLogger('Validated runContext:', runContext);
|
|
66
|
+
}
|
|
67
|
+
if (typeof runOptions !== 'undefined') {
|
|
68
|
+
(0, validateAxeRunOptions_1.validateAxeRunOptions)(runOptions);
|
|
69
|
+
debugLogger('Validated runOptions:', runOptions);
|
|
70
|
+
}
|
|
71
|
+
const gitData = {};
|
|
72
|
+
const isGitRepo = git.isRepository();
|
|
73
|
+
if (isGitRepo) {
|
|
74
|
+
debugLogger('Is this a git project?', { isGitRepo });
|
|
75
|
+
gitData.git_branch = git.getBranchName();
|
|
76
|
+
gitData.git_tag = git.getTag();
|
|
77
|
+
gitData.git_default_branch = git.getDefaultBranchName();
|
|
78
|
+
gitData.git_url = git.getRemoteURL();
|
|
79
|
+
gitData.git_is_dirty = git.isDirty();
|
|
80
|
+
const info = git.getCommitInfo();
|
|
81
|
+
gitData.git_commit_sha = info === null || info === void 0 ? void 0 : info.hash;
|
|
82
|
+
gitData.git_commit_author = info === null || info === void 0 ? void 0 : info.author;
|
|
83
|
+
gitData.git_commit_email = info === null || info === void 0 ? void 0 : info.email;
|
|
84
|
+
gitData.git_commit_message = info === null || info === void 0 ? void 0 : info.message;
|
|
85
|
+
}
|
|
86
|
+
debugLogger('Validating API key');
|
|
87
|
+
(0, validateApiKey_1.default)({ apiKey, serverURL: urlString });
|
|
88
|
+
if (typeof autoAnalyze === 'undefined') {
|
|
89
|
+
autoAnalyze = true;
|
|
90
|
+
}
|
|
91
|
+
// When a custom session ID is not provided, attempt to read it from the filesystem.
|
|
92
|
+
// This enables multi-process/multi-browser test suites to all use the same session ID.
|
|
93
|
+
if (!sessionId && fs_1.default.existsSync(constants_1.PATH_TO_SESSION_FILE)) {
|
|
94
|
+
debugLogger('Reading session ID from file for WDIO Test Runner');
|
|
95
|
+
try {
|
|
96
|
+
const data = JSON.parse(fs_1.default.readFileSync(constants_1.PATH_TO_SESSION_FILE, 'utf8'));
|
|
97
|
+
sessionId = data.id;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new Error(`Unable to read session configuration: ${error}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const variables = {
|
|
104
|
+
api_key: apiKey,
|
|
105
|
+
server_url: urlString,
|
|
106
|
+
/* Ensure only one session ID is created per test run if `sessionId` is not provided */
|
|
107
|
+
session_id: sessionId || (0, uuid_1.v4)(),
|
|
108
|
+
take_screenshots: !!takeScreenshots,
|
|
109
|
+
auto_analyze: !!autoAnalyze,
|
|
110
|
+
cypress: !!cypress,
|
|
111
|
+
experimental_advanced_rules: !!experimentalAdvancedRules,
|
|
112
|
+
run_context: runContext || null,
|
|
113
|
+
run_options: runOptions || null,
|
|
114
|
+
git_data: gitData
|
|
115
|
+
};
|
|
116
|
+
fs_1.default.writeFileSync(constants_1.PATH_TO_EXTENSION_VARIABLES, JSON.stringify(variables));
|
|
117
|
+
}
|
|
118
|
+
exports.default = writeVariables;
|
|
119
|
+
//# sourceMappingURL=writeVariables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeVariables.js","sourceRoot":"","sources":["../../src/utils/writeVariables.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAA6B;AAC7B,4CAAmB;AACnB,+BAAiC;AACjC,2CAIoB;AACpB,mEAAgF;AAChF,uEAA8C;AAC9C,sEAA6C;AAC7C,mEAA+D;AAE/D,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC,uBAAuB,CAAC,CAAA;AAwE3D,6EAA6E;AAC7E,SAAS,cAAc,CAAC,EACtB,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU;AACV,yDAAyD;AACzD,eAAe;AACf,yDAAyD;AACzD,yBAAyB,EACJ;IACrB,oDAAoD;IACpD,WAAW,CAAC,yBAAyB,EAAE;QACrC,MAAM,EAAE,YAAY;QACpB,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;QAC/C,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;KAChD,CAAC,CAAA;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,8BAAkB,CAAA;IAChC,CAAC;IAED,IAAI,SAAS,CAAA;IACb,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,4EAA4E,GAAG,EAAE,CAClF,CAAA;IACH,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACtC,IAAA,6CAAqB,EAAC,UAAU,CAAC,CAAA;QACjC,WAAW,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACtC,IAAA,6CAAqB,EAAC,UAAU,CAAC,CAAA;QACjC,WAAW,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAY,EAAE,CAAA;IAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;QACpD,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QACxC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;QAC9B,OAAO,CAAC,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAA;QACvD,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACpC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QAEpC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAChC,OAAO,CAAC,cAAc,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA;QACnC,OAAO,CAAC,iBAAiB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA;QACxC,OAAO,CAAC,gBAAgB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA;QACtC,OAAO,CAAC,kBAAkB,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,oBAAoB,CAAC,CAAA;IACjC,IAAA,wBAAc,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;IAEhD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,WAAW,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,oFAAoF;IACpF,uFAAuF;IACvF,IAAI,CAAC,SAAS,IAAI,YAAE,CAAC,UAAU,CAAC,gCAAoB,CAAC,EAAE,CAAC;QACtD,WAAW,CAAC,mDAAmD,CAAC,CAAA;QAChE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gCAAoB,EAAE,MAAM,CAAC,CAAC,CAAA;YACtE,SAAS,GAAG,IAAI,CAAC,EAAY,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAc;QAC3B,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,SAAS;QACrB,uFAAuF;QACvF,UAAU,EAAE,SAAS,IAAI,IAAA,SAAI,GAAE;QAC/B,gBAAgB,EAAE,CAAC,CAAC,eAAe;QACnC,YAAY,EAAE,CAAC,CAAC,WAAW;QAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,2BAA2B,EAAE,CAAC,CAAC,yBAAyB;QACxD,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,WAAW,EAAE,UAAU,IAAI,IAAI;QAC/B,QAAQ,EAAE,OAAO;KAClB,CAAA;IAED,YAAE,CAAC,aAAa,CAAC,uCAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,kBAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'mocha';
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
require("mocha");
|
|
30
|
+
const chai_1 = require("chai");
|
|
31
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
32
|
+
const fs_1 = __importDefault(require("fs"));
|
|
33
|
+
const git = __importStar(require("../git"));
|
|
34
|
+
const validateApiKeyImp = __importStar(require("./validateApiKey"));
|
|
35
|
+
const writeVariables_1 = __importDefault(require("./writeVariables"));
|
|
36
|
+
describe('writeVariables', () => {
|
|
37
|
+
let validateApiKey;
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
validateApiKey = sinon_1.default.stub(validateApiKeyImp, 'default').returns();
|
|
40
|
+
});
|
|
41
|
+
afterEach(() => {
|
|
42
|
+
sinon_1.default.restore();
|
|
43
|
+
});
|
|
44
|
+
describe('when validateApiKey=true', () => {
|
|
45
|
+
describe('when given an invalid API key', () => {
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
;
|
|
48
|
+
validateApiKey.throws(new Error('Invalid API key'));
|
|
49
|
+
});
|
|
50
|
+
it('should throw', () => {
|
|
51
|
+
chai_1.assert.throws(() => {
|
|
52
|
+
(0, writeVariables_1.default)({
|
|
53
|
+
apiKey: 'abc',
|
|
54
|
+
serverURL: 'http://localhost:3000',
|
|
55
|
+
// @ts-expect-error // Feature flag, not part of public type
|
|
56
|
+
takeScreenshots: true
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('given `sessionId` variable', () => {
|
|
63
|
+
describe('when provided', () => {
|
|
64
|
+
it('should write to variables.json', () => {
|
|
65
|
+
const gitStub = sinon_1.default.stub(git);
|
|
66
|
+
gitStub.getBranchName.returns('main');
|
|
67
|
+
gitStub.getDefaultBranchName.returns('main');
|
|
68
|
+
gitStub.getRemoteURL.returns('url');
|
|
69
|
+
gitStub.isRepository.returns(true);
|
|
70
|
+
gitStub.isDirty.returns(false);
|
|
71
|
+
gitStub.getTag.returns(null);
|
|
72
|
+
gitStub.getCommitInfo.returns({
|
|
73
|
+
message: 'message',
|
|
74
|
+
author: 'author',
|
|
75
|
+
email: 'email',
|
|
76
|
+
hash: 'hash'
|
|
77
|
+
});
|
|
78
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
79
|
+
(0, writeVariables_1.default)({
|
|
80
|
+
apiKey: 'abc',
|
|
81
|
+
serverURL: 'http://localhost:3000/',
|
|
82
|
+
sessionId: '123',
|
|
83
|
+
// @ts-expect-error // Feature flag, not part of public type
|
|
84
|
+
takeScreenshots: true,
|
|
85
|
+
experimentalAdvancedRules: true
|
|
86
|
+
});
|
|
87
|
+
chai_1.assert.isTrue(writeFileSync.calledOnce);
|
|
88
|
+
const stored = JSON.parse(writeFileSync.args[0][1]);
|
|
89
|
+
chai_1.assert.deepEqual(stored, {
|
|
90
|
+
api_key: 'abc',
|
|
91
|
+
server_url: 'http://localhost:3000/',
|
|
92
|
+
auto_analyze: true,
|
|
93
|
+
session_id: '123',
|
|
94
|
+
cypress: false,
|
|
95
|
+
take_screenshots: true,
|
|
96
|
+
experimental_advanced_rules: true,
|
|
97
|
+
run_context: null,
|
|
98
|
+
run_options: null,
|
|
99
|
+
git_data: {
|
|
100
|
+
git_branch: 'main',
|
|
101
|
+
git_default_branch: 'main',
|
|
102
|
+
git_url: 'url',
|
|
103
|
+
git_tag: null,
|
|
104
|
+
git_commit_message: 'message',
|
|
105
|
+
git_commit_author: 'author',
|
|
106
|
+
git_commit_email: 'email',
|
|
107
|
+
git_commit_sha: 'hash',
|
|
108
|
+
git_is_dirty: false
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('when not provided', () => {
|
|
114
|
+
it('creates a session ID and writes it to variables.json', () => {
|
|
115
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
116
|
+
(0, writeVariables_1.default)({
|
|
117
|
+
apiKey: 'abc'
|
|
118
|
+
});
|
|
119
|
+
chai_1.assert.isTrue(writeFileSync.calledOnce);
|
|
120
|
+
const variables = JSON.parse(writeFileSync.args[0][1]);
|
|
121
|
+
chai_1.assert.exists(variables.session_id);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe(`runContext`, () => {
|
|
126
|
+
describe('when provided', () => {
|
|
127
|
+
it('should write to variables.json', () => {
|
|
128
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
129
|
+
(0, writeVariables_1.default)({
|
|
130
|
+
apiKey: 'abc',
|
|
131
|
+
runContext: { include: 'foo', exclude: 'bar' }
|
|
132
|
+
});
|
|
133
|
+
const stored = JSON.parse(writeFileSync.args[0][1]);
|
|
134
|
+
const runContext = stored.run_context;
|
|
135
|
+
chai_1.assert.isDefined(runContext);
|
|
136
|
+
chai_1.assert.deepEqual(runContext, { include: 'foo', exclude: 'bar' });
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('when not provided', () => {
|
|
140
|
+
it('should not write to variables.json', () => {
|
|
141
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
142
|
+
(0, writeVariables_1.default)({
|
|
143
|
+
apiKey: 'abc'
|
|
144
|
+
});
|
|
145
|
+
const stored = JSON.parse(writeFileSync.args[0][1]);
|
|
146
|
+
chai_1.assert.isNull(stored.run_context);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
describe(`runOptions`, () => {
|
|
151
|
+
describe('when provided', () => {
|
|
152
|
+
it('should write to variables.json', () => {
|
|
153
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
154
|
+
(0, writeVariables_1.default)({
|
|
155
|
+
apiKey: 'abc',
|
|
156
|
+
runOptions: {
|
|
157
|
+
ancestry: true,
|
|
158
|
+
rules: { 'color-contrast': { enabled: false } },
|
|
159
|
+
runOnly: { type: 'rules', values: ['color-contrast'] }
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
const stored = JSON.parse(writeFileSync.args[0][1]);
|
|
163
|
+
const runOptions = stored.run_options;
|
|
164
|
+
chai_1.assert.isDefined(runOptions);
|
|
165
|
+
chai_1.assert.deepEqual(runOptions, {
|
|
166
|
+
ancestry: true,
|
|
167
|
+
rules: { 'color-contrast': { enabled: false } },
|
|
168
|
+
runOnly: { type: 'rules', values: ['color-contrast'] }
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
describe('when not provided', () => {
|
|
173
|
+
it('should not write to variables.json', () => {
|
|
174
|
+
const writeFileSync = sinon_1.default.stub(fs_1.default, 'writeFileSync');
|
|
175
|
+
(0, writeVariables_1.default)({
|
|
176
|
+
apiKey: 'abc'
|
|
177
|
+
});
|
|
178
|
+
const stored = JSON.parse(writeFileSync.args[0][1]);
|
|
179
|
+
chai_1.assert.isNull(stored.run_options);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
//# sourceMappingURL=writeVariables.test.js.map
|