@wdio/browserstack-service 0.0.0-canary-20260722132416

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 (331) hide show
  1. package/LICENSE-MIT +20 -0
  2. package/README.md +392 -0
  3. package/browserstack-service.d.ts +43 -0
  4. package/build/Percy/Percy-Handler.d.ts +32 -0
  5. package/build/Percy/Percy-Handler.d.ts.map +1 -0
  6. package/build/Percy/Percy-Handler.js +165 -0
  7. package/build/Percy/Percy-Handler.js.map +1 -0
  8. package/build/Percy/Percy.d.ts +19 -0
  9. package/build/Percy/Percy.d.ts.map +1 -0
  10. package/build/Percy/Percy.js +164 -0
  11. package/build/Percy/Percy.js.map +1 -0
  12. package/build/Percy/PercyBinary.d.ts +10 -0
  13. package/build/Percy/PercyBinary.d.ts.map +1 -0
  14. package/build/Percy/PercyBinary.js +161 -0
  15. package/build/Percy/PercyBinary.js.map +1 -0
  16. package/build/Percy/PercyCaptureMap.d.ts +9 -0
  17. package/build/Percy/PercyCaptureMap.d.ts.map +1 -0
  18. package/build/Percy/PercyCaptureMap.js +36 -0
  19. package/build/Percy/PercyCaptureMap.js.map +1 -0
  20. package/build/Percy/PercyHelper.d.ts +8 -0
  21. package/build/Percy/PercyHelper.d.ts.map +1 -0
  22. package/build/Percy/PercyHelper.js +68 -0
  23. package/build/Percy/PercyHelper.js.map +1 -0
  24. package/build/Percy/PercyLogger.d.ts +15 -0
  25. package/build/Percy/PercyLogger.d.ts.map +1 -0
  26. package/build/Percy/PercyLogger.js +68 -0
  27. package/build/Percy/PercyLogger.js.map +1 -0
  28. package/build/Percy/PercySDK.d.ts +4 -0
  29. package/build/Percy/PercySDK.d.ts.map +1 -0
  30. package/build/Percy/PercySDK.js +86 -0
  31. package/build/Percy/PercySDK.js.map +1 -0
  32. package/build/accessibility-handler.d.ts +52 -0
  33. package/build/accessibility-handler.d.ts.map +1 -0
  34. package/build/accessibility-handler.js +361 -0
  35. package/build/accessibility-handler.js.map +1 -0
  36. package/build/ai-handler.d.ts +23 -0
  37. package/build/ai-handler.d.ts.map +1 -0
  38. package/build/ai-handler.js +184 -0
  39. package/build/ai-handler.js.map +1 -0
  40. package/build/bstackLogger.d.ts +16 -0
  41. package/build/bstackLogger.d.ts.map +1 -0
  42. package/build/bstackLogger.js +71 -0
  43. package/build/bstackLogger.js.map +1 -0
  44. package/build/cleanup.d.ts +9 -0
  45. package/build/cleanup.d.ts.map +1 -0
  46. package/build/cleanup.js +101 -0
  47. package/build/cleanup.js.map +1 -0
  48. package/build/cli/apiUtils.d.ts +14 -0
  49. package/build/cli/apiUtils.d.ts.map +1 -0
  50. package/build/cli/apiUtils.js +25 -0
  51. package/build/cli/apiUtils.js.map +1 -0
  52. package/build/cli/cliLogger.d.ts +17 -0
  53. package/build/cli/cliLogger.d.ts.map +1 -0
  54. package/build/cli/cliLogger.js +82 -0
  55. package/build/cli/cliLogger.js.map +1 -0
  56. package/build/cli/cliUtils.d.ts +64 -0
  57. package/build/cli/cliUtils.d.ts.map +1 -0
  58. package/build/cli/cliUtils.js +461 -0
  59. package/build/cli/cliUtils.js.map +1 -0
  60. package/build/cli/eventDispatcher.d.ts +28 -0
  61. package/build/cli/eventDispatcher.d.ts.map +1 -0
  62. package/build/cli/eventDispatcher.js +49 -0
  63. package/build/cli/eventDispatcher.js.map +1 -0
  64. package/build/cli/frameworks/automationFramework.d.ts +89 -0
  65. package/build/cli/frameworks/automationFramework.d.ts.map +1 -0
  66. package/build/cli/frameworks/automationFramework.js +132 -0
  67. package/build/cli/frameworks/automationFramework.js.map +1 -0
  68. package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts +18 -0
  69. package/build/cli/frameworks/constants/automationFrameworkConstants.d.ts.map +1 -0
  70. package/build/cli/frameworks/constants/automationFrameworkConstants.js +18 -0
  71. package/build/cli/frameworks/constants/automationFrameworkConstants.js.map +1 -0
  72. package/build/cli/frameworks/constants/testFrameworkConstants.d.ts +43 -0
  73. package/build/cli/frameworks/constants/testFrameworkConstants.d.ts.map +1 -0
  74. package/build/cli/frameworks/constants/testFrameworkConstants.js +43 -0
  75. package/build/cli/frameworks/constants/testFrameworkConstants.js.map +1 -0
  76. package/build/cli/frameworks/testFramework.d.ts +89 -0
  77. package/build/cli/frameworks/testFramework.d.ts.map +1 -0
  78. package/build/cli/frameworks/testFramework.js +126 -0
  79. package/build/cli/frameworks/testFramework.js.map +1 -0
  80. package/build/cli/frameworks/wdioAutomationFramework.d.ts +28 -0
  81. package/build/cli/frameworks/wdioAutomationFramework.d.ts.map +1 -0
  82. package/build/cli/frameworks/wdioAutomationFramework.js +67 -0
  83. package/build/cli/frameworks/wdioAutomationFramework.js.map +1 -0
  84. package/build/cli/frameworks/wdioMochaTestFramework.d.ts +82 -0
  85. package/build/cli/frameworks/wdioMochaTestFramework.d.ts.map +1 -0
  86. package/build/cli/frameworks/wdioMochaTestFramework.js +322 -0
  87. package/build/cli/frameworks/wdioMochaTestFramework.js.map +1 -0
  88. package/build/cli/grpcClient.d.ts +86 -0
  89. package/build/cli/grpcClient.d.ts.map +1 -0
  90. package/build/cli/grpcClient.js +532 -0
  91. package/build/cli/grpcClient.js.map +1 -0
  92. package/build/cli/index.d.ts +150 -0
  93. package/build/cli/index.d.ts.map +1 -0
  94. package/build/cli/index.js +464 -0
  95. package/build/cli/index.js.map +1 -0
  96. package/build/cli/instances/automationFrameworkInstance.d.ts +33 -0
  97. package/build/cli/instances/automationFrameworkInstance.d.ts.map +1 -0
  98. package/build/cli/instances/automationFrameworkInstance.js +45 -0
  99. package/build/cli/instances/automationFrameworkInstance.js.map +1 -0
  100. package/build/cli/instances/testFrameworkInstance.d.ts +62 -0
  101. package/build/cli/instances/testFrameworkInstance.d.ts.map +1 -0
  102. package/build/cli/instances/testFrameworkInstance.js +97 -0
  103. package/build/cli/instances/testFrameworkInstance.js.map +1 -0
  104. package/build/cli/instances/trackedContext.d.ts +32 -0
  105. package/build/cli/instances/trackedContext.d.ts.map +1 -0
  106. package/build/cli/instances/trackedContext.js +48 -0
  107. package/build/cli/instances/trackedContext.js.map +1 -0
  108. package/build/cli/instances/trackedInstance.d.ts +40 -0
  109. package/build/cli/instances/trackedInstance.d.ts.map +1 -0
  110. package/build/cli/instances/trackedInstance.js +64 -0
  111. package/build/cli/instances/trackedInstance.js.map +1 -0
  112. package/build/cli/modules/accessibilityModule.d.ts +46 -0
  113. package/build/cli/modules/accessibilityModule.d.ts.map +1 -0
  114. package/build/cli/modules/accessibilityModule.js +447 -0
  115. package/build/cli/modules/accessibilityModule.js.map +1 -0
  116. package/build/cli/modules/automateModule.d.ts +26 -0
  117. package/build/cli/modules/automateModule.d.ts.map +1 -0
  118. package/build/cli/modules/automateModule.js +223 -0
  119. package/build/cli/modules/automateModule.js.map +1 -0
  120. package/build/cli/modules/baseModule.d.ts +33 -0
  121. package/build/cli/modules/baseModule.d.ts.map +1 -0
  122. package/build/cli/modules/baseModule.js +52 -0
  123. package/build/cli/modules/baseModule.js.map +1 -0
  124. package/build/cli/modules/observabilityModule.d.ts +22 -0
  125. package/build/cli/modules/observabilityModule.d.ts.map +1 -0
  126. package/build/cli/modules/observabilityModule.js +46 -0
  127. package/build/cli/modules/observabilityModule.js.map +1 -0
  128. package/build/cli/modules/percyModule.d.ts +19 -0
  129. package/build/cli/modules/percyModule.d.ts.map +1 -0
  130. package/build/cli/modules/percyModule.js +78 -0
  131. package/build/cli/modules/percyModule.js.map +1 -0
  132. package/build/cli/modules/testHubModule.d.ts +30 -0
  133. package/build/cli/modules/testHubModule.d.ts.map +1 -0
  134. package/build/cli/modules/testHubModule.js +233 -0
  135. package/build/cli/modules/testHubModule.js.map +1 -0
  136. package/build/cli/modules/webdriverIOModule.d.ts +29 -0
  137. package/build/cli/modules/webdriverIOModule.d.ts.map +1 -0
  138. package/build/cli/modules/webdriverIOModule.js +129 -0
  139. package/build/cli/modules/webdriverIOModule.js.map +1 -0
  140. package/build/cli/states/automationFrameworkState.d.ts +65 -0
  141. package/build/cli/states/automationFrameworkState.d.ts.map +1 -0
  142. package/build/cli/states/automationFrameworkState.js +62 -0
  143. package/build/cli/states/automationFrameworkState.js.map +1 -0
  144. package/build/cli/states/hookState.d.ts +45 -0
  145. package/build/cli/states/hookState.d.ts.map +1 -0
  146. package/build/cli/states/hookState.js +44 -0
  147. package/build/cli/states/hookState.js.map +1 -0
  148. package/build/cli/states/testFrameworkState.d.ts +125 -0
  149. package/build/cli/states/testFrameworkState.d.ts.map +1 -0
  150. package/build/cli/states/testFrameworkState.js +116 -0
  151. package/build/cli/states/testFrameworkState.js.map +1 -0
  152. package/build/config.d.ts +29 -0
  153. package/build/config.d.ts.map +1 -0
  154. package/build/config.js +52 -0
  155. package/build/config.js.map +1 -0
  156. package/build/constants.d.ts +96 -0
  157. package/build/constants.d.ts.map +1 -0
  158. package/build/constants.js +156 -0
  159. package/build/constants.js.map +1 -0
  160. package/build/crash-reporter.d.ts +18 -0
  161. package/build/crash-reporter.d.ts.map +1 -0
  162. package/build/crash-reporter.js +134 -0
  163. package/build/crash-reporter.js.map +1 -0
  164. package/build/cucumber-types.d.ts +194 -0
  165. package/build/cucumber-types.d.ts.map +1 -0
  166. package/build/cucumber-types.js +2 -0
  167. package/build/cucumber-types.js.map +1 -0
  168. package/build/data-store.d.ts +4 -0
  169. package/build/data-store.d.ts.map +1 -0
  170. package/build/data-store.js +42 -0
  171. package/build/data-store.js.map +1 -0
  172. package/build/exitHandler.d.ts +4 -0
  173. package/build/exitHandler.d.ts.map +1 -0
  174. package/build/exitHandler.js +105 -0
  175. package/build/exitHandler.js.map +1 -0
  176. package/build/fileStream.d.ts +9 -0
  177. package/build/fileStream.d.ts.map +1 -0
  178. package/build/fileStream.js +13 -0
  179. package/build/fileStream.js.map +1 -0
  180. package/build/grpc/generated/sdk-messages-accessibility.d.ts +76 -0
  181. package/build/grpc/generated/sdk-messages-accessibility.d.ts.map +1 -0
  182. package/build/grpc/generated/sdk-messages-accessibility.js +908 -0
  183. package/build/grpc/generated/sdk-messages-accessibility.js.map +1 -0
  184. package/build/grpc/generated/sdk-messages-ai.d.ts +52 -0
  185. package/build/grpc/generated/sdk-messages-ai.d.ts.map +1 -0
  186. package/build/grpc/generated/sdk-messages-ai.js +643 -0
  187. package/build/grpc/generated/sdk-messages-ai.js.map +1 -0
  188. package/build/grpc/generated/sdk-messages-observability.d.ts +44 -0
  189. package/build/grpc/generated/sdk-messages-observability.d.ts.map +1 -0
  190. package/build/grpc/generated/sdk-messages-observability.js +505 -0
  191. package/build/grpc/generated/sdk-messages-observability.js.map +1 -0
  192. package/build/grpc/generated/sdk-messages-percy.d.ts +16 -0
  193. package/build/grpc/generated/sdk-messages-percy.d.ts.map +1 -0
  194. package/build/grpc/generated/sdk-messages-percy.js +111 -0
  195. package/build/grpc/generated/sdk-messages-percy.js.map +1 -0
  196. package/build/grpc/generated/sdk-messages-testhub.d.ts +16 -0
  197. package/build/grpc/generated/sdk-messages-testhub.d.ts.map +1 -0
  198. package/build/grpc/generated/sdk-messages-testhub.js +132 -0
  199. package/build/grpc/generated/sdk-messages-testhub.js.map +1 -0
  200. package/build/grpc/generated/sdk-messages.d.ts +288 -0
  201. package/build/grpc/generated/sdk-messages.d.ts.map +1 -0
  202. package/build/grpc/generated/sdk-messages.js +3958 -0
  203. package/build/grpc/generated/sdk-messages.js.map +1 -0
  204. package/build/grpc/generated/sdk.d.ts +282 -0
  205. package/build/grpc/generated/sdk.d.ts.map +1 -0
  206. package/build/grpc/generated/sdk.js +197 -0
  207. package/build/grpc/generated/sdk.js.map +1 -0
  208. package/build/grpc/index.d.ts +43 -0
  209. package/build/grpc/index.d.ts.map +1 -0
  210. package/build/grpc/index.js +154 -0
  211. package/build/grpc/index.js.map +1 -0
  212. package/build/index.d.ts +20 -0
  213. package/build/index.d.ts.map +1 -0
  214. package/build/index.js +13 -0
  215. package/build/index.js.map +1 -0
  216. package/build/insights-handler.d.ts +76 -0
  217. package/build/insights-handler.d.ts.map +1 -0
  218. package/build/insights-handler.js +855 -0
  219. package/build/insights-handler.js.map +1 -0
  220. package/build/instrumentation/funnelInstrumentation.d.ts +8 -0
  221. package/build/instrumentation/funnelInstrumentation.d.ts.map +1 -0
  222. package/build/instrumentation/funnelInstrumentation.js +235 -0
  223. package/build/instrumentation/funnelInstrumentation.js.map +1 -0
  224. package/build/instrumentation/performance/constants.d.ts +151 -0
  225. package/build/instrumentation/performance/constants.d.ts.map +1 -0
  226. package/build/instrumentation/performance/constants.js +158 -0
  227. package/build/instrumentation/performance/constants.js.map +1 -0
  228. package/build/instrumentation/performance/performance-tester.d.ts +55 -0
  229. package/build/instrumentation/performance/performance-tester.d.ts.map +1 -0
  230. package/build/instrumentation/performance/performance-tester.js +403 -0
  231. package/build/instrumentation/performance/performance-tester.js.map +1 -0
  232. package/build/launcher.d.ts +49 -0
  233. package/build/launcher.d.ts.map +1 -0
  234. package/build/launcher.js +1077 -0
  235. package/build/launcher.js.map +1 -0
  236. package/build/log4jsAppender.d.ts +2 -0
  237. package/build/log4jsAppender.d.ts.map +1 -0
  238. package/build/log4jsAppender.js +20 -0
  239. package/build/log4jsAppender.js.map +1 -0
  240. package/build/logPatcher.d.ts +13 -0
  241. package/build/logPatcher.d.ts.map +1 -0
  242. package/build/logPatcher.js +39 -0
  243. package/build/logPatcher.js.map +1 -0
  244. package/build/logReportingAPI.d.ts +12 -0
  245. package/build/logReportingAPI.d.ts.map +1 -0
  246. package/build/logReportingAPI.js +57 -0
  247. package/build/logReportingAPI.js.map +1 -0
  248. package/build/reporter.d.ts +40 -0
  249. package/build/reporter.d.ts.map +1 -0
  250. package/build/reporter.js +254 -0
  251. package/build/reporter.js.map +1 -0
  252. package/build/request-handler.d.ts +19 -0
  253. package/build/request-handler.d.ts.map +1 -0
  254. package/build/request-handler.js +78 -0
  255. package/build/request-handler.js.map +1 -0
  256. package/build/scripts/accessibility-scripts.d.ts +26 -0
  257. package/build/scripts/accessibility-scripts.d.ts.map +1 -0
  258. package/build/scripts/accessibility-scripts.js +91 -0
  259. package/build/scripts/accessibility-scripts.js.map +1 -0
  260. package/build/service.d.ts +68 -0
  261. package/build/service.d.ts.map +1 -0
  262. package/build/service.js +740 -0
  263. package/build/service.js.map +1 -0
  264. package/build/testHub/utils.d.ts +10 -0
  265. package/build/testHub/utils.d.ts.map +1 -0
  266. package/build/testHub/utils.js +67 -0
  267. package/build/testHub/utils.js.map +1 -0
  268. package/build/testOps/featureStats.d.ts +45 -0
  269. package/build/testOps/featureStats.d.ts.map +1 -0
  270. package/build/testOps/featureStats.js +117 -0
  271. package/build/testOps/featureStats.js.map +1 -0
  272. package/build/testOps/featureUsage.d.ts +22 -0
  273. package/build/testOps/featureUsage.d.ts.map +1 -0
  274. package/build/testOps/featureUsage.js +48 -0
  275. package/build/testOps/featureUsage.js.map +1 -0
  276. package/build/testOps/listener.d.ts +40 -0
  277. package/build/testOps/listener.d.ts.map +1 -0
  278. package/build/testOps/listener.js +269 -0
  279. package/build/testOps/listener.js.map +1 -0
  280. package/build/testOps/requestUtils.d.ts +4 -0
  281. package/build/testOps/requestUtils.d.ts.map +1 -0
  282. package/build/testOps/requestUtils.js +41 -0
  283. package/build/testOps/requestUtils.js.map +1 -0
  284. package/build/testOps/testOpsConfig.d.ts +11 -0
  285. package/build/testOps/testOpsConfig.d.ts.map +1 -0
  286. package/build/testOps/testOpsConfig.js +20 -0
  287. package/build/testOps/testOpsConfig.js.map +1 -0
  288. package/build/testOps/usageStats.d.ts +404 -0
  289. package/build/testOps/usageStats.d.ts.map +1 -0
  290. package/build/testOps/usageStats.js +115 -0
  291. package/build/testOps/usageStats.js.map +1 -0
  292. package/build/testorchestration/apply-orchestration.d.ts +7 -0
  293. package/build/testorchestration/apply-orchestration.d.ts.map +1 -0
  294. package/build/testorchestration/apply-orchestration.js +43 -0
  295. package/build/testorchestration/apply-orchestration.js.map +1 -0
  296. package/build/testorchestration/helpers.d.ts +20 -0
  297. package/build/testorchestration/helpers.d.ts.map +1 -0
  298. package/build/testorchestration/helpers.js +413 -0
  299. package/build/testorchestration/helpers.js.map +1 -0
  300. package/build/testorchestration/request-utils.d.ts +23 -0
  301. package/build/testorchestration/request-utils.d.ts.map +1 -0
  302. package/build/testorchestration/request-utils.js +82 -0
  303. package/build/testorchestration/request-utils.js.map +1 -0
  304. package/build/testorchestration/test-ordering-server.d.ts +33 -0
  305. package/build/testorchestration/test-ordering-server.d.ts.map +1 -0
  306. package/build/testorchestration/test-ordering-server.js +169 -0
  307. package/build/testorchestration/test-ordering-server.js.map +1 -0
  308. package/build/testorchestration/testorcherstrationhandler.d.ts +50 -0
  309. package/build/testorchestration/testorcherstrationhandler.d.ts.map +1 -0
  310. package/build/testorchestration/testorcherstrationhandler.js +134 -0
  311. package/build/testorchestration/testorcherstrationhandler.js.map +1 -0
  312. package/build/testorchestration/testorcherstrationutils.d.ts +86 -0
  313. package/build/testorchestration/testorcherstrationutils.d.ts.map +1 -0
  314. package/build/testorchestration/testorcherstrationutils.js +380 -0
  315. package/build/testorchestration/testorcherstrationutils.js.map +1 -0
  316. package/build/types.d.ts +413 -0
  317. package/build/types.d.ts.map +1 -0
  318. package/build/types.js +2 -0
  319. package/build/types.js.map +1 -0
  320. package/build/util.d.ts +241 -0
  321. package/build/util.d.ts.map +1 -0
  322. package/build/util.js +1665 -0
  323. package/build/util.js.map +1 -0
  324. package/package.json +96 -0
  325. package/src/proto/browserstack/sdk/v1/sdk-messages-accessibility.proto +71 -0
  326. package/src/proto/browserstack/sdk/v1/sdk-messages-ai.proto +48 -0
  327. package/src/proto/browserstack/sdk/v1/sdk-messages-observability.proto +39 -0
  328. package/src/proto/browserstack/sdk/v1/sdk-messages-percy.proto +10 -0
  329. package/src/proto/browserstack/sdk/v1/sdk-messages-testhub.proto +10 -0
  330. package/src/proto/browserstack/sdk/v1/sdk-messages.proto +276 -0
  331. package/src/proto/browserstack/sdk/v1/sdk.proto +41 -0
