@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,447 @@
1
+ /// <reference path="../../@types/bstack-service-types.d.ts" />
2
+ import BaseModule from './baseModule.js';
3
+ import { BrowserstackCLI } from '../index.js';
4
+ import { BStackLogger } from '../cliLogger.js';
5
+ import TestFramework from '../frameworks/testFramework.js';
6
+ import AutomationFramework from '../frameworks/automationFramework.js';
7
+ import { TestFrameworkState } from '../states/testFrameworkState.js';
8
+ import { AutomationFrameworkState } from '../states/automationFrameworkState.js';
9
+ import { HookState } from '../states/hookState.js';
10
+ import accessibilityScripts from '../../scripts/accessibility-scripts.js';
11
+ import { _getParamsForAppAccessibility, formatString, getAppA11yResults, getAppA11yResultsSummary, shouldScanTestForAccessibility, validateCapsWithA11y, validateCapsWithAppA11y, validateCapsWithNonBstackA11y, setBrowserstackAnnotation } from '../../util.js';
12
+ import { AutomationFrameworkConstants } from '../frameworks/constants/automationFrameworkConstants.js';
13
+ import util from 'node:util';
14
+ import PerformanceTester from '../../instrumentation/performance/performance-tester.js';
15
+ import * as PERFORMANCE_SDK_EVENTS from '../../instrumentation/performance/constants.js';
16
+ import { GrpcClient } from '../grpcClient.js';
17
+ export default class AccessibilityModule extends BaseModule {
18
+ logger = BStackLogger;
19
+ name;
20
+ scriptInstance;
21
+ accessibility = false;
22
+ autoScanning = true;
23
+ isAppAccessibility;
24
+ isNonBstackA11y;
25
+ accessibilityConfig;
26
+ static MODULE_NAME = 'AccessibilityModule';
27
+ accessibilityMap;
28
+ LOG_DISABLED_SHOWN;
29
+ testMetadata = {};
30
+ centralAuthA11yConfig = {};
31
+ centralAuthConfigFetched = false;
32
+ constructor(accessibilityConfig, isNonBstackA11y) {
33
+ super();
34
+ this.name = 'AccessibilityModule';
35
+ this.accessibilityConfig = accessibilityConfig;
36
+ AutomationFramework.registerObserver(AutomationFrameworkState.CREATE, HookState.POST, this.onBeforeExecute.bind(this));
37
+ TestFramework.registerObserver(TestFrameworkState.TEST, HookState.PRE, this.onBeforeTest.bind(this));
38
+ TestFramework.registerObserver(TestFrameworkState.TEST, HookState.POST, this.onAfterTest.bind(this));
39
+ this.accessibility = Boolean(accessibilityConfig);
40
+ const accessibilityOptions = BrowserstackCLI.getInstance().options?.accessibilityOptions;
41
+ this.autoScanning = accessibilityOptions?.autoScanning ?? true;
42
+ this.scriptInstance = accessibilityScripts;
43
+ this.accessibilityMap = new Map();
44
+ this.LOG_DISABLED_SHOWN = new Map();
45
+ this.isAppAccessibility = accessibilityConfig.isAppAccessibility || false;
46
+ this.isNonBstackA11y = isNonBstackA11y;
47
+ }
48
+ async onBeforeExecute() {
49
+ try {
50
+ const autoInstance = AutomationFramework.getTrackedInstance();
51
+ if (!autoInstance) {
52
+ this.logger.debug('No tracked instances found!');
53
+ return;
54
+ }
55
+ const browser = AutomationFramework.getDriver(autoInstance);
56
+ if (!browser) {
57
+ this.logger.debug('No browser instance found for command wrapping');
58
+ return;
59
+ }
60
+ const isBrowserstackSession = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_IS_BROWSERSTACK_HUB);
61
+ const browserCaps = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_CAPABILITIES);
62
+ const inputCaps = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_INPUT_CAPABILITIES);
63
+ const sessionId = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_FRAMEWORK_SESSION_ID);
64
+ const platformA11yMeta = {
65
+ browser_name: browserCaps.browserName,
66
+ browser_version: browserCaps?.browserVersion || 'latest',
67
+ platform_name: browserCaps?.platformName,
68
+ platform_version: this.getCapability(browserCaps, 'appium:platformVersion', 'platformVersion'),
69
+ };
70
+ if (this.isAppAccessibility) {
71
+ this.accessibility = validateCapsWithAppA11y(platformA11yMeta);
72
+ }
73
+ else if (this.isNonBstackA11y) {
74
+ if (validateCapsWithNonBstackA11y(platformA11yMeta.browser_name, platformA11yMeta.browser_version)) {
75
+ this.accessibility = true;
76
+ }
77
+ }
78
+ else {
79
+ const device = this.getCapability(inputCaps, 'deviceName');
80
+ const chromeOptions = this.getCapability(inputCaps, 'goog:chromeOptions');
81
+ this.accessibility = validateCapsWithA11y(device, platformA11yMeta, chromeOptions);
82
+ }
83
+ //patching getA11yResultsSummary
84
+ browser.getAccessibilityResultsSummary = async () => {
85
+ if (this.isAppAccessibility) {
86
+ return await getAppA11yResultsSummary(true, browser, isBrowserstackSession, this.accessibility, sessionId);
87
+ }
88
+ return await this.getA11yResultsSummary(browser);
89
+ };
90
+ //patching getA11yResults
91
+ browser.getAccessibilityResults = async () => {
92
+ if (this.isAppAccessibility) {
93
+ return await getAppA11yResults(true, browser, isBrowserstackSession, this.accessibility, sessionId);
94
+ }
95
+ return await this.getA11yResults(browser);
96
+ };
97
+ //patching performScan
98
+ browser.performScan = async () => {
99
+ if (!this.accessibility && !this.isAppAccessibility) {
100
+ return;
101
+ }
102
+ return await this.performScanCli(browser);
103
+ };
104
+ browser.startA11yScanning = async () => {
105
+ if (!this.accessibility && !this.isAppAccessibility) {
106
+ return;
107
+ }
108
+ this.logger.warn('Accessibility scanning cannot be started from outside the test');
109
+ };
110
+ browser.stopA11yScanning = async () => {
111
+ if (!this.accessibility && !this.isAppAccessibility) {
112
+ return;
113
+ }
114
+ this.logger.warn('Accessibility scanning cannot be stopped from outside the test');
115
+ };
116
+ if (!this.accessibility) {
117
+ this.logger.info('Accessibility automation is disabled for this session.');
118
+ return;
119
+ }
120
+ if (!('overwriteCommand' in browser && Array.isArray(this.scriptInstance.commandsToWrap))) {
121
+ return;
122
+ }
123
+ // Wrap commands if accessibility scripts are available
124
+ if (this.scriptInstance.commandsToWrap && this.scriptInstance.commandsToWrap.length > 0) {
125
+ this.scriptInstance.commandsToWrap
126
+ .filter((command) => command.name && command.class)
127
+ .forEach((command) => {
128
+ browser.overwriteCommand(command.name, this.commandWrapper.bind(this, command), command.class === 'Element');
129
+ });
130
+ }
131
+ }
132
+ catch (error) {
133
+ this.logger.error(`Error in onBeforeExecute: ${error}`);
134
+ }
135
+ }
136
+ async commandWrapper(command, originFunction, ...args) {
137
+ try {
138
+ const autoInstance = AutomationFramework.getTrackedInstance();
139
+ const sessionId = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_FRAMEWORK_SESSION_ID);
140
+ // Check if accessibility is still enabled for this session
141
+ if (sessionId && this.accessibilityMap.get(sessionId)) {
142
+ const browser = AutomationFramework.getDriver(autoInstance);
143
+ // Perform accessibility scan before command if script is available
144
+ if (!command.name.includes('execute') ||
145
+ !this.shouldPatchExecuteScript(args.length ? args[0] : null)) {
146
+ try {
147
+ await this.performScanCli(browser, command.name);
148
+ this.logger.debug(`Accessibility scan performed after ${command.name} command`);
149
+ }
150
+ catch (scanError) {
151
+ this.logger.debug(`Error performing accessibility scan after ${command.name}: ${scanError}`);
152
+ }
153
+ }
154
+ }
155
+ // Execute the original command
156
+ const result = await originFunction(...args);
157
+ return result;
158
+ }
159
+ catch (error) {
160
+ this.logger.error(`Error in commandWrapper for ${command.name}: ${error}`);
161
+ // Still execute the original command even if accessibility scan fails
162
+ return await originFunction(...args);
163
+ }
164
+ }
165
+ async onBeforeTest(args) {
166
+ try {
167
+ this.logger.debug('Accessibility before test hook. Starting accessibility scan for this test case.');
168
+ const suiteTitle = args.suiteTitle || '';
169
+ const test = args.test || {};
170
+ const autoInstance = AutomationFramework.getTrackedInstance();
171
+ const testInstance = TestFramework.getTrackedInstance();
172
+ const sessionId = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_FRAMEWORK_SESSION_ID);
173
+ const accessibilityOptions = this.config.accessibilityOptions;
174
+ const shouldScanTest = this.autoScanning && shouldScanTestForAccessibility(suiteTitle, test.title, accessibilityOptions) && this.accessibility;
175
+ this.accessibilityMap.set(sessionId, shouldScanTest);
176
+ // Create test metadata similar to accessibility-handler
177
+ const testIdentifier = String(testInstance.getContext().getId());
178
+ this.testMetadata[testIdentifier] = {
179
+ scanTestForAccessibility: shouldScanTest,
180
+ accessibilityScanStarted: shouldScanTest
181
+ };
182
+ const browser = AutomationFramework.getDriver(autoInstance);
183
+ browser.startA11yScanning = async () => {
184
+ if (!this.accessibility && !this.isAppAccessibility) {
185
+ return;
186
+ }
187
+ this.accessibilityMap.set(sessionId, true);
188
+ this.testMetadata[testIdentifier] = {
189
+ scanTestForAccessibility: true,
190
+ accessibilityScanStarted: true
191
+ };
192
+ TestFramework.setState(testInstance, `accessibility_metadata_${testIdentifier}`, this.testMetadata[testIdentifier]);
193
+ await this._setAnnotation('Accessibility scanning has started');
194
+ };
195
+ browser.stopA11yScanning = async () => {
196
+ if (!this.accessibility && !this.isAppAccessibility) {
197
+ return;
198
+ }
199
+ this.accessibilityMap.set(sessionId, false);
200
+ await this._setAnnotation('Accessibility scanning has stopped');
201
+ };
202
+ browser.performScan = async () => {
203
+ if (!this.accessibility && !this.isAppAccessibility) {
204
+ return;
205
+ }
206
+ const results = await this.performScanCli(browser);
207
+ if (results) {
208
+ const testIdentifier = String(testInstance.getContext().getId());
209
+ this.testMetadata[testIdentifier] = {
210
+ scanTestForAccessibility: true,
211
+ accessibilityScanStarted: true
212
+ };
213
+ TestFramework.setState(testInstance, `accessibility_metadata_${testIdentifier}`, this.testMetadata[testIdentifier]);
214
+ await this._setAnnotation('Accessibility scanning was triggered manually');
215
+ }
216
+ return results;
217
+ };
218
+ // Store test metadata in test instance
219
+ TestFramework.setState(testInstance, `accessibility_metadata_${testIdentifier}`, this.testMetadata[testIdentifier]);
220
+ // Log if accessibility scan is enabled for this test
221
+ if (shouldScanTest) {
222
+ this.logger.info('Accessibility test case execution has started.');
223
+ }
224
+ else if (!this.LOG_DISABLED_SHOWN.get(sessionId)) {
225
+ this.logger.info('Accessibility scanning disabled for this test case.');
226
+ this.LOG_DISABLED_SHOWN.set(sessionId, true);
227
+ }
228
+ }
229
+ catch (error) {
230
+ this.logger.error(`Exception in starting accessibility automation scan for this test case: ${error}`);
231
+ }
232
+ }
233
+ async onAfterTest() {
234
+ this.logger.debug('Accessibility after test hook. Before sending test stop event');
235
+ try {
236
+ const autoInstance = AutomationFramework.getTrackedInstance();
237
+ const testInstance = TestFramework.getTrackedInstance();
238
+ const sessionId = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_FRAMEWORK_SESSION_ID);
239
+ if (!autoInstance || !testInstance) {
240
+ this.logger.error('No tracked instances found for accessibility after test');
241
+ return;
242
+ }
243
+ // Get test metadata that was stored in onBeforeTest
244
+ const testIdentifier = String(testInstance.getContext().getId());
245
+ const testMetadata = testInstance.getData(`accessibility_metadata_${testIdentifier}`);
246
+ if (!testMetadata) {
247
+ this.logger.debug('No accessibility metadata found for this test');
248
+ return;
249
+ }
250
+ const { accessibilityScanStarted, scanTestForAccessibility } = testMetadata;
251
+ if (!accessibilityScanStarted) {
252
+ this.logger.debug('Accessibility scan was not started for this test');
253
+ return;
254
+ }
255
+ if (scanTestForAccessibility) {
256
+ this.logger.info('Automate test case execution has ended. Processing for accessibility testing is underway.');
257
+ // Get the driver for sending test stop event
258
+ const browser = AutomationFramework.getDriver(autoInstance);
259
+ if (browser) {
260
+ let dataForExtension = {
261
+ 'thTestRunUuid': process.env.TEST_ANALYTICS_ID,
262
+ 'thBuildUuid': process.env.BROWSERSTACK_TESTHUB_UUID,
263
+ 'thJwtToken': process.env.BROWSERSTACK_TESTHUB_JWT
264
+ };
265
+ const driverExecuteParams = await this.getDriverExecuteParams('saveResults');
266
+ dataForExtension = { ...dataForExtension, ...driverExecuteParams };
267
+ // final scan and saving the results
268
+ await this.sendTestStopEvent(browser, dataForExtension);
269
+ this.logger.info('Accessibility testing for this test case has ended.');
270
+ }
271
+ else {
272
+ this.logger.warn('No driver found to send accessibility test stop event');
273
+ }
274
+ this.accessibilityMap.delete(sessionId);
275
+ // Clean up test metadata
276
+ TestFramework.setState(testInstance, `accessibility_metadata_${testIdentifier}`, null);
277
+ }
278
+ }
279
+ catch (error) {
280
+ this.logger.error(`Accessibility results could not be processed for the test case. Error: ${error}`);
281
+ }
282
+ }
283
+ shouldPatchExecuteScript(script) {
284
+ if (!script || typeof script !== 'string') {
285
+ return true;
286
+ }
287
+ return (script.toLowerCase().indexOf('browserstack_executor') !== -1 ||
288
+ script.toLowerCase().indexOf('browserstack_accessibility_automation_script') !== -1);
289
+ }
290
+ getCapability(capabilities, key, legacyKey = '') {
291
+ if (key === 'deviceName') {
292
+ if (capabilities['bstack:options'] && capabilities['bstack:options']?.deviceName) {
293
+ return capabilities['bstack:options']?.deviceName;
294
+ }
295
+ else if (capabilities['bstack:options'] && capabilities['bstack:options']?.device) {
296
+ return capabilities['bstack:options']?.device;
297
+ }
298
+ else if (capabilities['appium:deviceName']) {
299
+ return capabilities['appium:deviceName'];
300
+ }
301
+ }
302
+ else if (key === 'goog:chromeOptions' && capabilities['goog:chromeOptions']) {
303
+ return capabilities['goog:chromeOptions'];
304
+ }
305
+ else {
306
+ const bstackOptions = capabilities['bstack:options'];
307
+ if (bstackOptions && bstackOptions?.[key]) {
308
+ return bstackOptions?.[key];
309
+ }
310
+ else if (capabilities[legacyKey]) {
311
+ return capabilities[legacyKey];
312
+ }
313
+ }
314
+ }
315
+ async performScanCli(browser, commandName) {
316
+ return await PerformanceTester.measureWrapper(PERFORMANCE_SDK_EVENTS.A11Y_EVENTS.PERFORM_SCAN, async () => {
317
+ try {
318
+ // Fetch central auth accessibility configuration
319
+ const centralAuthConfig = await this.fetchCentralAuthA11yConfig('scan');
320
+ if (!this.accessibility) {
321
+ this.logger.debug('Not an Accessibility Automation session.');
322
+ return;
323
+ }
324
+ if (this.isAppAccessibility) {
325
+ // Get app accessibility params and merge with central auth config
326
+ const appAccessibilityParams = _getParamsForAppAccessibility(commandName);
327
+ // Merge with central auth config
328
+ const mergedParams = { ...appAccessibilityParams, ...centralAuthConfig };
329
+ // Use centralAuthToken if available
330
+ if (centralAuthConfig.centralAuthToken) {
331
+ // Set the auth header with the token value
332
+ mergedParams.centralAuthHeader = centralAuthConfig.centralAuthToken;
333
+ }
334
+ const results = await browser.execute(formatString(this.scriptInstance.performScan, JSON.stringify(mergedParams)), {});
335
+ BStackLogger.debug(util.format(results));
336
+ return results;
337
+ }
338
+ const results = await browser.executeAsync(this.scriptInstance.performScan, { 'method': commandName || '' });
339
+ return results;
340
+ }
341
+ catch (err) {
342
+ this.logger.error('Accessibility Scan could not be performed : ' + err);
343
+ return;
344
+ }
345
+ }, { command: commandName })();
346
+ }
347
+ async sendTestStopEvent(browser, dataForExtension) {
348
+ try {
349
+ const autoInstance = AutomationFramework.getTrackedInstance();
350
+ const sessionId = AutomationFramework.getState(autoInstance, AutomationFrameworkConstants.KEY_FRAMEWORK_SESSION_ID);
351
+ if (!this.accessibility) {
352
+ this.logger.debug('Not an Accessibility Automation session.');
353
+ return;
354
+ }
355
+ if (sessionId && this.accessibilityMap.get(sessionId)) {
356
+ this.logger.debug('Performing scan before saving results');
357
+ await this.performScanCli(browser);
358
+ }
359
+ if (this.isAppAccessibility) {
360
+ return;
361
+ }
362
+ await PerformanceTester.measureWrapper(PERFORMANCE_SDK_EVENTS.A11Y_EVENTS.SAVE_RESULTS, async () => {
363
+ const results = await browser.executeAsync(accessibilityScripts.saveTestResults, dataForExtension);
364
+ this.logger.debug(`save results : ${util.format(results)}`);
365
+ })();
366
+ }
367
+ catch (error) {
368
+ this.logger.error(`Error while sending test stop event: ${error}`);
369
+ }
370
+ }
371
+ async getA11yResults(browser) {
372
+ return await PerformanceTester.measureWrapper(PERFORMANCE_SDK_EVENTS.A11Y_EVENTS.GET_RESULTS, async () => {
373
+ try {
374
+ if (!this.accessibility) {
375
+ this.logger.debug('Not an Accessibility Automation session.');
376
+ return;
377
+ }
378
+ this.logger.debug('Performing scan before getting results');
379
+ await this.performScanCli(browser);
380
+ const results = await browser.executeAsync(this.scriptInstance.getResults);
381
+ return results;
382
+ }
383
+ catch (error) {
384
+ this.logger.error('No accessibility results were found.');
385
+ this.logger.debug(`getA11yResults Failed. Error: ${error}`);
386
+ return [];
387
+ }
388
+ })();
389
+ }
390
+ async getA11yResultsSummary(browser) {
391
+ return await PerformanceTester.measureWrapper(PERFORMANCE_SDK_EVENTS.A11Y_EVENTS.GET_RESULTS_SUMMARY, async () => {
392
+ try {
393
+ if (!this.accessibility) {
394
+ this.logger.debug('Not an Accessibility Automation session.');
395
+ return;
396
+ }
397
+ this.logger.debug('Performing scan before getting results summary');
398
+ await this.performScanCli(browser);
399
+ const summaryResults = await browser.executeAsync(this.scriptInstance.getResultsSummary);
400
+ return summaryResults;
401
+ }
402
+ catch {
403
+ this.logger.error('No accessibility summary was found.');
404
+ return {};
405
+ }
406
+ })();
407
+ }
408
+ async getDriverExecuteParams(scriptName) {
409
+ const payload = {
410
+ product: 'accessibility',
411
+ scriptName: scriptName
412
+ };
413
+ const response = await GrpcClient.getInstance().fetchDriverExecuteParamsEvent(payload);
414
+ if (response.success) {
415
+ return response.accessibilityExecuteParams ? JSON.parse(Buffer.from(response.accessibilityExecuteParams).toString('utf8')) : {};
416
+ }
417
+ this.logger.error(`Failed to fetch driver execute params: ${response.error || 'Unknown error'}`);
418
+ return {};
419
+ }
420
+ async _setAnnotation(message) {
421
+ const autoInstance = AutomationFramework.getTrackedInstance();
422
+ const browser = AutomationFramework.getDriver(autoInstance);
423
+ await setBrowserstackAnnotation(browser, message, this.accessibility);
424
+ }
425
+ /**
426
+ * Fetch central auth accessibility configuration for the given script name.
427
+ * Returns cached config if already fetched, otherwise loads and caches it.
428
+ *
429
+ * @param scriptName - Name of the script to fetch config for
430
+ * @returns Configuration object, empty object if error occurs
431
+ */
432
+ async fetchCentralAuthA11yConfig(scriptName) {
433
+ try {
434
+ if (this.centralAuthConfigFetched) {
435
+ return this.centralAuthA11yConfig;
436
+ }
437
+ this.centralAuthA11yConfig = await this.getDriverExecuteParams(scriptName);
438
+ this.centralAuthConfigFetched = true;
439
+ return this.centralAuthA11yConfig;
440
+ }
441
+ catch (error) {
442
+ this.logger.error(`fetchCentralAuthA11yConfig: Failed to fetch driver execute params for ${scriptName}: ${util.format(error)}`);
443
+ return {};
444
+ }
445
+ }
446
+ }
447
+ //# sourceMappingURL=accessibilityModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibilityModule.js","sourceRoot":"","sources":["../../../src/cli/modules/accessibilityModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import BaseModule from './baseModule.js';
2
+ import { BStackLogger } from '../cliLogger.js';
3
+ import type { Options } from '@wdio/types';
4
+ export default class AutomateModule extends BaseModule {
5
+ logger: typeof BStackLogger;
6
+ browserStackConfig: Options.Testrunner;
7
+ private sessionMap;
8
+ static readonly MODULE_NAME = "AutomateModule";
9
+ /**
10
+ * Create a new AutomateModule
11
+ */
12
+ constructor(browserStackConfig: Options.Testrunner);
13
+ getModuleName(): string;
14
+ onBeforeTest(args: Record<string, unknown>): Promise<void>;
15
+ onAfterTest(args: Record<string, unknown>): Promise<void>;
16
+ onAfterExecute(): Promise<void>;
17
+ markSessionName(sessionId: string, sessionName: string, config: {
18
+ user: string;
19
+ key: string;
20
+ }): Promise<void>;
21
+ markSessionStatus(sessionId: string, sessionStatus: 'passed' | 'failed', sessionErrorMessage: string | undefined, config: {
22
+ user: string;
23
+ key: string;
24
+ }): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=automateModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automateModule.d.ts","sourceRoot":"","sources":["../../../src/cli/modules/automateModule.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAK9C,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,aAAa,CAAA;AAsBtD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IAElD,MAAM,sBAAe;IACrB,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAA;IACtC,OAAO,CAAC,UAAU,CAAsC;IAExD,MAAM,CAAC,QAAQ,CAAC,WAAW,oBAAmB;IAC9C;;OAEG;gBACS,kBAAkB,EAAE,OAAO,CAAC,UAAU;IASlD,aAAa,IAAI,MAAM;IAIjB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA8C1C,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0DzC,cAAc;IAwCd,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;KAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C7G,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,GAAG,QAAQ,EAAE,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA0CjL"}