@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,67 @@
1
+ import AutomationFramework from './automationFramework.js';
2
+ import { AutomationFrameworkState } from '../states/automationFrameworkState.js';
3
+ import { CLIUtils } from '../cliUtils.js';
4
+ import TrackedInstance from '../instances/trackedInstance.js';
5
+ import AutomationFrameworkInstance from '../instances/automationFrameworkInstance.js';
6
+ import { BStackLogger as logger } from '../cliLogger.js';
7
+ /**
8
+ * WebdriverIO Framework class
9
+ */
10
+ export default class WdioAutomationFramework extends AutomationFramework {
11
+ constructor(automationFrameworkName, automationFrameworkVersion) {
12
+ super(automationFrameworkName, automationFrameworkVersion);
13
+ }
14
+ /**
15
+ * Find instance and track any state for the automation framework
16
+ * @param {*} automationFrameworkState
17
+ * @param {*} hookState
18
+ * @param {*} args
19
+ */
20
+ async trackEvent(automationFrameworkState, hookState, args = {}) {
21
+ logger.info(`trackEvent: automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
22
+ await super.trackEvent(automationFrameworkState, hookState, args);
23
+ const instance = this.resolveInstance(automationFrameworkState, hookState, args);
24
+ if (instance === null) {
25
+ logger.error(`trackEvent: instance not found for automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
26
+ return;
27
+ }
28
+ args.instance = instance;
29
+ await this.runHooks(instance, automationFrameworkState, hookState, args);
30
+ }
31
+ /**
32
+ * Resolve instance for the automation framework
33
+ * @param {*} automationFrameworkState
34
+ * @param {*} hookState
35
+ * @param {*} args
36
+ * @returns instance
37
+ */
38
+ resolveInstance(automationFrameworkState, hookState, args = {}) {
39
+ let instance = null;
40
+ logger.info(`resolveInstance: resolving instance for automationFrameworkState=${automationFrameworkState} hookState=${hookState}`);
41
+ if (automationFrameworkState === AutomationFrameworkState.CREATE || automationFrameworkState === AutomationFrameworkState.NONE) {
42
+ this.trackWebdriverIOInstance(automationFrameworkState, args);
43
+ }
44
+ instance = AutomationFramework.getTrackedInstance();
45
+ return instance;
46
+ }
47
+ /**
48
+ * Create instance for WebdriverIO
49
+ * @returns {void}
50
+ */
51
+ trackWebdriverIOInstance(automationFrameworkState, args = {}) {
52
+ if (
53
+ // !args.browser &&
54
+ AutomationFramework.getTrackedInstance()) {
55
+ logger.info('trackWebdriverIOInstance: instance already exists');
56
+ return;
57
+ }
58
+ const target = CLIUtils.getCurrentInstanceName();
59
+ const trackedContext = TrackedInstance.createContext(target);
60
+ let instance = null;
61
+ logger.info(`trackWebdriverIOInstance: created instance for target=${target}, state=${automationFrameworkState}, args=${args}`);
62
+ instance = new AutomationFrameworkInstance(trackedContext, this.getAutomationFrameworkName(), this.getAutomationFrameworkVersion(), automationFrameworkState);
63
+ AutomationFramework.setTrackedInstance(trackedContext, instance);
64
+ logger.info(`trackWebdriverIOInstance: saved instance contextId=${trackedContext.getId()} target=${target}`);
65
+ }
66
+ }
67
+ //# sourceMappingURL=wdioAutomationFramework.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wdioAutomationFramework.js","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioAutomationFramework.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,2BAA2B,MAAM,6CAA6C,CAAA;AACrF,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,mBAAmB;IAEpE,YAAY,uBAA+B,EAAE,0BAAkC;QAC3E,KAAK,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAA;IAC9D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,wBAA+B,EAAE,SAAgB,EAAE,OAAgC,EAAE;QAClG,MAAM,CAAC,IAAI,CAAC,wCAAwC,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;QACtG,MAAM,KAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAChF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,+DAA+D,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;YAC9H,OAAM;QACV,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,wBAA+B,EAAE,SAAgB,EAAE,OAAgC,EAAE;QACjG,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,oEAAoE,wBAAwB,cAAc,SAAS,EAAE,CAAC,CAAA;QAClI,IAAI,wBAAwB,KAAK,wBAAwB,CAAC,MAAM,IAAI,wBAAwB,KAAK,wBAAwB,CAAC,IAAI,EAAE,CAAC;YAC7H,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;QACjE,CAAC;QAED,QAAQ,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;QACnD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,wBAA+B,EAAE,OAAgC,EAAE;QACxF;QACI,mBAAmB;QACnB,mBAAmB,CAAC,kBAAkB,EAAE,EAC1C,CAAC;YACC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;YAChE,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAA;QAChD,MAAM,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC5D,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,MAAM,CAAC,IAAI,CAAC,yDAAyD,MAAM,WAAW,wBAAwB,UAAU,IAAI,EAAE,CAAC,CAAA;QAE/H,QAAQ,GAAG,IAAI,2BAA2B,CACtC,cAAc,EACd,IAAI,CAAC,0BAA0B,EAAE,EACjC,IAAI,CAAC,6BAA6B,EAAE,EACpC,wBAAwB,CAC3B,CAAA;QAED,mBAAmB,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAChE,MAAM,CAAC,IAAI,CAAC,sDAAsD,cAAc,CAAC,KAAK,EAAE,WAAW,MAAM,EAAE,CAAC,CAAA;IAChH,CAAC;CACJ"}
@@ -0,0 +1,82 @@
1
+ import TestFramework from './testFramework.js';
2
+ import TestFrameworkInstance from '../instances/testFrameworkInstance.js';
3
+ import type { Frameworks } from '@wdio/types';
4
+ export default class WdioMochaTestFramework extends TestFramework {
5
+ static KEY_HOOK_LAST_STARTED: string;
6
+ static KEY_HOOK_LAST_FINISHED: string;
7
+ /**
8
+ * Constructor for the TestFramework
9
+ * @param {Array} testFrameworks - List of Test frameworks
10
+ * @param {Map} testFrameworkVersions - Name of the Test frameworks
11
+ * @param {string} binSessionId - BinSessionId
12
+ */
13
+ constructor(testFrameworks: string[], testFrameworkVersions: Record<string, string>, binSessionId: string);
14
+ /**
15
+ * Find instance and track any state for the test framework
16
+ * @param {TestFrameworkState} testFrameworkState
17
+ * @param {HookState} hookState
18
+ * @param {*} args
19
+ */
20
+ trackEvent(testFrameworkState: State, hookState: State, args?: Record<string, unknown>): Promise<void>;
21
+ /**
22
+ * Resolve instance for the test framework
23
+ * @param {TestFrameworkState} testFrameworkState
24
+ * @param {HookState} hookState
25
+ * @param {*} args
26
+ * @returns {TestFrameworkInstance}
27
+ */
28
+ resolveInstance(testFrameworkState: State, hookState: State, args?: Record<string, unknown>): TestFrameworkInstance | null;
29
+ /**
30
+ * Track WebdriverIO instance
31
+ * @param {TestFrameworkState} testFrameworkState
32
+ * @param {*} args
33
+ */
34
+ trackWdioMochaInstance(testFrameworkState: State, args: Record<string, unknown>): void;
35
+ getTestData(instance: TestFrameworkInstance, test: Frameworks.Test): Promise<Record<string, unknown>>;
36
+ loadTestResult(instance: TestFrameworkInstance, args: Record<string, unknown>): void;
37
+ /**
38
+ * Load log entries into the test framework instance.
39
+ * @param instance TestFrameworkInstance
40
+ * @param testFrameworkState TestFrameworkState
41
+ * @param hookState HookState
42
+ * @param args Additional arguments (level, message, etc.)
43
+ */
44
+ loadLogEntries(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State, logEntry: Record<string, unknown>): void;
45
+ /**
46
+ * Get the last active hook for the given instance and hook key.
47
+ * @param instance TestFrameworkInstance
48
+ * @param lastHookKey string
49
+ * @returns Record<string, unknown> | null
50
+ */
51
+ static lastActiveHook(instance: TestFrameworkInstance, lastHookKey: string): Record<string, unknown> | null;
52
+ /**
53
+ * Clear logs for a specific hook.
54
+ * @param instance TestFrameworkInstance
55
+ * @param lastHookKey string
56
+ */
57
+ static clearHookLogs(instance: TestFrameworkInstance, lastHookKey: string): void;
58
+ /**
59
+ * Clear all logs for the given instance, test framework state, and hook state.
60
+ * @param instance TestFrameworkInstance
61
+ * @param testFrameworkState TestFrameworkState
62
+ * @param hookState HookState
63
+ */
64
+ static clearLogs(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State): void;
65
+ /**
66
+ * Get all log entries for the given instance, test framework state, and hook state.
67
+ * @param instance TestFrameworkInstance
68
+ * @param testFrameworkState TestFrameworkState
69
+ * @param hookState HookState
70
+ * @returns unknown[]
71
+ */
72
+ static getLogEntries(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State): unknown[];
73
+ /**
74
+ * Track hook events for the test framework.
75
+ * @param instance TestFrameworkInstance
76
+ * @param testFrameworkState TestFrameworkState
77
+ * @param hookState HookState
78
+ * @param args Additional arguments (e.g., test result, test method)
79
+ */
80
+ trackHookEvents(instance: TestFrameworkInstance, testFrameworkState: State, hookState: State, args: Record<string, unknown>): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=wdioMochaTestFramework.d.ts.map
@@ -0,0 +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;IA+B9H;;;;;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"}
@@ -0,0 +1,322 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import path from 'node:path';
3
+ import TestFramework from './testFramework.js';
4
+ import { TestFrameworkState } from '../states/testFrameworkState.js';
5
+ import { HookState } from '../states/hookState.js';
6
+ import TestFrameworkInstance from '../instances/testFrameworkInstance.js';
7
+ import { CLIUtils } from '../cliUtils.js';
8
+ import TrackedInstance from '../instances/trackedInstance.js';
9
+ import { TestFrameworkConstants } from './constants/testFrameworkConstants.js';
10
+ import { BStackLogger as logger } from '../cliLogger.js';
11
+ import { getGitMetaData, getMochaTestHierarchy, getUniqueIdentifier, isUndefined, removeAnsiColors } from '../../util.js';
12
+ import { TEST_ANALYTICS_ID } from '../../constants.js';
13
+ export default class WdioMochaTestFramework extends TestFramework {
14
+ static KEY_HOOK_LAST_STARTED = 'test_hook_last_started';
15
+ static KEY_HOOK_LAST_FINISHED = 'test_hook_last_finished';
16
+ /**
17
+ * Constructor for the TestFramework
18
+ * @param {Array} testFrameworks - List of Test frameworks
19
+ * @param {Map} testFrameworkVersions - Name of the Test frameworks
20
+ * @param {string} binSessionId - BinSessionId
21
+ */
22
+ constructor(testFrameworks, testFrameworkVersions, binSessionId) {
23
+ super(testFrameworks, testFrameworkVersions, binSessionId);
24
+ }
25
+ /**
26
+ * Find instance and track any state for the test framework
27
+ * @param {TestFrameworkState} testFrameworkState
28
+ * @param {HookState} hookState
29
+ * @param {*} args
30
+ */
31
+ async trackEvent(testFrameworkState, hookState, args = {}) {
32
+ logger.info(`trackEvent: testFrameworkState=${testFrameworkState} hookState=${hookState}`);
33
+ await super.trackEvent(testFrameworkState, hookState, args);
34
+ const instance = this.resolveInstance(testFrameworkState, hookState, args);
35
+ if (instance === null) {
36
+ logger.error(`trackEvent: instance not found for testFrameworkState=${testFrameworkState} hookState=${hookState}`);
37
+ return;
38
+ }
39
+ try {
40
+ if (CLIUtils.matchHookRegex(testFrameworkState.toString()) && hookState === HookState.PRE) {
41
+ instance.updateMultipleEntries({
42
+ [TestFrameworkConstants.KEY_HOOK_ID]: uuidv4(),
43
+ });
44
+ }
45
+ if (!TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_ID) && hookState === HookState.PRE && testFrameworkState === TestFrameworkState.TEST) {
46
+ const test = args.test;
47
+ const testData = await this.getTestData(instance, test);
48
+ logger.info(`trackEvent: instanceData=${JSON.stringify(Object.fromEntries(instance.getAllData()))}`);
49
+ instance.updateMultipleEntries(testData);
50
+ }
51
+ if (testFrameworkState === TestFrameworkState.TEST) {
52
+ if (hookState === HookState.PRE) {
53
+ instance.updateMultipleEntries({
54
+ [TestFrameworkConstants.KEY_TEST_STARTED_AT]: new Date().toISOString(),
55
+ });
56
+ }
57
+ else if (hookState === HookState.POST) {
58
+ instance.updateMultipleEntries({
59
+ [TestFrameworkConstants.KEY_TEST_ENDED_AT]: new Date().toISOString(),
60
+ });
61
+ }
62
+ }
63
+ else if (testFrameworkState === TestFrameworkState.LOG) {
64
+ const logEntry = args.logEntry;
65
+ logEntry.uuid = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID);
66
+ this.loadLogEntries(instance, testFrameworkState, hookState, logEntry);
67
+ }
68
+ else if (testFrameworkState === TestFrameworkState.LOG_REPORT && hookState === HookState.POST) {
69
+ logger.info('trackEvent: load test results');
70
+ this.loadTestResult(instance, args);
71
+ }
72
+ await this.trackHookEvents(instance, testFrameworkState, hookState, args);
73
+ logger.debug(`trackEvent: tracked instance data=${JSON.stringify(Object.fromEntries(instance.getAllData()))}`);
74
+ }
75
+ catch (error) {
76
+ logger.error(`trackEvent: Error in tracking events: ${error} hookState=${hookState} testFrameworkState=${testFrameworkState}`);
77
+ }
78
+ args.instance = instance;
79
+ await this.runHooks(instance, testFrameworkState, hookState, args);
80
+ }
81
+ /**
82
+ * Resolve instance for the test framework
83
+ * @param {TestFrameworkState} testFrameworkState
84
+ * @param {HookState} hookState
85
+ * @param {*} args
86
+ * @returns {TestFrameworkInstance}
87
+ */
88
+ resolveInstance(testFrameworkState, hookState, args = {}) {
89
+ let instance = null;
90
+ logger.info(`resolveInstance: resolving instance for testFrameworkState=${testFrameworkState} hookState=${hookState}`);
91
+ if (testFrameworkState === TestFrameworkState.INIT_TEST || testFrameworkState === TestFrameworkState.NONE) {
92
+ this.trackWdioMochaInstance(testFrameworkState, args);
93
+ }
94
+ instance = TestFramework.getTrackedInstance();
95
+ this.updateInstanceState(instance, testFrameworkState, hookState);
96
+ return instance;
97
+ }
98
+ /**
99
+ * Track WebdriverIO instance
100
+ * @param {TestFrameworkState} testFrameworkState
101
+ * @param {*} args
102
+ */
103
+ trackWdioMochaInstance(testFrameworkState, args) {
104
+ const target = CLIUtils.getCurrentInstanceName();
105
+ const trackedContext = TrackedInstance.createContext(target);
106
+ let instance = null;
107
+ logger.info(`trackWdioMochaInstance: created instance for target=${target}, state=${testFrameworkState}, args=${args}`);
108
+ instance = new TestFrameworkInstance(trackedContext, this.getTestFrameworks(), this.getTestFrameworksVersions(), testFrameworkState, HookState.NONE);
109
+ const frameworkName = this.getTestFrameworks()[0];
110
+ const instanceEntries = {
111
+ [TestFrameworkConstants.KEY_TEST_FRAMEWORK_NAME]: frameworkName,
112
+ [TestFrameworkConstants.KEY_TEST_FRAMEWORK_VERSION]: this.getTestFrameworksVersions()[frameworkName],
113
+ [TestFrameworkConstants.KEY_TEST_LOGS]: [],
114
+ [TestFrameworkConstants.KEY_HOOKS_FINISHED]: new Map(),
115
+ [TestFrameworkConstants.KEY_HOOKS_STARTED]: new Map(),
116
+ [TestFrameworkConstants.KEY_TEST_UUID]: uuidv4(),
117
+ [TestFrameworkConstants.KEY_TEST_RESULT]: TestFrameworkConstants.DEFAULT_TEST_RESULT,
118
+ // TODO[CLI]: Add customRerunParam
119
+ // [TestFrameworkConstants.KEY_TEST_RERUN_NAME]:
120
+ };
121
+ // Setting test uuid in env variable for A11y and App a11y scans
122
+ process.env[TEST_ANALYTICS_ID] = instanceEntries[TestFrameworkConstants.KEY_TEST_UUID];
123
+ instance.updateMultipleEntries(instanceEntries);
124
+ TestFramework.setTrackedInstance(trackedContext, instance);
125
+ logger.info(`trackWdioMochaInstance: saved instance contextId=${trackedContext.getId()} target=${target}`);
126
+ }
127
+ async getTestData(instance, test) {
128
+ const framework = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_FRAMEWORK_NAME);
129
+ const fullTitle = getUniqueIdentifier(test, framework);
130
+ const gitConfig = await getGitMetaData();
131
+ const filename = test.file; // || this._suiteFile
132
+ const testData = {
133
+ [TestFrameworkConstants.KEY_TEST_ID]: getUniqueIdentifier(test, framework),
134
+ [TestFrameworkConstants.KEY_TEST_NAME]: test.title || test.description,
135
+ [TestFrameworkConstants.KEY_TEST_CODE]: test.body || '',
136
+ [TestFrameworkConstants.KEY_TEST_FILE_PATH]: (gitConfig?.root && filename) ? path.relative(gitConfig.root, filename) : undefined,
137
+ [TestFrameworkConstants.KEY_TEST_LOCATION]: filename ? path.relative(process.cwd(), filename) : undefined,
138
+ [TestFrameworkConstants.KEY_TEST_SCOPE]: fullTitle,
139
+ [TestFrameworkConstants.KEY_TEST_SCOPES]: getMochaTestHierarchy(test),
140
+ };
141
+ return testData;
142
+ }
143
+ loadTestResult(instance, args) {
144
+ const results = args.result;
145
+ const { error, passed } = results;
146
+ let result = 'passed';
147
+ let failure = null;
148
+ let failureReason = null;
149
+ let failureType = null;
150
+ if (!passed) {
151
+ result = (error && error.message && error.message.includes('sync skip; aborting execution')) ? 'ignore' : 'failed';
152
+ if (error && result !== 'skipped') {
153
+ failure = [{ backtrace: [removeAnsiColors(error.message), removeAnsiColors(error.stack || '')] }]; // add all errors here
154
+ failureReason = removeAnsiColors(error.message);
155
+ failureType = isUndefined(error.message) ? null : error.message.toString().match(/AssertionError/) ? 'AssertionError' : 'UnhandledError'; //verify if this is working
156
+ }
157
+ }
158
+ instance.updateMultipleEntries({
159
+ [TestFrameworkConstants.KEY_TEST_RESULT]: result,
160
+ [TestFrameworkConstants.KEY_TEST_FAILURE]: failure,
161
+ [TestFrameworkConstants.KEY_TEST_FAILURE_REASON]: failureReason,
162
+ [TestFrameworkConstants.KEY_TEST_FAILURE_TYPE]: failureType,
163
+ });
164
+ }
165
+ /**
166
+ * Load log entries into the test framework instance.
167
+ * @param instance TestFrameworkInstance
168
+ * @param testFrameworkState TestFrameworkState
169
+ * @param hookState HookState
170
+ * @param args Additional arguments (level, message, etc.)
171
+ */
172
+ loadLogEntries(instance, testFrameworkState, hookState, logEntry) {
173
+ const logRecord = {};
174
+ const { level, message, timestamp, kind } = logEntry;
175
+ if (CLIUtils.matchHookRegex(instance.getCurrentTestState().toString())) {
176
+ logRecord[TestFrameworkConstants.KEY_HOOK_ID] = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID);
177
+ }
178
+ // SDK-6277: honor the incoming log kind (e.g. TEST_SCREENSHOT) so screenshots route correctly
179
+ // on the binary side; default to TEST_LOG (KIND_LOG) for ordinary stdout/console logs.
180
+ logRecord.kind = kind ?? TestFrameworkConstants.KIND_LOG;
181
+ logRecord.message = Buffer.from(message);
182
+ logRecord.level = level;
183
+ logRecord.timestamp = timestamp;
184
+ // Attach to the suitable hook
185
+ const lastActiveHook = WdioMochaTestFramework.lastActiveHook(instance, WdioMochaTestFramework.KEY_HOOK_LAST_STARTED);
186
+ if (lastActiveHook) {
187
+ const hookLogs = lastActiveHook[TestFrameworkConstants.KEY_HOOK_LOGS];
188
+ hookLogs.push(logRecord);
189
+ logger.debug(`hooks after update logs ${TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_STARTED)} ${TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_FINISHED)}`);
190
+ return;
191
+ }
192
+ // Attach to the test instance
193
+ const entries = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_LOGS);
194
+ entries.push(logRecord);
195
+ instance.updateMultipleEntries({
196
+ [TestFrameworkConstants.KEY_TEST_LOGS]: entries,
197
+ });
198
+ }
199
+ /**
200
+ * Get the last active hook for the given instance and hook key.
201
+ * @param instance TestFrameworkInstance
202
+ * @param lastHookKey string
203
+ * @returns Record<string, unknown> | null
204
+ */
205
+ static lastActiveHook(instance, lastHookKey) {
206
+ const hookStore = lastHookKey === WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED
207
+ ? TestFrameworkConstants.KEY_HOOKS_FINISHED
208
+ : TestFrameworkConstants.KEY_HOOKS_STARTED;
209
+ const lastActive = TestFramework.getState(instance, lastHookKey);
210
+ let hooksMap = null;
211
+ if (lastActive) {
212
+ hooksMap = TestFramework.getState(instance, hookStore);
213
+ }
214
+ if (hooksMap && lastActive && hooksMap[lastActive]) {
215
+ const lastHooks = hooksMap[lastActive];
216
+ if (lastHooks.length > 0) {
217
+ return lastHooks[lastHooks.length - 1];
218
+ }
219
+ }
220
+ return null;
221
+ }
222
+ /**
223
+ * Clear logs for a specific hook.
224
+ * @param instance TestFrameworkInstance
225
+ * @param lastHookKey string
226
+ */
227
+ static clearHookLogs(instance, lastHookKey) {
228
+ const hook = this.lastActiveHook(instance, lastHookKey);
229
+ if (hook) {
230
+ hook[TestFrameworkConstants.KEY_HOOK_LOGS] = [];
231
+ }
232
+ }
233
+ /**
234
+ * Clear all logs for the given instance, test framework state, and hook state.
235
+ * @param instance TestFrameworkInstance
236
+ * @param testFrameworkState TestFrameworkState
237
+ * @param hookState HookState
238
+ */
239
+ static clearLogs(instance, testFrameworkState, hookState) {
240
+ const lastHookKey = hookState === HookState.PRE
241
+ ? WdioMochaTestFramework.KEY_HOOK_LAST_STARTED
242
+ : WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED;
243
+ WdioMochaTestFramework.clearHookLogs(instance, lastHookKey);
244
+ instance.updateMultipleEntries({
245
+ [TestFrameworkConstants.KEY_TEST_LOGS]: [],
246
+ });
247
+ }
248
+ /**
249
+ * Get all log entries for the given instance, test framework state, and hook state.
250
+ * @param instance TestFrameworkInstance
251
+ * @param testFrameworkState TestFrameworkState
252
+ * @param hookState HookState
253
+ * @returns unknown[]
254
+ */
255
+ static getLogEntries(instance, testFrameworkState, hookState) {
256
+ const lastHookKey = hookState === HookState.PRE
257
+ ? WdioMochaTestFramework.KEY_HOOK_LAST_STARTED
258
+ : WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED;
259
+ const hook = WdioMochaTestFramework.lastActiveHook(instance, lastHookKey);
260
+ const entries = hook ? hook[TestFrameworkConstants.KEY_HOOK_LOGS] : [];
261
+ const testEntries = TestFramework.getState(instance, TestFrameworkConstants.KEY_TEST_LOGS);
262
+ return [...entries, ...testEntries];
263
+ }
264
+ /**
265
+ * Track hook events for the test framework.
266
+ * @param instance TestFrameworkInstance
267
+ * @param testFrameworkState TestFrameworkState
268
+ * @param hookState HookState
269
+ * @param args Additional arguments (e.g., test result, test method)
270
+ */
271
+ async trackHookEvents(instance, testFrameworkState, hookState, args) {
272
+ const testResult = args.result;
273
+ const test = args.test;
274
+ const key = testFrameworkState.toString();
275
+ const hooksStarted = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_STARTED);
276
+ if (!hooksStarted.has(key)) {
277
+ hooksStarted.set(key, []);
278
+ }
279
+ const hooksFinished = TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOKS_FINISHED);
280
+ if (!hooksFinished.has(key)) {
281
+ hooksFinished.set(key, []);
282
+ }
283
+ const updates = {
284
+ [TestFrameworkConstants.KEY_HOOKS_STARTED]: hooksStarted,
285
+ [TestFrameworkConstants.KEY_HOOKS_FINISHED]: hooksFinished,
286
+ };
287
+ if (hookState === HookState.PRE) {
288
+ const gitConfig = await getGitMetaData();
289
+ const filename = test.file;
290
+ const hook = {
291
+ key,
292
+ [TestFrameworkConstants.KEY_HOOK_ID]: TestFramework.getState(instance, TestFrameworkConstants.KEY_HOOK_ID) || '',
293
+ [TestFrameworkConstants.KEY_HOOK_RESULT]: TestFrameworkConstants.DEFAULT_HOOK_RESULT,
294
+ [TestFrameworkConstants.KEY_EVENT_STARTED_AT]: new Date().toISOString(),
295
+ [TestFrameworkConstants.KEY_HOOK_LOGS]: [],
296
+ [TestFrameworkConstants.KEY_HOOK_NAME]: test.title || test.description,
297
+ [TestFrameworkConstants.KEY_TEST_FILE_PATH]: (gitConfig?.root && filename) ? path.relative(gitConfig.root, filename) : undefined,
298
+ [TestFrameworkConstants.KEY_TEST_LOCATION]: filename ? path.relative(process.cwd(), filename) : undefined,
299
+ };
300
+ hooksStarted.get(key)?.push(hook);
301
+ updates[WdioMochaTestFramework.KEY_HOOK_LAST_STARTED] = key;
302
+ logger.info(`Hook Started in PRE key = ${key} & hook = ${JSON.stringify(hook)}`);
303
+ }
304
+ else if (hookState === HookState.POST) {
305
+ const hooksList = hooksStarted.get(key) || [];
306
+ logger.info(`Hook List in Post ${JSON.stringify(hooksList)}`);
307
+ if (hooksList.length > 0) {
308
+ const hook = hooksList.pop();
309
+ const result = testResult.status;
310
+ if (result !== TestFrameworkConstants.DEFAULT_HOOK_RESULT) {
311
+ hook[TestFrameworkConstants.KEY_HOOK_RESULT] = result;
312
+ }
313
+ hook[TestFrameworkConstants.KEY_EVENT_ENDED_AT] = new Date().toISOString();
314
+ hooksFinished.get(key)?.push(hook);
315
+ updates[WdioMochaTestFramework.KEY_HOOK_LAST_FINISHED] = key;
316
+ }
317
+ }
318
+ instance.updateMultipleEntries(updates);
319
+ logger.info(`trackHookEvents: hook state=${key}.${hookState}, hooks started=${JSON.stringify(hooksStarted)}, hooks finished=${JSON.stringify(hooksFinished)}`);
320
+ }
321
+ }
322
+ //# sourceMappingURL=wdioMochaTestFramework.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wdioMochaTestFramework.js","sourceRoot":"","sources":["../../../src/cli/frameworks/wdioMochaTestFramework.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { SDKClient } from '../grpc/index.js';
2
+ import type { TestFrameworkEventRequest, TestSessionEventRequest, LogCreatedEventRequest, DriverInitRequest, FetchDriverExecuteParamsEventRequest, ConnectBinSessionResponse, StartBinSessionResponse, TestFrameworkEventResponse, TestSessionEventResponse, LogCreatedEventResponse, DriverInitResponse, FetchDriverExecuteParamsEventResponse } from '../grpc/index.js';
3
+ import { BStackLogger } from './cliLogger.js';
4
+ /**
5
+ * GrpcClient - Singleton class for managing gRPC client connections
6
+ *
7
+ * This class uses the singleton pattern to ensure only one gRPC client instance exists
8
+ * throughout the application lifecycle.
9
+ */
10
+ export declare class GrpcClient {
11
+ #private;
12
+ binSessionId: string | undefined;
13
+ listenAddress: string | undefined;
14
+ channel: any | null;
15
+ client: SDKClient | null;
16
+ logger: typeof BStackLogger;
17
+ constructor();
18
+ /**
19
+ * Get the singleton instance of GrpcClient
20
+ * @returns {GrpcClient} The singleton instance
21
+ */
22
+ static getInstance(): GrpcClient;
23
+ /**
24
+ * Helper method to get client worker ID from execution context or current context.
25
+ * This provides a consistent way to extract worker identification across all gRPC calls.
26
+ *
27
+ * @param executionContext - Optional execution context with threadId and processId
28
+ * @returns Worker ID string in format "threadId-processId"
29
+ */
30
+ private getClientWorkerIdFromContext;
31
+ /**
32
+ * Initialize the gRPC client connection
33
+ * @param {string} host The gRPC server host
34
+ * @param {number} port The gRPC server port
35
+ */
36
+ init(params: Record<string, string>): void;
37
+ /**
38
+ * Connect to the gRPC server
39
+ * @returns {void}
40
+ */
41
+ connect(): void;
42
+ startBinSession(wdioConfig: string): Promise<StartBinSessionResponse>;
43
+ /**
44
+ * Connect to the bin session
45
+ * @returns {Promise<Object>} The response from the gRPC call
46
+ */
47
+ connectBinSession(): Promise<ConnectBinSessionResponse>;
48
+ /**
49
+ * Stop the bin session
50
+ * @returns {Promise<void>}
51
+ * @private
52
+ */
53
+ stopBinSession(): Promise<unknown>;
54
+ testSessionEvent(data: Omit<TestSessionEventRequest, 'binSessionId'>): Promise<TestSessionEventResponse | undefined>;
55
+ /**
56
+ *
57
+ * Send TestFrameworkEvent
58
+ */
59
+ testFrameworkEvent(data: Omit<TestFrameworkEventRequest, 'binSessionId'>): Promise<TestFrameworkEventResponse | undefined>;
60
+ /**
61
+ *
62
+ * Send driverInitEvent
63
+ */
64
+ driverInitEvent(data: Omit<DriverInitRequest, 'binSessionId'>): Promise<DriverInitResponse>;
65
+ logCreatedEvent(data: Omit<LogCreatedEventRequest, 'binSessionId'>): Promise<LogCreatedEventResponse | undefined>;
66
+ fetchDriverExecuteParamsEvent(data: Omit<FetchDriverExecuteParamsEventRequest, 'binSessionId'>): Promise<FetchDriverExecuteParamsEventResponse>;
67
+ /**
68
+ * Send TestOrchestration request to get ordered test files
69
+ * @param {string[]} testFiles - Array of test file paths
70
+ * @param {string} orchestrationStrategy - The orchestration strategy to use
71
+ * @param {string} orchestrationMetadata - Additional metadata for orchestration
72
+ * @returns {Promise<string[]|null>} Array of ordered test files or null if failed
73
+ */
74
+ testOrchestrationSession(testFiles: string[], orchestrationStrategy: string, orchestrationMetadata: string): Promise<string[] | null>;
75
+ /**
76
+ * Get the gRPC channel
77
+ * @returns {grpc.Channel} The gRPC channel
78
+ */
79
+ getClient(): SDKClient | null;
80
+ /**
81
+ * Get the gRPC channel
82
+ * @returns {grpc.Channel} The gRPC channel
83
+ */
84
+ getChannel(): any;
85
+ }
86
+ //# sourceMappingURL=grpcClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grpcClient.d.ts","sourceRoot":"","sources":["../../src/cli/grpcClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,SAAS,EAeZ,MAAM,kBAAkB,CAAA;AAGzB,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,kBAAkB,CAAA;AAIzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C;;;;;GAKG;AACH,qBAAa,UAAU;;IAGnB,YAAY,EAAE,MAAM,GAAC,SAAS,CAAA;IAC9B,aAAa,EAAE,MAAM,GAAC,SAAS,CAAA;IAC/B,OAAO,EAAE,GAAG,GAAC,IAAI,CAAO;IACxB,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;;;;;;OAMG;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"}