@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 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.0",
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
- let caps = capabilities;
631
- if (capabilities && !Array.isArray(capabilities)) {
632
- caps = [capabilities];
633
+ if (testPlanId.length > 0) {
634
+ binconfig.testManagementOptions = {
635
+ testPlanId
636
+ };
633
637
  }
634
- if (Array.isArray(caps)) {
635
- for (const cap of caps) {
636
- const platform4 = {};
637
- const capability = cap;
638
- Object.keys(capability).filter((key) => key !== "bstack:options").forEach((key) => {
639
- platform4[key] = capability[key];
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
- queryParams.cli_version = await this.runShellCommand(
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
- if (!entry.startsWith(CLI_DOWNLOAD_TMP_PREFIX) || !entry.endsWith(CLI_DOWNLOAD_TMP_SUFFIX)) {
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 zip file ${filePath}: ${util.format(err)}`
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 downloads in ${cliDir}: ${util.format(err)}`
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, binaryName, zipFilePath, cliDir, resolve, reject) {
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
- } else {
1099
- const writeStream = fs3.createWriteStream(
1100
- path3.join(cliDir, entry.fileName)
1101
- );
1102
- const openReadStreamPromise = promisify(
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 openReadStreamPromise(entry);
1155
+ const readStream = await openReadStreamPromise2(entry);
1107
1156
  readStream.on("end", function() {
1108
- writeStream.close();
1109
- zipfile.readEntry();
1157
+ directStream.end();
1158
+ directStream.on("close", () => zipfile.readEntry());
1110
1159
  });
1111
- readStream.pipe(writeStream);
1160
+ readStream.pipe(directStream);
1112
1161
  } catch (zipErr) {
1162
+ zipfile.close();
1113
1163
  reject(zipErr);
1114
1164
  }
1115
- if (entry.fileName === binaryName) {
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
- return {
1623
- observability: config.testObservability.enabled,
1624
- accessibility: accessibilityAutomation,
1625
- percy: config.percy,
1626
- automate: config.automate,
1627
- app_automate: config.appAutomate
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;
@@ -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.TestrunnerCapabilities | WebdriverIO.Capabilities, options: BrowserstackConfig & BrowserstackOptions, buildTag?: string): string;
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, binaryName: string | null, zipFilePath: string, cliDir: string, resolve: (path: string) => void, reject: (reason?: Error) => void): void;
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,EACnB,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,sBAAsB,GACnC,WAAW,CAAC,YAAY,EAC9B,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,EACjD,QAAQ,CAAC,EAAE,MAAM;IA0FrB,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;IAuDzB,MAAM,CAAC,SAAS;IAmBhB,MAAM,CAAC,cAAc;IA4CrB,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAmDxC,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,CAyQxB;IAED,MAAM,CAAC,kBAAkB,CACrB,oBAAoB,EAAE,EAAE,CAAC,WAAW,EACpC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,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;IAsEpC,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
+ {"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;IAwB7E;;;;;;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
+ {"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;AAE7C;;;;;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;IAkCD,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"}
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"}
@@ -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>}
@@ -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;IAgDrD;;;OAGG;IACG,gBAAgB;IAUtB;;;;OAIG;IACG,KAAK;IAkEX;;;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"}
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: boolean | null;
14
+ accessibility?: boolean;
15
15
  app?: string | AppConfig;
16
16
  private static _instance;
17
17
  appAutomate: boolean;
@@ -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,GAAG,IAAI,CAAA;IAC7B,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"}
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"}
@@ -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";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}