@wdio/browserstack-service 8.45.0 → 8.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +44 -11
  2. package/build/Percy/Percy-Handler.d.ts.map +1 -1
  3. package/build/Percy/Percy-Handler.js +4 -1
  4. package/build/Percy/Percy.d.ts.map +1 -1
  5. package/build/Percy/Percy.js +2 -1
  6. package/build/accessibility-handler.d.ts +9 -3
  7. package/build/accessibility-handler.d.ts.map +1 -1
  8. package/build/accessibility-handler.js +52 -11
  9. package/build/cleanup.js +3 -3
  10. package/build/cli/apiUtils.d.ts +14 -0
  11. package/build/cli/apiUtils.d.ts.map +1 -0
  12. package/build/cli/apiUtils.js +24 -0
  13. package/build/cli/cliLogger.d.ts +16 -0
  14. package/build/cli/cliLogger.d.ts.map +1 -0
  15. package/build/cli/cliLogger.js +70 -0
  16. package/build/cli/cliUtils.d.ts +46 -0
  17. package/build/cli/cliUtils.d.ts.map +1 -0
  18. package/build/cli/cliUtils.js +430 -0
  19. package/build/cli/eventDispatcher.d.ts +28 -0
  20. package/build/cli/eventDispatcher.d.ts.map +1 -0
  21. package/build/cli/eventDispatcher.js +48 -0
  22. package/build/cli/frameworks/automationFramework.d.ts +89 -0
  23. package/build/cli/frameworks/automationFramework.d.ts.map +1 -0
  24. package/build/cli/frameworks/automationFramework.js +131 -0
  25. package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts +18 -0
  26. package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts.map +1 -0
  27. package/build/cli/frameworks/constants/automationFrameworkConstants.js +17 -0
  28. package/build/cli/frameworks/constants/testFrameworkConstants.d.ts +43 -0
  29. package/build/cli/frameworks/constants/testFrameworkConstants.d.ts.map +1 -0
  30. package/build/cli/frameworks/constants/testFrameworkConstants.js +42 -0
  31. package/build/cli/frameworks/testFramework.d.ts +89 -0
  32. package/build/cli/frameworks/testFramework.d.ts.map +1 -0
  33. package/build/cli/frameworks/testFramework.js +125 -0
  34. package/build/cli/frameworks/wdioAutomationFramework.d.ts +28 -0
  35. package/build/cli/frameworks/wdioAutomationFramework.d.ts.map +1 -0
  36. package/build/cli/frameworks/wdioAutomationFramework.js +66 -0
  37. package/build/cli/frameworks/wdioMochaTestFramework.d.ts +82 -0
  38. package/build/cli/frameworks/wdioMochaTestFramework.d.ts.map +1 -0
  39. package/build/cli/frameworks/wdioMochaTestFramework.js +319 -0
  40. package/build/cli/grpcClient.d.ts +70 -0
  41. package/build/cli/grpcClient.d.ts.map +1 -0
  42. package/build/cli/grpcClient.js +419 -0
  43. package/build/cli/index.d.ts +148 -0
  44. package/build/cli/index.d.ts.map +1 -0
  45. package/build/cli/index.js +415 -0
  46. package/build/cli/instances/automationFrameworkInstance.d.ts +33 -0
  47. package/build/cli/instances/automationFrameworkInstance.d.ts.map +1 -0
  48. package/build/cli/instances/automationFrameworkInstance.js +44 -0
  49. package/build/cli/instances/testFrameworkInstance.d.ts +62 -0
  50. package/build/cli/instances/testFrameworkInstance.d.ts.map +1 -0
  51. package/build/cli/instances/testFrameworkInstance.js +96 -0
  52. package/build/cli/instances/trackedContext.d.ts +32 -0
  53. package/build/cli/instances/trackedContext.d.ts.map +1 -0
  54. package/build/cli/instances/trackedContext.js +47 -0
  55. package/build/cli/instances/trackedInstance.d.ts +40 -0
  56. package/build/cli/instances/trackedInstance.d.ts.map +1 -0
  57. package/build/cli/instances/trackedInstance.js +63 -0
  58. package/build/cli/modules/accessibilityModule.d.ts +33 -0
  59. package/build/cli/modules/accessibilityModule.d.ts.map +1 -0
  60. package/build/cli/modules/accessibilityModule.js +347 -0
  61. package/build/cli/modules/automateModule.d.ts +26 -0
  62. package/build/cli/modules/automateModule.d.ts.map +1 -0
  63. package/build/cli/modules/automateModule.js +222 -0
  64. package/build/cli/modules/baseModule.d.ts +33 -0
  65. package/build/cli/modules/baseModule.d.ts.map +1 -0
  66. package/build/cli/modules/baseModule.js +51 -0
  67. package/build/cli/modules/observabilityModule.d.ts +22 -0
  68. package/build/cli/modules/observabilityModule.d.ts.map +1 -0
  69. package/build/cli/modules/observabilityModule.js +45 -0
  70. package/build/cli/modules/percyModule.d.ts +19 -0
  71. package/build/cli/modules/percyModule.d.ts.map +1 -0
  72. package/build/cli/modules/percyModule.js +77 -0
  73. package/build/cli/modules/testHubModule.d.ts +30 -0
  74. package/build/cli/modules/testHubModule.d.ts.map +1 -0
  75. package/build/cli/modules/testHubModule.js +232 -0
  76. package/build/cli/modules/webdriverIOModule.d.ts +29 -0
  77. package/build/cli/modules/webdriverIOModule.d.ts.map +1 -0
  78. package/build/cli/modules/webdriverIOModule.js +128 -0
  79. package/build/cli/states/automationFrameworkState.d.ts +65 -0
  80. package/build/cli/states/automationFrameworkState.d.ts.map +1 -0
  81. package/build/cli/states/automationFrameworkState.js +61 -0
  82. package/build/cli/states/hookState.d.ts +45 -0
  83. package/build/cli/states/hookState.d.ts.map +1 -0
  84. package/build/cli/states/hookState.js +43 -0
  85. package/build/cli/states/testFrameworkState.d.ts +125 -0
  86. package/build/cli/states/testFrameworkState.d.ts.map +1 -0
  87. package/build/cli/states/testFrameworkState.js +115 -0
  88. package/build/constants.d.ts +13 -0
  89. package/build/constants.d.ts.map +1 -1
  90. package/build/constants.js +21 -1
  91. package/build/crash-reporter.d.ts.map +1 -1
  92. package/build/crash-reporter.js +4 -3
  93. package/build/exitHandler.d.ts.map +1 -1
  94. package/build/exitHandler.js +47 -5
  95. package/build/insights-handler.d.ts +8 -0
  96. package/build/insights-handler.d.ts.map +1 -1
  97. package/build/insights-handler.js +57 -1
  98. package/build/instrumentation/funnelInstrumentation.d.ts.map +1 -1
  99. package/build/instrumentation/funnelInstrumentation.js +5 -4
  100. package/build/instrumentation/performance/constants.d.ts +8 -0
  101. package/build/instrumentation/performance/constants.d.ts.map +1 -1
  102. package/build/instrumentation/performance/constants.js +9 -1
  103. package/build/instrumentation/performance/performance-tester.d.ts.map +1 -1
  104. package/build/instrumentation/performance/performance-tester.js +5 -3
  105. package/build/launcher.d.ts.map +1 -1
  106. package/build/launcher.js +94 -51
  107. package/build/request-handler.js +1 -1
  108. package/build/service.d.ts +3 -1
  109. package/build/service.d.ts.map +1 -1
  110. package/build/service.js +244 -69
  111. package/build/testOps/requestUtils.js +3 -2
  112. package/build/types.d.ts +36 -3
  113. package/build/types.d.ts.map +1 -1
  114. package/build/util.d.ts +13 -1
  115. package/build/util.d.ts.map +1 -1
  116. package/build/util.js +173 -27
  117. package/package.json +7 -4
  118. package/tsconfig.prod.tsbuildinfo +1 -1
