@mablhq/playwright-tools 2.49.1

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 (436) hide show
  1. package/Globals.js +69 -0
  2. package/LICENSE.txt +29 -0
  3. package/README.md +219 -0
  4. package/api/ApiError.js +11 -0
  5. package/api/atlassian/bitBucketApiClient.js +81 -0
  6. package/api/atlassian/entities/CodeAnnotation.js +9 -0
  7. package/api/atlassian/entities/CodeReport.js +15 -0
  8. package/api/atlassian/entities/PullRequest.js +2 -0
  9. package/api/basicApiClient.js +293 -0
  10. package/api/entities/Browser.js +11 -0
  11. package/api/entities/Email.js +14 -0
  12. package/api/entities/FindStrategy.js +10 -0
  13. package/api/entities/Label.js +2 -0
  14. package/api/entities/VersionedObject.js +2 -0
  15. package/api/entities/Workspace.js +2 -0
  16. package/api/featureSet.js +44 -0
  17. package/api/mablApiClient.js +1070 -0
  18. package/api/mablApiClientFactory.js +79 -0
  19. package/api/types.js +10 -0
  20. package/auth/AuthClient.js +38 -0
  21. package/auth/OktaClient.js +97 -0
  22. package/browserEngines/browserEngine.js +41 -0
  23. package/browserEngines/browserEngines.js +14 -0
  24. package/browserEngines/chromiumBrowserEngine.js +177 -0
  25. package/browserEngines/firefoxBrowserEngine.js +134 -0
  26. package/browserEngines/unsupportedBrowserEngine.js +29 -0
  27. package/browserEngines/webkitBrowerEngine.js +50 -0
  28. package/browserLauncher/browser.js +2 -0
  29. package/browserLauncher/browserEvent.js +11 -0
  30. package/browserLauncher/browserLauncher.js +17 -0
  31. package/browserLauncher/browserLauncherEventEmitter.js +2 -0
  32. package/browserLauncher/browserLauncherFactory.js +30 -0
  33. package/browserLauncher/elementHandle.js +30 -0
  34. package/browserLauncher/errors.js +26 -0
  35. package/browserLauncher/frame.js +17 -0
  36. package/browserLauncher/frameBase.js +10 -0
  37. package/browserLauncher/httpRequest.js +2 -0
  38. package/browserLauncher/httpResponse.js +2 -0
  39. package/browserLauncher/jsHandle.js +2 -0
  40. package/browserLauncher/page.js +2 -0
  41. package/browserLauncher/pageEvent.js +17 -0
  42. package/browserLauncher/playwrightBrowserLauncher/browserDelegate.js +2 -0
  43. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumBrowserDelegate.js +61 -0
  44. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumElementHandleDelegate.js +129 -0
  45. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumFrameDelegate.js +24 -0
  46. package/browserLauncher/playwrightBrowserLauncher/chromium/chromiumPageDelegate.js +145 -0
  47. package/browserLauncher/playwrightBrowserLauncher/elementHandleDelegate.js +2 -0
  48. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxBrowserDelegate.js +50 -0
  49. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxElementHandleDelegate.js +11 -0
  50. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxFrameDelegate.js +36 -0
  51. package/browserLauncher/playwrightBrowserLauncher/firefox/firefoxPageDelegate.js +15 -0
  52. package/browserLauncher/playwrightBrowserLauncher/frameDelegate.js +2 -0
  53. package/browserLauncher/playwrightBrowserLauncher/internals.js +2 -0
  54. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractBrowserDelegate.js +15 -0
  55. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractElementHandleDelegate.js +73 -0
  56. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractFrameDelegate.js +13 -0
  57. package/browserLauncher/playwrightBrowserLauncher/nonChromium/nonChromiumAbstractPageDelegate.js +81 -0
  58. package/browserLauncher/playwrightBrowserLauncher/pageDelegate.js +2 -0
  59. package/browserLauncher/playwrightBrowserLauncher/playwrightApiResponse.js +18 -0
  60. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowser.js +259 -0
  61. package/browserLauncher/playwrightBrowserLauncher/playwrightBrowserLauncher.js +97 -0
  62. package/browserLauncher/playwrightBrowserLauncher/playwrightDom.js +319 -0
  63. package/browserLauncher/playwrightBrowserLauncher/playwrightFrame.js +265 -0
  64. package/browserLauncher/playwrightBrowserLauncher/playwrightHttpRequest.js +76 -0
  65. package/browserLauncher/playwrightBrowserLauncher/playwrightHttpResponse.js +26 -0
  66. package/browserLauncher/playwrightBrowserLauncher/playwrightPage.js +377 -0
  67. package/browserLauncher/playwrightBrowserLauncher/simplePlaywrightLogger.js +36 -0
  68. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitBrowserDelegate.js +50 -0
  69. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitElementHandleDelegate.js +16 -0
  70. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitFrameDelegate.js +19 -0
  71. package/browserLauncher/playwrightBrowserLauncher/webkit/webkitPageDelegate.js +15 -0
  72. package/browserLauncher/playwrightBrowserLauncher/wrappers.js +25 -0
  73. package/browserLauncher/types.js +28 -0
  74. package/browserLauncher/utils.js +9 -0
  75. package/cli.js +66 -0
  76. package/commands/applications/applications.js +5 -0
  77. package/commands/applications/applications_cmds/describe.js +21 -0
  78. package/commands/applications/applications_cmds/list.js +56 -0
  79. package/commands/auth/auth.js +5 -0
  80. package/commands/auth/auth_cmds/activate-key.js +38 -0
  81. package/commands/auth/auth_cmds/clear.js +10 -0
  82. package/commands/auth/auth_cmds/info.js +10 -0
  83. package/commands/auth/auth_cmds/login.js +10 -0
  84. package/commands/branches/branches.js +5 -0
  85. package/commands/branches/branches_cmds/create.js +56 -0
  86. package/commands/branches/branches_cmds/describe.js +50 -0
  87. package/commands/branches/branches_cmds/list.js +84 -0
  88. package/commands/branches/branches_cmds/merge.js +56 -0
  89. package/commands/browserTypes.js +20 -0
  90. package/commands/commandUtil/awaitCompletion.js +67 -0
  91. package/commands/commandUtil/branches.js +44 -0
  92. package/commands/commandUtil/codeInsights.js +181 -0
  93. package/commands/commandUtil/describe.js +32 -0
  94. package/commands/commandUtil/fileUtil.js +50 -0
  95. package/commands/commandUtil/interfaces.js +4 -0
  96. package/commands/commandUtil/list.js +70 -0
  97. package/commands/commandUtil/util.js +127 -0
  98. package/commands/commandUtil/versionUtil.js +33 -0
  99. package/commands/config/config.js +5 -0
  100. package/commands/config/config_cmds/configKeys.js +28 -0
  101. package/commands/config/config_cmds/delete.js +29 -0
  102. package/commands/config/config_cmds/get.js +52 -0
  103. package/commands/config/config_cmds/install.js +119 -0
  104. package/commands/config/config_cmds/list.js +39 -0
  105. package/commands/config/config_cmds/set.js +80 -0
  106. package/commands/constants.js +160 -0
  107. package/commands/credentials/credentials.js +5 -0
  108. package/commands/credentials/credentials_cmds/list.js +66 -0
  109. package/commands/datatables/datatables.js +5 -0
  110. package/commands/datatables/datatables_cmds/create.js +61 -0
  111. package/commands/datatables/datatables_cmds/describe.js +17 -0
  112. package/commands/datatables/datatables_cmds/export.js +86 -0
  113. package/commands/datatables/datatables_cmds/list.js +18 -0
  114. package/commands/datatables/datatables_cmds/scenarios.js +35 -0
  115. package/commands/datatables/datatables_cmds/update.js +120 -0
  116. package/commands/datatables/utils.js +145 -0
  117. package/commands/deploy/deploy.js +5 -0
  118. package/commands/deploy/deploy_cmds/awaitDeploymentCompletion.js +100 -0
  119. package/commands/deploy/deploy_cmds/create.js +342 -0
  120. package/commands/deploy/deploy_cmds/describe.js +54 -0
  121. package/commands/deploy/deploy_cmds/executionResultPresenter.js +117 -0
  122. package/commands/deploy/deploy_cmds/list.js +74 -0
  123. package/commands/deploy/deploy_cmds/watch.js +44 -0
  124. package/commands/environments/environments.js +5 -0
  125. package/commands/environments/environments_cmds/build-files.js +5 -0
  126. package/commands/environments/environments_cmds/build-files_cmds/add.js +73 -0
  127. package/commands/environments/environments_cmds/build-files_cmds/list.js +54 -0
  128. package/commands/environments/environments_cmds/build-files_cmds/update.js +71 -0
  129. package/commands/environments/environments_cmds/create.js +153 -0
  130. package/commands/environments/environments_cmds/delete.js +32 -0
  131. package/commands/environments/environments_cmds/describe.js +28 -0
  132. package/commands/environments/environments_cmds/list.js +56 -0
  133. package/commands/environments/environments_cmds/update.js +46 -0
  134. package/commands/environments/environments_cmds/urls.js +5 -0
  135. package/commands/environments/environments_cmds/urls_cmds/add.js +91 -0
  136. package/commands/environments/environments_cmds/urls_cmds/list.js +49 -0
  137. package/commands/flows/flows.js +5 -0
  138. package/commands/flows/flows_cmds/export.js +78 -0
  139. package/commands/flows/flows_cmds/list.js +64 -0
  140. package/commands/internal/internal.js +6 -0
  141. package/commands/link-agents/link-agents.js +5 -0
  142. package/commands/link-agents/link-agents_cmds/delete.js +38 -0
  143. package/commands/link-agents/link-agents_cmds/list.js +131 -0
  144. package/commands/link-agents/link-agents_cmds/terminate.js +31 -0
  145. package/commands/mobile-build-files/mobile-build-files.js +5 -0
  146. package/commands/mobile-build-files/mobile-build-files_cmds/delete.js +31 -0
  147. package/commands/mobile-build-files/mobile-build-files_cmds/download.js +50 -0
  148. package/commands/mobile-build-files/mobile-build-files_cmds/list.js +72 -0
  149. package/commands/mobile-build-files/mobile-build-files_cmds/upload.js +101 -0
  150. package/commands/plans/plans.js +5 -0
  151. package/commands/plans/plans_cmds/describe.js +23 -0
  152. package/commands/plans/plans_cmds/list.js +63 -0
  153. package/commands/test-runs/test-runs.js +5 -0
  154. package/commands/test-runs/test-runs_cmds/export.js +62 -0
  155. package/commands/tests/mobileEmulationUtil.js +46 -0
  156. package/commands/tests/tests.js +5 -0
  157. package/commands/tests/testsUtil.js +538 -0
  158. package/commands/tests/tests_cmds/create.js +130 -0
  159. package/commands/tests/tests_cmds/edit.js +111 -0
  160. package/commands/tests/tests_cmds/export.js +145 -0
  161. package/commands/tests/tests_cmds/import.js +5 -0
  162. package/commands/tests/tests_cmds/import_cmds/import_playwright.js +439 -0
  163. package/commands/tests/tests_cmds/import_cmds/import_selenium.js +295 -0
  164. package/commands/tests/tests_cmds/list.js +94 -0
  165. package/commands/tests/tests_cmds/run-cloud.js +314 -0
  166. package/commands/tests/tests_cmds/run-mobile.js +260 -0
  167. package/commands/tests/tests_cmds/run.js +314 -0
  168. package/commands/tests/tests_cmds/runUtils.js +60 -0
  169. package/commands/tests/tests_cmds/trainerUtil.js +12 -0
  170. package/commands/users/users.js +5 -0
  171. package/commands/users/users_cmds/list.js +58 -0
  172. package/commands/workspaces/workspace_cmds/copy.js +108 -0
  173. package/commands/workspaces/workspace_cmds/describe.js +21 -0
  174. package/commands/workspaces/workspace_cmds/list.js +67 -0
  175. package/commands/workspaces/workspaces.js +5 -0
  176. package/core/entityValidation/environmentsValidation.js +7 -0
  177. package/core/entityValidation/stepValidation.js +15 -0
  178. package/core/execution/ApiTestUtils.js +1060 -0
  179. package/core/execution/MailboxConstants.js +4 -0
  180. package/core/execution/PostmanUtils.js +53 -0
  181. package/core/execution/RunConfig.js +2 -0
  182. package/core/execution/TestResult.js +15 -0
  183. package/core/execution/VariableUtils.js +154 -0
  184. package/core/execution/VariablesSummary.js +2 -0
  185. package/core/execution/basic-types.js +2 -0
  186. package/core/execution/newman-types.js +42 -0
  187. package/core/messaging/actions/MobileTrainingActions.js +17 -0
  188. package/core/messaging/actions/pdfActions.js +27 -0
  189. package/core/messaging/actions/runnerActions.js +18 -0
  190. package/core/messaging/actions/trainingSessionActions.js +38 -0
  191. package/core/messaging/logLineMessaging.js +50 -0
  192. package/core/messaging/messaging.js +130 -0
  193. package/core/messaging/pageMessaging.js +9 -0
  194. package/core/trainer/openUtils.js +47 -0
  195. package/core/trainer/trainingSessions-types.js +35 -0
  196. package/core/trainer/trainingSessions.js +151 -0
  197. package/core/util.js +52 -0
  198. package/coreWebVitals/index.js +77 -0
  199. package/domUtil/index.js +1 -0
  200. package/env/defaultEnv.js +17 -0
  201. package/env/dev.js +17 -0
  202. package/env/env.js +76 -0
  203. package/env/local.js +17 -0
  204. package/env/prod.js +17 -0
  205. package/execution/index.js +8 -0
  206. package/execution/index.js.LICENSE.txt +254 -0
  207. package/execution/runAppiumServer.js +145 -0
  208. package/functions/apiTest/utils.js +47 -0
  209. package/functions/types.js +2 -0
  210. package/functions/utils.js +12 -0
  211. package/http/MablHttpAgent.js +73 -0
  212. package/http/RequestFilteringHttpAgent.js +119 -0
  213. package/http/RequestSecurityError.js +13 -0
  214. package/http/axiosProxyConfig.js +101 -0
  215. package/http/httpUtil.js +73 -0
  216. package/http/requestInterceptor.js +206 -0
  217. package/index.d.ts +241 -0
  218. package/index.js +14 -0
  219. package/mablApi/index.js +1 -0
  220. package/mablscript/MablAction.js +102 -0
  221. package/mablscript/MablStep.js +191 -0
  222. package/mablscript/MablStepV2.js +73 -0
  223. package/mablscript/MablSymbol.js +35 -0
  224. package/mablscript/actions/AwaitDownloadAction.js +14 -0
  225. package/mablscript/actions/AwaitPDFDownloadAction.js +19 -0
  226. package/mablscript/actions/ConditionAction.js +123 -0
  227. package/mablscript/actions/CountAction.js +16 -0
  228. package/mablscript/actions/ExtractAction.js +71 -0
  229. package/mablscript/actions/FindAction.js +301 -0
  230. package/mablscript/actions/GenerateEmailAddressAction.js +14 -0
  231. package/mablscript/actions/GenerateRandomStringAction.js +20 -0
  232. package/mablscript/actions/GetUrlAction.js +22 -0
  233. package/mablscript/actions/GetVariableValue.js +31 -0
  234. package/mablscript/actions/GetViewportAction.js +17 -0
  235. package/mablscript/actions/JavaScriptAction.js +219 -0
  236. package/mablscript/diffing/diffingUtil.js +229 -0
  237. package/mablscript/importer.js +576 -0
  238. package/mablscript/mobile/steps/CreateVariableMobileStep.js +53 -0
  239. package/mablscript/mobile/steps/EnterTextStep.js +45 -0
  240. package/mablscript/mobile/steps/HideKeyboardStep.js +20 -0
  241. package/mablscript/mobile/steps/InstallAppStep.js +22 -0
  242. package/mablscript/mobile/steps/NavigateBackStep.js +20 -0
  243. package/mablscript/mobile/steps/NavigateHomeStep.js +21 -0
  244. package/mablscript/mobile/steps/OpenAppStep.js +22 -0
  245. package/mablscript/mobile/steps/OpenLinkStep.js +19 -0
  246. package/mablscript/mobile/steps/PrepareSessionStep.js +19 -0
  247. package/mablscript/mobile/steps/PushFileStep.js +27 -0
  248. package/mablscript/mobile/steps/ScrollStep.js +87 -0
  249. package/mablscript/mobile/steps/SetOrientationStep.js +20 -0
  250. package/mablscript/mobile/steps/TapStep.js +37 -0
  251. package/mablscript/mobile/steps/UninstallAppStep.js +22 -0
  252. package/mablscript/mobile/steps/actions/MobileFindAction.js +23 -0
  253. package/mablscript/mobile/steps/stepUtil.js +113 -0
  254. package/mablscript/mobile/tests/StepTestsUtil.js +20 -0
  255. package/mablscript/mobile/tests/TestMobileFindDescriptors.js +282 -0
  256. package/mablscript/mobile/tests/steps/CreateVariableMobileStep.mobiletest.js +298 -0
  257. package/mablscript/mobile/tests/steps/EnterTextStep.mobiletest.js +79 -0
  258. package/mablscript/mobile/tests/steps/GeneralHumanization.mobiletest.js +304 -0
  259. package/mablscript/mobile/tests/steps/HideKeyboardStep.mobiletest.js +27 -0
  260. package/mablscript/mobile/tests/steps/InstallAppStep.mobiletest.js +20 -0
  261. package/mablscript/mobile/tests/steps/NavigateBackStep.mobiletest.js +27 -0
  262. package/mablscript/mobile/tests/steps/NavigateHomeStep.mobiletest.js +27 -0
  263. package/mablscript/mobile/tests/steps/OpenLinkStep.mobiletest.js +20 -0
  264. package/mablscript/mobile/tests/steps/PushFileStep.mobiletest.js +55 -0
  265. package/mablscript/mobile/tests/steps/ScrollStep.mobiletest.js +386 -0
  266. package/mablscript/mobile/tests/steps/SetOrientationStep.mobiletest.js +32 -0
  267. package/mablscript/mobile/tests/steps/TapStep.mobiletest.js +57 -0
  268. package/mablscript/mobile/tests/steps/UninstallAppStep.mobiletest.js +20 -0
  269. package/mablscript/steps/AbstractAssertionsAndVariablesStep.js +52 -0
  270. package/mablscript/steps/AccessibilityCheck.js +108 -0
  271. package/mablscript/steps/ActionsUtils.js +18 -0
  272. package/mablscript/steps/AssertStep.js +318 -0
  273. package/mablscript/steps/AssertStepOld.js +159 -0
  274. package/mablscript/steps/AwaitTabStep.js +69 -0
  275. package/mablscript/steps/AwaitUploadsStep.js +26 -0
  276. package/mablscript/steps/ClearCookiesStep.js +26 -0
  277. package/mablscript/steps/ClickAndHoldStep.js +76 -0
  278. package/mablscript/steps/ClickStep.js +58 -0
  279. package/mablscript/steps/CookieUtils.js +54 -0
  280. package/mablscript/steps/CreateVariableStep.js +236 -0
  281. package/mablscript/steps/DatabaseQueryStep.js +28 -0
  282. package/mablscript/steps/DoubleClickStep.js +64 -0
  283. package/mablscript/steps/DownloadStep.js +96 -0
  284. package/mablscript/steps/EchoStep.js +34 -0
  285. package/mablscript/steps/ElseIfConditionStep.js +32 -0
  286. package/mablscript/steps/ElseStep.js +27 -0
  287. package/mablscript/steps/EndStep.js +27 -0
  288. package/mablscript/steps/EnterAuthCodeStep.js +59 -0
  289. package/mablscript/steps/EnterTextStep.js +96 -0
  290. package/mablscript/steps/EvaluateFlowStep.js +51 -0
  291. package/mablscript/steps/EvaluateJavaScriptStep.js +50 -0
  292. package/mablscript/steps/HoverStep.js +63 -0
  293. package/mablscript/steps/IfConditionStep.js +191 -0
  294. package/mablscript/steps/NavigateStep.js +30 -0
  295. package/mablscript/steps/OpenEmailStep.js +46 -0
  296. package/mablscript/steps/ReleaseStep.js +76 -0
  297. package/mablscript/steps/RemoveCookieStep.js +36 -0
  298. package/mablscript/steps/RightClickStep.js +58 -0
  299. package/mablscript/steps/SelectStep.js +82 -0
  300. package/mablscript/steps/SendHttpRequestStep.js +48 -0
  301. package/mablscript/steps/SendKeyStep.js +84 -0
  302. package/mablscript/steps/SetCookieStep.js +70 -0
  303. package/mablscript/steps/SetFilesStep.js +71 -0
  304. package/mablscript/steps/SetViewportStep.js +38 -0
  305. package/mablscript/steps/SwitchContextStep.js +122 -0
  306. package/mablscript/steps/SyntheticStep.js +20 -0
  307. package/mablscript/steps/VisitUrlStep.js +68 -0
  308. package/mablscript/steps/WaitStep.js +37 -0
  309. package/mablscript/steps/WaitUntilStep.js +46 -0
  310. package/mablscript/types/AccessibilityCheckStepDescriptor.js +2 -0
  311. package/mablscript/types/AccessibilityCheckTypes.js +9 -0
  312. package/mablscript/types/AssertionsAndVariablesStepDescriptor.js +2 -0
  313. package/mablscript/types/AwaitTabDescriptor.js +2 -0
  314. package/mablscript/types/AwaitUploadStepDescriptor.js +2 -0
  315. package/mablscript/types/ClearCookiesStepDescriptor.js +2 -0
  316. package/mablscript/types/ClickAndHoldStepDescriptor.js +2 -0
  317. package/mablscript/types/ClickStepDescriptor.js +2 -0
  318. package/mablscript/types/ConditionDescriptor.js +133 -0
  319. package/mablscript/types/CountDescriptor.js +2 -0
  320. package/mablscript/types/CreateVariableStepDescriptor.js +12 -0
  321. package/mablscript/types/DownloadStepDescriptor.js +2 -0
  322. package/mablscript/types/EchoStepDescriptor.js +2 -0
  323. package/mablscript/types/EnterTextStepDescriptor.js +2 -0
  324. package/mablscript/types/EvaluateFlowStepDescriptor.js +2 -0
  325. package/mablscript/types/EvaluateJavaScriptStepDescriptor.js +2 -0
  326. package/mablscript/types/ExtractDescriptor.js +21 -0
  327. package/mablscript/types/GetCurrentLocationDescriptor.js +12 -0
  328. package/mablscript/types/GetVariableDescriptor.js +16 -0
  329. package/mablscript/types/GetViewportDescriptor.js +12 -0
  330. package/mablscript/types/HoverStepDescriptor.js +2 -0
  331. package/mablscript/types/NavigateStepDescriptor.js +7 -0
  332. package/mablscript/types/OpenEmailStepDescriptor.js +2 -0
  333. package/mablscript/types/OperatingSystemDescriptor.js +45 -0
  334. package/mablscript/types/ReleaseStepDescriptor.js +7 -0
  335. package/mablscript/types/RemoveCookieStepDescriptor.js +2 -0
  336. package/mablscript/types/SelectStepDescriptor.js +2 -0
  337. package/mablscript/types/SendHttpRequestTypes.js +2 -0
  338. package/mablscript/types/SendKeyStepDescriptor.js +30 -0
  339. package/mablscript/types/SetCookieStepDescriptor.js +2 -0
  340. package/mablscript/types/SetFilesStepDescriptor.js +2 -0
  341. package/mablscript/types/SetViewportStepDescriptor.js +2 -0
  342. package/mablscript/types/SnippetsDescriptor.js +36 -0
  343. package/mablscript/types/StepDescriptor.js +2 -0
  344. package/mablscript/types/SwitchContextStepDescriptor.js +15 -0
  345. package/mablscript/types/VariableNamespace.js +17 -0
  346. package/mablscript/types/VisitUrlStepDescriptor.js +2 -0
  347. package/mablscript/types/WaitStepDescriptor.js +2 -0
  348. package/mablscript/types/WaitUntilStepDescriptor.js +2 -0
  349. package/mablscript/types/mobile/CreateVariableMobileStepDescriptor.js +9 -0
  350. package/mablscript/types/mobile/EnterTextStepDescriptor.js +2 -0
  351. package/mablscript/types/mobile/HideKeyboardStepDescriptor.js +2 -0
  352. package/mablscript/types/mobile/InstallAppStepDescriptor.js +2 -0
  353. package/mablscript/types/mobile/NavigateBackStepDescriptor.js +2 -0
  354. package/mablscript/types/mobile/NavigateHomeStepDescriptor.js +2 -0
  355. package/mablscript/types/mobile/OpenAppStepDescriptor.js +2 -0
  356. package/mablscript/types/mobile/OpenLinkStepDescriptor.js +2 -0
  357. package/mablscript/types/mobile/PrepareSessionStepDescriptor.js +2 -0
  358. package/mablscript/types/mobile/PushFileDescriptor.js +2 -0
  359. package/mablscript/types/mobile/ScrollStepDescriptor.js +32 -0
  360. package/mablscript/types/mobile/SetOrientationStepDescriptor.js +8 -0
  361. package/mablscript/types/mobile/StepWithMobileFindDescriptor.js +8 -0
  362. package/mablscript/types/mobile/TapStepDescriptor.js +8 -0
  363. package/mablscript/types/mobile/UninstallAppStepDescriptor.js +2 -0
  364. package/mablscriptFind/index.js +2 -0
  365. package/mablscriptFind/index.js.LICENSE.txt +25 -0
  366. package/middleware.js +42 -0
  367. package/mobile/index.js +2 -0
  368. package/mobile/types.js +8 -0
  369. package/observers/ObserverBase.js +11 -0
  370. package/observers/mockObserver.js +47 -0
  371. package/package.json +107 -0
  372. package/popupDismissal/candidate.js +2 -0
  373. package/popupDismissal/index.js +255 -0
  374. package/providers/authenticationProvider.js +254 -0
  375. package/providers/cliConfigProvider.js +271 -0
  376. package/providers/exportRequestProvider.js +196 -0
  377. package/providers/logging/loggingProvider.js +90 -0
  378. package/providers/scmContextInterfaces.js +14 -0
  379. package/providers/scmContextProvider.js +335 -0
  380. package/providers/scmContextProviderV2.js +122 -0
  381. package/providers/types.js +9 -0
  382. package/proxy/index.js +2 -0
  383. package/proxy/index.js.LICENSE.txt +12 -0
  384. package/proxy/lib/xpath.js +1 -0
  385. package/reporters/__tests__/resources/sampleData.js +162 -0
  386. package/reporters/mochAwesome/interfaces.js +2 -0
  387. package/reporters/mochAwesome/mochAwesomeReporter.js +227 -0
  388. package/reporters/reporter.js +46 -0
  389. package/resources/actionabilityCheck.js +160 -0
  390. package/resources/coreWebVitals.js +1 -0
  391. package/resources/mablFind.js +2 -0
  392. package/resources/media/mabl_test_audio.wav +0 -0
  393. package/resources/media/mabl_test_pattern.y4m +3 -0
  394. package/resources/pdf-viewer/EmbeddedPdfHandler.js +1 -0
  395. package/resources/pdf-viewer/embeddedPdfDetection.js +225 -0
  396. package/resources/pdf-viewer/index.html +1 -0
  397. package/resources/pdf-viewer/index.js +2 -0
  398. package/resources/pdf-viewer/libEmbeddedPdfHandler.js +279 -0
  399. package/resources/pdf-viewer/libmablPdfViewer.js +21909 -0
  400. package/resources/pdf-viewer/mabl_attention_move.gif +0 -0
  401. package/resources/pdf-viewer/mabl_error_artwork_Unplugged.gif +0 -0
  402. package/resources/pdf-viewer/pdf.worker.9251738a897f697389be.js +2 -0
  403. package/resources/pdf-viewer/pdf.worker.9e2021092643447a5b9f.js +81 -0
  404. package/resources/popupDismissal.js +1 -0
  405. package/resources/webdriver.js +19 -0
  406. package/socketTunnel/index.js +2 -0
  407. package/socketTunnel/index.js.LICENSE.txt +68 -0
  408. package/upload/index.js +2 -0
  409. package/upload/index.js.LICENSE.txt +27 -0
  410. package/util/CloudStorageWriter.js +45 -0
  411. package/util/FileCache.js +180 -0
  412. package/util/IdentifierUtil.js +57 -0
  413. package/util/InternalMetricsTrackingSingleton.js +36 -0
  414. package/util/Lazy.js +90 -0
  415. package/util/MobileAppFileCache.js +103 -0
  416. package/util/RichPromise.js +53 -0
  417. package/util/TestOutputWriter.js +104 -0
  418. package/util/actionabilityUtil.js +165 -0
  419. package/util/analytics-events.js +14 -0
  420. package/util/analytics.js +176 -0
  421. package/util/asyncUtil.js +61 -0
  422. package/util/browserTestUtils.js +17 -0
  423. package/util/clickUtil.js +68 -0
  424. package/util/downloadUtil.js +87 -0
  425. package/util/encodingUtil.js +50 -0
  426. package/util/fileUploadUtil.js +146 -0
  427. package/util/javaScriptStepMigration.js +115 -0
  428. package/util/jestUtil.js +21 -0
  429. package/util/logUtils.js +131 -0
  430. package/util/markdownUtil.js +125 -0
  431. package/util/postInstallMessage.js +14 -0
  432. package/util/pureUtil.js +175 -0
  433. package/util/resourceUtil.js +90 -0
  434. package/util/timeUtil.js +31 -0
  435. package/utilities.js +7 -0
  436. package/webdriver/index.js +44 -0
