@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,119 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.AddOnOptions = void 0;
27
+ const child_process_1 = require("child_process");
28
+ const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
29
+ const fs = __importStar(require("fs"));
30
+ const path = __importStar(require("path"));
31
+ const resourceUtil_1 = require("../../../util/resourceUtil");
32
+ const OperatingSystemDescriptor_1 = require("../../../mablscript/types/OperatingSystemDescriptor");
33
+ const UI_AUTOMATOR_VERSION = '3.7.6';
34
+ const XCUITEST_VERSION = '7.24.15';
35
+ const addOnConfigKey = 'add-on';
36
+ var AddOnOptions;
37
+ (function (AddOnOptions) {
38
+ AddOnOptions["browser"] = "browser";
39
+ AddOnOptions["mobile"] = "mobile-tools";
40
+ })(AddOnOptions || (exports.AddOnOptions = AddOnOptions = {}));
41
+ exports.command = `install <${addOnConfigKey}>`;
42
+ exports.describe = 'Install add-on tools like mobile testing drivers';
43
+ exports.builder = (yargs) => {
44
+ yargs
45
+ .positional(addOnConfigKey, {
46
+ describe: 'add-on to install',
47
+ type: 'string',
48
+ choices: [AddOnOptions.mobile, AddOnOptions.browser],
49
+ })
50
+ .option('android', {
51
+ describe: `[${AddOnOptions.mobile}] The android driver version to use`,
52
+ type: 'string',
53
+ })
54
+ .option('ios', {
55
+ describe: `[${AddOnOptions.mobile}] The ios driver version to use`,
56
+ type: 'string',
57
+ })
58
+ .option('chrome', {
59
+ describe: `[${AddOnOptions.browser}] The chrome browser version to use`,
60
+ type: 'boolean',
61
+ })
62
+ .option('webkit', {
63
+ describe: `[${AddOnOptions.browser}] The webkit browser version to use`,
64
+ type: 'boolean',
65
+ hidden: true,
66
+ })
67
+ .option('firefox', {
68
+ describe: `[${AddOnOptions.browser}] The firefox browser version to use`,
69
+ type: 'boolean',
70
+ hidden: true,
71
+ });
72
+ };
73
+ exports.handler = installAddOn;
74
+ async function installAddOn(parsed) {
75
+ var _a, _b;
76
+ const addOn = parsed[addOnConfigKey];
77
+ const iosVersion = (_a = parsed.ios) !== null && _a !== void 0 ? _a : XCUITEST_VERSION;
78
+ const androidVersion = (_b = parsed.android) !== null && _b !== void 0 ? _b : UI_AUTOMATOR_VERSION;
79
+ switch (addOn) {
80
+ case AddOnOptions.mobile:
81
+ loggingProvider_1.logger.info('Installing mobile add on tools');
82
+ const operatingSystem = (0, OperatingSystemDescriptor_1.getOperatingSystem)();
83
+ const parentDirOfNodeModulesDir = (0, resourceUtil_1.findNodeModulesDirectories)()[0];
84
+ switch (operatingSystem) {
85
+ case OperatingSystemDescriptor_1.OperatingSystem.MACOS:
86
+ loggingProvider_1.logger.info(`android version: ${androidVersion}`);
87
+ loggingProvider_1.logger.info(`ios version: ${iosVersion}`);
88
+ (0, child_process_1.execSync)(`npm install appium-uiautomator2-driver@${androidVersion} appium-xcuitest-driver@${iosVersion}`, { cwd: parentDirOfNodeModulesDir });
89
+ break;
90
+ default:
91
+ loggingProvider_1.logger.info(`android version: ${androidVersion}`);
92
+ loggingProvider_1.logger.info(`ios driver only supported on Mac OS, ${operatingSystem} platform detected`);
93
+ (0, child_process_1.execSync)(`npm install appium-uiautomator2-driver@${androidVersion}`, {
94
+ cwd: parentDirOfNodeModulesDir,
95
+ });
96
+ }
97
+ console.log(`${parentDirOfNodeModulesDir}/node_modules/.cache/appium/extensions.yaml`);
98
+ const pathToExtenstionsFile = path.resolve(`${parentDirOfNodeModulesDir}/node_modules/.cache/appium/extensions.yaml`);
99
+ if (fs.existsSync(pathToExtenstionsFile)) {
100
+ fs.unlinkSync(pathToExtenstionsFile);
101
+ }
102
+ loggingProvider_1.logger.info('Installation of mobile add on tools complete');
103
+ return;
104
+ case AddOnOptions.browser:
105
+ const browser = parsed.chrome
106
+ ? 'chrome'
107
+ : parsed.webkit
108
+ ? 'webkit'
109
+ : 'firefox';
110
+ loggingProvider_1.logger.info(`Installing ${browser} browser`);
111
+ await require('playwright-core/lib/server').installBrowsersForNpmInstall([
112
+ browser,
113
+ ]);
114
+ loggingProvider_1.logger.info('Installation of browser add on tools complete');
115
+ return;
116
+ default:
117
+ throw new Error(`Invalid add on provided [${addOn}]`);
118
+ }
119
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.listConfig = exports.defaultTupleValue = void 0;
7
+ const cliConfigProvider_1 = require("../../../providers/cliConfigProvider");
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
9
+ const configKeys_1 = require("./configKeys");
10
+ const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
11
+ exports.command = `list`;
12
+ exports.describe = 'List all user config values';
13
+ exports.handler = listConfig;
14
+ exports.defaultTupleValue = '---';
15
+ async function listConfig() {
16
+ const table = new cli_table3_1.default({
17
+ head: ['Config', 'Value', 'Details'],
18
+ colWidths: [null, 60],
19
+ });
20
+ for (const propertyKey of configKeys_1.validConfigKeyChoices) {
21
+ let value;
22
+ let details;
23
+ switch (propertyKey) {
24
+ case configKeys_1.configKeys.defaultWorkspaceId:
25
+ const maybeWorkspace = await cliConfigProvider_1.CliConfigProvider.getWorkspace();
26
+ value = maybeWorkspace === null || maybeWorkspace === void 0 ? void 0 : maybeWorkspace.id;
27
+ details = maybeWorkspace === null || maybeWorkspace === void 0 ? void 0 : maybeWorkspace.name;
28
+ break;
29
+ default:
30
+ value = await cliConfigProvider_1.CliConfigProvider.getConfigProperty(propertyKey);
31
+ }
32
+ const displayValue = value !== undefined ? value : exports.defaultTupleValue;
33
+ const displayDetails = details !== undefined ? details : exports.defaultTupleValue;
34
+ table.push([propertyKey, displayValue, displayDetails]);
35
+ }
36
+ loggingProvider_1.logger.info(table.toString());
37
+ return table;
38
+ }
39
+ exports.listConfig = listConfig;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configKeyCommandArg = void 0;
4
+ const cliConfigProvider_1 = require("../../../providers/cliConfigProvider");
5
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
6
+ const list_1 = require("./list");
7
+ const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
8
+ const configKeys_1 = require("./configKeys");
9
+ exports.configKeyCommandArg = 'config-key';
10
+ const configValue = 'config-value';
11
+ exports.command = `set <${exports.configKeyCommandArg}> <${configValue}>`;
12
+ exports.describe = 'Set a default configuration key';
13
+ exports.builder = (yargs) => {
14
+ yargs
15
+ .positional(exports.configKeyCommandArg, {
16
+ describe: 'The configuration key to set',
17
+ type: 'string',
18
+ choices: configKeys_1.validConfigKeyChoices,
19
+ })
20
+ .positional(configValue, {
21
+ describe: 'The value to configure for the config',
22
+ type: 'string',
23
+ });
24
+ };
25
+ exports.handler = setConfig;
26
+ async function setConfig(parsed) {
27
+ const key = parsed['config-key'];
28
+ const value = parsed['config-value'];
29
+ switch (key) {
30
+ case configKeys_1.configKeys.browserPath:
31
+ await cliConfigProvider_1.CliConfigProvider.setConfigProperty(configKeys_1.configKeys.browserPath, value);
32
+ break;
33
+ case configKeys_1.configKeys.defaultWorkspaceId:
34
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
35
+ const workspace = await apiClient.getWorkspace(value);
36
+ await cliConfigProvider_1.CliConfigProvider.setWorkspace(workspace);
37
+ break;
38
+ case configKeys_1.configKeys.enableSourceControlMetadataCollection:
39
+ case configKeys_1.configKeys.sslVerify:
40
+ if (!['true', 'false'].includes(value)) {
41
+ throw new Error("Valid values are 'true' and 'false'");
42
+ }
43
+ const booleanValue = value === 'true';
44
+ await cliConfigProvider_1.CliConfigProvider.setConfigProperty(key, booleanValue);
45
+ break;
46
+ case configKeys_1.configKeys.proxy:
47
+ if (!isValidUrl(value)) {
48
+ throw new Error(`Invalid URL specified. The value must be a fully specified URL with a valid protocol and domain: ${value}`);
49
+ }
50
+ await cliConfigProvider_1.CliConfigProvider.setConfigProperty(key, value);
51
+ break;
52
+ case configKeys_1.configKeys.proxyMode:
53
+ if (!(0, configKeys_1.isValidProxyMode)(value)) {
54
+ throw new Error(`Invalid proxy mode. The value must be one of ${JSON.stringify(configKeys_1.proxyModes)}`);
55
+ }
56
+ await cliConfigProvider_1.CliConfigProvider.setConfigProperty(key, value);
57
+ break;
58
+ case configKeys_1.configKeys.proxyType:
59
+ if (!(0, configKeys_1.isValidProxyType)(value)) {
60
+ throw new Error(`Invalid proxy type. The value must be one of ${JSON.stringify(configKeys_1.proxyTypes)}`);
61
+ }
62
+ await cliConfigProvider_1.CliConfigProvider.setConfigProperty(key, value);
63
+ break;
64
+ default:
65
+ throw new Error(`<${exports.configKeyCommandArg}> value not one of supported types: ${JSON.stringify(configKeys_1.validConfigKeyChoices)}`);
66
+ }
67
+ loggingProvider_1.logger.info(`Configured [${key}] = [${value}]`);
68
+ await (0, list_1.listConfig)();
69
+ return key;
70
+ }
71
+ function isValidUrl(value) {
72
+ try {
73
+ const url = new URL(value);
74
+ return (url.hostname.length > 0 &&
75
+ ['http:', 'https:'].includes(url.protocol.toLowerCase()));
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ }
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandArgMablBranchChangesOnly = exports.CommandArgMablBranch = exports.CommandArgMablAutoLogin = exports.CommandArgMablAutoBranch = exports.CommandArgLinkBypass = exports.CommandArgLinkLabel = exports.CommandArgLimitOutput = exports.CommandArgLabels = exports.CommandArgLabelsInclude = exports.CommandArgLabelsExclude = exports.CommandArgTestInteractionSpeed = exports.CommandArgTestRunId = exports.CommandArgTestFile = exports.CommandArgKeepBrowserOpen = exports.CommandArgInput = exports.CommandArgIncludedTests = exports.CommandArgIncludeDefaults = exports.CommandArgId = exports.CommandArgUserAgent = exports.CommandArgHttpHeaders = exports.CommandArgHelp = exports.CommandArgHeadless = exports.CommandArgFromPlanId = exports.CommandArgFrom = exports.CommandArgFormat = exports.CommandArgFindPath = exports.CommandArgFastFailure = exports.CommandArgOverrideEnvironmentId = exports.CommandArgGrep = exports.CommandArgExtraArguments = exports.CommandArgExistingReport = exports.CommandArgExcludedTests = exports.CommandArgEnvironmentId = exports.CommandArgDetailLevel = exports.CommandArgDestination = exports.CommandArgDescription = exports.CommandArgDeploymentId = exports.CommandArgDecrypt = exports.CommandArgDebug = exports.CommandArgDataTables = exports.CommandArgDataTableId = exports.CommandArgCredentials = exports.CommandArgBasicAuthCredentials = exports.CommandArgBrowsers = exports.CommandArgBrowser = exports.CommandArgBranch = exports.CommandArgAuto = exports.CommandArgApplicationId = exports.CommandArgApiKey = exports.CommandArgABConfigFile = void 0;
4
+ exports.DefaultBrowserType = exports.DefaultBranchName = exports.DefaultOutputFormatChoices = exports.DetailLevelFormats = exports.ReporterOptions = exports.OutputFormats = exports.CommandArgAliases = exports.CommandArgBrowserEnableExtensions = exports.CommandArgBrowserIgnoreCertificateErrors = exports.CommandArgBrowserDisableIsolation = exports.ListTimeFormat = exports.CommandArgTimezoneID = exports.CommandArgLocale = exports.CommandArgUseTestExecutionProxy = exports.CommandArgScenarioId = exports.CommandArgReporterOptions = exports.CommandArgReporter = exports.CommandArgWorkspaceId = exports.CommandArgVersion = exports.CommandArgVariables = exports.CommandArgUrlApi = exports.CommandArgUrlApp = exports.CommandArgUrl = exports.CommandArgTo = exports.CommandArgTrainerVersion = exports.CommandArgTraceFile = exports.CommandArgTracesPath = exports.CommandArgTestPath = exports.CommandArgSilent = exports.CommandArgRevision = exports.CommandArgRecordVideoPath = exports.CommandArgMaxHeartbeatAge = exports.CommandArgPlanId = exports.CommandArgContentTypes = exports.CommandArgPreview = exports.CommandArgPath = exports.CommandArgOutputFilePath = exports.CommandArgOutput = exports.CommandArgNoPrompt = exports.CommandArgPrompt = exports.CommandArgProject = exports.CommandArgPortNumber = exports.CommandArgName = exports.CommandArgMobileDeviceName = exports.CommandArgMobilePlatform = exports.CommandArgMobileBuildFileId = exports.CommandArgMobileBuildFilePath = exports.CommandArgiOSdMobileAppFileId = exports.CommandArgAndroidMobileAppFileId = exports.CommandArgMulti = void 0;
5
+ exports.SCENARIO_ID_HEADER = exports.SCENARIO_NAME_HEADER = exports.ValidBrowserTypesForLocalRuns = exports.BrowserTypeSelections = void 0;
6
+ const browserTypes_1 = require("./browserTypes");
7
+ exports.CommandArgABConfigFile = 'ab-config-file';
8
+ exports.CommandArgApiKey = 'api-key';
9
+ exports.CommandArgApplicationId = 'application-id';
10
+ exports.CommandArgAuto = 'auto-save';
11
+ exports.CommandArgBranch = 'branch';
12
+ exports.CommandArgBrowser = 'browser';
13
+ exports.CommandArgBrowsers = 'browsers';
14
+ exports.CommandArgBasicAuthCredentials = 'basic-auth-credentials-id';
15
+ exports.CommandArgCredentials = 'credentials-id';
16
+ exports.CommandArgDataTableId = 'data-table-id';
17
+ exports.CommandArgDataTables = 'data-tables';
18
+ exports.CommandArgDebug = 'debug';
19
+ exports.CommandArgDecrypt = 'decrypt';
20
+ exports.CommandArgDeploymentId = 'deployment-id';
21
+ exports.CommandArgDescription = 'description';
22
+ exports.CommandArgDestination = 'destination';
23
+ exports.CommandArgDetailLevel = 'detail-level';
24
+ exports.CommandArgEnvironmentId = 'environment-id';
25
+ exports.CommandArgExcludedTests = 'excluded-tests';
26
+ exports.CommandArgExistingReport = 'existing-report';
27
+ exports.CommandArgExtraArguments = 'extra-arguments';
28
+ exports.CommandArgGrep = 'grep';
29
+ exports.CommandArgOverrideEnvironmentId = 'override-environment-id';
30
+ exports.CommandArgFastFailure = 'fast-failure';
31
+ exports.CommandArgFindPath = 'find-path';
32
+ exports.CommandArgFormat = 'format';
33
+ exports.CommandArgFrom = 'from';
34
+ exports.CommandArgFromPlanId = 'from-plan-id';
35
+ exports.CommandArgHeadless = 'headless';
36
+ exports.CommandArgHelp = 'help';
37
+ exports.CommandArgHttpHeaders = 'http-headers';
38
+ exports.CommandArgUserAgent = 'user-agent';
39
+ exports.CommandArgId = 'id';
40
+ exports.CommandArgIncludeDefaults = 'include-defaults';
41
+ exports.CommandArgIncludedTests = 'included-tests';
42
+ exports.CommandArgInput = 'input';
43
+ exports.CommandArgKeepBrowserOpen = 'keep-browser-open';
44
+ exports.CommandArgTestFile = 'test-file';
45
+ exports.CommandArgTestRunId = 'run-id';
46
+ exports.CommandArgTestInteractionSpeed = 'interaction-speed';
47
+ exports.CommandArgLabelsExclude = 'exclude-labels';
48
+ exports.CommandArgLabelsInclude = 'labels';
49
+ exports.CommandArgLabels = 'labels';
50
+ exports.CommandArgLimitOutput = 'limit';
51
+ exports.CommandArgLinkLabel = 'link';
52
+ exports.CommandArgLinkBypass = 'link-bypass';
53
+ exports.CommandArgMablAutoBranch = 'auto-branch';
54
+ exports.CommandArgMablAutoLogin = 'auto-login';
55
+ exports.CommandArgMablBranch = 'mabl-branch';
56
+ exports.CommandArgMablBranchChangesOnly = 'branch-changes-only';
57
+ exports.CommandArgMulti = 'multi';
58
+ exports.CommandArgAndroidMobileAppFileId = 'android-app-file-id';
59
+ exports.CommandArgiOSdMobileAppFileId = 'ios-app-file-id';
60
+ exports.CommandArgMobileBuildFilePath = 'build-file-path';
61
+ exports.CommandArgMobileBuildFileId = 'build-file-id';
62
+ exports.CommandArgMobilePlatform = 'platform';
63
+ exports.CommandArgMobileDeviceName = 'device';
64
+ exports.CommandArgName = 'name';
65
+ exports.CommandArgPortNumber = 'port';
66
+ exports.CommandArgProject = 'project';
67
+ exports.CommandArgPrompt = 'prompt';
68
+ exports.CommandArgNoPrompt = `no-${exports.CommandArgPrompt}`;
69
+ exports.CommandArgOutput = 'output';
70
+ exports.CommandArgOutputFilePath = 'file';
71
+ exports.CommandArgPath = 'path';
72
+ exports.CommandArgPreview = 'preview';
73
+ exports.CommandArgContentTypes = 'types';
74
+ exports.CommandArgPlanId = 'plan-id';
75
+ exports.CommandArgMaxHeartbeatAge = 'max-heartbeat-age';
76
+ exports.CommandArgRecordVideoPath = 'video-path';
77
+ exports.CommandArgRevision = 'revision';
78
+ exports.CommandArgSilent = 'silent';
79
+ exports.CommandArgTestPath = 'tests-path';
80
+ exports.CommandArgTracesPath = 'traces-path';
81
+ exports.CommandArgTraceFile = 'trace-file';
82
+ exports.CommandArgTrainerVersion = 'trainer-version';
83
+ exports.CommandArgTo = 'to';
84
+ exports.CommandArgUrl = 'url';
85
+ exports.CommandArgUrlApp = 'app-url';
86
+ exports.CommandArgUrlApi = 'api-url';
87
+ exports.CommandArgVariables = 'variables';
88
+ exports.CommandArgVersion = 'version';
89
+ exports.CommandArgWorkspaceId = 'workspace-id';
90
+ exports.CommandArgReporter = 'reporter';
91
+ exports.CommandArgReporterOptions = 'reporter-options';
92
+ exports.CommandArgScenarioId = 'scenario-id';
93
+ exports.CommandArgUseTestExecutionProxy = 'use-test-execution-proxy';
94
+ exports.CommandArgLocale = 'locale';
95
+ exports.CommandArgTimezoneID = 'timezone-id';
96
+ exports.ListTimeFormat = 'MMM Do YYYY, HH:mm:ss';
97
+ exports.CommandArgBrowserDisableIsolation = 'browser-disable-isolation';
98
+ exports.CommandArgBrowserIgnoreCertificateErrors = 'browser-ignore-certificate-errors';
99
+ exports.CommandArgBrowserEnableExtensions = 'enable-browser-extensions';
100
+ var CommandArgAliases;
101
+ (function (CommandArgAliases) {
102
+ CommandArgAliases["ApiKey"] = "k";
103
+ CommandArgAliases["ApplicationId"] = "a";
104
+ CommandArgAliases["BasicAuthCredentials"] = "basic-creds";
105
+ CommandArgAliases["BranchFrom"] = "f";
106
+ CommandArgAliases["BranchTo"] = "t";
107
+ CommandArgAliases["Browsers"] = "b";
108
+ CommandArgAliases["Credentials"] = "creds";
109
+ CommandArgAliases["DeploymentId"] = "d";
110
+ CommandArgAliases["EnvironmentId"] = "e";
111
+ CommandArgAliases["File"] = "f";
112
+ CommandArgAliases["LimitOutput"] = "l";
113
+ CommandArgAliases["Name"] = "n";
114
+ CommandArgAliases["NoPrompt"] = "yes";
115
+ CommandArgAliases["OutputType"] = "o";
116
+ CommandArgAliases["Revision"] = "rev";
117
+ CommandArgAliases["ShowHelp"] = "h";
118
+ CommandArgAliases["Status"] = "s";
119
+ CommandArgAliases["Url"] = "u";
120
+ CommandArgAliases["Version"] = "v";
121
+ CommandArgAliases["WorkspaceId"] = "w";
122
+ })(CommandArgAliases || (exports.CommandArgAliases = CommandArgAliases = {}));
123
+ var OutputFormats;
124
+ (function (OutputFormats) {
125
+ OutputFormats["Csv"] = "csv";
126
+ OutputFormats["Json"] = "json";
127
+ OutputFormats["Markdown"] = "markdown";
128
+ OutputFormats["Playwright"] = "playwright";
129
+ OutputFormats["SeleniumIde"] = "side";
130
+ OutputFormats["Table"] = "table";
131
+ OutputFormats["Yaml"] = "yaml";
132
+ })(OutputFormats || (exports.OutputFormats = OutputFormats = {}));
133
+ var ReporterOptions;
134
+ (function (ReporterOptions) {
135
+ ReporterOptions["Mochawesome"] = "mochawesome";
136
+ })(ReporterOptions || (exports.ReporterOptions = ReporterOptions = {}));
137
+ var DetailLevelFormats;
138
+ (function (DetailLevelFormats) {
139
+ DetailLevelFormats["Full"] = "full";
140
+ })(DetailLevelFormats || (exports.DetailLevelFormats = DetailLevelFormats = {}));
141
+ exports.DefaultOutputFormatChoices = [
142
+ OutputFormats.Json,
143
+ OutputFormats.Yaml,
144
+ ];
145
+ exports.DefaultBranchName = 'master';
146
+ exports.DefaultBrowserType = browserTypes_1.BrowserType.Chrome;
147
+ exports.BrowserTypeSelections = [
148
+ browserTypes_1.BrowserType.Chrome,
149
+ browserTypes_1.BrowserType.Edge,
150
+ browserTypes_1.BrowserType.Firefox,
151
+ browserTypes_1.BrowserType.Webkit,
152
+ ].map((browser) => browser.toString());
153
+ exports.ValidBrowserTypesForLocalRuns = [
154
+ browserTypes_1.BrowserType.Chrome,
155
+ browserTypes_1.BrowserType.Edge,
156
+ browserTypes_1.BrowserType.Firefox,
157
+ browserTypes_1.BrowserType.Webkit,
158
+ ];
159
+ exports.SCENARIO_NAME_HEADER = 'Scenario name';
160
+ exports.SCENARIO_ID_HEADER = 'Scenario ID';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.command = 'credentials <command>';
4
+ exports.describe = 'Manage your testing credentials';
5
+ exports.builder = (yargs) => yargs.commandDir('credentials_cmds').demandCommand();
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const js_yaml_1 = require("js-yaml");
7
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
8
+ const util_1 = require("../../commandUtil/util");
9
+ const cli_table3_1 = __importDefault(require("cli-table3"));
10
+ const moment = require("moment");
11
+ const list_1 = require("../../commandUtil/list");
12
+ const loggingProvider_1 = require("../../../providers/logging/loggingProvider");
13
+ const constants_1 = require("../../constants");
14
+ const chalk = require('chalk');
15
+ exports.command = 'list';
16
+ exports.describe = 'List your credentials';
17
+ exports.builder = (0, list_1.getListBuilderOptions)('credentials');
18
+ exports.handler = (0, util_1.failWrapper)(listCredentials);
19
+ async function listCredentials(parsed) {
20
+ const output = parsed.output;
21
+ const limit = parsed.limit;
22
+ const workspaceId = await (0, util_1.getWorkspaceId)(parsed);
23
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
24
+ const credentials = await apiClient.getCredentials(workspaceId, limit);
25
+ printCredentials(credentials, output);
26
+ return credentials.length;
27
+ }
28
+ function printCredentials(credentials, output) {
29
+ switch (output) {
30
+ case 'json':
31
+ loggingProvider_1.logger.info(JSON.stringify(credentials, null, 2));
32
+ break;
33
+ case 'yaml':
34
+ loggingProvider_1.logger.info((0, js_yaml_1.dump)(credentials));
35
+ break;
36
+ default:
37
+ const table = new cli_table3_1.default({
38
+ head: ['ID', 'Name', 'Type', 'Description', 'Created time'],
39
+ wordWrap: true,
40
+ });
41
+ credentials.forEach((credential) => {
42
+ table.push([
43
+ { rowSpan: 1, content: credential.id, vAlign: 'center' },
44
+ { rowSpan: 1, content: credential.name, vAlign: 'center' },
45
+ {
46
+ rowSpan: 1,
47
+ content: (0, util_1.getCredentialType)(credential),
48
+ vAlign: 'center',
49
+ },
50
+ {
51
+ rowSpan: 1,
52
+ content: credential.description || '---',
53
+ vAlign: 'center',
54
+ },
55
+ {
56
+ rowSpan: 1,
57
+ content: moment.utc(credential.created_time).format(constants_1.ListTimeFormat),
58
+ vAlign: 'center',
59
+ },
60
+ ]);
61
+ });
62
+ loggingProvider_1.logger.info(table.toString());
63
+ break;
64
+ }
65
+ loggingProvider_1.logger.info(chalk.bgBlack(chalk.yellow.bold('\nCloud credentials are not available for local runs.')));
66
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.command = 'datatables <command>';
4
+ exports.describe = 'Manage mabl DataTables';
5
+ exports.builder = (yargs) => yargs.commandDir('datatables_cmds').demandCommand();
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const path_1 = require("path");
4
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
5
+ const util_1 = require("../../commandUtil/util");
6
+ const constants_1 = require("../../constants");
7
+ const describe_1 = require("../../commandUtil/describe");
8
+ const utils_1 = require("../utils");
9
+ exports.command = `create <${constants_1.CommandArgInput}>`;
10
+ exports.describe = 'Create a new mabl DataTable';
11
+ exports.builder = (yargs) => {
12
+ yargs
13
+ .positional(constants_1.CommandArgInput, {
14
+ alias: 'file',
15
+ describe: 'Relative path file to create DataTable from',
16
+ })
17
+ .option(constants_1.CommandArgWorkspaceId, {
18
+ alias: constants_1.CommandArgAliases.WorkspaceId,
19
+ describe: `Workspace to create DataTable in`,
20
+ type: 'string',
21
+ })
22
+ .option(constants_1.CommandArgName, {
23
+ alias: 'table-name',
24
+ demandOption: false,
25
+ describe: `The name for your new DataTable`,
26
+ type: 'string',
27
+ })
28
+ .option(constants_1.CommandArgFormat, {
29
+ alias: 'fmt',
30
+ demandOption: false,
31
+ describe: `Specify the format of your input file (checks file extension type by default)`,
32
+ choices: [constants_1.OutputFormats.Json, constants_1.OutputFormats.Csv],
33
+ });
34
+ };
35
+ exports.handler = (0, util_1.failWrapper)(createDataTable);
36
+ async function createDataTable(parsed) {
37
+ var _a, _b;
38
+ const { input } = parsed;
39
+ const format = (_a = parsed.format) !== null && _a !== void 0 ? _a : (0, utils_1.inferFileFormat)(input);
40
+ const name = (_b = parsed.name) !== null && _b !== void 0 ? _b : (0, path_1.basename)((0, path_1.resolve)(input));
41
+ const workspaceId = await (0, util_1.getWorkspaceId)(parsed);
42
+ let scenarios = [];
43
+ switch (format) {
44
+ case constants_1.OutputFormats.Json:
45
+ scenarios = (0, utils_1.parseJsonScenarios)(input);
46
+ break;
47
+ case constants_1.OutputFormats.Csv:
48
+ scenarios = await (0, utils_1.parseCsvScenarios)(input);
49
+ break;
50
+ default:
51
+ throw Error(`${format} is not a valid option.`);
52
+ }
53
+ const dataTableCreateRequest = {
54
+ workspace_id: workspaceId,
55
+ data_table: { name },
56
+ scenarios,
57
+ };
58
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
59
+ const dataTable = await apiClient.createDataTable(dataTableCreateRequest);
60
+ (0, describe_1.outputEntity)(dataTable, constants_1.OutputFormats.Json);
61
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
4
+ const constants_1 = require("../../constants");
5
+ const util_1 = require("../../commandUtil/util");
6
+ const describe_1 = require("../../commandUtil/describe");
7
+ exports.command = `describe <${constants_1.CommandArgId}>`;
8
+ exports.describe = 'Describe a specific DataTable';
9
+ exports.builder = (0, describe_1.getDescribeBuilderOptions)();
10
+ exports.handler = (0, util_1.failWrapper)(describeDataTable);
11
+ async function describeDataTable(parsed) {
12
+ const output = parsed.output;
13
+ const dataTableId = parsed.id;
14
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
15
+ const dataTable = await apiClient.getDataTable(dataTableId);
16
+ (0, describe_1.outputEntity)(dataTable, output);
17
+ }
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dumpToCsv = void 0;
4
+ const mablApiClientFactory_1 = require("../../../api/mablApiClientFactory");
5
+ const util_1 = require("../../commandUtil/util");
6
+ const constants_1 = require("../../constants");
7
+ const fileUtil_1 = require("../../commandUtil/fileUtil");
8
+ const js_yaml_1 = require("js-yaml");
9
+ const sync_1 = require("csv-stringify/sync");
10
+ const utils_1 = require("../utils");
11
+ exports.command = `export <${constants_1.CommandArgId}>`;
12
+ exports.describe = 'Export a DataTable in a specified file format';
13
+ exports.builder = (yargs) => {
14
+ yargs
15
+ .positional(constants_1.CommandArgId, {
16
+ describe: 'DataTable id to export',
17
+ type: 'string',
18
+ })
19
+ .option(constants_1.CommandArgFormat, {
20
+ alias: 'fmt',
21
+ default: constants_1.OutputFormats.Json,
22
+ describe: `Specify a format for the DataTable export`,
23
+ choices: [constants_1.OutputFormats.Json, constants_1.OutputFormats.Yaml, constants_1.OutputFormats.Csv],
24
+ });
25
+ };
26
+ exports.handler = (0, util_1.failWrapper)(exportDataTable);
27
+ async function exportDataTable(parsed) {
28
+ var _a;
29
+ const dataTableId = parsed.id;
30
+ const format = parsed.format;
31
+ const apiClient = await mablApiClientFactory_1.MablApiClientFactory.createApiClient();
32
+ const scenarioQueryResult = await apiClient.queryScenarios(dataTableId);
33
+ const scenarios = (_a = scenarioQueryResult.scenarios) !== null && _a !== void 0 ? _a : [];
34
+ let output = '';
35
+ switch (format) {
36
+ case constants_1.OutputFormats.Json:
37
+ output = dumpToJson(scenarios);
38
+ break;
39
+ case constants_1.OutputFormats.Yaml:
40
+ output = dumpToYaml(scenarios);
41
+ break;
42
+ case constants_1.OutputFormats.Csv:
43
+ output = dumpToCsv(scenarios);
44
+ break;
45
+ default:
46
+ throw Error(`${format} is not a valid option.`);
47
+ }
48
+ (0, fileUtil_1.writeExportedEntityToFile)(output, format, dataTableId);
49
+ }
50
+ function toScenarioExportFormat(scenarios) {
51
+ return scenarios.map((scenario) => ({
52
+ id: scenario.id,
53
+ name: scenario.name,
54
+ variables: scenario.variables,
55
+ }));
56
+ }
57
+ function dumpToJson(scenarios) {
58
+ return JSON.stringify(toScenarioExportFormat(scenarios), null, 2);
59
+ }
60
+ function dumpToYaml(scenarios) {
61
+ return (0, js_yaml_1.dump)(toScenarioExportFormat(scenarios));
62
+ }
63
+ function dumpToCsv(scenarios) {
64
+ const output = [];
65
+ if (scenarios.length === 0) {
66
+ return '';
67
+ }
68
+ const headers = [
69
+ constants_1.SCENARIO_ID_HEADER,
70
+ constants_1.SCENARIO_NAME_HEADER,
71
+ ...(scenarios[0].variables || []).map((variable) => (0, utils_1.sanitizeCsvCellInput)(variable.name || '')),
72
+ ];
73
+ output.push(headers);
74
+ scenarios.forEach((scenario) => {
75
+ var _a;
76
+ const variables = (_a = scenario.variables) !== null && _a !== void 0 ? _a : [];
77
+ const sanitizedRowValues = [
78
+ scenario.id,
79
+ scenario.name,
80
+ ...variables.map((variable) => variable.value || ''),
81
+ ].map((val) => (0, utils_1.sanitizeCsvCellInput)(val !== null && val !== void 0 ? val : ''));
82
+ output.push(sanitizedRowValues);
83
+ });
84
+ return (0, sync_1.stringify)(output);
85
+ }
86
+ exports.dumpToCsv = dumpToCsv;