@wdio/browserstack-service 8.47.1 → 8.48.3
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.map +1 -1
- package/build/accessibility-handler.js +13 -11
- package/build/ai-handler.d.ts.map +1 -1
- package/build/ai-handler.js +11 -0
- package/build/cli/cliLogger.d.ts +1 -0
- package/build/cli/cliLogger.d.ts.map +1 -1
- package/build/cli/cliLogger.js +23 -12
- package/build/cli/cliUtils.d.ts +18 -0
- package/build/cli/cliUtils.d.ts.map +1 -1
- package/build/cli/cliUtils.js +31 -1
- package/build/cli/frameworks/wdioMochaTestFramework.d.ts.map +1 -1
- package/build/cli/frameworks/wdioMochaTestFramework.js +4 -2
- package/build/cli/grpcClient.d.ts +19 -3
- package/build/cli/grpcClient.d.ts.map +1 -1
- package/build/cli/grpcClient.js +133 -21
- package/build/cli/index.d.ts +2 -0
- package/build/cli/index.d.ts.map +1 -1
- package/build/cli/index.js +52 -4
- package/build/cli/modules/accessibilityModule.d.ts +14 -1
- package/build/cli/modules/accessibilityModule.d.ts.map +1 -1
- package/build/cli/modules/accessibilityModule.js +113 -14
- package/build/constants.d.ts +28 -0
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +37 -1
- package/build/exitHandler.d.ts +1 -1
- package/build/exitHandler.d.ts.map +1 -1
- package/build/exitHandler.js +6 -5
- package/build/insights-handler.d.ts.map +1 -1
- package/build/insights-handler.js +33 -7
- package/build/instrumentation/funnelInstrumentation.d.ts +2 -2
- package/build/instrumentation/funnelInstrumentation.d.ts.map +1 -1
- package/build/instrumentation/funnelInstrumentation.js +30 -8
- package/build/instrumentation/performance/constants.d.ts +64 -0
- package/build/instrumentation/performance/constants.d.ts.map +1 -1
- package/build/instrumentation/performance/constants.js +73 -2
- package/build/instrumentation/performance/performance-tester.d.ts +11 -0
- package/build/instrumentation/performance/performance-tester.d.ts.map +1 -1
- package/build/instrumentation/performance/performance-tester.js +115 -12
- package/build/launcher.d.ts +1 -0
- package/build/launcher.d.ts.map +1 -1
- package/build/launcher.js +151 -6
- package/build/service.d.ts.map +1 -1
- package/build/service.js +77 -5
- package/build/testorchestration/apply-orchestration.d.ts +7 -0
- package/build/testorchestration/apply-orchestration.d.ts.map +1 -0
- package/build/testorchestration/apply-orchestration.js +42 -0
- package/build/testorchestration/helpers.d.ts +20 -0
- package/build/testorchestration/helpers.d.ts.map +1 -0
- package/build/testorchestration/helpers.js +412 -0
- package/build/testorchestration/request-utils.d.ts +23 -0
- package/build/testorchestration/request-utils.d.ts.map +1 -0
- package/build/testorchestration/request-utils.js +81 -0
- package/build/testorchestration/test-ordering-server.d.ts +33 -0
- package/build/testorchestration/test-ordering-server.d.ts.map +1 -0
- package/build/testorchestration/test-ordering-server.js +168 -0
- package/build/testorchestration/testorcherstrationhandler.d.ts +50 -0
- package/build/testorchestration/testorcherstrationhandler.d.ts.map +1 -0
- package/build/testorchestration/testorcherstrationhandler.js +133 -0
- package/build/testorchestration/testorcherstrationutils.d.ts +86 -0
- package/build/testorchestration/testorcherstrationutils.d.ts.map +1 -0
- package/build/testorchestration/testorcherstrationutils.js +379 -0
- package/build/types.d.ts +21 -0
- package/build/types.d.ts.map +1 -1
- package/build/util.d.ts +33 -4
- package/build/util.d.ts.map +1 -1
- package/build/util.js +112 -18
- package/package.json +3 -2
- package/tsconfig.prod.tsbuildinfo +1 -1
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { BStackLogger } from '../bstackLogger.js';
|
|
3
|
+
import { isValidEnabledValue } from '../util.js';
|
|
4
|
+
const RUN_SMART_SELECTION = 'runSmartSelection';
|
|
5
|
+
const ALLOWED_ORCHESTRATION_KEYS = [
|
|
6
|
+
RUN_SMART_SELECTION
|
|
7
|
+
];
|
|
8
|
+
/**
|
|
9
|
+
* Class to handle test ordering functionality
|
|
10
|
+
*/
|
|
11
|
+
class TestOrdering {
|
|
12
|
+
enabled;
|
|
13
|
+
name;
|
|
14
|
+
constructor() {
|
|
15
|
+
this.enabled = false;
|
|
16
|
+
this.name = null;
|
|
17
|
+
}
|
|
18
|
+
enable(name) {
|
|
19
|
+
this.enabled = true;
|
|
20
|
+
this.name = name;
|
|
21
|
+
}
|
|
22
|
+
disable() {
|
|
23
|
+
this.enabled = false;
|
|
24
|
+
this.name = null;
|
|
25
|
+
}
|
|
26
|
+
getEnabled() {
|
|
27
|
+
return this.enabled;
|
|
28
|
+
}
|
|
29
|
+
getName() {
|
|
30
|
+
return this.name;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Utility class for test orchestration
|
|
35
|
+
*/
|
|
36
|
+
export class OrchestrationUtils {
|
|
37
|
+
static _instance = null;
|
|
38
|
+
runSmartSelection;
|
|
39
|
+
smartSelectionMode;
|
|
40
|
+
testOrdering;
|
|
41
|
+
smartSelectionSource;
|
|
42
|
+
projectName;
|
|
43
|
+
buildName;
|
|
44
|
+
buildIdentifier;
|
|
45
|
+
/**
|
|
46
|
+
* @param config Configuration object
|
|
47
|
+
*/
|
|
48
|
+
constructor(config) {
|
|
49
|
+
this.runSmartSelection = false;
|
|
50
|
+
this.smartSelectionMode = 'relevantFirst';
|
|
51
|
+
this.testOrdering = new TestOrdering();
|
|
52
|
+
this.smartSelectionSource = null; // Store source paths if provided
|
|
53
|
+
// Check both possible configuration paths: direct or nested in services
|
|
54
|
+
let testOrchOptions = config.testOrchestrationOptions || {};
|
|
55
|
+
// If not found at top level, check if it's in the browserstack service config
|
|
56
|
+
if (Object.keys(testOrchOptions).length === 0 && config.services && Array.isArray(config.services)) {
|
|
57
|
+
// Look for browserstack service configuration
|
|
58
|
+
for (const service of config.services) {
|
|
59
|
+
if (Array.isArray(service) && service[0] === 'browserstack' && service[1] && service[1].testOrchestrationOptions) {
|
|
60
|
+
testOrchOptions = service[1].testOrchestrationOptions;
|
|
61
|
+
BStackLogger.debug('[constructor] Found testOrchestrationOptions in browserstack service config');
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Try to get runSmartSelection options
|
|
67
|
+
const runSmartSelectionOpts = testOrchOptions[RUN_SMART_SELECTION] || {};
|
|
68
|
+
this._setRunSmartSelection(runSmartSelectionOpts.enabled || false, runSmartSelectionOpts.mode || 'relevantFirst', runSmartSelectionOpts.source || null);
|
|
69
|
+
// Extract build details from capabilities
|
|
70
|
+
this._extractBuildDetails(config);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Extract build details from capabilities
|
|
74
|
+
*/
|
|
75
|
+
_extractBuildDetails(config) {
|
|
76
|
+
try {
|
|
77
|
+
const capabilities = config.capabilities;
|
|
78
|
+
if (Array.isArray(capabilities)) {
|
|
79
|
+
capabilities.forEach((capability) => {
|
|
80
|
+
if (!capability['bstack:options']) {
|
|
81
|
+
// Extract from legacy format
|
|
82
|
+
this.buildIdentifier = capability['browserstack.buildIdentifier']?.toString();
|
|
83
|
+
this.buildName = capability.build?.toString();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Extract from bstack:options format
|
|
87
|
+
this.buildName = capability['bstack:options'].buildName;
|
|
88
|
+
this.projectName = capability['bstack:options'].projectName;
|
|
89
|
+
this.buildIdentifier = capability['bstack:options'].buildIdentifier;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else if (typeof capabilities === 'object' && capabilities) {
|
|
94
|
+
// Handle multiremote capabilities
|
|
95
|
+
Object.entries(capabilities).forEach(([, caps]) => {
|
|
96
|
+
if (caps.capabilities) {
|
|
97
|
+
if (!caps.capabilities['bstack:options']) {
|
|
98
|
+
this.buildIdentifier = caps.capabilities['browserstack.buildIdentifier'];
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const bstackOptions = caps.capabilities['bstack:options'];
|
|
102
|
+
this.buildName = bstackOptions.buildName;
|
|
103
|
+
this.projectName = bstackOptions.projectName;
|
|
104
|
+
this.buildIdentifier = bstackOptions.buildIdentifier;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
BStackLogger.debug(`[_extractBuildDetails] Extracted - projectName: ${this.projectName}, buildName: ${this.buildName}, buildIdentifier: ${this.buildIdentifier}`);
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
BStackLogger.error(`[_extractBuildDetails] ${e}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get or create an instance of OrchestrationUtils
|
|
117
|
+
*/
|
|
118
|
+
static getInstance(config) {
|
|
119
|
+
if (!OrchestrationUtils._instance && config) {
|
|
120
|
+
OrchestrationUtils._instance = new OrchestrationUtils(config);
|
|
121
|
+
}
|
|
122
|
+
return OrchestrationUtils._instance;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get orchestration data from config
|
|
126
|
+
*/
|
|
127
|
+
static getOrchestrationData(config) {
|
|
128
|
+
const orchestrationData = config.testOrchestrationOptions || {};
|
|
129
|
+
const result = {};
|
|
130
|
+
Object.entries(orchestrationData).forEach(([key, value]) => {
|
|
131
|
+
if (ALLOWED_ORCHESTRATION_KEYS.includes(key)) {
|
|
132
|
+
result[key] = value;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get run smart selection setting
|
|
139
|
+
*/
|
|
140
|
+
getRunSmartSelection() {
|
|
141
|
+
return this.runSmartSelection;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get smart selection mode
|
|
145
|
+
*/
|
|
146
|
+
getSmartSelectionMode() {
|
|
147
|
+
return this.smartSelectionMode;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get smart selection source
|
|
151
|
+
*/
|
|
152
|
+
getSmartSelectionSource() {
|
|
153
|
+
return this.smartSelectionSource;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get project name
|
|
157
|
+
*/
|
|
158
|
+
getProjectName() {
|
|
159
|
+
return this.projectName;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get build name
|
|
163
|
+
*/
|
|
164
|
+
getBuildName() {
|
|
165
|
+
return this.buildName;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get build identifier
|
|
169
|
+
*/
|
|
170
|
+
getBuildIdentifier() {
|
|
171
|
+
return this.buildIdentifier;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Set build details
|
|
175
|
+
*/
|
|
176
|
+
setBuildDetails(projectName, buildName, buildIdentifier) {
|
|
177
|
+
this.projectName = projectName;
|
|
178
|
+
this.buildName = buildName;
|
|
179
|
+
this.buildIdentifier = buildIdentifier;
|
|
180
|
+
BStackLogger.debug(`[setBuildDetails] Set - projectName: ${this.projectName}, buildName: ${this.buildName}, buildIdentifier: ${this.buildIdentifier}`);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Set run smart selection
|
|
184
|
+
*/
|
|
185
|
+
_setRunSmartSelection(enabled, mode, source = null) {
|
|
186
|
+
try {
|
|
187
|
+
// Properly validate enabled value - only accept true boolean or string "true"
|
|
188
|
+
this.runSmartSelection = isValidEnabledValue(enabled);
|
|
189
|
+
this.smartSelectionMode = mode;
|
|
190
|
+
this.smartSelectionSource = [];
|
|
191
|
+
// Log the configuration for debugging
|
|
192
|
+
BStackLogger.debug(`Setting runSmartSelection: enabled=${this.runSmartSelection}, mode=${this.smartSelectionMode}`);
|
|
193
|
+
if (this.runSmartSelection) {
|
|
194
|
+
// Mode validation - only when smart selection is enabled
|
|
195
|
+
const validModes = ['relevantFirst', 'relevantOnly'];
|
|
196
|
+
if (!validModes.includes(this.smartSelectionMode)) {
|
|
197
|
+
BStackLogger.warn(`Invalid smart selection mode '${this.smartSelectionMode}' provided. Defaulting to 'relevantFirst'.`);
|
|
198
|
+
this.smartSelectionMode = 'relevantFirst';
|
|
199
|
+
}
|
|
200
|
+
if (source === null) {
|
|
201
|
+
this.smartSelectionSource = null;
|
|
202
|
+
BStackLogger.debug('No source provided for smart selection; defaulting to null.');
|
|
203
|
+
}
|
|
204
|
+
else if (Array.isArray(source)) {
|
|
205
|
+
this.smartSelectionSource = source;
|
|
206
|
+
BStackLogger.debug(`Smart selection source set to array: ${JSON.stringify(source)}`);
|
|
207
|
+
}
|
|
208
|
+
else if (typeof source === 'string' && source.endsWith('.json')) {
|
|
209
|
+
this.smartSelectionSource = this._loadSourceFromFile(source) || [];
|
|
210
|
+
BStackLogger.debug(`Smart selection source loaded from file: ${source}`);
|
|
211
|
+
}
|
|
212
|
+
this._setTestOrdering();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
BStackLogger.error(`[_setRunSmartSelection] ${e}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Parse JSON source configuration file and format it for smart selection.
|
|
221
|
+
*
|
|
222
|
+
* @param filePath - Path to the JSON configuration file
|
|
223
|
+
* @returns Formatted list of repository configurations
|
|
224
|
+
*/
|
|
225
|
+
_loadSourceFromFile(filePath) {
|
|
226
|
+
if (!fs.existsSync(filePath)) {
|
|
227
|
+
BStackLogger.error(`Source file '${filePath}' does not exist.`);
|
|
228
|
+
return [];
|
|
229
|
+
}
|
|
230
|
+
let data = null;
|
|
231
|
+
try {
|
|
232
|
+
const fileContent = fs.readFileSync(filePath, 'utf8');
|
|
233
|
+
data = JSON.parse(fileContent);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
BStackLogger.error(`Error parsing JSON from source file '${filePath}': ${error.message}`);
|
|
237
|
+
return [];
|
|
238
|
+
}
|
|
239
|
+
// Cache feature branch mappings from env to avoid repeated parsing
|
|
240
|
+
let featureBranchEnvMap = null;
|
|
241
|
+
const loadFeatureBranchMaps = () => {
|
|
242
|
+
let envMap = {};
|
|
243
|
+
try {
|
|
244
|
+
const envVar = process.env.BROWSERSTACK_ORCHESTRATION_SMART_SELECTION_FEATURE_BRANCHES || '';
|
|
245
|
+
envMap = envVar.startsWith('{') && envVar.endsWith('}')
|
|
246
|
+
? JSON.parse(envVar)
|
|
247
|
+
: envVar.split(',')
|
|
248
|
+
.filter(item => item.includes(':'))
|
|
249
|
+
.reduce((acc, item) => {
|
|
250
|
+
const [key, value] = item.split(':');
|
|
251
|
+
if (key && value) {
|
|
252
|
+
acc[key.trim()] = value.trim();
|
|
253
|
+
}
|
|
254
|
+
return acc;
|
|
255
|
+
}, {});
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
BStackLogger.error(`Error parsing feature branch mappings: ${error.message}`);
|
|
259
|
+
}
|
|
260
|
+
BStackLogger.debug(`Feature branch mappings from env: ${JSON.stringify(envMap)}`);
|
|
261
|
+
return envMap;
|
|
262
|
+
};
|
|
263
|
+
featureBranchEnvMap = loadFeatureBranchMaps();
|
|
264
|
+
const getFeatureBranch = (name, repoInfo) => {
|
|
265
|
+
// 1. Check in environment variable map
|
|
266
|
+
if (featureBranchEnvMap && featureBranchEnvMap[name]) {
|
|
267
|
+
return featureBranchEnvMap[name];
|
|
268
|
+
}
|
|
269
|
+
// 2. Check in repo_info
|
|
270
|
+
if (repoInfo.featureBranch) {
|
|
271
|
+
return repoInfo.featureBranch;
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
};
|
|
275
|
+
if (typeof data === 'object' && data !== null && !Array.isArray(data)) {
|
|
276
|
+
const formattedData = [];
|
|
277
|
+
const namePattern = /^[A-Z0-9_]+$/;
|
|
278
|
+
for (const [name, repoInfo] of Object.entries(data)) {
|
|
279
|
+
if (typeof repoInfo !== 'object' || repoInfo === null) {
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
const typedRepoInfo = repoInfo;
|
|
283
|
+
// Validate that url is a string and is present
|
|
284
|
+
if (!typedRepoInfo.url || typeof typedRepoInfo.url !== 'string') {
|
|
285
|
+
BStackLogger.warn(`Repository URL is missing or invalid for source '${name}': ${JSON.stringify(repoInfo)}`);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
// Validate that baseBranch, if provided, is a string
|
|
289
|
+
if (typedRepoInfo.baseBranch !== undefined && typeof typedRepoInfo.baseBranch !== 'string') {
|
|
290
|
+
BStackLogger.warn(`Base branch must be a string for source '${name}': ${JSON.stringify(repoInfo)}`);
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
// Validate name
|
|
294
|
+
if (!namePattern.test(name)) {
|
|
295
|
+
BStackLogger.warn(`Invalid source identifier format for '${name}': ${JSON.stringify(repoInfo)}`);
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
// Validate length
|
|
299
|
+
if (name.length > 30 || name.length < 1) {
|
|
300
|
+
BStackLogger.warn(`Source identifier '${name}' must have a length between 1 and 30 characters.`);
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const featureBranch = getFeatureBranch(name, typedRepoInfo);
|
|
304
|
+
// Validate that featureBranch, if provided, is a string
|
|
305
|
+
if (featureBranch !== undefined && featureBranch !== null && typeof featureBranch !== 'string') {
|
|
306
|
+
BStackLogger.warn(`Feature branch must be a string for source '${name}': ${JSON.stringify(repoInfo)}`);
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
// Create filtered repo info object with only allowed fields
|
|
310
|
+
const filteredRepoInfo = {
|
|
311
|
+
name,
|
|
312
|
+
url: typedRepoInfo.url,
|
|
313
|
+
featureBranch: featureBranch ?? undefined
|
|
314
|
+
};
|
|
315
|
+
// Only add baseBranch if it's provided
|
|
316
|
+
if (typedRepoInfo.baseBranch) {
|
|
317
|
+
filteredRepoInfo.baseBranch = typedRepoInfo.baseBranch;
|
|
318
|
+
}
|
|
319
|
+
if (!filteredRepoInfo.featureBranch || filteredRepoInfo.featureBranch === '') {
|
|
320
|
+
BStackLogger.warn(`Feature branch not specified for source '${name}': ${JSON.stringify(repoInfo)}`);
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (filteredRepoInfo.baseBranch && filteredRepoInfo.baseBranch === filteredRepoInfo.featureBranch) {
|
|
324
|
+
BStackLogger.warn(`Feature branch and base branch cannot be the same for source '${name}': ${JSON.stringify(repoInfo)}`);
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
formattedData.push(filteredRepoInfo);
|
|
328
|
+
}
|
|
329
|
+
return formattedData;
|
|
330
|
+
}
|
|
331
|
+
return Array.isArray(data) ? data : [];
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Set test ordering based on priorities
|
|
335
|
+
*/
|
|
336
|
+
_setTestOrdering() {
|
|
337
|
+
if (this.runSmartSelection) { // Highest priority
|
|
338
|
+
this.testOrdering.enable(RUN_SMART_SELECTION);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
this.testOrdering.disable();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get test ordering name
|
|
346
|
+
*/
|
|
347
|
+
getTestOrderingName() {
|
|
348
|
+
if (this.testOrdering.getEnabled()) {
|
|
349
|
+
return this.testOrdering.getName();
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Get test orchestration metadata
|
|
355
|
+
*/
|
|
356
|
+
getTestOrchestrationMetadata() {
|
|
357
|
+
const data = {
|
|
358
|
+
'run_smart_selection': {
|
|
359
|
+
'enabled': this.getRunSmartSelection(),
|
|
360
|
+
'mode': this.getSmartSelectionMode(),
|
|
361
|
+
'source': this.getSmartSelectionSource()
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
return data;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Get build start data
|
|
368
|
+
*/
|
|
369
|
+
getBuildStartData() {
|
|
370
|
+
const testOrchestrationData = {};
|
|
371
|
+
testOrchestrationData.run_smart_selection = {
|
|
372
|
+
'enabled': this.getRunSmartSelection(),
|
|
373
|
+
'mode': this.getSmartSelectionMode()
|
|
374
|
+
// Not sending "source" to TH builds
|
|
375
|
+
};
|
|
376
|
+
return testOrchestrationData;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
export default OrchestrationUtils;
|
package/build/types.d.ts
CHANGED
|
@@ -45,6 +45,17 @@ export interface TestReportingOptions {
|
|
|
45
45
|
user?: string;
|
|
46
46
|
key?: string;
|
|
47
47
|
}
|
|
48
|
+
export interface TestManagementOptions {
|
|
49
|
+
testPlanId?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface RunSmartSelectionOptions {
|
|
52
|
+
enabled?: boolean;
|
|
53
|
+
mode?: string;
|
|
54
|
+
source?: string | string[];
|
|
55
|
+
}
|
|
56
|
+
export interface TestOrchestrationOptions {
|
|
57
|
+
runSmartSelection?: RunSmartSelectionOptions;
|
|
58
|
+
}
|
|
48
59
|
export interface BrowserstackOptions extends Options.Testrunner {
|
|
49
60
|
selfHeal?: boolean;
|
|
50
61
|
}
|
|
@@ -82,6 +93,11 @@ export interface BrowserstackConfig {
|
|
|
82
93
|
* For e.g. buildName, projectName, BrowserStack access credentials, etc.
|
|
83
94
|
*/
|
|
84
95
|
testReportingOptions?: TestReportingOptions;
|
|
96
|
+
/**
|
|
97
|
+
* Set the Test Management related config options under this key.
|
|
98
|
+
* Currently supports testPlanId.
|
|
99
|
+
*/
|
|
100
|
+
testManagementOptions?: TestManagementOptions;
|
|
85
101
|
/**
|
|
86
102
|
* Set this to true to enable BrowserStack Percy which will take screenshots
|
|
87
103
|
* and snapshots for your tests run on Browserstack
|
|
@@ -187,6 +203,11 @@ export interface BrowserstackConfig {
|
|
|
187
203
|
* @default false
|
|
188
204
|
*/
|
|
189
205
|
ipWhiteListing?: boolean;
|
|
206
|
+
/**
|
|
207
|
+
* Set the Test Orchestration related config options under this key.
|
|
208
|
+
* For e.g. runSmartSelection configurations, etc.
|
|
209
|
+
*/
|
|
210
|
+
testOrchestrationOptions?: TestOrchestrationOptions;
|
|
190
211
|
}
|
|
191
212
|
/**
|
|
192
213
|
* Observability types
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,WAAW,eAAe;IAE5B,kBAAkB,EAAE;QAEhB,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;CACJ;AAED,MAAM,WAAW,yBAAyB;IACtC,GAAG,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE1F,MAAM,MAAM,SAAS,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,GAAG;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAGD,MAAM,WAAW,oBAAoB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAoB,SAAQ,OAAO,CAAC,UAAU;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B;;;;;OAKG;IACF,eAAe,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;MAEE;IACF,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB;;;;;MAKE;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;MAGE;IACF,oBAAoB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE,CAAC;IAC/C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAChB,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,YAAY,EAAE,YAAY,CAAC,gBAAgB,EAC3C,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,KACjB,MAAM,CAAA;IACX;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;MAIE;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;MAGE;IACF,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/build/util.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import https from 'node:https';
|
|
3
|
+
import type { AfterCommandArgs, BeforeCommandArgs } from '@wdio/reporter';
|
|
3
4
|
import type { Capabilities, Frameworks, Options } from '@wdio/types';
|
|
4
|
-
import type {
|
|
5
|
-
import type { Method } from 'got';
|
|
5
|
+
import type { StartBinSessionResponse } from '@browserstack/wdio-browserstack-service';
|
|
6
6
|
import type { ColorName } from 'chalk';
|
|
7
|
-
import type {
|
|
7
|
+
import type { Method } from 'got';
|
|
8
8
|
import type { ITestCaseHookParameter } from './cucumber-types.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { BrowserstackConfig, LaunchResponse, UploadType } from './types.js';
|
|
10
10
|
export type GitMetaData = {
|
|
11
11
|
name: string;
|
|
12
12
|
sha: string;
|
|
@@ -140,6 +140,13 @@ export declare function getUniqueIdentifier(test: Frameworks.Test, framework?: s
|
|
|
140
140
|
export declare function getUniqueIdentifierForCucumber(world: ITestCaseHookParameter): string;
|
|
141
141
|
export declare function getCloudProvider(browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser): string;
|
|
142
142
|
export declare function isBrowserstackSession(browser?: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser): boolean | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* Sets a BrowserStack annotation with the provided message
|
|
145
|
+
* @param browser - The WebDriver browser instance
|
|
146
|
+
* @param message - The annotation message to set
|
|
147
|
+
* @param isAccessibilityEnabled - Whether accessibility is enabled for the session
|
|
148
|
+
*/
|
|
149
|
+
export declare function setBrowserstackAnnotation(browser: WebdriverIO.Browser, message: string, isAccessibilityEnabled: boolean): Promise<void>;
|
|
143
150
|
export declare function getScenarioExamples(world: ITestCaseHookParameter): string[] | undefined;
|
|
144
151
|
export declare function removeAnsiColors(message: string): string;
|
|
145
152
|
export declare function getLogTag(eventType: string): string;
|
|
@@ -161,6 +168,7 @@ export declare function getObservabilityKey(options: BrowserstackConfig & Option
|
|
|
161
168
|
export declare function getObservabilityProject(options: BrowserstackConfig & Options.Testrunner, bstackProjectName?: string): string | undefined;
|
|
162
169
|
export declare function getObservabilityBuild(options: BrowserstackConfig & Options.Testrunner, bstackBuildName?: string): string;
|
|
163
170
|
export declare function getObservabilityBuildTags(options: BrowserstackConfig & Options.Testrunner, bstackBuildTag?: string): string[];
|
|
171
|
+
export declare function getTestPlanId(options: BrowserstackConfig & Options.Testrunner): string | undefined;
|
|
164
172
|
export declare function getBrowserStackUser(config: Options.Testrunner): string | undefined;
|
|
165
173
|
export declare function getBrowserStackKey(config: Options.Testrunner): string | undefined;
|
|
166
174
|
export declare function isUndefined(value: any): boolean;
|
|
@@ -198,6 +206,11 @@ type PollingResult = {
|
|
|
198
206
|
};
|
|
199
207
|
export declare function pollApi(url: string, params: Record<string, any>, headers: Record<string, string>, upperLimit: number, startTime?: number): Promise<PollingResult>;
|
|
200
208
|
export declare function getBooleanValueFromString(value: string | undefined): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Validate boolean value from mixed types (boolean or string)
|
|
211
|
+
* Only accepts true boolean or string "true" (case insensitive)
|
|
212
|
+
*/
|
|
213
|
+
export declare function isValidEnabledValue(value: boolean | string | undefined): boolean;
|
|
201
214
|
export declare function mergeDeep(target: Record<string, any>, ...sources: any[]): Record<string, any>;
|
|
202
215
|
export declare function mergeChromeOptions(base: Capabilities.ChromeOptions, override: Partial<Capabilities.ChromeOptions>): Capabilities.ChromeOptions;
|
|
203
216
|
export declare function isNullOrEmpty(string: any): boolean;
|
|
@@ -208,5 +221,21 @@ export declare function createDir(dir: string): void;
|
|
|
208
221
|
export declare function isWritable(dirPath: string): boolean;
|
|
209
222
|
export declare function setReadWriteAccess(dirPath: string): void;
|
|
210
223
|
export declare function getMochaTestHierarchy(test: Frameworks.Test): string[];
|
|
224
|
+
/**
|
|
225
|
+
* Checks if the capabilities represent a multiremote configuration
|
|
226
|
+
* @param capabilities - The capabilities to check
|
|
227
|
+
* @returns true if capabilities represent any multiremote configuration (regular or parallel)
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* Regular multiremote (object):
|
|
231
|
+
* { browserA: { capabilities: {...} }, browserB: { capabilities: {...} } }
|
|
232
|
+
*
|
|
233
|
+
* Parallel multiremote (array with nested structure):
|
|
234
|
+
* [{ browserA: { capabilities: {...} }, browserB: { capabilities: {...} } }]
|
|
235
|
+
*
|
|
236
|
+
* Regular capabilities (array):
|
|
237
|
+
* [{ browserName: 'chrome', ... }]
|
|
238
|
+
*/
|
|
239
|
+
export declare function isMultiRemoteCaps(capabilities: Capabilities.RemoteCapabilities): boolean;
|
|
211
240
|
export {};
|
|
212
241
|
//# sourceMappingURL=util.d.ts.map
|
package/build/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|