@wdio/browserstack-service 8.33.1 → 8.34.0
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/build/accessibility-handler.d.ts +5 -3
- package/build/accessibility-handler.d.ts.map +1 -1
- package/build/accessibility-handler.js +60 -34
- package/build/scripts/accessibility-scripts.d.ts +26 -0
- package/build/scripts/accessibility-scripts.d.ts.map +1 -0
- package/build/scripts/accessibility-scripts.js +61 -0
- package/build/service.js +9 -9
- package/build/util.d.ts +3 -0
- package/build/util.d.ts.map +1 -1
- package/build/util.js +35 -5
- package/package.json +4 -4
- package/build/scripts/test-event-scripts.d.ts +0 -10
- package/build/scripts/test-event-scripts.d.ts.map +0 -1
- package/build/scripts/test-event-scripts.js +0 -65
|
@@ -12,12 +12,14 @@ declare class _AccessibilityHandler {
|
|
|
12
12
|
private _accessibility?;
|
|
13
13
|
private _accessibilityOptions?;
|
|
14
14
|
private _testMetadata;
|
|
15
|
+
private static _a11yScanSessionMap;
|
|
16
|
+
private _sessionId;
|
|
15
17
|
constructor(_browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, _capabilities: Capabilities.RemoteCapability, isAppAutomate?: boolean, _framework?: string | undefined, _accessibilityAutomation?: string | boolean | undefined, _accessibilityOpts?: {
|
|
16
18
|
[key: string]: any;
|
|
17
19
|
} | undefined);
|
|
18
20
|
setSuiteFile(filename: string): void;
|
|
19
21
|
_getCapabilityValue(caps: Capabilities.RemoteCapability, capType: string, legacyCapType: string): WebdriverIO.SafaridriverOptions | undefined;
|
|
20
|
-
before(): Promise<void>;
|
|
22
|
+
before(sessionId: string): Promise<void>;
|
|
21
23
|
beforeTest(suiteTitle: string | undefined, test: Frameworks.Test): Promise<void>;
|
|
22
24
|
afterTest(suiteTitle: string | undefined, test: Frameworks.Test): Promise<void>;
|
|
23
25
|
/**
|
|
@@ -25,12 +27,12 @@ declare class _AccessibilityHandler {
|
|
|
25
27
|
*/
|
|
26
28
|
beforeScenario(world: ITestCaseHookParameter): Promise<void>;
|
|
27
29
|
afterScenario(world: ITestCaseHookParameter): Promise<void>;
|
|
28
|
-
private
|
|
29
|
-
private sendTestForceStopEvent;
|
|
30
|
+
private commandWrapper;
|
|
30
31
|
private sendTestStopEvent;
|
|
31
32
|
private getIdentifier;
|
|
32
33
|
private shouldRunTestHooks;
|
|
33
34
|
private checkIfPageOpened;
|
|
35
|
+
private static shouldPatchExecuteScript;
|
|
34
36
|
}
|
|
35
37
|
declare const AccessibilityHandler: typeof _AccessibilityHandler;
|
|
36
38
|
type AccessibilityHandler = _AccessibilityHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessibility-handler.d.ts","sourceRoot":"","sources":["../src/accessibility-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accessibility-handler.d.ts","sourceRoot":"","sources":["../src/accessibility-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAmBjE,cAAM,qBAAqB;IAWnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,wBAAwB,CAAC;IACjC,OAAO,CAAC,kBAAkB,CAAC;IAf/B,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,qBAAqB,CAAC,CAAyB;IACvD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA8B;IAChE,OAAO,CAAC,UAAU,CAAsB;gBAG5B,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAC9D,aAAa,EAAE,YAAY,CAAC,gBAAgB,EACpD,aAAa,CAAC,EAAE,OAAO,EACf,UAAU,CAAC,oBAAQ,EACnB,wBAAwB,CAAC,8BAAkB,EAC3C,kBAAkB,CAAC;;iBAAyB;IAgBxD,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IA6BzF,MAAM,CAAE,SAAS,EAAE,MAAM;IAsCzB,UAAU,CAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAgCjE,SAAS,CAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IA2CtE;;MAEE;IACI,cAAc,CAAE,KAAK,EAAE,sBAAsB;IAgC7C,aAAa,CAAE,KAAK,EAAE,sBAAsB;YA+CpC,cAAc;YAcd,iBAAiB;IAO/B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;YAOZ,iBAAiB;IAkB/B,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAU1C;AAGD,QAAA,MAAM,oBAAoB,EAAE,OAAO,qBAAoE,CAAA;AACvG,KAAK,oBAAoB,GAAG,qBAAqB,CAAA;AAEjD,eAAe,oBAAoB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import util from 'node:util';
|
|
2
|
+
import { getA11yResultsSummary, getA11yResults, performA11yScan, getUniqueIdentifier, getUniqueIdentifierForCucumber, isAccessibilityAutomationSession, isBrowserstackSession, o11yClassErrorHandler, shouldScanTestForAccessibility, validateCapsWithA11y, isTrue } from './util.js';
|
|
3
|
+
import accessibilityScripts from './scripts/accessibility-scripts.js';
|
|
3
4
|
import { BStackLogger } from './bstackLogger.js';
|
|
4
5
|
class _AccessibilityHandler {
|
|
5
6
|
_browser;
|
|
@@ -13,6 +14,8 @@ class _AccessibilityHandler {
|
|
|
13
14
|
_accessibility;
|
|
14
15
|
_accessibilityOptions;
|
|
15
16
|
_testMetadata = {};
|
|
17
|
+
static _a11yScanSessionMap = {};
|
|
18
|
+
_sessionId = null;
|
|
16
19
|
constructor(_browser, _capabilities, isAppAutomate, _framework, _accessibilityAutomation, _accessibilityOpts) {
|
|
17
20
|
this._browser = _browser;
|
|
18
21
|
this._capabilities = _capabilities;
|
|
@@ -68,7 +71,8 @@ class _AccessibilityHandler {
|
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
|
-
async before() {
|
|
74
|
+
async before(sessionId) {
|
|
75
|
+
this._sessionId = sessionId;
|
|
72
76
|
this._accessibility = isTrue(this._getCapabilityValue(this._caps, 'accessibility', 'browserstack.accessibility'));
|
|
73
77
|
if (isBrowserstackSession(this._browser) && isAccessibilityAutomationSession(this._accessibility)) {
|
|
74
78
|
const deviceName = this._getCapabilityValue(this._caps, 'deviceName', 'device');
|
|
@@ -81,25 +85,37 @@ class _AccessibilityHandler {
|
|
|
81
85
|
this._browser.getAccessibilityResults = async () => {
|
|
82
86
|
return await getA11yResults(this._browser, isBrowserstackSession(this._browser), this._accessibility);
|
|
83
87
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
this._browser.performScan = async () => {
|
|
89
|
+
return await performA11yScan(this._browser, isBrowserstackSession(this._browser), this._accessibility);
|
|
90
|
+
};
|
|
91
|
+
if (!this._accessibility) {
|
|
88
92
|
return;
|
|
89
93
|
}
|
|
90
|
-
|
|
91
|
-
const testIdentifier = this.getIdentifier(test);
|
|
92
|
-
const isPageOpened = await this.checkIfPageOpened(this._browser, testIdentifier, shouldScanTest);
|
|
93
|
-
if (!isPageOpened) {
|
|
94
|
+
if (!('overwriteCommand' in this._browser && Array.isArray(accessibilityScripts.commandsToWrap))) {
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
97
|
+
accessibilityScripts.commandsToWrap
|
|
98
|
+
.filter((command) => command.name && command.class)
|
|
99
|
+
.forEach((command) => {
|
|
100
|
+
const browser = this._browser;
|
|
101
|
+
browser.overwriteCommand(command.name, this.commandWrapper.bind(this, command), command.class === 'Element');
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async beforeTest(suiteTitle, test) {
|
|
96
105
|
try {
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
106
|
+
if (this._framework !== 'mocha' ||
|
|
107
|
+
!this.shouldRunTestHooks(this._browser, this._accessibility)) {
|
|
108
|
+
return;
|
|
100
109
|
}
|
|
101
|
-
|
|
102
|
-
|
|
110
|
+
const shouldScanTest = shouldScanTestForAccessibility(suiteTitle, test.title, this._accessibilityOptions);
|
|
111
|
+
const testIdentifier = this.getIdentifier(test);
|
|
112
|
+
const isPageOpened = await this.checkIfPageOpened(this._browser, testIdentifier, shouldScanTest);
|
|
113
|
+
if (this._sessionId) {
|
|
114
|
+
/* For case with multiple tests under one browser, before hook of 2nd test should change this map value */
|
|
115
|
+
AccessibilityHandler._a11yScanSessionMap[this._sessionId] = shouldScanTest;
|
|
116
|
+
}
|
|
117
|
+
if (!isPageOpened) {
|
|
118
|
+
return;
|
|
103
119
|
}
|
|
104
120
|
this._testMetadata[testIdentifier].accessibilityScanStarted = shouldScanTest;
|
|
105
121
|
if (shouldScanTest) {
|
|
@@ -149,25 +165,22 @@ class _AccessibilityHandler {
|
|
|
149
165
|
* Cucumber Only
|
|
150
166
|
*/
|
|
151
167
|
async beforeScenario(world) {
|
|
152
|
-
if (!this.shouldRunTestHooks(this._browser, this._accessibility)) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
168
|
const pickleData = world.pickle;
|
|
156
169
|
const gherkinDocument = world.gherkinDocument;
|
|
157
170
|
const featureData = gherkinDocument.feature;
|
|
158
171
|
const uniqueId = getUniqueIdentifierForCucumber(world);
|
|
159
|
-
|
|
160
|
-
const isPageOpened = await this.checkIfPageOpened(this._browser, uniqueId, shouldScanScenario);
|
|
161
|
-
if (!isPageOpened) {
|
|
172
|
+
if (!this.shouldRunTestHooks(this._browser, this._accessibility)) {
|
|
162
173
|
return;
|
|
163
174
|
}
|
|
164
175
|
try {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
176
|
+
const shouldScanScenario = shouldScanTestForAccessibility(featureData?.name, pickleData.name, this._accessibilityOptions, world, true);
|
|
177
|
+
const isPageOpened = await this.checkIfPageOpened(this._browser, uniqueId, shouldScanScenario);
|
|
178
|
+
if (this._sessionId) {
|
|
179
|
+
/* For case with multiple tests under one browser, before hook of 2nd test should change this map value */
|
|
180
|
+
AccessibilityHandler._a11yScanSessionMap[this._sessionId] = shouldScanScenario;
|
|
168
181
|
}
|
|
169
|
-
|
|
170
|
-
|
|
182
|
+
if (!isPageOpened) {
|
|
183
|
+
return;
|
|
171
184
|
}
|
|
172
185
|
this._testMetadata[uniqueId].accessibilityScanStarted = shouldScanScenario;
|
|
173
186
|
if (shouldScanScenario) {
|
|
@@ -218,14 +231,20 @@ class _AccessibilityHandler {
|
|
|
218
231
|
/*
|
|
219
232
|
* private methods
|
|
220
233
|
*/
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
234
|
+
async commandWrapper(command, origFunction, ...args) {
|
|
235
|
+
if (this._sessionId && AccessibilityHandler._a11yScanSessionMap[this._sessionId] &&
|
|
236
|
+
(!command.name.includes('execute') ||
|
|
237
|
+
!AccessibilityHandler.shouldPatchExecuteScript(args.length ? args[0] : null))) {
|
|
238
|
+
BStackLogger.debug(`Performing scan for ${command.class} ${command.name}`);
|
|
239
|
+
await performA11yScan(this._browser, true, true, command.name);
|
|
240
|
+
}
|
|
241
|
+
return origFunction(...args);
|
|
226
242
|
}
|
|
227
|
-
sendTestStopEvent(browser, dataForExtension) {
|
|
228
|
-
|
|
243
|
+
async sendTestStopEvent(browser, dataForExtension) {
|
|
244
|
+
BStackLogger.debug('Performing scan before saving results');
|
|
245
|
+
await performA11yScan(browser, true, true);
|
|
246
|
+
const results = await browser.executeAsync(accessibilityScripts.saveTestResults, dataForExtension);
|
|
247
|
+
BStackLogger.debug(util.format(results));
|
|
229
248
|
}
|
|
230
249
|
getIdentifier(test) {
|
|
231
250
|
if ('pickle' in test) {
|
|
@@ -255,6 +274,13 @@ class _AccessibilityHandler {
|
|
|
255
274
|
}
|
|
256
275
|
return pageOpen;
|
|
257
276
|
}
|
|
277
|
+
static shouldPatchExecuteScript(script) {
|
|
278
|
+
if (!script || typeof script !== 'string') {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
return (script.toLowerCase().indexOf('browserstack_executor') !== -1 ||
|
|
282
|
+
script.toLowerCase().indexOf('browserstack_accessibility_automation_script') !== -1);
|
|
283
|
+
}
|
|
258
284
|
}
|
|
259
285
|
// https://github.com/microsoft/TypeScript/issues/6543
|
|
260
286
|
const AccessibilityHandler = o11yClassErrorHandler(_AccessibilityHandler);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare class AccessibilityScripts {
|
|
2
|
+
private static instance;
|
|
3
|
+
performScan: string | null;
|
|
4
|
+
getResults: string | null;
|
|
5
|
+
getResultsSummary: string | null;
|
|
6
|
+
saveTestResults: string | null;
|
|
7
|
+
commandsToWrap: Array<any> | null;
|
|
8
|
+
browserstackFolderPath: string;
|
|
9
|
+
commandsPath: string;
|
|
10
|
+
private constructor();
|
|
11
|
+
static checkAndGetInstance(): AccessibilityScripts;
|
|
12
|
+
readFromExistingFile(): void;
|
|
13
|
+
update(data: {
|
|
14
|
+
commands: [any];
|
|
15
|
+
scripts: {
|
|
16
|
+
scan: null;
|
|
17
|
+
getResults: null;
|
|
18
|
+
getResultsSummary: null;
|
|
19
|
+
saveResults: null;
|
|
20
|
+
};
|
|
21
|
+
}): void;
|
|
22
|
+
store(): void;
|
|
23
|
+
}
|
|
24
|
+
declare const _default: AccessibilityScripts;
|
|
25
|
+
export default _default;
|
|
26
|
+
//# sourceMappingURL=accessibility-scripts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessibility-scripts.d.ts","sourceRoot":"","sources":["../../src/scripts/accessibility-scripts.ts"],"names":[],"mappings":"AAIA,cAAM,oBAAoB;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAEpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAO;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAO;IACvC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAO;IACrC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAO;IAExC,sBAAsB,SAA2C;IACjE,YAAY,SAA0D;IAG7E,OAAO;WAEO,mBAAmB;IAQ1B,oBAAoB;IAapB,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,EAAE;YAAE,IAAI,EAAE,IAAI,CAAC;YAAC,UAAU,EAAE,IAAI,CAAC;YAAC,iBAAiB,EAAE,IAAI,CAAC;YAAC,WAAW,EAAE,IAAI,CAAC;SAAE,CAAC;KAAE;IAYzH,KAAK;CAef;;AAED,wBAAyD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
class AccessibilityScripts {
|
|
5
|
+
static instance = null;
|
|
6
|
+
performScan = null;
|
|
7
|
+
getResults = null;
|
|
8
|
+
getResultsSummary = null;
|
|
9
|
+
saveTestResults = null;
|
|
10
|
+
commandsToWrap = null;
|
|
11
|
+
browserstackFolderPath = path.join(os.homedir(), '.browserstack');
|
|
12
|
+
commandsPath = path.join(this.browserstackFolderPath, 'commands.json');
|
|
13
|
+
// don't allow to create instances from it other than through `checkAndGetInstance`
|
|
14
|
+
constructor() { }
|
|
15
|
+
static checkAndGetInstance() {
|
|
16
|
+
if (!AccessibilityScripts.instance) {
|
|
17
|
+
AccessibilityScripts.instance = new AccessibilityScripts();
|
|
18
|
+
AccessibilityScripts.instance.readFromExistingFile();
|
|
19
|
+
}
|
|
20
|
+
return AccessibilityScripts.instance;
|
|
21
|
+
}
|
|
22
|
+
readFromExistingFile() {
|
|
23
|
+
try {
|
|
24
|
+
if (fs.existsSync(this.commandsPath)) {
|
|
25
|
+
const data = fs.readFileSync(this.commandsPath, 'utf8');
|
|
26
|
+
if (data) {
|
|
27
|
+
this.update(JSON.parse(data));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
/* Do nothing */
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
update(data) {
|
|
36
|
+
if (data.scripts) {
|
|
37
|
+
this.performScan = data.scripts.scan;
|
|
38
|
+
this.getResults = data.scripts.getResults;
|
|
39
|
+
this.getResultsSummary = data.scripts.getResultsSummary;
|
|
40
|
+
this.saveTestResults = data.scripts.saveResults;
|
|
41
|
+
}
|
|
42
|
+
if (data.commands && data.commands.length) {
|
|
43
|
+
this.commandsToWrap = data.commands;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
store() {
|
|
47
|
+
if (!fs.existsSync(this.browserstackFolderPath)) {
|
|
48
|
+
fs.mkdirSync(this.browserstackFolderPath);
|
|
49
|
+
}
|
|
50
|
+
fs.writeFileSync(this.commandsPath, JSON.stringify({
|
|
51
|
+
commands: this.commandsToWrap,
|
|
52
|
+
scripts: {
|
|
53
|
+
scan: this.performScan,
|
|
54
|
+
getResults: this.getResults,
|
|
55
|
+
getResultsSummary: this.getResultsSummary,
|
|
56
|
+
saveResults: this.saveTestResults,
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export default AccessibilityScripts.checkAndGetInstance();
|
package/build/service.js
CHANGED
|
@@ -105,6 +105,15 @@ export default class BrowserstackService {
|
|
|
105
105
|
this._insightsHandler = new InsightsHandler(this._browser, this._isAppAutomate(), this._config.framework, this._caps);
|
|
106
106
|
await this._insightsHandler.before();
|
|
107
107
|
}
|
|
108
|
+
if (isBrowserstackSession(this._browser)) {
|
|
109
|
+
try {
|
|
110
|
+
this._accessibilityHandler = new AccessibilityHandler(this._browser, this._caps, this._isAppAutomate(), this._config.framework, this._accessibility, this._options.accessibilityOptions);
|
|
111
|
+
await this._accessibilityHandler.before(sessionId);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
BStackLogger.error(`[Accessibility Test Run] Error in service class before function: ${err}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
108
117
|
/**
|
|
109
118
|
* register command event
|
|
110
119
|
*/
|
|
@@ -131,15 +140,6 @@ export default class BrowserstackService {
|
|
|
131
140
|
}
|
|
132
141
|
}
|
|
133
142
|
}
|
|
134
|
-
if (this._browser && isBrowserstackSession(this._browser)) {
|
|
135
|
-
try {
|
|
136
|
-
this._accessibilityHandler = new AccessibilityHandler(this._browser, this._caps, this._isAppAutomate(), this._config.framework, this._accessibility, this._options.accessibilityOptions);
|
|
137
|
-
await this._accessibilityHandler.before();
|
|
138
|
-
}
|
|
139
|
-
catch (err) {
|
|
140
|
-
BStackLogger.error(`[Accessibility Test Run] Error in service class before function: ${err}`);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
143
|
return await this._printSessionURL();
|
|
144
144
|
}
|
|
145
145
|
/**
|
package/build/util.d.ts
CHANGED
|
@@ -55,6 +55,9 @@ export declare const shouldScanTestForAccessibility: (suiteTitle: string | undef
|
|
|
55
55
|
} | undefined, isCucumber?: boolean) => boolean;
|
|
56
56
|
export declare const isAccessibilityAutomationSession: (accessibilityFlag?: boolean | string) => boolean | "" | undefined;
|
|
57
57
|
export declare const createAccessibilityTestRun: (...args: any) => any;
|
|
58
|
+
export declare const performA11yScan: (browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, isBrowserStackSession?: boolean, isAccessibility?: boolean | string, commandName?: string) => Promise<{
|
|
59
|
+
[key: string]: any;
|
|
60
|
+
} | undefined>;
|
|
58
61
|
export declare const getA11yResults: (browser: WebdriverIO.Browser, isBrowserStackSession?: boolean, isAccessibility?: boolean | string) => Promise<{
|
|
59
62
|
[key: string]: any;
|
|
60
63
|
}[]>;
|
package/build/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAIA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,KAAK,MAAM,YAAY,CAAA;AAI9B,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,OAAO,KAAK,EAAc,UAAU,EAAkB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAwBjE,eAAO,MAAM,sBAAsB;;;;;;;;;CASlC,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAO5C,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC,mBAAmB,UAa1E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,4BAS/J;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,YAAY,WAWtE;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAUpF;AAaD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,aACf,GAAG,SAehC;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,aACX,GAAG,SAYhC;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,gBAiCjI;AAOD,KAAK,SAAS,GAAG;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;CAAE,CAAC;AAC/C,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CA8B3E;AAED,eAAO,MAAM,iBAAiB,YAzGA,GAAG,QAyL/B,CAAA;AAEF,eAAO,MAAM,oBAAoB,gBAAiB,GAAG;;+BAA0D,GAAG,YA0BjH,CAAA;AAED,eAAO,MAAM,8BAA8B,eAAgB,MAAM,GAAG,SAAS,aAAa,MAAM;;;;4BAAgG,OAAO,YAuBtM,CAAA;AAED,eAAO,MAAM,gCAAgC,uBAAwB,OAAO,GAAG,MAAM,6BAQpF,CAAA;AAED,eAAO,MAAM,0BAA0B,YAxOT,GAAG,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/build/util.js
CHANGED
|
@@ -14,9 +14,9 @@ import logPatcher from './logPatcher.js';
|
|
|
14
14
|
import PerformanceTester from './performance-tester.js';
|
|
15
15
|
import { ACCESSIBILITY_API_URL, BROWSER_DESCRIPTION, DATA_ENDPOINT, UPLOAD_LOGS_ADDRESS, UPLOAD_LOGS_ENDPOINT, consoleHolder, TESTOPS_SCREENSHOT_ENV, TESTOPS_BUILD_ID_ENV, PERF_MEASUREMENT_ENV, RERUN_ENV, TESTOPS_BUILD_COMPLETED_ENV, TESTOPS_JWT_ENV } from './constants.js';
|
|
16
16
|
import CrashReporter from './crash-reporter.js';
|
|
17
|
-
import { accessibilityResults, accessibilityResultsSummary } from './scripts/test-event-scripts.js';
|
|
18
17
|
import { BStackLogger } from './bstackLogger.js';
|
|
19
18
|
import { FileStream } from './fileStream.js';
|
|
19
|
+
import AccessibilityScripts from './scripts/accessibility-scripts.js';
|
|
20
20
|
import UsageStats from './testOps/usageStats.js';
|
|
21
21
|
import TestOpsConfig from './testOps/testOpsConfig.js';
|
|
22
22
|
const pGitconfig = promisify(gitconfig);
|
|
@@ -357,7 +357,10 @@ export const createAccessibilityTestRun = errorHandler(async function createAcce
|
|
|
357
357
|
'source': {
|
|
358
358
|
frameworkName: 'WebdriverIO-' + config.framework,
|
|
359
359
|
frameworkVersion: bsConfig.bstackServiceVersion,
|
|
360
|
-
sdkVersion: bsConfig.bstackServiceVersion
|
|
360
|
+
sdkVersion: bsConfig.bstackServiceVersion,
|
|
361
|
+
language: 'ECMAScript',
|
|
362
|
+
testFramework: 'webdriverIO',
|
|
363
|
+
testFrameworkVersion: bsConfig.bstackServiceVersion
|
|
361
364
|
},
|
|
362
365
|
'settings': bsConfig.accessibilityOptions || {},
|
|
363
366
|
'versionControl': await getGitMetaData(),
|
|
@@ -377,7 +380,7 @@ export const createAccessibilityTestRun = errorHandler(async function createAcce
|
|
|
377
380
|
password: getBrowserStackKey(config),
|
|
378
381
|
};
|
|
379
382
|
try {
|
|
380
|
-
const response = await nodeRequest('POST', 'test_runs', requestOptions, ACCESSIBILITY_API_URL);
|
|
383
|
+
const response = await nodeRequest('POST', 'v2/test_runs', requestOptions, ACCESSIBILITY_API_URL);
|
|
381
384
|
BStackLogger.debug(`[Create Accessibility Test Run] Success response: ${JSON.stringify(response)}`);
|
|
382
385
|
if (response.data.accessibilityToken) {
|
|
383
386
|
process.env.BSTACK_A11Y_JWT = response.data.accessibilityToken;
|
|
@@ -386,6 +389,10 @@ export const createAccessibilityTestRun = errorHandler(async function createAcce
|
|
|
386
389
|
process.env.BS_A11Y_TEST_RUN_ID = response.data.id;
|
|
387
390
|
}
|
|
388
391
|
BStackLogger.debug(`BrowserStack Accessibility Automation Test Run ID: ${response.data.id}`);
|
|
392
|
+
if (response.data) {
|
|
393
|
+
AccessibilityScripts.update(response.data);
|
|
394
|
+
AccessibilityScripts.store();
|
|
395
|
+
}
|
|
389
396
|
return response.data.scannerVersion;
|
|
390
397
|
}
|
|
391
398
|
catch (error) {
|
|
@@ -407,6 +414,25 @@ export const createAccessibilityTestRun = errorHandler(async function createAcce
|
|
|
407
414
|
return null;
|
|
408
415
|
}
|
|
409
416
|
});
|
|
417
|
+
export const performA11yScan = async (browser, isBrowserStackSession, isAccessibility, commandName) => {
|
|
418
|
+
if (!isBrowserStackSession) {
|
|
419
|
+
BStackLogger.warn('Not a BrowserStack Automate session, cannot perform Accessibility scan.');
|
|
420
|
+
return; // since we are running only on Automate as of now
|
|
421
|
+
}
|
|
422
|
+
if (!isAccessibilityAutomationSession(isAccessibility)) {
|
|
423
|
+
BStackLogger.warn('Not an Accessibility Automation session, cannot perform Accessibility scan.');
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
try {
|
|
427
|
+
const results = await browser.executeAsync(AccessibilityScripts.performScan, { 'method': commandName || '' });
|
|
428
|
+
BStackLogger.debug(util.format(results));
|
|
429
|
+
return results;
|
|
430
|
+
}
|
|
431
|
+
catch (err) {
|
|
432
|
+
BStackLogger.error('Accessibility Scan could not be performed : ' + err);
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
};
|
|
410
436
|
export const getA11yResults = async (browser, isBrowserStackSession, isAccessibility) => {
|
|
411
437
|
if (!isBrowserStackSession) {
|
|
412
438
|
BStackLogger.warn('Not a BrowserStack Automate session, cannot retrieve Accessibility results.');
|
|
@@ -417,7 +443,9 @@ export const getA11yResults = async (browser, isBrowserStackSession, isAccessibi
|
|
|
417
443
|
return [];
|
|
418
444
|
}
|
|
419
445
|
try {
|
|
420
|
-
|
|
446
|
+
BStackLogger.debug('Performing scan before getting results');
|
|
447
|
+
await performA11yScan(browser, isBrowserStackSession, isAccessibility);
|
|
448
|
+
const results = await browser.executeAsync(AccessibilityScripts.getResults);
|
|
421
449
|
return results;
|
|
422
450
|
}
|
|
423
451
|
catch {
|
|
@@ -434,7 +462,9 @@ export const getA11yResultsSummary = async (browser, isBrowserStackSession, isAc
|
|
|
434
462
|
return {};
|
|
435
463
|
}
|
|
436
464
|
try {
|
|
437
|
-
|
|
465
|
+
BStackLogger.debug('Performing scan before getting results summary');
|
|
466
|
+
await performA11yScan(browser, isBrowserStackSession, isAccessibility);
|
|
467
|
+
const summaryResults = await browser.executeAsync(AccessibilityScripts.getResultsSummary);
|
|
438
468
|
return summaryResults;
|
|
439
469
|
}
|
|
440
470
|
catch {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdio/browserstack-service",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.34.0",
|
|
4
4
|
"description": "WebdriverIO service for better Browserstack integration",
|
|
5
5
|
"author": "Adam Bjerstedt <abjerstedt@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-browserstack-service",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"gitconfiglocal": "^2.1.0",
|
|
45
45
|
"got": "^12.6.1",
|
|
46
46
|
"uuid": "^9.0.0",
|
|
47
|
-
"webdriverio": "8.
|
|
47
|
+
"webdriverio": "8.34.0",
|
|
48
48
|
"winston-transport": "^4.5.0",
|
|
49
49
|
"yauzl": "^3.0.0"
|
|
50
50
|
},
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/node": "^20.1.0",
|
|
56
|
-
"@wdio/globals": "8.
|
|
56
|
+
"@wdio/globals": "8.34.0"
|
|
57
57
|
},
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "72856f9e3e4c6ae0750a1d3f17b137724a30e4e5"
|
|
62
62
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare function testStartEvent(): void;
|
|
2
|
-
export declare function testForceStop(): void;
|
|
3
|
-
export declare function testStop(this: any): void;
|
|
4
|
-
export declare function accessibilityResults(): Promise<Array<{
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
}>>;
|
|
7
|
-
export declare function accessibilityResultsSummary(): Promise<{
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
}>;
|
|
10
|
-
//# sourceMappingURL=test-event-scripts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-event-scripts.d.ts","sourceRoot":"","sources":["../../src/scripts/test-event-scripts.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,SAY7B;AAED,wBAAgB,aAAa,SAG5B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,QAgBjC;AAED,wBAAgB,oBAAoB,IAAK,OAAO,CAAC,KAAK,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE,CAAC,CAAC,CAc/E;AAED,wBAAgB,2BAA2B,IAAK,OAAO,CAAC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE,CAAC,CAc/E"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
export function testStartEvent() {
|
|
2
|
-
const callback = arguments[arguments.length - 1];
|
|
3
|
-
const fn = () => {
|
|
4
|
-
window.addEventListener('A11Y_TAP_STARTED', fn2);
|
|
5
|
-
const e = new CustomEvent('A11Y_FORCE_START');
|
|
6
|
-
window.dispatchEvent(e);
|
|
7
|
-
};
|
|
8
|
-
const fn2 = () => {
|
|
9
|
-
window.removeEventListener('A11Y_TAP_STARTED', fn);
|
|
10
|
-
callback();
|
|
11
|
-
};
|
|
12
|
-
fn();
|
|
13
|
-
}
|
|
14
|
-
export function testForceStop() {
|
|
15
|
-
const e = new CustomEvent('A11Y_FORCE_STOP');
|
|
16
|
-
window.dispatchEvent(e);
|
|
17
|
-
}
|
|
18
|
-
export function testStop() {
|
|
19
|
-
const callback = arguments[arguments.length - 1];
|
|
20
|
-
this.res = null;
|
|
21
|
-
if (arguments[0].saveResults) {
|
|
22
|
-
window.addEventListener('A11Y_TAP_TRANSPORTER', (event) => {
|
|
23
|
-
window.tapTransporterData = event.detail;
|
|
24
|
-
this.res = window.tapTransporterData;
|
|
25
|
-
callback(this.res);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
const e = new CustomEvent('A11Y_TEST_END', { detail: arguments[0] });
|
|
29
|
-
window.dispatchEvent(e);
|
|
30
|
-
if (arguments[0].saveResults !== true) {
|
|
31
|
-
callback();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
export function accessibilityResults() {
|
|
35
|
-
return new Promise(function (resolve, reject) {
|
|
36
|
-
try {
|
|
37
|
-
const event = new CustomEvent('A11Y_TAP_GET_RESULTS');
|
|
38
|
-
const fn = function (event) {
|
|
39
|
-
window.removeEventListener('A11Y_RESULTS_RESPONSE', fn);
|
|
40
|
-
resolve(event.detail.data);
|
|
41
|
-
};
|
|
42
|
-
window.addEventListener('A11Y_RESULTS_RESPONSE', fn);
|
|
43
|
-
window.dispatchEvent(event);
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
reject();
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
export function accessibilityResultsSummary() {
|
|
51
|
-
return new Promise(function (resolve, reject) {
|
|
52
|
-
try {
|
|
53
|
-
const event = new CustomEvent('A11Y_TAP_GET_RESULTS_SUMMARY');
|
|
54
|
-
const fn = function (event) {
|
|
55
|
-
window.removeEventListener('A11Y_RESULTS_SUMMARY_RESPONSE', fn);
|
|
56
|
-
resolve(event.detail.summary);
|
|
57
|
-
};
|
|
58
|
-
window.addEventListener('A11Y_RESULTS_SUMMARY_RESPONSE', fn);
|
|
59
|
-
window.dispatchEvent(event);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
reject();
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|