@@ -0,0 +1,576 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSnippetIdsFromFlows = exports.getSnippetIdsFromApiFlow = exports.getSnippetIdsFromMablscriptFlow = exports.getSnippetIdsFromJsonFlow = exports.getQueryIds = exports.parseMablScriptIntoV2Step = exports.extractOutputVariables = exports.extractInputVariables = exports.parseMablScriptIntoSteps = exports.mablscriptTheLoadedSteps = exports.interpretStepsFromObjects = exports.interpretStepsFromObjectsInFlow = exports.loadYamlSteps = exports.yamlifyTheLoadedSteps = exports.loadMablScriptIntoSteps = exports.parseMablScript = void 0;
4
+ const esprima_1 = require("esprima");
5
+ const estraverse_1 = require("estraverse");
6
+ const AssertStep_1 = require("./steps/AssertStep");
7
+ const AssertStepOld_1 = require("./steps/AssertStepOld");
8
+ const AwaitTabStep_1 = require("./steps/AwaitTabStep");
9
+ const ClickStep_1 = require("./steps/ClickStep");
10
+ const js_yaml_1 = require("js-yaml");
11
+ const EchoStep_1 = require("./steps/EchoStep");
12
+ const ElseStep_1 = require("./steps/ElseStep");
13
+ const EndStep_1 = require("./steps/EndStep");
14
+ const EnterTextStep_1 = require("./steps/EnterTextStep");
15
+ const IfConditionStep_1 = require("./steps/IfConditionStep");
16
+ const EvaluateJavaScriptStep_1 = require("./steps/EvaluateJavaScriptStep");
17
+ const MablStep_1 = require("./MablStep");
18
+ const SetViewportStep_1 = require("./steps/SetViewportStep");
19
+ const VisitUrlStep_1 = require("./steps/VisitUrlStep");
20
+ const WaitStep_1 = require("./steps/WaitStep");
21
+ const AwaitUploadsStep_1 = require("./steps/AwaitUploadsStep");
22
+ const ClearCookiesStep_1 = require("./steps/ClearCookiesStep");
23
+ const CreateVariableStep_1 = require("./steps/CreateVariableStep");
24
+ const DoubleClickStep_1 = require("./steps/DoubleClickStep");
25
+ const DownloadStep_1 = require("./steps/DownloadStep");
26
+ const HoverStep_1 = require("./steps/HoverStep");
27
+ const SendKeyStep_1 = require("./steps/SendKeyStep");
28
+ const NavigateStep_1 = require("./steps/NavigateStep");
29
+ const OpenEmailStep_1 = require("./steps/OpenEmailStep");
30
+ const RemoveCookieStep_1 = require("./steps/RemoveCookieStep");
31
+ const SelectStep_1 = require("./steps/SelectStep");
32
+ const SetCookieStep_1 = require("./steps/SetCookieStep");
33
+ const SetFilesStep_1 = require("./steps/SetFilesStep");
34
+ const SwitchContextStep_1 = require("./steps/SwitchContextStep");
35
+ const SendHttpRequestStep_1 = require("./steps/SendHttpRequestStep");
36
+ const FindAction_1 = require("./actions/FindAction");
37
+ const ExtractAction_1 = require("./actions/ExtractAction");
38
+ const ConditionAction_1 = require("./actions/ConditionAction");
39
+ const GetVariableValue_1 = require("./actions/GetVariableValue");
40
+ const GetUrlAction_1 = require("./actions/GetUrlAction");
41
+ const MablAction_1 = require("./MablAction");
42
+ const GenerateRandomStringAction_1 = require("./actions/GenerateRandomStringAction");
43
+ const AwaitDownloadAction_1 = require("./actions/AwaitDownloadAction");
44
+ const AwaitPDFDownloadAction_1 = require("./actions/AwaitPDFDownloadAction");
45
+ const GenerateEmailAddressAction_1 = require("./actions/GenerateEmailAddressAction");
46
+ const MablSymbol_1 = require("./MablSymbol");
47
+ const ElseIfConditionStep_1 = require("./steps/ElseIfConditionStep");
48
+ const JavaScriptAction_1 = require("./actions/JavaScriptAction");
49
+ const ClickAndHoldStep_1 = require("./steps/ClickAndHoldStep");
50
+ const ReleaseStep_1 = require("./steps/ReleaseStep");
51
+ const CountAction_1 = require("./actions/CountAction");
52
+ const mablApi_1 = require("../mablApi");
53
+ const AccessibilityCheck_1 = require("./steps/AccessibilityCheck");
54
+ const EvaluateFlowStep_1 = require("./steps/EvaluateFlowStep");
55
+ const RightClickStep_1 = require("./steps/RightClickStep");
56
+ const EnterAuthCodeStep_1 = require("./steps/EnterAuthCodeStep");
57
+ const TapStep_1 = require("./mobile/steps/TapStep");
58
+ const EnterTextStep_2 = require("./mobile/steps/EnterTextStep");
59
+ const SetOrientationStep_1 = require("./mobile/steps/SetOrientationStep");
60
+ const ScrollStep_1 = require("./mobile/steps/ScrollStep");
61
+ const CreateVariableMobileStep_1 = require("./mobile/steps/CreateVariableMobileStep");
62
+ const NavigateBackStep_1 = require("./mobile/steps/NavigateBackStep");
63
+ const NavigateHomeStep_1 = require("./mobile/steps/NavigateHomeStep");
64
+ const CreateVariableStepDescriptor_1 = require("./types/CreateVariableStepDescriptor");
65
+ const SnippetsDescriptor_1 = require("./types/SnippetsDescriptor");
66
+ const MablStepV2_1 = require("./MablStepV2");
67
+ const PushFileStep_1 = require("./mobile/steps/PushFileStep");
68
+ const InstallAppStep_1 = require("./mobile/steps/InstallAppStep");
69
+ const UninstallAppStep_1 = require("./mobile/steps/UninstallAppStep");
70
+ const PrepareSessionStep_1 = require("./mobile/steps/PrepareSessionStep");
71
+ const OpenLinkStep_1 = require("./mobile/steps/OpenLinkStep");
72
+ const DatabaseQueryStep_1 = require("./steps/DatabaseQueryStep");
73
+ const HideKeyboardStep_1 = require("./mobile/steps/HideKeyboardStep");
74
+ const OpenAppStep_1 = require("./mobile/steps/OpenAppStep");
75
+ const ActionTypes = [
76
+ AwaitDownloadAction_1.AwaitDownloadAction,
77
+ AwaitPDFDownloadAction_1.AwaitPDFDownloadAction,
78
+ ConditionAction_1.ConditionAction,
79
+ CountAction_1.CountAction,
80
+ ExtractAction_1.ExtractAction,
81
+ FindAction_1.FindAction,
82
+ GenerateEmailAddressAction_1.GenerateEmailAddressAction,
83
+ GenerateRandomStringAction_1.GenerateRandomStringAction,
84
+ GetVariableValue_1.GetVariableValue,
85
+ GetUrlAction_1.GetUrlAction,
86
+ JavaScriptAction_1.JavaScriptAction,
87
+ ];
88
+ const StepTypes = [
89
+ AccessibilityCheck_1.AccessibilityCheckStep,
90
+ AssertStep_1.AssertStep,
91
+ AssertStepOld_1.AssertStepOld,
92
+ AwaitTabStep_1.AwaitTabStep,
93
+ AwaitUploadsStep_1.AwaitUploadsStep,
94
+ ClearCookiesStep_1.ClearCookiesStep,
95
+ ClickStep_1.ClickStep,
96
+ ClickAndHoldStep_1.ClickAndHoldStep,
97
+ CreateVariableStep_1.CreateVariableStep,
98
+ DatabaseQueryStep_1.DatabaseQueryStep,
99
+ DoubleClickStep_1.DoubleClickStep,
100
+ DownloadStep_1.DownloadStep,
101
+ EchoStep_1.EchoStep,
102
+ ElseStep_1.ElseStep,
103
+ ElseIfConditionStep_1.ElseIfConditionStep,
104
+ EndStep_1.EndStep,
105
+ EnterAuthCodeStep_1.EnterAuthCodeStep,
106
+ EnterTextStep_1.EnterTextStep,
107
+ EvaluateFlowStep_1.EvaluateFlowStep,
108
+ HoverStep_1.HoverStep,
109
+ IfConditionStep_1.IfConditionStep,
110
+ EvaluateJavaScriptStep_1.EvaluateJavaScriptStep,
111
+ SendKeyStep_1.SendKeyStep,
112
+ NavigateStep_1.NavigateStep,
113
+ OpenEmailStep_1.OpenEmailStep,
114
+ ReleaseStep_1.ReleaseStep,
115
+ RemoveCookieStep_1.RemoveCookieStep,
116
+ RightClickStep_1.RightClickStep,
117
+ SelectStep_1.SelectStep,
118
+ SendHttpRequestStep_1.SendHttpRequestStep,
119
+ SetCookieStep_1.SetCookieStep,
120
+ SetFilesStep_1.SetFilesStep,
121
+ SetViewportStep_1.SetViewportStep,
122
+ SwitchContextStep_1.SwitchContextStep,
123
+ VisitUrlStep_1.VisitUrlStep,
124
+ WaitStep_1.WaitStep,
125
+ ];
126
+ const MobileStepTypes = [
127
+ AssertStep_1.AssertStep,
128
+ CreateVariableMobileStep_1.CreateVariableMobileStep,
129
+ HideKeyboardStep_1.HideKeyboardStep,
130
+ InstallAppStep_1.InstallAppStep,
131
+ NavigateBackStep_1.NavigateBackStep,
132
+ NavigateHomeStep_1.NavigateHomeStep,
133
+ TapStep_1.TapStep,
134
+ EnterTextStep_2.EnterTextStep,
135
+ SetOrientationStep_1.SetOrientationStep,
136
+ ScrollStep_1.ScrollStep,
137
+ OpenAppStep_1.OpenAppStep,
138
+ OpenLinkStep_1.OpenLinkStep,
139
+ PrepareSessionStep_1.PrepareSessionStep,
140
+ PushFileStep_1.PushFileStep,
141
+ UninstallAppStep_1.UninstallAppStep,
142
+ ];
143
+ const SyntheticActionCodes = [
144
+ 'autologin',
145
+ 'capture_application_state',
146
+ 'root_page',
147
+ 'verify_url',
148
+ 'validate_links',
149
+ 'validate_page',
150
+ ];
151
+ const ACCESSIBILITY_CHECK_ACTION_NAME = 'accessibility_check';
152
+ function parseMablScript(mablscript) {
153
+ const ast = (0, esprima_1.parseScript)(mablscript, { loc: true });
154
+ const stepStack = {};
155
+ let stepLine = 0;
156
+ (0, estraverse_1.traverse)(ast, {
157
+ enter(node) {
158
+ switch (node.type) {
159
+ case 'ExpressionStatement':
160
+ stepStack[stepLine] = [];
161
+ return;
162
+ case 'CallExpression': {
163
+ const callExpression = node;
164
+ stepStack[stepLine].unshift(parseCallExpression(callExpression));
165
+ return;
166
+ }
167
+ default:
168
+ break;
169
+ }
170
+ },
171
+ leave(node) {
172
+ switch (node.type) {
173
+ case 'ExpressionStatement':
174
+ stepLine += 1;
175
+ return;
176
+ default:
177
+ break;
178
+ }
179
+ },
180
+ });
181
+ return stepStack;
182
+ }
183
+ exports.parseMablScript = parseMablScript;
184
+ const rawMablscriptToObjectsStepMap = {};
185
+ StepTypes.forEach((step) => {
186
+ step.mablScriptStepNames.forEach((name) => (rawMablscriptToObjectsStepMap[name] = step));
187
+ });
188
+ const rawMablscriptToObjectsActionsMap = {};
189
+ ActionTypes.forEach((step) => {
190
+ step.mablScriptStepNames.forEach((name) => (rawMablscriptToObjectsActionsMap[name] = step));
191
+ });
192
+ function loadMablScriptIntoSteps(parsedMablscript) {
193
+ return Object.entries(parsedMablscript).map(([stepIndexString, [...parsed]]) => {
194
+ const lastAction = parsed.pop();
195
+ const stepType = rawMablscriptToObjectsStepMap[lastAction.name];
196
+ const actions = parsed.map((parsedAction, actionIndex) => {
197
+ const actionType = rawMablscriptToObjectsActionsMap[parsedAction.name];
198
+ const action = actionType
199
+ ? new actionType(parsedAction.name, parsedAction.arguments)
200
+ : new MablAction_1.MablAction(parsedAction.name, parsedAction.name, parsedAction.arguments);
201
+ action.setActionSourceIndexInStep(actionIndex);
202
+ return action;
203
+ });
204
+ let step = stepType
205
+ ? new stepType(lastAction.name, lastAction.arguments, actions)
206
+ : new MablStep_1.MablStep(lastAction.name, lastAction.arguments, actions, lastAction.name);
207
+ if (step instanceof AssertStepOld_1.AssertStepOld) {
208
+ step = step.getNewAssertionStep();
209
+ }
210
+ step.setActionSourceIndexInStep(actions.length);
211
+ step.setStepSourceIndexInFlow(parseInt(stepIndexString));
212
+ return step;
213
+ });
214
+ }
215
+ exports.loadMablScriptIntoSteps = loadMablScriptIntoSteps;
216
+ function yamlifyTheLoadedSteps(translatedSteps, fullLocatorsOn = true) {
217
+ const steps = translatedSteps.map((step) => step.getFormattedStep(fullLocatorsOn));
218
+ return (0, js_yaml_1.dump)(steps);
219
+ }
220
+ exports.yamlifyTheLoadedSteps = yamlifyTheLoadedSteps;
221
+ const yamlMablscriptToObjectsStepV1Map = {};
222
+ StepTypes.forEach((step) => {
223
+ step.yamlMablScriptNames.forEach((name) => (yamlMablscriptToObjectsStepV1Map[name] = step.fromYaml));
224
+ });
225
+ const yamlMablscriptToObjectsMobileStepMap = {};
226
+ MobileStepTypes.forEach((step) => {
227
+ step.yamlMablScriptNames.forEach((name) => (yamlMablscriptToObjectsMobileStepMap[name] = step.fromYaml));
228
+ });
229
+ function loadYamlSteps(yamlSteps, isMobile) {
230
+ const loadedStepData = (0, js_yaml_1.load)(yamlSteps);
231
+ return interpretStepsFromObjects(loadedStepData, isMobile);
232
+ }
233
+ exports.loadYamlSteps = loadYamlSteps;
234
+ function interpretStepsFromObjectsInFlow(flow, isMobile) {
235
+ var _a, _b, _c;
236
+ const steps = interpretStepsFromObjects((_a = flow.json_steps) === null || _a === void 0 ? void 0 : _a.steps, isMobile);
237
+ let flowDescriptions = [];
238
+ if (flow.script_description) {
239
+ flowDescriptions = (_c = (_b = flow.script_description) === null || _b === void 0 ? void 0 : _b.split('\n')) !== null && _c !== void 0 ? _c : [];
240
+ }
241
+ steps.forEach((step, index) => {
242
+ var _a;
243
+ step.setDescription(flowDescriptions[index]);
244
+ if ((_a = flow === null || flow === void 0 ? void 0 : flow.step_annotations) === null || _a === void 0 ? void 0 : _a[index]) {
245
+ step.setAnnotation(flow.step_annotations[index]);
246
+ }
247
+ });
248
+ return steps;
249
+ }
250
+ exports.interpretStepsFromObjectsInFlow = interpretStepsFromObjectsInFlow;
251
+ function interpretStepsFromObjects(steps, isMobile) {
252
+ let cumulativeIndex = 0;
253
+ return steps.map((stepObject, index) => {
254
+ var _a;
255
+ const stepName = Object.keys(stepObject)[0];
256
+ const stepArgs = stepObject[stepName];
257
+ const isStepDisabled = stepObject[stepName].disabled;
258
+ const step = stepFromObjectInfo(stepName, stepArgs, isMobile !== null && isMobile !== void 0 ? isMobile : false);
259
+ step.setStepSourceIndexInFlow(index);
260
+ const actionCount = step.actions.length;
261
+ (_a = step.actions) === null || _a === void 0 ? void 0 : _a.forEach((action, actionIndex) => {
262
+ if ((0, MablStepV2_1.isMablStepV2)(step) && actionIndex + 1 !== actionCount) {
263
+ action.setActionSourceIndexInStep(actionIndex);
264
+ if (step.actionCode && SyntheticActionCodes.includes(step.actionCode)) {
265
+ step.cumulativeActionSourceIndexInFlow = steps.length;
266
+ }
267
+ else if (step.actionCode === ACCESSIBILITY_CHECK_ACTION_NAME) {
268
+ step.cumulativeActionSourceIndexInFlow = 1;
269
+ }
270
+ else {
271
+ action.cumulativeActionSourceIndexInFlow = cumulativeIndex++;
272
+ }
273
+ }
274
+ });
275
+ if (isStepDisabled) {
276
+ step.setDisabled(isStepDisabled);
277
+ }
278
+ return step;
279
+ });
280
+ }
281
+ exports.interpretStepsFromObjects = interpretStepsFromObjects;
282
+ function stepFromObjectInfo(stepName, stepArgs, isMobile) {
283
+ if (isMobile &&
284
+ Object.keys(yamlMablscriptToObjectsMobileStepMap).includes(stepName)) {
285
+ return yamlMablscriptToObjectsMobileStepMap[stepName](stepName, stepArgs);
286
+ }
287
+ if (Object.keys(yamlMablscriptToObjectsStepV1Map).includes(stepName)) {
288
+ return yamlMablscriptToObjectsStepV1Map[stepName](stepName, stepArgs);
289
+ }
290
+ return new MablStep_1.MablStep(stepName, [], [], stepName);
291
+ }
292
+ function getMablscriptMaybeWithComment(step) {
293
+ return `${step.isDisabled() ? '//' : ''}${step.toMablscript()}`;
294
+ }
295
+ function mablscriptTheLoadedSteps(translatedSteps) {
296
+ const steps = translatedSteps.map((step) => getMablscriptMaybeWithComment(step));
297
+ return steps.join('\n');
298
+ }
299
+ exports.mablscriptTheLoadedSteps = mablscriptTheLoadedSteps;
300
+ function parseCallExpression(callExpression) {
301
+ const calleeName = getNameFromCallee(callExpression);
302
+ const expressionArgs = getArgumentsFromCallExpressionArgs(callExpression.arguments);
303
+ return {
304
+ name: calleeName,
305
+ arguments: expressionArgs,
306
+ };
307
+ }
308
+ function getNameFromCallee(expression) {
309
+ switch (expression.callee.type) {
310
+ case 'Identifier':
311
+ const identifier = expression.callee;
312
+ return identifier.name;
313
+ case 'MemberExpression':
314
+ const memberExpression = expression.callee;
315
+ if (memberExpression.property.type === 'Identifier') {
316
+ const identifier = memberExpression.property;
317
+ return identifier.name;
318
+ }
319
+ }
320
+ return '';
321
+ }
322
+ function getArgumentsFromCallExpressionArgs(expressionArguments) {
323
+ const expressionArgs = [];
324
+ expressionArguments.forEach((expressionArg) => {
325
+ if (expressionArg === null) {
326
+ throw new Error(`Unsupported null argument supplied`);
327
+ }
328
+ switch (expressionArg.type) {
329
+ case 'ArrayExpression':
330
+ const arrayExpression = expressionArg;
331
+ const arrayArgs = parseArrayExpression(arrayExpression);
332
+ expressionArgs.push(arrayArgs);
333
+ break;
334
+ case 'Literal':
335
+ const literal = expressionArg;
336
+ expressionArgs.push(literal.value);
337
+ break;
338
+ case 'Identifier':
339
+ const singleIdentifier = expressionArg;
340
+ expressionArgs.push((0, MablSymbol_1.formatSymbol)(singleIdentifier.name));
341
+ break;
342
+ case 'MemberExpression':
343
+ const memberExpression = expressionArg;
344
+ if (expressionArg.object.type === 'MemberExpression') {
345
+ const chainedVariableExpression = memberExpressionChainBuilder(memberExpression);
346
+ const property = memberExpression.property;
347
+ expressionArgs.push((0, MablSymbol_1.formatSymbol)(`${chainedVariableExpression}.${property.name}`));
348
+ }
349
+ else {
350
+ const identifier = memberExpression.object;
351
+ const property = memberExpression.property;
352
+ expressionArgs.push((0, MablSymbol_1.formatSymbol)(`${identifier.name}.${property.name}`));
353
+ }
354
+ break;
355
+ case 'ObjectExpression':
356
+ expressionArgs.push(parseObjectExpression(expressionArg));
357
+ break;
358
+ default:
359
+ throw new Error(`Unsupported argument supplied`);
360
+ }
361
+ });
362
+ return expressionArgs;
363
+ }
364
+ function memberExpressionChainBuilder(memberExpression) {
365
+ if (memberExpression.object.type === 'MemberExpression') {
366
+ const memberExpressProp = memberExpression.object.property;
367
+ return `${memberExpressionChainBuilder(memberExpression.object)}.${memberExpressProp.name}`;
368
+ }
369
+ const rootIdentifier = memberExpression.object;
370
+ return rootIdentifier.name;
371
+ }
372
+ function parseObjectExpression(expression) {
373
+ const finalObj = {};
374
+ expression.properties
375
+ .filter((property) => !!property.value)
376
+ .map((property) => property)
377
+ .forEach((property) => {
378
+ let key;
379
+ let value;
380
+ switch (property.value.type) {
381
+ case 'UnaryExpression':
382
+ key = property.key;
383
+ value = property.value;
384
+ const operator = value.operator;
385
+ const rawValue = Number(value.argument.raw);
386
+ if (operator === '-') {
387
+ value = -Math.abs(rawValue);
388
+ }
389
+ else {
390
+ throw Error(`Cannot parse UnaryExpression ${property}`);
391
+ }
392
+ finalObj[key.name] = value;
393
+ break;
394
+ case 'Literal':
395
+ key =
396
+ property.key.type === 'Identifier'
397
+ ?
398
+ property.key
399
+ :
400
+ property.key;
401
+ value = property.value;
402
+ if (property.key.type === 'Identifier') {
403
+ key = property.key;
404
+ finalObj[key.name] = value.value;
405
+ }
406
+ else {
407
+ key = property.key;
408
+ finalObj[key.value] = value.value;
409
+ }
410
+ break;
411
+ case 'ArrayExpression':
412
+ const arrayExpression = property.value;
413
+ const arrayArgs = parseArrayExpression(arrayExpression);
414
+ if (property.key.type === 'Identifier') {
415
+ key = property.key;
416
+ finalObj[key.name] = arrayArgs;
417
+ }
418
+ else {
419
+ key = property.key;
420
+ finalObj[key.value] = arrayArgs;
421
+ }
422
+ break;
423
+ case 'ObjectExpression':
424
+ key = property.key;
425
+ value = parseObjectExpression(property.value);
426
+ finalObj[key.name || key.value] = value;
427
+ }
428
+ });
429
+ return finalObj;
430
+ }
431
+ function parseArrayExpression(arrayExpression) {
432
+ let arrayArgs = [];
433
+ arrayExpression.elements.forEach((element) => {
434
+ arrayArgs = [
435
+ ...arrayArgs,
436
+ ...getArgumentsFromCallExpressionArgs([element]),
437
+ ];
438
+ });
439
+ return arrayArgs;
440
+ }
441
+ function removeCommentsAndGetDisabledIndices(mablscript) {
442
+ const disabledIndices = [];
443
+ const lines = [];
444
+ mablscript.split('\n').forEach((line, index) => {
445
+ if (line.startsWith('//')) {
446
+ disabledIndices.push(index);
447
+ line = line.substring(2);
448
+ }
449
+ lines.push(line);
450
+ });
451
+ const updatedScript = lines.join('\n');
452
+ return { updatedScript, disabledIndices };
453
+ }
454
+ function parseMablScriptIntoSteps(flow) {
455
+ if (!flow.script) {
456
+ return [];
457
+ }
458
+ let flowDescriptions = [];
459
+ if (flow.script_description) {
460
+ flowDescriptions = flow.script_description.split('\n');
461
+ }
462
+ const { updatedScript, disabledIndices } = removeCommentsAndGetDisabledIndices(flow.script);
463
+ const parsed = parseMablScript(updatedScript);
464
+ const loadedSteps = loadMablScriptIntoSteps(parsed);
465
+ loadedSteps.forEach((step, index) => {
466
+ var _a;
467
+ step.setDescription(flowDescriptions[index]);
468
+ if ((_a = flow === null || flow === void 0 ? void 0 : flow.step_annotations) === null || _a === void 0 ? void 0 : _a[index]) {
469
+ step.setAnnotation(flow.step_annotations[index]);
470
+ }
471
+ step.setDisabled(disabledIndices.includes(index));
472
+ });
473
+ return loadedSteps;
474
+ }
475
+ exports.parseMablScriptIntoSteps = parseMablScriptIntoSteps;
476
+ function extractInputVariables(steps) {
477
+ return (0, MablAction_1.distinctStrings)(steps.flatMap((step) => step.getInputVariables()));
478
+ }
479
+ exports.extractInputVariables = extractInputVariables;
480
+ function extractOutputVariables(steps) {
481
+ return (0, MablAction_1.distinctStrings)(steps.flatMap((step) => step.getOutputVariables()));
482
+ }
483
+ exports.extractOutputVariables = extractOutputVariables;
484
+ function parseMablScriptIntoV2Step(script) {
485
+ if (!script) {
486
+ throw new Error('Unable to parse step with invalid script');
487
+ }
488
+ const parsedMablscriptStep = parseMablScriptIntoSteps({
489
+ script,
490
+ });
491
+ const stepAsObject = parsedMablscriptStep[0].getFormattedStep(true);
492
+ const [parsedStep] = interpretStepsFromObjects([stepAsObject], true);
493
+ return parsedStep;
494
+ }
495
+ exports.parseMablScriptIntoV2Step = parseMablScriptIntoV2Step;
496
+ function getQueryIds(flows, testType) {
497
+ if (testType !== mablApi_1.TestTypeEnum.Browser) {
498
+ return [];
499
+ }
500
+ const querySteps = flows.flatMap((flow) => parseMablScriptIntoSteps(flow).filter(DatabaseQueryStep_1.isDatabaseQueryStep));
501
+ return uniqueArray(querySteps.map(getSnippetIdFromStep).filter(isDefined));
502
+ }
503
+ exports.getQueryIds = getQueryIds;
504
+ function getSnippetIdFromStep(step) {
505
+ let jsDescriptor;
506
+ if ((0, EvaluateJavaScriptStep_1.isEvaluateJavaScriptStep)(step)) {
507
+ jsDescriptor = step.evaluateJsAction.javaScript;
508
+ }
509
+ else if ((0, IfConditionStep_1.isIfConditionStep)(step) || (0, ElseIfConditionStep_1.isElseIfConditionStep)(step)) {
510
+ if ((0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.primaryAction)) {
511
+ jsDescriptor = step.primaryAction.javaScript;
512
+ }
513
+ }
514
+ else if ((0, CreateVariableStep_1.isCreateVariableStep)(step)) {
515
+ if (step.generationType === CreateVariableStepDescriptor_1.VariableGenerator.JAVASCRIPT &&
516
+ (0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.actions[0])) {
517
+ jsDescriptor = step.actions[0].javaScript;
518
+ }
519
+ }
520
+ else if ((0, DatabaseQueryStep_1.isDatabaseQueryStep)(step)) {
521
+ jsDescriptor = step.descriptor.snippet;
522
+ }
523
+ else if ((0, CreateVariableMobileStep_1.isCreateVariableMobileStep)(step)) {
524
+ if ((0, JavaScriptAction_1.isJavaScriptActionDescriptor)(step.descriptor.generator)) {
525
+ jsDescriptor = step.descriptor.generator.javaScript;
526
+ }
527
+ }
528
+ if ((jsDescriptor && (0, SnippetsDescriptor_1.isReusableSnippetDescriptor)(jsDescriptor)) ||
529
+ (0, SnippetsDescriptor_1.isLegacyReusableSnippetDescriptor)(jsDescriptor)) {
530
+ return jsDescriptor.snippetInvariantId;
531
+ }
532
+ return undefined;
533
+ }
534
+ function isDefined(value) {
535
+ return value !== undefined;
536
+ }
537
+ function uniqueArray(array) {
538
+ return Array.from(new Set(array));
539
+ }
540
+ function getSnippetIdsFromJsonFlow(flow) {
541
+ const steps = interpretStepsFromObjects(flow.json_steps.steps, true);
542
+ const snippetIds = steps
543
+ .map(getSnippetIdFromStep)
544
+ .filter(isDefined);
545
+ return snippetIds;
546
+ }
547
+ exports.getSnippetIdsFromJsonFlow = getSnippetIdsFromJsonFlow;
548
+ function getSnippetIdsFromMablscriptFlow(flow) {
549
+ const steps = parseMablScriptIntoSteps(flow);
550
+ const snippetIds = steps
551
+ .map(getSnippetIdFromStep)
552
+ .filter(isDefined);
553
+ return snippetIds;
554
+ }
555
+ exports.getSnippetIdsFromMablscriptFlow = getSnippetIdsFromMablscriptFlow;
556
+ function getSnippetIdsFromApiFlow(flow) {
557
+ var _a, _b;
558
+ return (_b = (_a = flow.snippet_references) === null || _a === void 0 ? void 0 : _a.map((reference) => reference.id)) !== null && _b !== void 0 ? _b : [];
559
+ }
560
+ exports.getSnippetIdsFromApiFlow = getSnippetIdsFromApiFlow;
561
+ function getSnippetIdsFromFlow(flow, testType) {
562
+ switch (testType) {
563
+ case mablApi_1.TestTypeEnum.Api:
564
+ return getSnippetIdsFromApiFlow(flow);
565
+ case mablApi_1.TestTypeEnum.Mobile:
566
+ return getSnippetIdsFromJsonFlow(flow);
567
+ case mablApi_1.TestTypeEnum.Browser:
568
+ return getSnippetIdsFromMablscriptFlow(flow);
569
+ default:
570
+ return [];
571
+ }
572
+ }
573
+ function getSnippetIdsFromFlows(flows, testType) {
574
+ return uniqueArray(flows.flatMap((flow) => getSnippetIdsFromFlow(flow, testType)));
575
+ }
576
+ exports.getSnippetIdsFromFlows = getSnippetIdsFromFlows;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCreateVariableMobileStep = exports.CreateVariableMobileStep = void 0;
4
+ const MablStepV2_1 = require("../../MablStepV2");
5
+ const CreateVariableStepDescriptor_1 = require("../../types/CreateVariableStepDescriptor");
6
+ const CreateVariableMobileStepDescriptor_1 = require("../../types/mobile/CreateVariableMobileStepDescriptor");
7
+ const MobileFindAction_1 = require("./actions/MobileFindAction");
8
+ const stepUtil_1 = require("./stepUtil");
9
+ class CreateVariableMobileStep extends MablStepV2_1.MablStepV2 {
10
+ constructor(descriptor) {
11
+ super(CreateVariableMobileStep.stepName, descriptor, 'as');
12
+ if ((0, CreateVariableMobileStepDescriptor_1.isCreateVariableMobileFindStepDescriptor)(this.descriptor)) {
13
+ this.findAction = MobileFindAction_1.MobileFindAction.fromDescriptor(this.descriptor.find);
14
+ this.actions = [this.findAction];
15
+ }
16
+ }
17
+ stepDescription() {
18
+ const varGenerator = this.descriptor.generator.type;
19
+ switch (varGenerator) {
20
+ case CreateVariableStepDescriptor_1.VariableGenerator.ATTRIBUTE:
21
+ return `Assign variable "${this.descriptor.name}" value from element attribute "${this.descriptor.generator.attribute}"`;
22
+ case CreateVariableStepDescriptor_1.VariableGenerator.PATTERN:
23
+ return `Assign variable "${this.descriptor.name}" value from string generated with format "${this.descriptor.generator.pattern}"`;
24
+ case CreateVariableStepDescriptor_1.VariableGenerator.EMAIL:
25
+ return `Generate a new mabl mailbox email address`;
26
+ case CreateVariableStepDescriptor_1.VariableGenerator.ELEMENT_COUNT:
27
+ return `Assign variable "${this.descriptor.name}" value from element count using ${(0, stepUtil_1.humanizeCustomFind)(this.descriptor)}`;
28
+ case CreateVariableStepDescriptor_1.VariableGenerator.JAVASCRIPT:
29
+ return `Assign variable "${this.descriptor.name}" using script`;
30
+ default:
31
+ return `Assign variable "${this.descriptor.name}" a value`;
32
+ }
33
+ }
34
+ static fromYaml(_stepName, stepDescriptor) {
35
+ if (!stepDescriptor.find) {
36
+ stepDescriptor.find = stepDescriptor.generator.find;
37
+ delete stepDescriptor.generator.find;
38
+ delete stepDescriptor.selector;
39
+ delete stepDescriptor.selectorAncestors;
40
+ }
41
+ return new CreateVariableMobileStep(stepDescriptor);
42
+ }
43
+ }
44
+ exports.CreateVariableMobileStep = CreateVariableMobileStep;
45
+ CreateVariableMobileStep.stepName = 'CreateVariable';
46
+ CreateVariableMobileStep.yamlMablScriptNames = [CreateVariableMobileStep.stepName];
47
+ CreateVariableMobileStep.stepVersion = 2;
48
+ function isCreateVariableMobileStep(value) {
49
+ return ((value === null || value === void 0 ? void 0 : value.getStepName) &&
50
+ (value === null || value === void 0 ? void 0 : value.getStepName()) === CreateVariableMobileStep.stepName &&
51
+ !!value.descriptor);
52
+ }
53
+ exports.isCreateVariableMobileStep = isCreateVariableMobileStep;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnterTextStep = void 0;
4
+ const MablStepV2_1 = require("../../MablStepV2");
5
+ const FindAction_1 = require("../../actions/FindAction");
6
+ const stepUtil_1 = require("./stepUtil");
7
+ const MablAction_1 = require("../../MablAction");
8
+ const STEP_NAME = 'EnterText';
9
+ class EnterTextStep extends MablStepV2_1.MablStepV2 {
10
+ constructor(descriptor) {
11
+ super(EnterTextStep.stepName, descriptor, 'enter_text');
12
+ }
13
+ getInputVariables() {
14
+ const { find, text } = this.descriptor;
15
+ const vars = MablAction_1.MablAction.findUniqueVariableReferencesInValue(find);
16
+ vars.push(...MablAction_1.MablAction.findUniqueVariableReferencesInValue(text));
17
+ return vars;
18
+ }
19
+ stepDescription() {
20
+ if ((0, stepUtil_1.isPasswordField)(this.descriptor.find)) {
21
+ return (0, stepUtil_1.getDescriptionForMobileStepDescriptor)(`Enter password in`, this.descriptor);
22
+ }
23
+ return (0, stepUtil_1.getDescriptionForMobileStepDescriptor)(`Enter text "${this.descriptor.text}" in`, this.descriptor);
24
+ }
25
+ static fromYaml(_stepName, stepDescriptor) {
26
+ if (!stepDescriptor.find &&
27
+ !!stepDescriptor.selector &&
28
+ !!stepDescriptor.findType) {
29
+ stepDescriptor.find = {
30
+ findType: FindAction_1.formattedFindTypeToMablscript[stepDescriptor.findType],
31
+ findTarget: {
32
+ selector: stepDescriptor.selector,
33
+ },
34
+ };
35
+ stepDescriptor.clearExistingText = true;
36
+ delete stepDescriptor.selector;
37
+ delete stepDescriptor.findType;
38
+ }
39
+ return new EnterTextStep(stepDescriptor);
40
+ }
41
+ }
42
+ exports.EnterTextStep = EnterTextStep;
43
+ EnterTextStep.stepName = STEP_NAME;
44
+ EnterTextStep.yamlMablScriptNames = [EnterTextStep.stepName];
45
+ EnterTextStep.stepVersion = 2;