@wdio/browserstack-service 9.27.1 → 9.27.2
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/cleanup.js +182 -57
- package/build/cli/cliUtils.d.ts +3 -2
- package/build/cli/cliUtils.d.ts.map +1 -1
- package/build/cli/frameworks/wdioMochaTestFramework.d.ts.map +1 -1
- package/build/cli/grpcClient.d.ts.map +1 -1
- package/build/cli/index.d.ts +5 -0
- package/build/cli/index.d.ts.map +1 -1
- package/build/config.d.ts +1 -1
- package/build/config.d.ts.map +1 -1
- package/build/constants.d.ts +4 -0
- package/build/constants.d.ts.map +1 -1
- package/build/index.js +366 -111
- package/build/instrumentation/performance/performance-tester.d.ts.map +1 -1
- package/build/launcher.d.ts +1 -0
- package/build/launcher.d.ts.map +1 -1
- package/build/service.d.ts.map +1 -1
- package/build/testHub/utils.d.ts +2 -2
- package/build/testHub/utils.d.ts.map +1 -1
- package/build/types.d.ts +8 -0
- package/build/types.d.ts.map +1 -1
- package/build/util.d.ts +1 -0
- package/build/util.d.ts.map +1 -1
- package/package.json +6 -7
package/build/cleanup.js
CHANGED
|
@@ -8,7 +8,6 @@ import path6 from "node:path";
|
|
|
8
8
|
import util3 from "node:util";
|
|
9
9
|
import gitRepoInfo from "git-repo-info";
|
|
10
10
|
import gitconfig from "gitconfiglocal";
|
|
11
|
-
import { FormData } from "formdata-node";
|
|
12
11
|
import { performance as performance2 } from "node:perf_hooks";
|
|
13
12
|
|
|
14
13
|
// src/logPatcher.ts
|
|
@@ -71,7 +70,7 @@ import logger from "@wdio/logger";
|
|
|
71
70
|
// package.json
|
|
72
71
|
var package_default = {
|
|
73
72
|
name: "@wdio/browserstack-service",
|
|
74
|
-
version: "9.27.
|
|
73
|
+
version: "9.27.1",
|
|
75
74
|
description: "WebdriverIO service for better Browserstack integration",
|
|
76
75
|
author: "Adam Bjerstedt <abjerstedt@gmail.com>",
|
|
77
76
|
homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/wdio-browserstack-service",
|
|
@@ -118,7 +117,6 @@ var package_default = {
|
|
|
118
117
|
"browserstack-local": "^1.5.1",
|
|
119
118
|
chalk: "^5.3.0",
|
|
120
119
|
"csv-writer": "^1.6.0",
|
|
121
|
-
"formdata-node": "5.0.1",
|
|
122
120
|
"git-repo-info": "^2.1.1",
|
|
123
121
|
gitconfiglocal: "^2.1.0",
|
|
124
122
|
glob: "^11.0.0",
|
|
@@ -149,6 +147,7 @@ var consoleHolder = Object.assign({}, console);
|
|
|
149
147
|
var APP_ALLY_ISSUES_ENDPOINT = "api/v1/issues";
|
|
150
148
|
var APP_ALLY_ISSUES_SUMMARY_ENDPOINT = "api/v1/issues-summary";
|
|
151
149
|
var BSTACK_SERVICE_VERSION = bstackServiceVersion;
|
|
150
|
+
var BROWSERSTACK_TEST_PLAN_ID = "BROWSERSTACK_TEST_PLAN_ID";
|
|
152
151
|
var LOGS_FILE = "logs/bstack-wdio-service.log";
|
|
153
152
|
var SMART_SELECTION_MODE_RELEVANT_FIRST = "relevantFirst";
|
|
154
153
|
var SMART_SELECTION_MODE_RELEVANT_ONLY = "relevantOnly";
|
|
@@ -162,6 +161,7 @@ var BROWSERSTACK_ACCESSIBILITY = "BROWSERSTACK_ACCESSIBILITY";
|
|
|
162
161
|
var BROWSERSTACK_OBSERVABILITY = "BROWSERSTACK_OBSERVABILITY";
|
|
163
162
|
var MAX_GIT_META_DATA_SIZE_IN_BYTES = 64 * 1024;
|
|
164
163
|
var GIT_META_DATA_TRUNCATED = "...[TRUNCATED]";
|
|
164
|
+
var BINARY_BUSY_ERROR_CODES = ["ETXTBSY", "EBUSY"];
|
|
165
165
|
var WDIO_NAMING_PREFIX = "WebdriverIO-";
|
|
166
166
|
var UPDATED_CLI_ENDPOINT = "sdk/v1/update_cli";
|
|
167
167
|
|
|
@@ -598,6 +598,7 @@ var CLIUtils = class _CLIUtils {
|
|
|
598
598
|
modifiedOpts.browserStackLocalOptions = modifiedOpts.opts;
|
|
599
599
|
delete modifiedOpts.opts;
|
|
600
600
|
}
|
|
601
|
+
delete modifiedOpts.testManagementOptions;
|
|
601
602
|
modifiedOpts.testContextOptions = {
|
|
602
603
|
skipSessionName: isFalse(modifiedOpts.setSessionName),
|
|
603
604
|
skipSessionStatus: isFalse(modifiedOpts.setSessionStatus),
|
|
@@ -616,6 +617,8 @@ var CLIUtils = class _CLIUtils {
|
|
|
616
617
|
options.testObservability
|
|
617
618
|
);
|
|
618
619
|
const observabilityOptions = options.testObservabilityOptions || {};
|
|
620
|
+
const testManagementOptions = options.testManagementOptions || {};
|
|
621
|
+
const testPlanId = typeof testManagementOptions.testPlanId === "string" ? testManagementOptions.testPlanId.trim() : "";
|
|
619
622
|
const binconfig = {
|
|
620
623
|
userName: observabilityOptions.user || config.user,
|
|
621
624
|
accessKey: observabilityOptions.key || config.key,
|
|
@@ -627,26 +630,26 @@ var CLIUtils = class _CLIUtils {
|
|
|
627
630
|
binconfig.buildName = observabilityOptions.buildName || binconfig.buildName;
|
|
628
631
|
binconfig.projectName = observabilityOptions.projectName || binconfig.projectName;
|
|
629
632
|
binconfig.buildTag = this.getObservabilityBuildTags(observabilityOptions, buildTag) || [];
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
+
if (testPlanId.length > 0) {
|
|
634
|
+
binconfig.testManagementOptions = {
|
|
635
|
+
testPlanId
|
|
636
|
+
};
|
|
633
637
|
}
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
638
|
+
const caps = Array.isArray(capabilities) ? capabilities : [capabilities];
|
|
639
|
+
for (const cap of caps) {
|
|
640
|
+
const platform4 = {};
|
|
641
|
+
const capability = cap;
|
|
642
|
+
Object.keys(capability).filter((key) => key !== "bstack:options").forEach((key) => {
|
|
643
|
+
platform4[key] = capability[key];
|
|
644
|
+
});
|
|
645
|
+
if (capability["bstack:options"]) {
|
|
646
|
+
Object.keys(
|
|
647
|
+
capability["bstack:options"]
|
|
648
|
+
).forEach((key) => {
|
|
649
|
+
platform4[key] = capability["bstack:options"][key];
|
|
640
650
|
});
|
|
641
|
-
if (capability["bstack:options"]) {
|
|
642
|
-
Object.keys(
|
|
643
|
-
capability["bstack:options"]
|
|
644
|
-
).forEach((key) => {
|
|
645
|
-
platform4[key] = capability["bstack:options"][key];
|
|
646
|
-
});
|
|
647
|
-
}
|
|
648
|
-
binconfig.platforms.push(platform4);
|
|
649
651
|
}
|
|
652
|
+
binconfig.platforms.push(platform4);
|
|
650
653
|
}
|
|
651
654
|
return JSON.stringify(binconfig);
|
|
652
655
|
}
|
|
@@ -705,9 +708,20 @@ var CLIUtils = class _CLIUtils {
|
|
|
705
708
|
sdk_language: this.getSdkLanguage()
|
|
706
709
|
};
|
|
707
710
|
if (!isNullOrEmpty(existingCliPath)) {
|
|
708
|
-
|
|
711
|
+
if (this.isBinaryBusy(existingCliPath)) {
|
|
712
|
+
BStackLogger2.warn(`Existing binary is currently in use, skipping update: ${existingCliPath}`);
|
|
713
|
+
PerformanceTester.end(EVENTS.SDK_CLI_CHECK_UPDATE);
|
|
714
|
+
return existingCliPath;
|
|
715
|
+
}
|
|
716
|
+
const version3 = await this.runShellCommand(
|
|
709
717
|
`${existingCliPath} version`
|
|
710
718
|
);
|
|
719
|
+
if (version3.toLowerCase().includes("text file busy")) {
|
|
720
|
+
BStackLogger2.warn(`Binary busy during version check, skipping update: ${existingCliPath}`);
|
|
721
|
+
PerformanceTester.end(EVENTS.SDK_CLI_CHECK_UPDATE);
|
|
722
|
+
return existingCliPath;
|
|
723
|
+
}
|
|
724
|
+
queryParams.cli_version = version3;
|
|
711
725
|
}
|
|
712
726
|
const response = await this.requestToUpdateCLI(queryParams, config);
|
|
713
727
|
if (nestedKeyValue(response, ["updated_cli_version"])) {
|
|
@@ -823,6 +837,29 @@ var CLIUtils = class _CLIUtils {
|
|
|
823
837
|
return "";
|
|
824
838
|
}
|
|
825
839
|
}
|
|
840
|
+
static isBinaryBusy(binaryPath) {
|
|
841
|
+
if (isNullOrEmpty(binaryPath)) {
|
|
842
|
+
return false;
|
|
843
|
+
}
|
|
844
|
+
if (platform() === "darwin") {
|
|
845
|
+
return false;
|
|
846
|
+
}
|
|
847
|
+
if (!fs3.existsSync(binaryPath)) {
|
|
848
|
+
return false;
|
|
849
|
+
}
|
|
850
|
+
try {
|
|
851
|
+
const fd = fs3.openSync(binaryPath, "r+");
|
|
852
|
+
fs3.closeSync(fd);
|
|
853
|
+
return false;
|
|
854
|
+
} catch (err) {
|
|
855
|
+
if (BINARY_BUSY_ERROR_CODES.includes(err.code)) {
|
|
856
|
+
BStackLogger2.debug(`Binary is busy: ${binaryPath}`);
|
|
857
|
+
return true;
|
|
858
|
+
}
|
|
859
|
+
BStackLogger2.debug(`Error checking if binary is busy: ${err.message}`);
|
|
860
|
+
return false;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
826
863
|
static requestToUpdateCLI = async (queryParams, config) => {
|
|
827
864
|
const params = new URLSearchParams(queryParams);
|
|
828
865
|
const requestInit = {
|
|
@@ -943,8 +980,11 @@ ${Date.now()}
|
|
|
943
980
|
const cleanupTemporaryDownloads = (maxAgeMs = CLI_LOCK_TIMEOUT_MS) => {
|
|
944
981
|
try {
|
|
945
982
|
const now = Date.now();
|
|
983
|
+
const tmpExtractRe = /\.tmp\.\d+$/;
|
|
946
984
|
for (const entry of fs3.readdirSync(cliDir)) {
|
|
947
|
-
|
|
985
|
+
const isDownloadZip = entry.startsWith(CLI_DOWNLOAD_TMP_PREFIX) && entry.endsWith(CLI_DOWNLOAD_TMP_SUFFIX);
|
|
986
|
+
const isExtractTmp = tmpExtractRe.test(entry);
|
|
987
|
+
if (!isDownloadZip && !isExtractTmp) {
|
|
948
988
|
continue;
|
|
949
989
|
}
|
|
950
990
|
const filePath = path3.join(cliDir, entry);
|
|
@@ -961,13 +1001,13 @@ ${Date.now()}
|
|
|
961
1001
|
fs3.unlinkSync(filePath);
|
|
962
1002
|
} catch (err) {
|
|
963
1003
|
BStackLogger2.debug(
|
|
964
|
-
`Failed to delete temp CLI
|
|
1004
|
+
`Failed to delete temp CLI file ${filePath}: ${util.format(err)}`
|
|
965
1005
|
);
|
|
966
1006
|
}
|
|
967
1007
|
}
|
|
968
1008
|
} catch (err) {
|
|
969
1009
|
BStackLogger2.debug(
|
|
970
|
-
`Failed to scan temp CLI
|
|
1010
|
+
`Failed to scan temp CLI files in ${cliDir}: ${util.format(err)}`
|
|
971
1011
|
);
|
|
972
1012
|
}
|
|
973
1013
|
};
|
|
@@ -1013,7 +1053,6 @@ ${Date.now()}
|
|
|
1013
1053
|
);
|
|
1014
1054
|
const downloadedFileStream = fs3.createWriteStream(zipFilePath);
|
|
1015
1055
|
return new Promise((resolve, reject) => {
|
|
1016
|
-
const binaryName = null;
|
|
1017
1056
|
const processDownload = async () => {
|
|
1018
1057
|
const abortController = new AbortController();
|
|
1019
1058
|
const timeout = setTimeout(
|
|
@@ -1047,7 +1086,6 @@ ${Date.now()}
|
|
|
1047
1086
|
nodeStream.pipe(downloadedFileStream);
|
|
1048
1087
|
_CLIUtils.downloadFileStream(
|
|
1049
1088
|
downloadedFileStream,
|
|
1050
|
-
binaryName,
|
|
1051
1089
|
zipFilePath,
|
|
1052
1090
|
cliDir,
|
|
1053
1091
|
(result) => {
|
|
@@ -1081,40 +1119,104 @@ ${Date.now()}
|
|
|
1081
1119
|
return null;
|
|
1082
1120
|
}
|
|
1083
1121
|
};
|
|
1084
|
-
static downloadFileStream(downloadedFileStream,
|
|
1122
|
+
static downloadFileStream(downloadedFileStream, zipFilePath, cliDir, resolve, reject) {
|
|
1085
1123
|
downloadedFileStream.on("close", async function() {
|
|
1086
1124
|
const yauzlOpenPromise = promisify(yauzl.open);
|
|
1087
1125
|
try {
|
|
1088
1126
|
const zipfile = await yauzlOpenPromise(zipFilePath, {
|
|
1089
1127
|
lazyEntries: true
|
|
1090
1128
|
});
|
|
1129
|
+
let resolvedBinaryPath = null;
|
|
1091
1130
|
zipfile.readEntry();
|
|
1092
1131
|
zipfile.on("entry", async (entry) => {
|
|
1093
|
-
if (!binaryName) {
|
|
1094
|
-
binaryName = entry.fileName;
|
|
1095
|
-
}
|
|
1096
1132
|
if (/\/$/.test(entry.fileName)) {
|
|
1097
1133
|
zipfile.readEntry();
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1134
|
+
return;
|
|
1135
|
+
}
|
|
1136
|
+
const candidatePath = path3.join(cliDir, entry.fileName);
|
|
1137
|
+
const resolvedCandidate = path3.resolve(candidatePath);
|
|
1138
|
+
const resolvedDir = path3.resolve(cliDir) + path3.sep;
|
|
1139
|
+
if (!resolvedCandidate.startsWith(resolvedDir)) {
|
|
1140
|
+
zipfile.close();
|
|
1141
|
+
reject(new Error(`Zip-slip detected: entry "${entry.fileName}" resolves outside ${cliDir}`));
|
|
1142
|
+
return;
|
|
1143
|
+
}
|
|
1144
|
+
const isBinaryEntry = path3.basename(entry.fileName).startsWith("binary-");
|
|
1145
|
+
if (!isBinaryEntry) {
|
|
1146
|
+
const directStream = fs3.createWriteStream(candidatePath);
|
|
1147
|
+
directStream.on("error", (writeErr) => {
|
|
1148
|
+
zipfile.close();
|
|
1149
|
+
reject(writeErr);
|
|
1150
|
+
});
|
|
1151
|
+
const openReadStreamPromise2 = promisify(
|
|
1103
1152
|
zipfile.openReadStream
|
|
1104
1153
|
).bind(zipfile);
|
|
1105
1154
|
try {
|
|
1106
|
-
const readStream = await
|
|
1155
|
+
const readStream = await openReadStreamPromise2(entry);
|
|
1107
1156
|
readStream.on("end", function() {
|
|
1108
|
-
|
|
1109
|
-
zipfile.readEntry();
|
|
1157
|
+
directStream.end();
|
|
1158
|
+
directStream.on("close", () => zipfile.readEntry());
|
|
1110
1159
|
});
|
|
1111
|
-
readStream.pipe(
|
|
1160
|
+
readStream.pipe(directStream);
|
|
1112
1161
|
} catch (zipErr) {
|
|
1162
|
+
zipfile.close();
|
|
1113
1163
|
reject(zipErr);
|
|
1114
1164
|
}
|
|
1115
|
-
|
|
1165
|
+
return;
|
|
1166
|
+
}
|
|
1167
|
+
const finalPath = candidatePath;
|
|
1168
|
+
const tempPath = path3.join(cliDir, `${entry.fileName}.tmp.${process.pid}`);
|
|
1169
|
+
const writeStream = fs3.createWriteStream(tempPath);
|
|
1170
|
+
let writeStreamErrored = false;
|
|
1171
|
+
writeStream.on("error", (writeErr) => {
|
|
1172
|
+
writeStreamErrored = true;
|
|
1173
|
+
fsp.unlink(tempPath).catch(() => {
|
|
1174
|
+
});
|
|
1175
|
+
zipfile.close();
|
|
1176
|
+
reject(writeErr);
|
|
1177
|
+
});
|
|
1178
|
+
writeStream.on("close", async () => {
|
|
1179
|
+
if (writeStreamErrored) {
|
|
1180
|
+
return;
|
|
1181
|
+
}
|
|
1182
|
+
try {
|
|
1183
|
+
await fsp.chmod(tempPath, "0755");
|
|
1184
|
+
try {
|
|
1185
|
+
await fsp.rename(tempPath, finalPath);
|
|
1186
|
+
} catch (renameErr) {
|
|
1187
|
+
if (renameErr.code !== "EXDEV") {
|
|
1188
|
+
throw renameErr;
|
|
1189
|
+
}
|
|
1190
|
+
BStackLogger2.warn(`Atomic rename failed (cross-device), falling back to copy: ${renameErr.message}`);
|
|
1191
|
+
await fsp.copyFile(tempPath, finalPath);
|
|
1192
|
+
await fsp.unlink(tempPath).catch(() => {
|
|
1193
|
+
});
|
|
1194
|
+
}
|
|
1195
|
+
if (!resolvedBinaryPath) {
|
|
1196
|
+
resolvedBinaryPath = finalPath;
|
|
1197
|
+
}
|
|
1198
|
+
zipfile.readEntry();
|
|
1199
|
+
} catch (err) {
|
|
1200
|
+
await fsp.unlink(tempPath).catch(() => {
|
|
1201
|
+
});
|
|
1116
1202
|
zipfile.close();
|
|
1203
|
+
reject(err);
|
|
1117
1204
|
}
|
|
1205
|
+
});
|
|
1206
|
+
const openReadStreamPromise = promisify(
|
|
1207
|
+
zipfile.openReadStream
|
|
1208
|
+
).bind(zipfile);
|
|
1209
|
+
try {
|
|
1210
|
+
const readStream = await openReadStreamPromise(entry);
|
|
1211
|
+
readStream.on("end", function() {
|
|
1212
|
+
writeStream.end();
|
|
1213
|
+
});
|
|
1214
|
+
readStream.pipe(writeStream);
|
|
1215
|
+
} catch (zipErr) {
|
|
1216
|
+
fsp.unlink(tempPath).catch(() => {
|
|
1217
|
+
});
|
|
1218
|
+
zipfile.close();
|
|
1219
|
+
reject(zipErr);
|
|
1118
1220
|
}
|
|
1119
1221
|
});
|
|
1120
1222
|
zipfile.on("error", (zipErr) => {
|
|
@@ -1122,16 +1224,15 @@ ${Date.now()}
|
|
|
1122
1224
|
});
|
|
1123
1225
|
zipfile.once("end", () => {
|
|
1124
1226
|
fsp.unlink(zipFilePath).catch(() => {
|
|
1125
|
-
BStackLogger2.warn(
|
|
1126
|
-
`Failed to delete zip file: ${zipFilePath}`
|
|
1127
|
-
);
|
|
1128
|
-
});
|
|
1129
|
-
fsp.chmod(`${cliDir}/${binaryName}`, "0755").then(() => {
|
|
1130
|
-
resolve(`${cliDir}/${binaryName}`);
|
|
1131
|
-
}).catch((err) => {
|
|
1132
|
-
reject(err);
|
|
1227
|
+
BStackLogger2.warn(`Failed to delete zip file: ${zipFilePath}`);
|
|
1133
1228
|
});
|
|
1229
|
+
if (!resolvedBinaryPath) {
|
|
1230
|
+
zipfile.close();
|
|
1231
|
+
reject(new Error("No binary-* entry found in zip; cannot complete CLI binary extraction"));
|
|
1232
|
+
return;
|
|
1233
|
+
}
|
|
1134
1234
|
zipfile.close();
|
|
1235
|
+
resolve(resolvedBinaryPath);
|
|
1135
1236
|
});
|
|
1136
1237
|
} catch (err) {
|
|
1137
1238
|
reject(err);
|
|
@@ -1468,6 +1569,7 @@ var PerformanceTester = class _PerformanceTester {
|
|
|
1468
1569
|
static end(event, success = true, failure, details = {}) {
|
|
1469
1570
|
performance.mark(event + "-end");
|
|
1470
1571
|
performance.measure(event, event + "-start", event + "-end");
|
|
1572
|
+
delete this.eventsMap[event + "-start"];
|
|
1471
1573
|
this.details[event] = Object.assign({ success, failure: util2.format(failure) }, Object.assign(Object.assign({
|
|
1472
1574
|
clientWorkerId: _PerformanceTester.getClientWorkerId(),
|
|
1473
1575
|
worker: _PerformanceTester.getProcessId(),
|
|
@@ -1619,13 +1721,14 @@ var logBuildError = (error, product = "") => {
|
|
|
1619
1721
|
}
|
|
1620
1722
|
};
|
|
1621
1723
|
var getProductMapForBuildStartCall = (config, accessibilityAutomation) => {
|
|
1622
|
-
|
|
1623
|
-
observability
|
|
1624
|
-
accessibility
|
|
1625
|
-
percy
|
|
1626
|
-
automate
|
|
1627
|
-
app_automate
|
|
1628
|
-
|
|
1724
|
+
const entries = [
|
|
1725
|
+
["observability", config.testObservability.enabled],
|
|
1726
|
+
["accessibility", accessibilityAutomation],
|
|
1727
|
+
["percy", config.percy],
|
|
1728
|
+
["automate", config.automate],
|
|
1729
|
+
["app_automate", config.appAutomate]
|
|
1730
|
+
];
|
|
1731
|
+
return Object.fromEntries(entries.filter(([, v]) => v !== null));
|
|
1629
1732
|
};
|
|
1630
1733
|
|
|
1631
1734
|
// src/testorchestration/testorcherstrationutils.ts
|
|
@@ -2448,7 +2551,6 @@ var usageStats_default = UsageStats;
|
|
|
2448
2551
|
|
|
2449
2552
|
// src/util.ts
|
|
2450
2553
|
import { create } from "tar";
|
|
2451
|
-
import { fileFromPath } from "formdata-node/file-from-path";
|
|
2452
2554
|
|
|
2453
2555
|
// src/scripts/accessibility-scripts.ts
|
|
2454
2556
|
import path5 from "node:path";
|
|
@@ -2682,7 +2784,10 @@ var launchTestSession = PerformanceTester.measureWrapper(TESTHUB_EVENTS.START, o
|
|
|
2682
2784
|
},
|
|
2683
2785
|
product_map: getProductMapForBuildStartCall(bStackConfig, accessibilityAutomation),
|
|
2684
2786
|
config: {},
|
|
2685
|
-
test_orchestration: OrchestrationUtils.getInstance(config)?.getBuildStartData() || {}
|
|
2787
|
+
test_orchestration: OrchestrationUtils.getInstance(config)?.getBuildStartData() || {},
|
|
2788
|
+
test_management: {
|
|
2789
|
+
test_plan_id: getTestPlanId(options)
|
|
2790
|
+
}
|
|
2686
2791
|
};
|
|
2687
2792
|
if (accessibilityAutomation && (isTurboScale(options) || data.browserstackAutomation === false)) {
|
|
2688
2793
|
data.accessibility.settings ??= {};
|
|
@@ -2711,6 +2816,7 @@ var launchTestSession = PerformanceTester.measureWrapper(TESTHUB_EVENTS.START, o
|
|
|
2711
2816
|
const jsonResponse = await response.json();
|
|
2712
2817
|
delete data?.accessibility?.settings?.includeEncodedExtension;
|
|
2713
2818
|
BStackLogger.debug(`[Start_Build] Success response: ${JSON.stringify(jsonResponse)}`);
|
|
2819
|
+
BStackLogger.debug(`Test Plan Id sent in request: ${getTestPlanId(options)}`);
|
|
2714
2820
|
process.env[TESTOPS_BUILD_COMPLETED_ENV] = "true";
|
|
2715
2821
|
if (jsonResponse.jwt) {
|
|
2716
2822
|
process.env[BROWSERSTACK_TESTHUB_JWT] = jsonResponse.jwt;
|
|
@@ -3234,6 +3340,25 @@ function getObservabilityBuildTags(options, bstackBuildTag) {
|
|
|
3234
3340
|
}
|
|
3235
3341
|
return [];
|
|
3236
3342
|
}
|
|
3343
|
+
function getTestPlanId(options) {
|
|
3344
|
+
if (process.env[BROWSERSTACK_TEST_PLAN_ID]) {
|
|
3345
|
+
return process.env[BROWSERSTACK_TEST_PLAN_ID];
|
|
3346
|
+
}
|
|
3347
|
+
const CLI_ARG = "--browserstack.testManagementOptions.testPlanId";
|
|
3348
|
+
const argIndex = process.argv.indexOf(CLI_ARG);
|
|
3349
|
+
if (argIndex !== -1 && process.argv[argIndex + 1]) {
|
|
3350
|
+
return process.argv[argIndex + 1];
|
|
3351
|
+
}
|
|
3352
|
+
const argWithEquals = process.argv.find((arg) => arg.startsWith(`${CLI_ARG}=`));
|
|
3353
|
+
if (argWithEquals) {
|
|
3354
|
+
return argWithEquals.split("=")[1];
|
|
3355
|
+
}
|
|
3356
|
+
const testPlanId = options.testManagementOptions?.testPlanId;
|
|
3357
|
+
if (typeof testPlanId === "string" && testPlanId.trim().length > 0) {
|
|
3358
|
+
return testPlanId.trim();
|
|
3359
|
+
}
|
|
3360
|
+
return void 0;
|
|
3361
|
+
}
|
|
3237
3362
|
function getBrowserStackUser(config) {
|
|
3238
3363
|
if (process.env.BROWSERSTACK_USERNAME) {
|
|
3239
3364
|
return process.env.BROWSERSTACK_USERNAME;
|
package/build/cli/cliUtils.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare class CLIUtils {
|
|
|
12
12
|
* @returns {string}
|
|
13
13
|
* @throws {Error}
|
|
14
14
|
*/
|
|
15
|
-
static getBinConfig(config: Options.Testrunner, capabilities: Capabilities.
|
|
15
|
+
static getBinConfig(config: Options.Testrunner, capabilities: Capabilities.RequestedStandaloneCapabilities | Capabilities.RequestedStandaloneCapabilities[], options: BrowserstackConfig & BrowserstackOptions, buildTag?: string): string;
|
|
16
16
|
static getSdkVersion(): string;
|
|
17
17
|
static getSdkLanguage(): string;
|
|
18
18
|
static setupCliPath(config: Options.Testrunner): Promise<string | null>;
|
|
@@ -20,10 +20,11 @@ export declare class CLIUtils {
|
|
|
20
20
|
static getCliDir(): string;
|
|
21
21
|
static getWritableDir(): string | null | undefined;
|
|
22
22
|
static getExistingCliPath(cliDir: string): string;
|
|
23
|
+
static isBinaryBusy(binaryPath: string): boolean;
|
|
23
24
|
static requestToUpdateCLI: (queryParams: Record<string, string>, config: Options.Testrunner) => Promise<any>;
|
|
24
25
|
static runShellCommand(cmdCommand: string, workingDir?: string): Promise<string>;
|
|
25
26
|
static downloadLatestBinary: (binDownloadUrl: string, cliDir: string) => Promise<string | null>;
|
|
26
|
-
static downloadFileStream(downloadedFileStream: fs.WriteStream,
|
|
27
|
+
static downloadFileStream(downloadedFileStream: fs.WriteStream, zipFilePath: string, cliDir: string, resolve: (path: string) => void, reject: (reason?: Error) => void): void;
|
|
27
28
|
static getTestFrameworkDetail(): any;
|
|
28
29
|
static getAutomationFrameworkDetail(): any;
|
|
29
30
|
static setFrameworkDetail(testFramework: string, automationFramework: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliUtils.d.ts","sourceRoot":"","sources":["../../src/cli/cliUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AA8BxB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"cliUtils.d.ts","sourceRoot":"","sources":["../../src/cli/cliUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AA8BxB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,EAEnB,wBAAwB,EAC3B,MAAM,aAAa,CAAA;AAUpB,qBAAa,QAAQ;IACjB,MAAM,CAAC,yBAAyB,KAAK;IACrC,MAAM,CAAC,mBAAmB,KAAK;IAC/B,MAAM,CAAC,sBAAsB,WAAY;IAEzC,MAAM,CAAC,gBAAgB;IAIvB,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOtD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACf,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,YAAY,EACN,YAAY,CAAC,+BAA+B,GAC5C,YAAY,CAAC,+BAA+B,EAAE,EACpD,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EACjD,QAAQ,CAAC,EAAE,MAAM;IAgGrB,MAAM,CAAC,aAAa;IAIpB,MAAM,CAAC,cAAc;WAIR,YAAY,CACrB,MAAM,EAAE,OAAO,CAAC,UAAU,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WA6BZ,iBAAiB,CAC1B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CAAC,UAAU,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoEzB,MAAM,CAAC,SAAS;IAmBhB,MAAM,CAAC,cAAc;IA4CrB,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAmDxC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAoBhD,MAAM,CAAC,kBAAkB,GACrB,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,QAAQ,OAAO,CAAC,UAAU,kBAgB7B;IAED,MAAM,CAAC,eAAe,CAClB,UAAU,EAAE,MAAM,EAClB,UAAU,SAAK,GAChB,OAAO,CAAC,MAAM,CAAC;IAqBlB,MAAM,CAAC,oBAAoB,GACvB,gBAAgB,MAAM,EACtB,QAAQ,MAAM,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0QxB;IAED,MAAM,CAAC,kBAAkB,CACrB,oBAAoB,EAAE,EAAE,CAAC,WAAW,EACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,IAAI;IA2IpC,MAAM,CAAC,sBAAsB;IAO7B,MAAM,CAAC,4BAA4B;IASnC,MAAM,CAAC,kBAAkB,CACrB,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM;IA0B/B;;;OAGG;IACH,MAAM,CAAC,sBAAsB;IAI7B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IAMvG;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;IAIjE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM;IAMvC,MAAM,CAAC,yBAAyB,CAC5B,oBAAoB,EAAE,wBAAwB,EAC9C,cAAc,CAAC,EAAE,MAAM;IAc3B,MAAM,CAAC,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;CAMnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wdioMochaTestFramework.d.ts","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioMochaTestFramework.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAG9C,OAAO,qBAAqB,MAAM,uCAAuC,CAAA;AAKzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa;IAC7D,MAAM,CAAC,qBAAqB,SAA2B;IACvD,MAAM,CAAC,sBAAsB,SAA4B;IAEzD;;;;;IAKA;gBACY,cAAc,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM;IAIzG;;;;;IAKA;IACM,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAoDhG;;;;;;KAMC;IACD,eAAe,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,qBAAqB,GAAC,IAAI;IAa5H;;;;KAIC;IACD,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqCzE,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAmBxE,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"wdioMochaTestFramework.d.ts","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioMochaTestFramework.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,oBAAoB,CAAA;AAG9C,OAAO,qBAAqB,MAAM,uCAAuC,CAAA;AAKzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI7C,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa;IAC7D,MAAM,CAAC,qBAAqB,SAA2B;IACvD,MAAM,CAAC,sBAAsB,SAA4B;IAEzD;;;;;IAKA;gBACY,cAAc,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM;IAIzG;;;;;IAKA;IACM,UAAU,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAoDhG;;;;;;KAMC;IACD,eAAe,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,qBAAqB,GAAC,IAAI;IAa5H;;;;KAIC;IACD,sBAAsB,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqCzE,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI;IAmBxE,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4B7E;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA6B9H;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAqB3G;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM;IAOzE;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;IAY7F;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE;IAY7G;;;;;;OAMG;IACG,eAAe,CACjB,QAAQ,EAAE,qBAAqB,EAC/B,kBAAkB,EAAE,KAAK,EACzB,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAwDpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpcClient.d.ts","sourceRoot":"","sources":["../../src/cli/grpcClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,SAAS,EAET,WAAW,EAad,MAAM,yCAAyC,CAAA;AAGhD,OAAO,KAAK,EAGR,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,oCAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,qCAAqC,EAGxC,MAAM,yCAAyC,CAAA;AAIhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"grpcClient.d.ts","sourceRoot":"","sources":["../../src/cli/grpcClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,SAAS,EAET,WAAW,EAad,MAAM,yCAAyC,CAAA;AAGhD,OAAO,KAAK,EAGR,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EAEtB,iBAAiB,EACjB,oCAAoC,EACpC,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,qCAAqC,EAGxC,MAAM,yCAAyC,CAAA;AAIhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C;;;;;GAKG;AACH,qBAAa,UAAU;;IAGnB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAO;IAClC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,MAAM,sBAAe;;IAIrB;;;OAGG;IACH,MAAM,CAAC,WAAW;IAOlB;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAIpC;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAcnC;;;OAGG;IACH,OAAO;IAsCD,eAAe,CAAC,UAAU,EAAE,MAAM;IAuDxC;;;OAGG;IACG,iBAAiB;IAoCvB;;;;OAIG;IACG,cAAc;IAwCd,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC;IA6D1E;;;OAGG;IAEG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,cAAc,CAAC;IA8D9E;;;OAGG;IAEG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC;IAkC7D,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,cAAc,CAAC;IA8DlE,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,oCAAoC,EAAE,cAAc,CAAC;IAmCpG;;OAEG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IA4C3I;;;OAGG;IACH,SAAS;IAIT;;;OAGG;IACH,UAAU;CAGb"}
|
package/build/cli/index.d.ts
CHANGED
|
@@ -64,6 +64,11 @@ export declare class BrowserstackCLI {
|
|
|
64
64
|
* @throws {Error} If the process fails to start
|
|
65
65
|
*/
|
|
66
66
|
start(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Spawn the CLI process and wait until it emits "ready".
|
|
69
|
+
* Handles both synchronous spawn errors and async error/close events.
|
|
70
|
+
*/
|
|
71
|
+
private _spawnAndAwaitReady;
|
|
67
72
|
/**
|
|
68
73
|
* Stop the CLI
|
|
69
74
|
* @returns {Promise<void>}
|
package/build/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACtF,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,sBAAsB,MAAM,wCAAwC,CAAA;AAC3E,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAK7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAkB,MAAM,aAAa,CAAA;AAK1F;;;;;GAKG;AACH,qBAAa,eAAe;;IAExB,MAAM,CAAC,OAAO,UAAQ;IACtB,WAAW,EAAC,OAAO,CAAA;IACnB,MAAM,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAC,MAAM,CAAA;IACd,kBAAkB,EAAE,OAAO,CAAC,UAAU,GAAC,EAAE,CAAA;IACzC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAO;IACnC,eAAe,UAAQ;IACvB,gBAAgB,UAAQ;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAK;IACxC,aAAa,EAAE,sBAAsB,GAAC,IAAI,CAAO;IACjD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAO;IAC/C,mBAAmB,EAAE,uBAAuB,GAAC,IAAI,CAAO;IACxD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAO;IACtC,MAAM,sBAAe;IACrB,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,EAAE,CAAA;;IAWtD;;;OAGG;IACH,MAAM,CAAC,WAAW;IAOlB;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,SAAG;IA2B7G;;;OAGG;IACG,SAAS;IAYf;;;OAGG;IACH,WAAW,CAAC,gBAAgB,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACtF,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,sBAAsB,MAAM,wCAAwC,CAAA;AAC3E,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAK7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAkB,MAAM,aAAa,CAAA;AAK1F;;;;;GAKG;AACH,qBAAa,eAAe;;IAExB,MAAM,CAAC,OAAO,UAAQ;IACtB,WAAW,EAAC,OAAO,CAAA;IACnB,MAAM,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAC,MAAM,CAAA;IACd,kBAAkB,EAAE,OAAO,CAAC,UAAU,GAAC,EAAE,CAAA;IACzC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAO;IACnC,eAAe,UAAQ;IACvB,gBAAgB,UAAQ;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAO;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAK;IACxC,aAAa,EAAE,sBAAsB,GAAC,IAAI,CAAO;IACjD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAO;IAC/C,mBAAmB,EAAE,uBAAuB,GAAC,IAAI,CAAO;IACxD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAO;IACtC,MAAM,sBAAe;IACrB,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,EAAE,CAAA;;IAWtD;;;OAGG;IACH,MAAM,CAAC,WAAW;IAOlB;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,SAAG;IA2B7G;;;OAGG;IACG,SAAS;IAYf;;;OAGG;IACH,WAAW,CAAC,gBAAgB,EAAE,uBAAuB;IA4DrD;;;OAGG;IACG,gBAAgB;IAUtB;;;;OAIG;IACG,KAAK;IA6DX;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAyD3B;;;OAGG;IACG,IAAI;IAiDV;;;;OAIG;IACG,kBAAkB;IASxB;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAM5C;;;;OAIG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM;IAkBrC;;;OAGG;IACH,SAAS;IAWT;;;OAGG;IACH,qBAAqB;IAIrB;;;;OAIG;IACH,qBAAqB,CAAC,kBAAkB,EAAC,OAAO,CAAC,UAAU;IAI3D;;;OAGG;IACG,aAAa;IAOnB;;;OAGG;IACH,YAAY;IAIZ;;;OAGG;IACH,SAAS;IAIT;;;;MAIE;IACF,SAAS,CAAC,QAAQ,EAAE,uBAAuB;IAW3C;;;OAGG;IACH,kBAAkB;IAOlB;;;OAGG;IACH,wBAAwB;IAOxB;;;OAGG;IACH,gBAAgB;IAIhB;;;OAGG;IACH,sBAAsB;CAGzB"}
|
package/build/config.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ declare class BrowserStackConfig {
|
|
|
11
11
|
testObservability: TestOpsConfig;
|
|
12
12
|
percy: boolean;
|
|
13
13
|
percyCaptureMode?: string;
|
|
14
|
-
accessibility
|
|
14
|
+
accessibility?: boolean;
|
|
15
15
|
app?: string | AppConfig;
|
|
16
16
|
private static _instance;
|
|
17
17
|
appAutomate: boolean;
|
package/build/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,aAAa,MAAM,4BAA4B,CAAA;AAItD,cAAM,kBAAkB;IACpB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,kBAAkB;IAO/G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,aAAa,CAAA;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,aAAa,MAAM,4BAA4B,CAAA;AAItD,cAAM,kBAAkB;IACpB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,kBAAkB;IAO/G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,aAAa,CAAA;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoB;IACrC,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAQ;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,kBAAkB,UAAQ;IAC1B,QAAQ,EAAE,MAAM,CAAA;gBAEX,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU;IAexF,cAAc;CAIjB;AAED,eAAe,kBAAkB,CAAA"}
|
package/build/constants.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare const DEFAULT_WAIT_TIMEOUT_FOR_PENDING_UPLOADS = 5000;
|
|
|
17
17
|
export declare const DEFAULT_WAIT_INTERVAL_FOR_PENDING_UPLOADS = 100;
|
|
18
18
|
export declare const BSTACK_SERVICE_VERSION: string;
|
|
19
19
|
export declare const NOT_ALLOWED_KEYS_IN_CAPS: string[];
|
|
20
|
+
export declare const BROWSERSTACK_TEST_PLAN_ID = "BROWSERSTACK_TEST_PLAN_ID";
|
|
20
21
|
export declare const LOGS_FILE = "logs/bstack-wdio-service.log";
|
|
21
22
|
export declare const CLI_DEBUG_LOGS_FILE = "log/sdk-cli-debug.log";
|
|
22
23
|
export declare const UPLOAD_LOGS_ADDRESS = "https://upload-observability.browserstack.com";
|
|
@@ -60,6 +61,9 @@ export declare const TEST_REPORTING_BUILD_NAME = "TEST_REPORTING_BUILD_NAME";
|
|
|
60
61
|
export declare const MAX_GIT_META_DATA_SIZE_IN_BYTES: number;
|
|
61
62
|
export declare const GIT_META_DATA_TRUNCATED = "...[TRUNCATED]";
|
|
62
63
|
export declare const CLI_STOP_TIMEOUT = 5000;
|
|
64
|
+
export declare const BINARY_BUSY_ERROR_CODES: string[];
|
|
65
|
+
export declare const MAX_SPAWN_RETRIES = 3;
|
|
66
|
+
export declare const SPAWN_RETRY_DELAY_MS = 1000;
|
|
63
67
|
export declare const WDIO_NAMING_PREFIX = "WebdriverIO-";
|
|
64
68
|
export declare const PERF_METRICS_WAIT_TIME = 2000;
|
|
65
69
|
export declare const UPDATED_CLI_ENDPOINT = "sdk/v1/update_cli";
|
package/build/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,eAAO,MAAM,mBAAmB,qHAStB,CAAA;AAEV,eAAO,MAAM,mBAAmB,UAI/B,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|