@@ -0,0 +1,78 @@
1
+ import { DATA_BATCH_SIZE, DATA_BATCH_INTERVAL, TESTOPS_BUILD_COMPLETED_ENV } from './constants.js';
2
+ import { BStackLogger } from './bstackLogger.js';
3
+ export default class RequestQueueHandler {
4
+ queue = [];
5
+ pollEventBatchInterval;
6
+ callback;
7
+ static tearDownInvoked = false;
8
+ static instance;
9
+ // making it private to use singleton pattern
10
+ constructor(callback) {
11
+ this.callback = callback;
12
+ this.startEventBatchPolling();
13
+ }
14
+ static getInstance(callback) {
15
+ if (!RequestQueueHandler.instance && callback) {
16
+ RequestQueueHandler.instance = new RequestQueueHandler(callback);
17
+ }
18
+ return RequestQueueHandler.instance;
19
+ }
20
+ add(event) {
21
+ if (!process.env[TESTOPS_BUILD_COMPLETED_ENV]) {
22
+ throw new Error('Test Reporting and Analytics build start not completed yet.');
23
+ }
24
+ this.queue.push(event);
25
+ BStackLogger.debug(`Added data to request queue. Queue length = ${this.queue.length}`);
26
+ const shouldProceed = this.shouldProceed();
27
+ if (shouldProceed) {
28
+ this.sendBatch().catch((e) => {
29
+ BStackLogger.debug('Exception in sending batch: ' + e);
30
+ });
31
+ }
32
+ }
33
+ async shutdown() {
34
+ BStackLogger.debug('shutdown started');
35
+ this.removeEventBatchPolling('Shutting down');
36
+ while (this.queue.length > 0) {
37
+ const data = this.queue.splice(0, DATA_BATCH_SIZE);
38
+ await this.callCallback(data, 'SHUTDOWN_QUEUE');
39
+ }
40
+ BStackLogger.debug('shutdown ended');
41
+ }
42
+ startEventBatchPolling() {
43
+ this.pollEventBatchInterval = setInterval(this.sendBatch.bind(this), DATA_BATCH_INTERVAL);
44
+ // Don't let the polling timer keep the Node event loop (or a test worker) alive
45
+ // on its own; it still fires on schedule while the process is otherwise running.
46
+ this.pollEventBatchInterval?.unref?.();
47
+ }
48
+ async sendBatch() {
49
+ const data = this.queue.splice(0, DATA_BATCH_SIZE);
50
+ if (data.length === 0) {
51
+ return;
52
+ }
53
+ BStackLogger.debug(`Sending data from request queue. Data length = ${data.length}, Queue length after removal = ${this.queue.length}`);
54
+ await this.callCallback(data, 'INTERVAL_QUEUE');
55
+ }
56
+ callCallback = async (data, kind) => {
57
+ BStackLogger.debug('calling callback with kind ' + kind);
58
+ this.callback && await this.callback(data);
59
+ };
60
+ resetEventBatchPolling() {
61
+ this.removeEventBatchPolling('Resetting');
62
+ this.startEventBatchPolling();
63
+ }
64
+ removeEventBatchPolling(tag) {
65
+ if (this.pollEventBatchInterval) {
66
+ BStackLogger.debug(`${tag} request queue`);
67
+ clearInterval(this.pollEventBatchInterval);
68
+ }
69
+ }
70
+ shouldProceed() {
71
+ if (RequestQueueHandler.tearDownInvoked) {
72
+ BStackLogger.debug('Force request-queue shutdown, as test run event is received after teardown');
73
+ return true;
74
+ }
75
+ return this.queue.length >= DATA_BATCH_SIZE;
76
+ }
77
+ }
78
+ //# sourceMappingURL=request-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-handler.js","sourceRoot":"","sources":["../src/request-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ declare class AccessibilityScripts {
2
+ private static instance;
3
+ performScan: string | null;
4
+ getResults: string | null;
5
+ getResultsSummary: string | null;
6
+ saveTestResults: string | null;
7
+ commandsToWrap: Array<any> | null;
8
+ ChromeExtension: {
9
+ [key: string]: unknown;
10
+ };
11
+ browserstackFolderPath: string;
12
+ commandsPath: string;
13
+ private constructor();
14
+ static checkAndGetInstance(): AccessibilityScripts;
15
+ getWritableDir(): string;
16
+ readFromExistingFile(): void;
17
+ update(data: {
18
+ commands: any[];
19
+ scripts: Record<string, any>;
20
+ nonBStackInfraA11yChromeOptions: {};
21
+ }): void;
22
+ store(): void;
23
+ }
24
+ declare const _default: AccessibilityScripts;
25
+ export default _default;
26
+ //# sourceMappingURL=accessibility-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility-scripts.d.ts","sourceRoot":"","sources":["../../src/scripts/accessibility-scripts.ts"],"names":[],"mappings":"AAIA,cAAM,oBAAoB;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAEpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAO;IACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAO;IACvC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAO;IACrC,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAO;IACxC,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAK;IAEhD,sBAAsB,SAAK;IAC3B,YAAY,SAAK;IAGxB,OAAO;WAKO,mBAAmB;IAQ1B,cAAc,IAAI,MAAM;IAuBxB,oBAAoB;IAapB,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,+BAA+B,EAAE,EAAE,CAAA;KAAE;IAenG,KAAK;CAgBf;;AAED,wBAAyD"}
@@ -0,0 +1,91 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ class AccessibilityScripts {
5
+ static instance = null;
6
+ performScan = null;
7
+ getResults = null;
8
+ getResultsSummary = null;
9
+ saveTestResults = null;
10
+ commandsToWrap = null;
11
+ ChromeExtension = {};
12
+ browserstackFolderPath = '';
13
+ commandsPath = '';
14
+ // don't allow to create instances from it other than through `checkAndGetInstance`
15
+ constructor() {
16
+ this.browserstackFolderPath = this.getWritableDir();
17
+ this.commandsPath = path.join(this.browserstackFolderPath, 'commands.json');
18
+ }
19
+ static checkAndGetInstance() {
20
+ if (!AccessibilityScripts.instance) {
21
+ AccessibilityScripts.instance = new AccessibilityScripts();
22
+ AccessibilityScripts.instance.readFromExistingFile();
23
+ }
24
+ return AccessibilityScripts.instance;
25
+ }
26
+ getWritableDir() {
27
+ const orderedPaths = [
28
+ path.join(os.homedir(), '.browserstack'),
29
+ process.cwd(),
30
+ os.tmpdir()
31
+ ];
32
+ for (const orderedPath of orderedPaths) {
33
+ try {
34
+ if (fs.existsSync(orderedPath)) {
35
+ fs.accessSync(orderedPath);
36
+ return orderedPath;
37
+ }
38
+ fs.mkdirSync(orderedPath, { recursive: true });
39
+ return orderedPath;
40
+ }
41
+ catch (e) {
42
+ /* no-empty */
43
+ }
44
+ }
45
+ return '';
46
+ }
47
+ readFromExistingFile() {
48
+ try {
49
+ if (fs.existsSync(this.commandsPath)) {
50
+ const data = fs.readFileSync(this.commandsPath, 'utf8');
51
+ if (data) {
52
+ this.update(JSON.parse(data));
53
+ }
54
+ }
55
+ }
56
+ catch (error) {
57
+ /* Do nothing */
58
+ }
59
+ }
60
+ update(data) {
61
+ if (data.scripts) {
62
+ this.performScan = data.scripts.scan;
63
+ this.getResults = data.scripts.getResults;
64
+ this.getResultsSummary = data.scripts.getResultsSummary;
65
+ this.saveTestResults = data.scripts.saveResults;
66
+ }
67
+ if (data.commands && data.commands.length) {
68
+ this.commandsToWrap = data.commands;
69
+ }
70
+ if (data.nonBStackInfraA11yChromeOptions) {
71
+ this.ChromeExtension = data.nonBStackInfraA11yChromeOptions;
72
+ }
73
+ }
74
+ store() {
75
+ if (!fs.existsSync(this.browserstackFolderPath)) {
76
+ fs.mkdirSync(this.browserstackFolderPath);
77
+ }
78
+ fs.writeFileSync(this.commandsPath, JSON.stringify({
79
+ commands: this.commandsToWrap,
80
+ scripts: {
81
+ scan: this.performScan,
82
+ getResults: this.getResults,
83
+ getResultsSummary: this.getResultsSummary,
84
+ saveResults: this.saveTestResults,
85
+ },
86
+ nonBStackInfraA11yChromeOptions: this.ChromeExtension,
87
+ }));
88
+ }
89
+ }
90
+ export default AccessibilityScripts.checkAndGetInstance();
91
+ //# sourceMappingURL=accessibility-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility-scripts.js","sourceRoot":"","sources":["../../src/scripts/accessibility-scripts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { Services, Capabilities, Options, Frameworks } from '@wdio/types';
2
+ import type { BrowserstackConfig, MultiRemoteAction } from './types.js';
3
+ import type { Pickle, Feature, ITestCaseHookParameter, CucumberHook } from './cucumber-types.js';
4
+ export default class BrowserstackService implements Services.ServiceInstance {
5
+ private _caps;
6
+ private _config;
7
+ private _sessionBaseUrl;
8
+ private _failReasons;
9
+ private _hookFailReasons;
10
+ private _pureTestFailReasons;
11
+ private _scenariosThatRan;
12
+ private _failureStatuses;
13
+ private _browser?;
14
+ private _suiteTitle?;
15
+ private _suiteFile?;
16
+ private _fullTitle?;
17
+ private _options;
18
+ private _specsRan;
19
+ private _observability;
20
+ private _currentTest?;
21
+ private _insightsHandler?;
22
+ private _accessibility;
23
+ private _accessibilityHandler?;
24
+ private _percy;
25
+ private _percyCaptureMode;
26
+ private _percyHandler?;
27
+ private _turboScale;
28
+ constructor(options: BrowserstackConfig & Options.Testrunner, _caps: Capabilities.RemoteCapability, _config: Options.Testrunner);
29
+ _updateCaps(fn: (caps: WebdriverIO.Capabilities | Capabilities.DesiredCapabilities) => void): void;
30
+ beforeSession(config: Omit<Options.Testrunner, 'capabilities'>, capabilities: WebdriverIO.Capabilities): Promise<void>;
31
+ before(caps: Capabilities.RemoteCapability, specs: string[], browser: WebdriverIO.Browser): Promise<void>;
32
+ /**
33
+ * Set the default job name at the suite level to make sure we account
34
+ * for the cases where there is a long running `before` function for a
35
+ * suite or one that can fail.
36
+ * Don't do this for Jasmine because `suite.title` is `Jasmine__TopLevel__Suite`
37
+ * and `suite.fullTitle` is `undefined`, so no alternative to use for the job name.
38
+ */
39
+ beforeSuite(suite: Frameworks.Suite): Promise<void>;
40
+ beforeHook(test: Frameworks.Test | CucumberHook, context: any): Promise<void>;
41
+ afterHook(test: Frameworks.Test | CucumberHook, context: unknown, result: Frameworks.TestResult): Promise<void>;
42
+ beforeTest(test: Frameworks.Test): Promise<void>;
43
+ afterTest(test: Frameworks.Test, context: never, results: Frameworks.TestResult): Promise<void>;
44
+ after(result: number): Promise<void>;
45
+ /**
46
+ * For CucumberJS
47
+ */
48
+ beforeFeature(uri: string, feature: Feature): Promise<void>;
49
+ /**
50
+ * Runs before a Cucumber Scenario.
51
+ * @param world world object containing information on pickle and test step
52
+ */
53
+ beforeScenario(world: ITestCaseHookParameter): Promise<void>;
54
+ afterScenario(world: ITestCaseHookParameter): Promise<void>;
55
+ beforeStep(step: Frameworks.PickleStep, scenario: Pickle): Promise<void>;
56
+ afterStep(step: Frameworks.PickleStep, scenario: Pickle, result: Frameworks.PickleResult): Promise<void>;
57
+ onReload(oldSessionId: string, newSessionId: string): Promise<void>;
58
+ _isAppAutomate(): boolean;
59
+ _updateJob(requestBody: any): Promise<any>;
60
+ _multiRemoteAction(action: MultiRemoteAction): Promise<any>;
61
+ _update(sessionId: string, requestBody: any): Promise<void> | import("got").CancelableRequest<import("got").Response<string>>;
62
+ _printSessionURL(): Promise<void>;
63
+ private _setSessionName;
64
+ private _setAnnotation;
65
+ private _executeCommand;
66
+ private saveWorkerData;
67
+ }
68
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}