@@ -6,9 +6,10 @@ import got from 'got';
6
6
  import UsageStats from '../testOps/usageStats.js';
7
7
  import TestOpsConfig from '../testOps/testOpsConfig.js';
8
8
  import { BStackLogger } from '../bstackLogger.js';
9
- import { BSTACK_A11Y_POLLING_TIMEOUT, BSTACK_SERVICE_VERSION, FUNNEL_INSTRUMENTATION_URL } from '../constants.js';
9
+ import { BSTACK_A11Y_POLLING_TIMEOUT, BSTACK_SERVICE_VERSION, WDIO_NAMING_PREFIX } from '../constants.js';
10
10
  import { getDataFromWorkers, removeWorkersDataDir } from '../data-store.js';
11
11
  import { getProductMap } from '../testHub/utils.js';
12
+ import APIUtils from '../cli/apiUtils.js';
12
13
  async function fireFunnelTestEvent(eventType, config) {
13
14
  if (!config.userName || !config.accessKey) {
14
15
  BStackLogger.debug('username/accesskey not passed');
@@ -57,7 +58,7 @@ export async function fireFunnelRequest(data) {
57
58
  const { userName, accessKey } = data;
58
59
  redactCredentialsFromFunnelData(data);
59
60
  BStackLogger.debug('Sending SDK event with data ' + util.inspect(data, { depth: 6 }));
60
- await got.post(FUNNEL_INSTRUMENTATION_URL, {
61
+ await got.post(APIUtils.FUNNEL_INSTRUMENTATION_URL, {
61
62
  headers: {
62
63
  'content-type': 'application/json'
63
64
  }, username: userName, password: accessKey, json: data
@@ -124,7 +125,7 @@ function buildEventData(eventType, config) {
124
125
  userName: config.userName,
125
126
  accessKey: config.accessKey,
126
127
  event_type: eventType,
127
- detectedFramework: 'WebdriverIO-' + config.framework,
128
+ detectedFramework: WDIO_NAMING_PREFIX + config.framework,
128
129
  event_properties: eventProperties
129
130
  };
130
131
  }
@@ -137,7 +138,7 @@ function getLanguageFramework(framework) {
137
138
  return 'WebdriverIO_' + framework;
138
139
  }
139
140
  function getReferrer(framework) {
140
- const fullName = framework ? 'WebdriverIO-' + framework : 'WebdriverIO';
141
+ const fullName = framework ? WDIO_NAMING_PREFIX + framework : 'WebdriverIO';
141
142
  return `${fullName}/${BSTACK_SERVICE_VERSION}`;
142
143
  }
143
144
  const sendEvent = {
@@ -17,6 +17,14 @@ export declare const EVENTS: {
17
17
  SDK_PERCY: string;
18
18
  SDK_PRE_INITIALIZE: string;
19
19
  SDK_POST_INITIALIZE: string;
20
+ SDK_CLI_START: string;
21
+ SDK_CLI_DOWNLOAD: string;
22
+ SDK_CLI_CHECK_UPDATE: string;
23
+ SDK_CLI_ON_BOOTSTRAP: string;
24
+ SDK_CLI_ON_CONNECT: string;
25
+ SDK_CLI_ON_STOP: string;
26
+ SDK_START_BIN_SESSION: string;
27
+ SDK_CONNECT_BIN_SESSION: string;
20
28
  };
21
29
  export declare const TESTHUB_EVENTS: {
22
30
  START: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/performance/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CAmBlB,CAAA;AAED,eAAO,MAAM,cAAc;;;CAG1B,CAAA;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;CAY3B,CAAA;AAED,eAAO,MAAM,WAAW;;;;;CAKvB,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAA;AAED,eAAO,MAAM,WAAW;;;;CAIvB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAA;AAED,eAAO,MAAM,iBAAiB;;;CAG7B,CAAA;AAED,eAAO,MAAM,mBAAmB;;CAE/B,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAKxB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/performance/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BlB,CAAA;AAED,eAAO,MAAM,cAAc;;;CAG1B,CAAA;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;CAY3B,CAAA;AAED,eAAO,MAAM,WAAW;;;;;CAKvB,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAA;AAED,eAAO,MAAM,WAAW;;;;CAIvB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAA;AAED,eAAO,MAAM,iBAAiB;;;CAG7B,CAAA;AAED,eAAO,MAAM,mBAAmB;;CAE/B,CAAA;AAED,eAAO,MAAM,YAAY;;;;;CAKxB,CAAA"}
@@ -16,7 +16,15 @@ export const EVENTS = {
16
16
  SDK_TURBOSCALE: 'sdk:turboscale',
17
17
  SDK_PERCY: 'sdk:percy',
18
18
  SDK_PRE_INITIALIZE: 'sdk:driver:pre-initialization',
19
- SDK_POST_INITIALIZE: 'sdk:driver:post-initialization'
19
+ SDK_POST_INITIALIZE: 'sdk:driver:post-initialization',
20
+ SDK_CLI_START: 'sdk:cli:start',
21
+ SDK_CLI_DOWNLOAD: 'sdk:cli:download',
22
+ SDK_CLI_CHECK_UPDATE: 'sdk:cli:check-update',
23
+ SDK_CLI_ON_BOOTSTRAP: 'sdk:cli:on-bootstrap',
24
+ SDK_CLI_ON_CONNECT: 'sdk:cli:on-connect',
25
+ SDK_CLI_ON_STOP: 'sdk:cli:on-stop',
26
+ SDK_START_BIN_SESSION: 'sdk:startBinSession',
27
+ SDK_CONNECT_BIN_SESSION: 'sdk:connectBinSession'
20
28
  };
21
29
  export const TESTHUB_EVENTS = {
22
30
  START: `${EVENTS.SDK_TESTHUB}:start`,
@@ -1 +1 @@
1
- {"version":3,"file":"performance-tester.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/performance/performance-tester.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAWlE,KAAK,kBAAkB,GAAG;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACrC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAA;IACtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyB;IAC/C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAyB;IACvD,MAAM,CAAC,OAAO,UAAQ;IACtB,MAAM,CAAC,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAC,CAAK;IACxD,MAAM,CAAC,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAK;IAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAA;IACpC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAA;IAChC,MAAM,CAAC,iBAAiB,SAAuB;IAC/C,MAAM,CAAC,iBAAiB,SAA2D;IACnF,MAAM,CAAC,kBAAkB,SAA0F;IAEnH,MAAM,CAAC,eAAe,CAAC,OAAO,GAAE,MAAiC;IAwCjE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAI,MAAM;WAepC,eAAe,CAAC,QAAQ,GAAE,MAA+B;IAoCtE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE;IAWjD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE;IAwB9C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,YAG9C,MAAM,OACT,MAAM,GAAG,MAAM,cACR,uBAAuB,CAAC,GAAG,CAAC;IAUhD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAE,kBAAuB,aAOpD,GAAG,EAAE;IAQnC,MAAM,CAAC,SAAS;IAIhB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,GAAU;IA6BhG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;IAO1B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,KAAK;IAUlF,MAAM,CAAC,YAAY;IAInB,MAAM,CAAC,KAAK,oCAAkE;WAEjE,gBAAgB;CA0EhC"}
1
+ {"version":3,"file":"performance-tester.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/performance/performance-tester.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAYlE,KAAK,kBAAkB,GAAG;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACrC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAA;IACtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyB;IAC/C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAyB;IACvD,MAAM,CAAC,OAAO,UAAQ;IACtB,MAAM,CAAC,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAC,CAAK;IACxD,MAAM,CAAC,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAK;IAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAA;IACpC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAA;IAChC,MAAM,CAAC,iBAAiB,SAAuB;IAC/C,MAAM,CAAC,iBAAiB,SAA2D;IACnF,MAAM,CAAC,kBAAkB,SAA0F;IAEnH,MAAM,CAAC,eAAe,CAAC,OAAO,GAAE,MAAiC;IAwCjE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAI,MAAM;WAepC,eAAe,CAAC,QAAQ,GAAE,MAA+B;IAsCtE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE;IAWjD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE;IAwB9C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,YAG9C,MAAM,OACT,MAAM,GAAG,MAAM,cACR,uBAAuB,CAAC,GAAG,CAAC;IAUhD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAE,kBAAuB,aAOpD,GAAG,EAAE;IAQnC,MAAM,CAAC,SAAS;IAIhB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,GAAU;IA6BhG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;IAO1B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,KAAK;IAUlF,MAAM,CAAC,YAAY;IAInB,MAAM,CAAC,KAAK,oCAAkE;WAEjE,gBAAgB;CA0EhC"}
@@ -8,7 +8,8 @@ import path from 'node:path';
8
8
  import { arch, hostname, platform, type, version } from 'node:os';
9
9
  import got from 'got';
10
10
  import { BStackLogger } from '../../bstackLogger.js';
11
- import { EDS_URL, PERF_MEASUREMENT_ENV } from '../../constants.js';
11
+ import { PERF_MEASUREMENT_ENV, PERF_METRICS_WAIT_TIME } from '../../constants.js';
12
+ import APIUtils from '../../cli/apiUtils.js';
12
13
  export default class PerformanceTester {
13
14
  static _observer;
14
15
  static _csvWriter;
@@ -77,6 +78,7 @@ export default class PerformanceTester {
77
78
  if (!this.started) {
78
79
  return;
79
80
  }
81
+ await PerformanceTester.sleep(PERF_METRICS_WAIT_TIME); // Wait to ensure all pending measurements are processed by the observer
80
82
  try {
81
83
  const eventsJson = JSON.stringify(this._measuredEvents);
82
84
  // remove enclosing array and add a trailing comma so that we
@@ -91,7 +93,7 @@ export default class PerformanceTester {
91
93
  if (!process.env[PERF_MEASUREMENT_ENV]) {
92
94
  return;
93
95
  }
94
- await PerformanceTester.sleep(2000); // Wait to 2s just to finish any running callbacks for timerify
96
+ await PerformanceTester.sleep(PERF_METRICS_WAIT_TIME); // Wait to 2s just to finish any running callbacks for timerify
95
97
  this.started = false;
96
98
  this.generateCSV(this._events);
97
99
  const content = this.generateReport(this._events);
@@ -255,7 +257,7 @@ export default class PerformanceTester {
255
257
  event_json: { measures: measures, sdkRunId: process.env.PERF_SDK_RUN_ID }
256
258
  }
257
259
  };
258
- const result = await got.post(`${EDS_URL}/send_sdk_events`, {
260
+ const result = await got.post(`${APIUtils.EDS_URL}/send_sdk_events`, {
259
261
  headers: {
260
262
  'content-type': 'application/json'
261
263
  }, json: payload
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AA0CxH,KAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAY5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IAbnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,OAAO,CAAC,wBAAwB,CAAC,CAAuB;IACxD,OAAO,CAAC,MAAM,CAAC,CAAO;IACtB,OAAO,CAAC,sBAAsB,CAAC,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;gBAG3C,QAAQ,EAAE,kBAAkB,GAAG,mBAAmB,EAC1D,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAiHjC,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAclC,SAAS,CAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,kBAAkB;IAmMpF,UAAU;IAyEV,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU;IA0B7G,SAAS;IAaT,UAAU,CAAC,GAAG,EAAC,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuBrD;;;OAGG;IACG,YAAY,CAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB1D,kBAAkB;IAOxB,qBAAqB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IA8GtH,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IA+H5F,8BAA8B;IAgB9B,sBAAsB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyCrE;;;OAGG;IACH,oBAAoB;IA6BpB,sBAAsB,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,EAAC,MAAM,EAAE,eAAe,CAAC,EAAC,MAAM;IASnF,mBAAmB;CAStB"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,yBAAyB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAiDxH,KAAK,iBAAiB,GAAG,yBAAyB,CAAC,KAAK,GAAG;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,2BAA4B,YAAW,QAAQ,CAAC,eAAe;IAY5E,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,OAAO;IAbnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,OAAO,CAAC,wBAAwB,CAAC,CAAuB;IACxD,OAAO,CAAC,MAAM,CAAC,CAAO;IACtB,OAAO,CAAC,sBAAsB,CAAC,CAAkC;IACjE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;gBAG3C,QAAQ,EAAE,kBAAkB,GAAG,mBAAmB,EAC1D,YAAY,EAAE,YAAY,CAAC,gBAAgB,EACnC,OAAO,EAAE,OAAO,CAAC,UAAU;IAqHjC,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAclC,SAAS,CAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,kBAAkB;IAmNpF,UAAU;IA8FV,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU;IA0B7G,SAAS;IAaT,UAAU,CAAC,GAAG,EAAC,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuBrD;;;OAGG;IACG,YAAY,CAAE,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB1D,kBAAkB;IASxB,qBAAqB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IA8GtH,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IA+H5F,8BAA8B;IAgB9B,sBAAsB,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,kBAAkB;IAyCrE;;;OAGG;IACH,oBAAoB;IA6BpB,sBAAsB,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,EAAC,MAAM,EAAE,eAAe,CAAC,EAAC,MAAM;IASnF,mBAAmB;CAStB"}
package/build/launcher.js CHANGED
@@ -15,8 +15,8 @@ import os from 'node:os';
15
15
  import { SevereServiceError } from 'webdriverio';
16
16
  import * as BrowserstackLocalLauncher from 'browserstack-local';
17
17
  import { startPercy, stopPercy, getBestPlatformForPercySnapshot } from './Percy/PercyHelper.js';
18
- import { BSTACK_SERVICE_VERSION, NOT_ALLOWED_KEYS_IN_CAPS, PERF_MEASUREMENT_ENV, RERUN_ENV, RERUN_TESTS_ENV, BROWSERSTACK_TESTHUB_UUID, VALID_APP_EXTENSION, BROWSERSTACK_PERCY, BROWSERSTACK_OBSERVABILITY } from './constants.js';
19
- import { launchTestSession, shouldAddServiceVersion, stopBuildUpstream, getCiInfo, isBStackSession, isUndefined, isAccessibilityAutomationSession, isTrue, getBrowserStackUser, getBrowserStackKey, uploadLogs, ObjectsAreEqual, isValidCapsForHealing, getBooleanValueFromString, validateCapsWithNonBstackA11y, mergeChromeOptions } from './util.js';
18
+ import { BSTACK_SERVICE_VERSION, NOT_ALLOWED_KEYS_IN_CAPS, PERF_MEASUREMENT_ENV, RERUN_ENV, RERUN_TESTS_ENV, BROWSERSTACK_TESTHUB_UUID, VALID_APP_EXTENSION, BROWSERSTACK_PERCY, BROWSERSTACK_OBSERVABILITY, WDIO_NAMING_PREFIX } from './constants.js';
19
+ import { launchTestSession, shouldAddServiceVersion, stopBuildUpstream, getCiInfo, isBStackSession, isUndefined, isAccessibilityAutomationSession, isTrue, getBrowserStackUser, getBrowserStackKey, uploadLogs, ObjectsAreEqual, isValidCapsForHealing, getBooleanValueFromString, validateCapsWithNonBstackA11y, mergeChromeOptions, normalizeTestReportingConfig, normalizeTestReportingEnvVariables } from './util.js';
20
20
  import { getProductMap } from './testHub/utils.js';
21
21
  import CrashReporter from './crash-reporter.js';
22
22
  import { BStackLogger } from './bstackLogger.js';
@@ -29,7 +29,11 @@ import AiHandler from './ai-handler.js';
29
29
  import TestOpsConfig from './testOps/testOpsConfig.js';
30
30
  import PerformanceTester from './instrumentation/performance/performance-tester.js';
31
31
  import * as PERFORMANCE_SDK_EVENTS from './instrumentation/performance/constants.js';
32
+ import { BrowserstackCLI } from './cli/index.js';
33
+ import { CLIUtils } from './cli/cliUtils.js';
32
34
  import accessibilityScripts from './scripts/accessibility-scripts.js';
35
+ import util from 'node:util';
36
+ import APIUtils from './cli/apiUtils.js';
33
37
  export default class BrowserstackLauncherService {
34
38
  _options;
35
39
  _config;
@@ -50,6 +54,9 @@ export default class BrowserstackLauncherService {
50
54
  setupExitHandlers();
51
55
  // added to maintain backward compatibility with webdriverIO v5
52
56
  this._config || (this._config = _options);
57
+ //normalizing testReporting config and env variables
58
+ normalizeTestReportingConfig(this._options);
59
+ normalizeTestReportingEnvVariables();
53
60
  this.browserStackConfig = BrowserStackConfig.getInstance(_options, _config);
54
61
  if (Array.isArray(capabilities)) {
55
62
  capabilities
@@ -170,6 +177,17 @@ export default class BrowserstackLauncherService {
170
177
  async onPrepare(config, capabilities) {
171
178
  // // Send Funnel start request
172
179
  await sendStart(this.browserStackConfig);
180
+ try {
181
+ if (CLIUtils.checkCLISupportedFrameworks(config.framework)) {
182
+ CLIUtils.setFrameworkDetail(WDIO_NAMING_PREFIX + config.framework, 'WebdriverIO'); // TODO: make this constant
183
+ const binconfig = CLIUtils.getBinConfig(config, capabilities, this._options, this._buildTag);
184
+ await BrowserstackCLI.getInstance().bootstrap(this._options, config, binconfig);
185
+ BStackLogger.debug(`Is CLI running ${BrowserstackCLI.getInstance().isRunning()}`);
186
+ }
187
+ }
188
+ catch (err) {
189
+ BStackLogger.error(`Error while starting CLI ${err}`);
190
+ }
173
191
  // Setting up healing for those sessions where we don't add the service version capability as it indicates that the session is not being run on BrowserStack
174
192
  if (!shouldAddServiceVersion(this._config, this._options.testObservability, capabilities)) {
175
193
  try {
@@ -198,33 +216,35 @@ export default class BrowserstackLauncherService {
198
216
  * Upload app to BrowserStack if valid file path to app is given.
199
217
  * Update app value of capability directly if app_url, custom_id, shareable_id is given
200
218
  */
201
- if (!this._options.app) {
202
- BStackLogger.debug('app is not defined in browserstack-service config, skipping ...');
203
- }
204
- else {
205
- let app = {};
206
- const appConfig = this._options.app;
207
- try {
208
- app = await this._validateApp(appConfig);
219
+ if (!BrowserstackCLI.getInstance().isRunning()) {
220
+ if (!this._options.app) {
221
+ BStackLogger.debug('app is not defined in browserstack-service config, skipping ...');
209
222
  }
210
- catch (error) {
211
- throw new SevereServiceError(error);
212
- }
213
- if (VALID_APP_EXTENSION.includes(path.extname(app.app))) {
214
- if (fs.existsSync(app.app)) {
215
- const data = await this._uploadApp(app);
216
- BStackLogger.info(`app upload completed: ${JSON.stringify(data)}`);
217
- app.app = data.app_url;
223
+ else {
224
+ let app = {};
225
+ const appConfig = this._options.app;
226
+ try {
227
+ app = await this._validateApp(appConfig);
218
228
  }
219
- else if (app.customId) {
220
- app.app = app.customId;
229
+ catch (error) {
230
+ throw new SevereServiceError(error);
221
231
  }
222
- else {
223
- throw new SevereServiceError(`[Invalid app path] app path ${app.app} is not correct, Provide correct path to app under test`);
232
+ if (VALID_APP_EXTENSION.includes(path.extname(app.app))) {
233
+ if (fs.existsSync(app.app)) {
234
+ const data = await this._uploadApp(app);
235
+ BStackLogger.info(`app upload completed: ${JSON.stringify(data)}`);
236
+ app.app = data.app_url;
237
+ }
238
+ else if (app.customId) {
239
+ app.app = app.customId;
240
+ }
241
+ else {
242
+ throw new SevereServiceError(`[Invalid app path] app path ${app.app} is not correct, Provide correct path to app under test`);
243
+ }
224
244
  }
245
+ BStackLogger.info(`Using app: ${app.app}`);
246
+ this._updateCaps(capabilities, 'app', app.app);
225
247
  }
226
- BStackLogger.info(`Using app: ${app.app}`);
227
- this._updateCaps(capabilities, 'app', app.app);
228
248
  }
229
249
  /**
230
250
  * buildIdentifier in service options will take precedence over specified in capabilities
@@ -242,7 +262,7 @@ export default class BrowserstackLauncherService {
242
262
  this._updateObjectTypeCaps(capabilities, 'accessibilityOptions');
243
263
  const shouldSetupPercy = this._options.percy || (isUndefined(this._options.percy) && this._options.app);
244
264
  let buildStartResponse = null;
245
- if (this._options.testObservability || this._accessibilityAutomation || shouldSetupPercy) {
265
+ if (!BrowserstackCLI.getInstance().isRunning() && (this._options.testObservability || this._accessibilityAutomation || shouldSetupPercy)) {
246
266
  BStackLogger.debug('Sending launch start event');
247
267
  buildStartResponse = await launchTestSession(this._options, this._config, {
248
268
  projectName: this._projectName,
@@ -299,6 +319,10 @@ export default class BrowserstackLauncherService {
299
319
  // send testhub build uuid and product map instrumentation
300
320
  this._updateCaps(capabilities, 'testhubBuildUuid');
301
321
  this._updateCaps(capabilities, 'buildProductMap');
322
+ // local binary will be handled by CLI
323
+ if (BrowserstackCLI.getInstance().isRunning()) {
324
+ return;
325
+ }
302
326
  if (!this._options.browserstackLocal) {
303
327
  return BStackLogger.info('browserstackLocal is not enabled - skipping...');
304
328
  }
@@ -343,35 +367,55 @@ export default class BrowserstackLauncherService {
343
367
  });
344
368
  }
345
369
  async onComplete() {
346
- BStackLogger.debug('Inside OnComplete hook..');
347
- BStackLogger.debug('Sending stop launch event');
348
- await stopBuildUpstream();
349
- if (process.env[BROWSERSTACK_OBSERVABILITY] && process.env[BROWSERSTACK_TESTHUB_UUID]) {
350
- console.log(`\nVisit https://observability.browserstack.com/builds/${process.env[BROWSERSTACK_TESTHUB_UUID]} to view build report, insights, and many more debugging information all at one place!\n`);
351
- }
352
- this.browserStackConfig.testObservability.buildStopped = true;
353
- await PerformanceTester.stopAndGenerate('performance-launcher.html');
354
- if (process.env[PERF_MEASUREMENT_ENV]) {
355
- PerformanceTester.calculateTimes(['launchTestSession', 'stopBuildUpstream']);
356
- if (!process.env.START_TIME) {
357
- return;
358
- }
359
- const duration = (new Date()).getTime() - (new Date(process.env.START_TIME)).getTime();
360
- BStackLogger.info(`Total duration is ${duration / 1000} s`);
361
- }
362
- BStackLogger.info(`BrowserStack service run ended for id: ${this.browserStackConfig?.sdkRunID} testhub id: ${TestOpsConfig.getInstance()?.buildHashedId}`);
363
- await sendFinish(this.browserStackConfig);
370
+ PerformanceTester.start(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_CLEANUP);
364
371
  try {
365
- await this._uploadServiceLogs();
372
+ BStackLogger.debug('Inside OnComplete hook..');
373
+ BStackLogger.debug('Sending stop launch event');
374
+ try {
375
+ await (BrowserstackCLI.getInstance().isRunning() ? BrowserstackCLI.getInstance().stop() : stopBuildUpstream());
376
+ }
377
+ catch (err) {
378
+ BStackLogger.error(`Error while stoping CLI ${err}`);
379
+ }
380
+ if (process.env[BROWSERSTACK_OBSERVABILITY] && process.env[BROWSERSTACK_TESTHUB_UUID]) {
381
+ console.log(`\nVisit https://automation.browserstack.com/builds/${process.env[BROWSERSTACK_TESTHUB_UUID]} to view build report, insights, and many more debugging information all at one place!\n`);
382
+ }
383
+ this.browserStackConfig.testObservability.buildStopped = true;
384
+ if (process.env[PERF_MEASUREMENT_ENV]) {
385
+ PerformanceTester.calculateTimes(['launchTestSession', 'stopBuildUpstream']);
386
+ if (!process.env.START_TIME) {
387
+ PerformanceTester.end(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_CLEANUP);
388
+ await PerformanceTester.stopAndGenerate('performance-launcher.html');
389
+ return;
390
+ }
391
+ const duration = (new Date()).getTime() - (new Date(process.env.START_TIME)).getTime();
392
+ BStackLogger.info(`Total duration is ${duration / 1000} s`);
393
+ }
394
+ BStackLogger.info(`BrowserStack service run ended for id: ${this.browserStackConfig?.sdkRunID} testhub id: ${TestOpsConfig.getInstance()?.buildHashedId}`);
395
+ await sendFinish(this.browserStackConfig);
396
+ try {
397
+ await this._uploadServiceLogs();
398
+ }
399
+ catch (error) {
400
+ BStackLogger.debug(`Failed to upload BrowserStack WDIO Service logs ${error}`);
401
+ }
402
+ PerformanceTester.end(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_CLEANUP);
403
+ await PerformanceTester.stopAndGenerate('performance-launcher.html');
366
404
  }
367
405
  catch (error) {
368
- BStackLogger.debug(`Failed to upload BrowserStack WDIO Service logs ${error}`);
406
+ PerformanceTester.end(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_CLEANUP, false, util.format(error));
407
+ await PerformanceTester.stopAndGenerate('performance-launcher.html');
408
+ BStackLogger.error(`Error in onComplete hook: ${error}`);
369
409
  }
370
410
  BStackLogger.clearLogger();
371
411
  if (this._options.percy) {
372
412
  await this.stopPercy();
373
413
  PercyLogger.clearLogger();
374
414
  }
415
+ // local binary will be handled by CLI
416
+ if (BrowserstackCLI.getInstance().isRunning()) {
417
+ return;
418
+ }
375
419
  if (!this.browserstackLocal || !this.browserstackLocal.isRunning()) {
376
420
  return;
377
421
  }
@@ -451,7 +495,7 @@ export default class BrowserstackLauncherService {
451
495
  if (app.customId) {
452
496
  form.append('custom_id', app.customId);
453
497
  }
454
- const res = await got.post('https://api-cloud.browserstack.com/app-automate/upload', {
498
+ const res = await got.post(`${APIUtils.BROWSERSTACK_AA_API_CLOUD_URL}/app-automate/upload`, {
455
499
  body: form,
456
500
  username: this._config.user,
457
501
  password: this._config.key
@@ -488,8 +532,10 @@ export default class BrowserstackLauncherService {
488
532
  }
489
533
  async _uploadServiceLogs() {
490
534
  const clientBuildUuid = this._getClientBuildUuid();
491
- const response = await uploadLogs(getBrowserStackUser(this._config), getBrowserStackKey(this._config), clientBuildUuid);
492
- BStackLogger.logToFile(`Response - ${format(response)}`, 'debug');
535
+ await PerformanceTester.measureWrapper(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_AUTO_CAPTURE, async () => {
536
+ const response = await uploadLogs(getBrowserStackUser(this._config), getBrowserStackKey(this._config), clientBuildUuid);
537
+ BStackLogger.logToFile(`Response - ${format(response)}`, 'debug');
538
+ })();
493
539
  }
494
540
  _updateObjectTypeCaps(capabilities, capType, value) {
495
541
  try {
@@ -880,9 +926,6 @@ __decorate([
880
926
  __decorate([
881
927
  PerformanceTester.Measure(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_PRE_TEST)
882
928
  ], BrowserstackLauncherService.prototype, "onPrepare", null);
883
- __decorate([
884
- PerformanceTester.Measure(PERFORMANCE_SDK_EVENTS.EVENTS.SDK_CLEANUP)
885
- ], BrowserstackLauncherService.prototype, "onComplete", null);
886
929
  __decorate([
887
930
  PerformanceTester.Measure(PERFORMANCE_SDK_EVENTS.APP_AUTOMATE_EVENTS.APP_UPLOAD)
888
931
  ], BrowserstackLauncherService.prototype, "_uploadApp", null);
@@ -19,7 +19,7 @@ export default class RequestQueueHandler {
19
19
  }
20
20
  add(event) {
21
21
  if (!process.env[TESTOPS_BUILD_COMPLETED_ENV]) {
22
- throw new Error('Observability build start not completed yet.');
22
+ throw new Error('Test Reporting and Analytics build start not completed yet.');
23
23
  }
24
24
  this.queue.push(event);
25
25
  BStackLogger.debug(`Added data to request queue. Queue length = ${this.queue.length}`);
@@ -6,6 +6,8 @@ export default class BrowserstackService implements Services.ServiceInstance {
6
6
  private _config;
7
7
  private _sessionBaseUrl;
8
8
  private _failReasons;
9
+ private _hookFailReasons;
10
+ private _pureTestFailReasons;
9
11
  private _scenariosThatRan;
10
12
  private _failureStatuses;
11
13
  private _browser?;
@@ -25,7 +27,7 @@ export default class BrowserstackService implements Services.ServiceInstance {
25
27
  private _turboScale;
26
28
  constructor(options: BrowserstackConfig & Options.Testrunner, _caps: Capabilities.RemoteCapability, _config: Options.Testrunner);
27
29
  _updateCaps(fn: (caps: WebdriverIO.Capabilities | Capabilities.DesiredCapabilities) => void): void;
28
- beforeSession(config: Omit<Options.Testrunner, 'capabilities'>): void;
30
+ beforeSession(config: Omit<Options.Testrunner, 'capabilities'>, capabilities: WebdriverIO.Capabilities): Promise<void>;
29
31
  before(caps: Capabilities.RemoteCapability, specs: string[], browser: WebdriverIO.Browser): Promise<void>;
30
32
  /**
31
33
  * Set the default job name at the suite level to make sure we account
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}