@pedropaulovc/playwright-core 1.59.0-next

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 (366) hide show
  1. package/README.md +3 -0
  2. package/ThirdPartyNotices.txt +4076 -0
  3. package/bin/install_media_pack.ps1 +5 -0
  4. package/bin/install_webkit_wsl.ps1 +33 -0
  5. package/bin/reinstall_chrome_beta_linux.sh +42 -0
  6. package/bin/reinstall_chrome_beta_mac.sh +13 -0
  7. package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  8. package/bin/reinstall_chrome_stable_linux.sh +42 -0
  9. package/bin/reinstall_chrome_stable_mac.sh +12 -0
  10. package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  11. package/bin/reinstall_msedge_beta_linux.sh +48 -0
  12. package/bin/reinstall_msedge_beta_mac.sh +11 -0
  13. package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  14. package/bin/reinstall_msedge_dev_linux.sh +48 -0
  15. package/bin/reinstall_msedge_dev_mac.sh +11 -0
  16. package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  17. package/bin/reinstall_msedge_stable_linux.sh +48 -0
  18. package/bin/reinstall_msedge_stable_mac.sh +11 -0
  19. package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  20. package/browsers.json +79 -0
  21. package/cli.js +18 -0
  22. package/index.d.ts +17 -0
  23. package/index.js +32 -0
  24. package/index.mjs +28 -0
  25. package/lib/androidServerImpl.js +65 -0
  26. package/lib/browserServerImpl.js +120 -0
  27. package/lib/cli/driver.js +97 -0
  28. package/lib/cli/program.js +603 -0
  29. package/lib/cli/programWithTestStub.js +74 -0
  30. package/lib/client/android.js +361 -0
  31. package/lib/client/api.js +137 -0
  32. package/lib/client/artifact.js +79 -0
  33. package/lib/client/browser.js +161 -0
  34. package/lib/client/browserContext.js +582 -0
  35. package/lib/client/browserType.js +185 -0
  36. package/lib/client/cdpSession.js +51 -0
  37. package/lib/client/channelOwner.js +194 -0
  38. package/lib/client/clientHelper.js +64 -0
  39. package/lib/client/clientInstrumentation.js +55 -0
  40. package/lib/client/clientStackTrace.js +69 -0
  41. package/lib/client/clock.js +68 -0
  42. package/lib/client/connection.js +318 -0
  43. package/lib/client/consoleMessage.js +58 -0
  44. package/lib/client/coverage.js +44 -0
  45. package/lib/client/dialog.js +56 -0
  46. package/lib/client/download.js +62 -0
  47. package/lib/client/electron.js +138 -0
  48. package/lib/client/elementHandle.js +284 -0
  49. package/lib/client/errors.js +77 -0
  50. package/lib/client/eventEmitter.js +314 -0
  51. package/lib/client/events.js +103 -0
  52. package/lib/client/fetch.js +368 -0
  53. package/lib/client/fileChooser.js +46 -0
  54. package/lib/client/fileUtils.js +34 -0
  55. package/lib/client/frame.js +409 -0
  56. package/lib/client/harRouter.js +87 -0
  57. package/lib/client/input.js +84 -0
  58. package/lib/client/jsHandle.js +109 -0
  59. package/lib/client/jsonPipe.js +39 -0
  60. package/lib/client/localUtils.js +60 -0
  61. package/lib/client/locator.js +369 -0
  62. package/lib/client/network.js +747 -0
  63. package/lib/client/page.js +745 -0
  64. package/lib/client/pageAgent.js +64 -0
  65. package/lib/client/platform.js +77 -0
  66. package/lib/client/playwright.js +71 -0
  67. package/lib/client/selectors.js +55 -0
  68. package/lib/client/stream.js +39 -0
  69. package/lib/client/timeoutSettings.js +79 -0
  70. package/lib/client/tracing.js +119 -0
  71. package/lib/client/types.js +28 -0
  72. package/lib/client/video.js +59 -0
  73. package/lib/client/waiter.js +142 -0
  74. package/lib/client/webError.js +39 -0
  75. package/lib/client/webSocket.js +93 -0
  76. package/lib/client/worker.js +85 -0
  77. package/lib/client/writableStream.js +39 -0
  78. package/lib/generated/bindingsControllerSource.js +28 -0
  79. package/lib/generated/clockSource.js +28 -0
  80. package/lib/generated/injectedScriptSource.js +28 -0
  81. package/lib/generated/pollingRecorderSource.js +28 -0
  82. package/lib/generated/storageScriptSource.js +28 -0
  83. package/lib/generated/utilityScriptSource.js +28 -0
  84. package/lib/generated/webSocketMockSource.js +336 -0
  85. package/lib/inProcessFactory.js +60 -0
  86. package/lib/inprocess.js +3 -0
  87. package/lib/mcpBundle.js +84 -0
  88. package/lib/mcpBundleImpl/index.js +147 -0
  89. package/lib/outofprocess.js +76 -0
  90. package/lib/protocol/serializers.js +197 -0
  91. package/lib/protocol/validator.js +2969 -0
  92. package/lib/protocol/validatorPrimitives.js +193 -0
  93. package/lib/remote/playwrightConnection.js +129 -0
  94. package/lib/remote/playwrightServer.js +334 -0
  95. package/lib/server/agent/actionRunner.js +335 -0
  96. package/lib/server/agent/actions.js +128 -0
  97. package/lib/server/agent/codegen.js +111 -0
  98. package/lib/server/agent/context.js +150 -0
  99. package/lib/server/agent/expectTools.js +156 -0
  100. package/lib/server/agent/pageAgent.js +204 -0
  101. package/lib/server/agent/performTools.js +262 -0
  102. package/lib/server/agent/tool.js +109 -0
  103. package/lib/server/android/android.js +465 -0
  104. package/lib/server/android/backendAdb.js +177 -0
  105. package/lib/server/artifact.js +127 -0
  106. package/lib/server/bidi/bidiBrowser.js +549 -0
  107. package/lib/server/bidi/bidiChromium.js +148 -0
  108. package/lib/server/bidi/bidiConnection.js +213 -0
  109. package/lib/server/bidi/bidiDeserializer.js +116 -0
  110. package/lib/server/bidi/bidiExecutionContext.js +267 -0
  111. package/lib/server/bidi/bidiFirefox.js +128 -0
  112. package/lib/server/bidi/bidiInput.js +146 -0
  113. package/lib/server/bidi/bidiNetworkManager.js +383 -0
  114. package/lib/server/bidi/bidiOverCdp.js +102 -0
  115. package/lib/server/bidi/bidiPage.js +583 -0
  116. package/lib/server/bidi/bidiPdf.js +106 -0
  117. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  118. package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  119. package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  120. package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  121. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  122. package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  123. package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
  124. package/lib/server/browser.js +149 -0
  125. package/lib/server/browserContext.js +702 -0
  126. package/lib/server/browserType.js +336 -0
  127. package/lib/server/callLog.js +82 -0
  128. package/lib/server/chromium/appIcon.png +0 -0
  129. package/lib/server/chromium/chromium.js +395 -0
  130. package/lib/server/chromium/chromiumSwitches.js +104 -0
  131. package/lib/server/chromium/crBrowser.js +511 -0
  132. package/lib/server/chromium/crConnection.js +197 -0
  133. package/lib/server/chromium/crCoverage.js +235 -0
  134. package/lib/server/chromium/crDevTools.js +111 -0
  135. package/lib/server/chromium/crDragDrop.js +131 -0
  136. package/lib/server/chromium/crExecutionContext.js +146 -0
  137. package/lib/server/chromium/crInput.js +187 -0
  138. package/lib/server/chromium/crNetworkManager.js +707 -0
  139. package/lib/server/chromium/crPage.js +1001 -0
  140. package/lib/server/chromium/crPdf.js +121 -0
  141. package/lib/server/chromium/crProtocolHelper.js +145 -0
  142. package/lib/server/chromium/crServiceWorker.js +136 -0
  143. package/lib/server/chromium/defaultFontFamilies.js +162 -0
  144. package/lib/server/chromium/protocol.d.js +16 -0
  145. package/lib/server/clock.js +149 -0
  146. package/lib/server/codegen/csharp.js +327 -0
  147. package/lib/server/codegen/java.js +274 -0
  148. package/lib/server/codegen/javascript.js +247 -0
  149. package/lib/server/codegen/jsonl.js +52 -0
  150. package/lib/server/codegen/language.js +132 -0
  151. package/lib/server/codegen/languages.js +68 -0
  152. package/lib/server/codegen/python.js +279 -0
  153. package/lib/server/codegen/types.js +16 -0
  154. package/lib/server/console.js +57 -0
  155. package/lib/server/cookieStore.js +206 -0
  156. package/lib/server/debugController.js +191 -0
  157. package/lib/server/debugger.js +119 -0
  158. package/lib/server/deviceDescriptors.js +39 -0
  159. package/lib/server/deviceDescriptorsSource.json +1779 -0
  160. package/lib/server/dialog.js +116 -0
  161. package/lib/server/dispatchers/androidDispatcher.js +325 -0
  162. package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  163. package/lib/server/dispatchers/browserContextDispatcher.js +384 -0
  164. package/lib/server/dispatchers/browserDispatcher.js +118 -0
  165. package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
  166. package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
  167. package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  168. package/lib/server/dispatchers/dialogDispatcher.js +47 -0
  169. package/lib/server/dispatchers/dispatcher.js +364 -0
  170. package/lib/server/dispatchers/electronDispatcher.js +89 -0
  171. package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  172. package/lib/server/dispatchers/frameDispatcher.js +227 -0
  173. package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  174. package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  175. package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
  176. package/lib/server/dispatchers/networkDispatchers.js +213 -0
  177. package/lib/server/dispatchers/pageAgentDispatcher.js +96 -0
  178. package/lib/server/dispatchers/pageDispatcher.js +393 -0
  179. package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  180. package/lib/server/dispatchers/streamDispatcher.js +67 -0
  181. package/lib/server/dispatchers/tracingDispatcher.js +68 -0
  182. package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
  183. package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  184. package/lib/server/dom.js +815 -0
  185. package/lib/server/download.js +70 -0
  186. package/lib/server/electron/electron.js +273 -0
  187. package/lib/server/electron/loader.js +29 -0
  188. package/lib/server/errors.js +69 -0
  189. package/lib/server/fetch.js +621 -0
  190. package/lib/server/fileChooser.js +43 -0
  191. package/lib/server/fileUploadUtils.js +84 -0
  192. package/lib/server/firefox/ffBrowser.js +418 -0
  193. package/lib/server/firefox/ffConnection.js +142 -0
  194. package/lib/server/firefox/ffExecutionContext.js +150 -0
  195. package/lib/server/firefox/ffInput.js +159 -0
  196. package/lib/server/firefox/ffNetworkManager.js +256 -0
  197. package/lib/server/firefox/ffPage.js +497 -0
  198. package/lib/server/firefox/firefox.js +114 -0
  199. package/lib/server/firefox/protocol.d.js +16 -0
  200. package/lib/server/formData.js +147 -0
  201. package/lib/server/frameSelectors.js +160 -0
  202. package/lib/server/frames.js +1471 -0
  203. package/lib/server/har/harRecorder.js +147 -0
  204. package/lib/server/har/harTracer.js +607 -0
  205. package/lib/server/harBackend.js +157 -0
  206. package/lib/server/helper.js +96 -0
  207. package/lib/server/index.js +58 -0
  208. package/lib/server/input.js +277 -0
  209. package/lib/server/instrumentation.js +72 -0
  210. package/lib/server/javascript.js +291 -0
  211. package/lib/server/launchApp.js +128 -0
  212. package/lib/server/localUtils.js +214 -0
  213. package/lib/server/macEditingCommands.js +143 -0
  214. package/lib/server/network.js +667 -0
  215. package/lib/server/page.js +830 -0
  216. package/lib/server/pipeTransport.js +89 -0
  217. package/lib/server/playwright.js +69 -0
  218. package/lib/server/progress.js +132 -0
  219. package/lib/server/protocolError.js +52 -0
  220. package/lib/server/recorder/chat.js +161 -0
  221. package/lib/server/recorder/recorderApp.js +366 -0
  222. package/lib/server/recorder/recorderRunner.js +138 -0
  223. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  224. package/lib/server/recorder/recorderUtils.js +157 -0
  225. package/lib/server/recorder/throttledFile.js +57 -0
  226. package/lib/server/recorder.js +499 -0
  227. package/lib/server/registry/browserFetcher.js +177 -0
  228. package/lib/server/registry/dependencies.js +371 -0
  229. package/lib/server/registry/index.js +1422 -0
  230. package/lib/server/registry/nativeDeps.js +1280 -0
  231. package/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  232. package/lib/server/screencast.js +190 -0
  233. package/lib/server/screenshotter.js +333 -0
  234. package/lib/server/selectors.js +112 -0
  235. package/lib/server/socksClientCertificatesInterceptor.js +383 -0
  236. package/lib/server/socksInterceptor.js +95 -0
  237. package/lib/server/trace/recorder/snapshotter.js +147 -0
  238. package/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  239. package/lib/server/trace/recorder/tracing.js +604 -0
  240. package/lib/server/trace/viewer/traceExporter.js +679 -0
  241. package/lib/server/trace/viewer/traceParser.js +72 -0
  242. package/lib/server/trace/viewer/traceViewer.js +245 -0
  243. package/lib/server/transport.js +181 -0
  244. package/lib/server/types.js +28 -0
  245. package/lib/server/usKeyboardLayout.js +145 -0
  246. package/lib/server/utils/ascii.js +44 -0
  247. package/lib/server/utils/comparators.js +139 -0
  248. package/lib/server/utils/crypto.js +216 -0
  249. package/lib/server/utils/debug.js +42 -0
  250. package/lib/server/utils/debugLogger.js +122 -0
  251. package/lib/server/utils/env.js +73 -0
  252. package/lib/server/utils/eventsHelper.js +39 -0
  253. package/lib/server/utils/expectUtils.js +123 -0
  254. package/lib/server/utils/fileUtils.js +191 -0
  255. package/lib/server/utils/happyEyeballs.js +207 -0
  256. package/lib/server/utils/hostPlatform.js +123 -0
  257. package/lib/server/utils/httpServer.js +203 -0
  258. package/lib/server/utils/imageUtils.js +141 -0
  259. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  260. package/lib/server/utils/image_tools/compare.js +109 -0
  261. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  262. package/lib/server/utils/image_tools/stats.js +102 -0
  263. package/lib/server/utils/linuxUtils.js +71 -0
  264. package/lib/server/utils/network.js +242 -0
  265. package/lib/server/utils/nodePlatform.js +154 -0
  266. package/lib/server/utils/pipeTransport.js +84 -0
  267. package/lib/server/utils/processLauncher.js +241 -0
  268. package/lib/server/utils/profiler.js +65 -0
  269. package/lib/server/utils/socksProxy.js +511 -0
  270. package/lib/server/utils/spawnAsync.js +41 -0
  271. package/lib/server/utils/task.js +51 -0
  272. package/lib/server/utils/userAgent.js +98 -0
  273. package/lib/server/utils/wsServer.js +121 -0
  274. package/lib/server/utils/zipFile.js +74 -0
  275. package/lib/server/utils/zones.js +57 -0
  276. package/lib/server/videoRecorder.js +124 -0
  277. package/lib/server/webkit/protocol.d.js +16 -0
  278. package/lib/server/webkit/webkit.js +108 -0
  279. package/lib/server/webkit/wkBrowser.js +335 -0
  280. package/lib/server/webkit/wkConnection.js +144 -0
  281. package/lib/server/webkit/wkExecutionContext.js +154 -0
  282. package/lib/server/webkit/wkInput.js +181 -0
  283. package/lib/server/webkit/wkInterceptableRequest.js +197 -0
  284. package/lib/server/webkit/wkPage.js +1158 -0
  285. package/lib/server/webkit/wkProvisionalPage.js +83 -0
  286. package/lib/server/webkit/wkWorkers.js +105 -0
  287. package/lib/third_party/pixelmatch.js +255 -0
  288. package/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  289. package/lib/utils/isomorphic/assert.js +31 -0
  290. package/lib/utils/isomorphic/colors.js +72 -0
  291. package/lib/utils/isomorphic/cssParser.js +245 -0
  292. package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  293. package/lib/utils/isomorphic/headers.js +53 -0
  294. package/lib/utils/isomorphic/locatorGenerators.js +689 -0
  295. package/lib/utils/isomorphic/locatorParser.js +176 -0
  296. package/lib/utils/isomorphic/locatorUtils.js +81 -0
  297. package/lib/utils/isomorphic/lruCache.js +51 -0
  298. package/lib/utils/isomorphic/manualPromise.js +114 -0
  299. package/lib/utils/isomorphic/mimeType.js +459 -0
  300. package/lib/utils/isomorphic/multimap.js +80 -0
  301. package/lib/utils/isomorphic/protocolFormatter.js +81 -0
  302. package/lib/utils/isomorphic/protocolMetainfo.js +330 -0
  303. package/lib/utils/isomorphic/rtti.js +43 -0
  304. package/lib/utils/isomorphic/selectorParser.js +386 -0
  305. package/lib/utils/isomorphic/semaphore.js +54 -0
  306. package/lib/utils/isomorphic/stackTrace.js +158 -0
  307. package/lib/utils/isomorphic/stringUtils.js +204 -0
  308. package/lib/utils/isomorphic/time.js +49 -0
  309. package/lib/utils/isomorphic/timeoutRunner.js +66 -0
  310. package/lib/utils/isomorphic/trace/entries.js +16 -0
  311. package/lib/utils/isomorphic/trace/snapshotRenderer.js +499 -0
  312. package/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  313. package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  314. package/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  315. package/lib/utils/isomorphic/trace/traceModel.js +365 -0
  316. package/lib/utils/isomorphic/trace/traceModernizer.js +400 -0
  317. package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  318. package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  319. package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  320. package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  321. package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  322. package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  323. package/lib/utils/isomorphic/traceUtils.js +58 -0
  324. package/lib/utils/isomorphic/types.js +16 -0
  325. package/lib/utils/isomorphic/urlMatch.js +190 -0
  326. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  327. package/lib/utils/isomorphic/yaml.js +84 -0
  328. package/lib/utils.js +111 -0
  329. package/lib/utilsBundle.js +109 -0
  330. package/lib/utilsBundleImpl/index.js +218 -0
  331. package/lib/utilsBundleImpl/xdg-open +1066 -0
  332. package/lib/vite/htmlReport/index.html +84 -0
  333. package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  334. package/lib/vite/recorder/assets/codeMirrorModule-DadYNm1I.js +32 -0
  335. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  336. package/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -0
  337. package/lib/vite/recorder/assets/index-BhTWtUlo.js +193 -0
  338. package/lib/vite/recorder/index.html +29 -0
  339. package/lib/vite/recorder/playwright-logo.svg +9 -0
  340. package/lib/vite/traceViewer/assets/codeMirrorModule-DwzBH9eL.js +32 -0
  341. package/lib/vite/traceViewer/assets/codeMirrorModule-a5XoALAZ.js +32 -0
  342. package/lib/vite/traceViewer/assets/defaultSettingsView-CJSZINFr.js +266 -0
  343. package/lib/vite/traceViewer/assets/defaultSettingsView-CdCX8877.js +266 -0
  344. package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  345. package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  346. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  347. package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +1 -0
  348. package/lib/vite/traceViewer/index.BVu7tZDe.css +1 -0
  349. package/lib/vite/traceViewer/index.Dd9jebqr.js +2 -0
  350. package/lib/vite/traceViewer/index.f4OcrOqs.js +2 -0
  351. package/lib/vite/traceViewer/index.html +43 -0
  352. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  353. package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  354. package/lib/vite/traceViewer/snapshot.html +21 -0
  355. package/lib/vite/traceViewer/sw.bundle.js +5 -0
  356. package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  357. package/lib/vite/traceViewer/uiMode.CQJ9SCIQ.js +5 -0
  358. package/lib/vite/traceViewer/uiMode.html +17 -0
  359. package/lib/vite/traceViewer/uiMode.qcahlSup.js +5 -0
  360. package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  361. package/lib/zipBundle.js +34 -0
  362. package/lib/zipBundleImpl.js +5 -0
  363. package/package.json +43 -0
  364. package/types/protocol.d.ts +23824 -0
  365. package/types/structs.d.ts +45 -0
  366. package/types/types.d.ts +22843 -0
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var actionRunner_exports = {};
20
+ __export(actionRunner_exports, {
21
+ runAction: () => runAction,
22
+ traceParamsForAction: () => traceParamsForAction
23
+ });
24
+ module.exports = __toCommonJS(actionRunner_exports);
25
+ var import_expectUtils = require("../utils/expectUtils");
26
+ var import_urlMatch = require("../../utils/isomorphic/urlMatch");
27
+ var import_stringUtils = require("../../utils/isomorphic/stringUtils");
28
+ var import_time = require("../../utils/isomorphic/time");
29
+ var import_crypto = require("../utils/crypto");
30
+ var import_ariaSnapshot = require("../../utils/isomorphic/ariaSnapshot");
31
+ var import_locatorGenerators = require("../../utils/isomorphic/locatorGenerators");
32
+ var import_utilsBundle = require("../../utilsBundle");
33
+ var import_errors = require("../errors");
34
+ async function runAction(progress, mode, page, action, secrets) {
35
+ const parentMetadata = progress.metadata;
36
+ const frame = page.mainFrame();
37
+ const callMetadata = callMetadataForAction(progress, frame, action, mode);
38
+ callMetadata.log = parentMetadata.log;
39
+ progress.metadata = callMetadata;
40
+ await frame.instrumentation.onBeforeCall(frame, callMetadata, parentMetadata.id);
41
+ let error;
42
+ const result = await innerRunAction(progress, mode, page, action, secrets).catch((e) => error = e);
43
+ callMetadata.endTime = (0, import_time.monotonicTime)();
44
+ callMetadata.error = error ? (0, import_errors.serializeError)(error) : void 0;
45
+ callMetadata.result = error ? void 0 : result;
46
+ await frame.instrumentation.onAfterCall(frame, callMetadata);
47
+ if (error)
48
+ throw error;
49
+ return result;
50
+ }
51
+ async function innerRunAction(progress, mode, page, action, secrets) {
52
+ const frame = page.mainFrame();
53
+ const commonOptions = { strict: true, noAutoWaiting: mode === "generate" };
54
+ switch (action.method) {
55
+ case "navigate":
56
+ await frame.goto(progress, action.url);
57
+ break;
58
+ case "click":
59
+ await frame.click(progress, action.selector, {
60
+ button: action.button,
61
+ clickCount: action.clickCount,
62
+ modifiers: action.modifiers,
63
+ ...commonOptions
64
+ });
65
+ break;
66
+ case "drag":
67
+ await frame.dragAndDrop(progress, action.sourceSelector, action.targetSelector, { ...commonOptions });
68
+ break;
69
+ case "hover":
70
+ await frame.hover(progress, action.selector, {
71
+ modifiers: action.modifiers,
72
+ ...commonOptions
73
+ });
74
+ break;
75
+ case "selectOption":
76
+ await frame.selectOption(progress, action.selector, [], action.labels.map((a) => ({ label: a })), { ...commonOptions });
77
+ break;
78
+ case "pressKey":
79
+ await page.keyboard.press(progress, action.key);
80
+ break;
81
+ case "pressSequentially": {
82
+ const secret = secrets?.find((s) => s.name === action.text)?.value ?? action.text;
83
+ await frame.type(progress, action.selector, secret, { ...commonOptions });
84
+ if (action.submit)
85
+ await page.keyboard.press(progress, "Enter");
86
+ break;
87
+ }
88
+ case "fill": {
89
+ const secret = secrets?.find((s) => s.name === action.text)?.value ?? action.text;
90
+ await frame.fill(progress, action.selector, secret, { ...commonOptions });
91
+ if (action.submit)
92
+ await page.keyboard.press(progress, "Enter");
93
+ break;
94
+ }
95
+ case "setChecked":
96
+ if (action.checked)
97
+ await frame.check(progress, action.selector, { ...commonOptions });
98
+ else
99
+ await frame.uncheck(progress, action.selector, { ...commonOptions });
100
+ break;
101
+ case "expectVisible": {
102
+ await runExpect(frame, progress, mode, action.selector, { expression: "to.be.visible", isNot: !!action.isNot }, "visible", "toBeVisible", "");
103
+ break;
104
+ }
105
+ case "expectValue": {
106
+ if (action.type === "textbox" || action.type === "combobox" || action.type === "slider") {
107
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([action.value]);
108
+ await runExpect(frame, progress, mode, action.selector, { expression: "to.have.value", expectedText, isNot: !!action.isNot }, action.value, "toHaveValue", "expected");
109
+ } else if (action.type === "checkbox" || action.type === "radio") {
110
+ const expectedValue = { checked: action.value === "true" };
111
+ await runExpect(frame, progress, mode, action.selector, { selector: action.selector, expression: "to.be.checked", expectedValue, isNot: !!action.isNot }, action.value ? "checked" : "unchecked", "toBeChecked", "");
112
+ } else {
113
+ throw new Error(`Unsupported element type: ${action.type}`);
114
+ }
115
+ break;
116
+ }
117
+ case "expectAria": {
118
+ const expectedValue = (0, import_ariaSnapshot.parseAriaSnapshotUnsafe)(import_utilsBundle.yaml, action.template);
119
+ await runExpect(frame, progress, mode, "body", { expression: "to.match.aria", expectedValue, isNot: !!action.isNot }, "\n" + action.template, "toMatchAriaSnapshot", "expected");
120
+ break;
121
+ }
122
+ case "expectURL": {
123
+ if (!action.regex && !action.value)
124
+ throw new Error("Either url or regex must be provided");
125
+ if (action.regex && action.value)
126
+ throw new Error("Only one of url or regex can be provided");
127
+ const expected = action.regex ? (0, import_stringUtils.parseRegex)(action.regex) : (0, import_urlMatch.constructURLBasedOnBaseURL)(page.browserContext._options.baseURL, action.value);
128
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([expected]);
129
+ await runExpect(frame, progress, mode, void 0, { expression: "to.have.url", expectedText, isNot: !!action.isNot }, expected, "toHaveURL", "expected");
130
+ break;
131
+ }
132
+ case "expectTitle": {
133
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([action.value], { normalizeWhiteSpace: true });
134
+ await runExpect(frame, progress, mode, void 0, { expression: "to.have.title", expectedText, isNot: !!action.isNot }, action.value, "toHaveTitle", "expected");
135
+ break;
136
+ }
137
+ }
138
+ }
139
+ async function runExpect(frame, progress, mode, selector, options, expected, matcherName, expectation) {
140
+ const result = await frame.expect(progress, selector, {
141
+ ...options,
142
+ // When generating, we want the expect to pass or fail immediately and give feedback to the model.
143
+ noAutoWaiting: mode === "generate",
144
+ timeoutForLogs: mode === "generate" ? void 0 : progress.timeout
145
+ });
146
+ if (!result.matches === !options.isNot) {
147
+ const received = matcherName === "toMatchAriaSnapshot" ? "\n" + result.received.raw : result.received;
148
+ const expectedSuffix = typeof expected === "string" ? "" : " pattern";
149
+ const expectedDisplay = typeof expected === "string" ? expected : expected.toString();
150
+ throw new Error((0, import_expectUtils.formatMatcherMessage)(import_expectUtils.simpleMatcherUtils, {
151
+ isNot: options.isNot,
152
+ matcherName,
153
+ expectation,
154
+ locator: selector ? (0, import_locatorGenerators.asLocatorDescription)("javascript", selector) : void 0,
155
+ timedOut: result.timedOut,
156
+ timeout: mode === "generate" ? void 0 : progress.timeout,
157
+ printedExpected: options.isNot ? `Expected${expectedSuffix}: not ${expectedDisplay}` : `Expected${expectedSuffix}: ${expectedDisplay}`,
158
+ printedReceived: result.errorMessage ? "" : `Received: ${received}`,
159
+ errorMessage: result.errorMessage
160
+ // Note: we are not passing call log, because it will be automatically appended on the client side,
161
+ // as a part of the agent.{perform,expect} call.
162
+ }));
163
+ }
164
+ }
165
+ function traceParamsForAction(progress, action, mode) {
166
+ const timeout = progress.timeout;
167
+ switch (action.method) {
168
+ case "navigate": {
169
+ const params = {
170
+ url: action.url,
171
+ timeout
172
+ };
173
+ return { type: "Frame", method: "goto", params };
174
+ }
175
+ case "click": {
176
+ const params = {
177
+ selector: action.selector,
178
+ strict: true,
179
+ modifiers: action.modifiers,
180
+ button: action.button,
181
+ clickCount: action.clickCount,
182
+ timeout
183
+ };
184
+ return { type: "Frame", method: "click", params };
185
+ }
186
+ case "drag": {
187
+ const params = {
188
+ source: action.sourceSelector,
189
+ target: action.targetSelector,
190
+ timeout
191
+ };
192
+ return { type: "Frame", method: "dragAndDrop", params };
193
+ }
194
+ case "hover": {
195
+ const params = {
196
+ selector: action.selector,
197
+ modifiers: action.modifiers,
198
+ timeout
199
+ };
200
+ return { type: "Frame", method: "hover", params };
201
+ }
202
+ case "pressKey": {
203
+ const params = {
204
+ key: action.key
205
+ };
206
+ return { type: "Page", method: "keyboardPress", params };
207
+ }
208
+ case "pressSequentially": {
209
+ const params = {
210
+ selector: action.selector,
211
+ text: action.text,
212
+ timeout
213
+ };
214
+ return { type: "Frame", method: "type", params };
215
+ }
216
+ case "fill": {
217
+ const params = {
218
+ selector: action.selector,
219
+ strict: true,
220
+ value: action.text,
221
+ timeout
222
+ };
223
+ return { type: "Frame", method: "fill", params };
224
+ }
225
+ case "setChecked": {
226
+ if (action.checked) {
227
+ const params = {
228
+ selector: action.selector,
229
+ strict: true,
230
+ timeout
231
+ };
232
+ return { type: "Frame", method: "check", params };
233
+ } else {
234
+ const params = {
235
+ selector: action.selector,
236
+ strict: true,
237
+ timeout
238
+ };
239
+ return { type: "Frame", method: "uncheck", params };
240
+ }
241
+ }
242
+ case "selectOption": {
243
+ const params = {
244
+ selector: action.selector,
245
+ strict: true,
246
+ options: action.labels.map((label) => ({ label })),
247
+ timeout
248
+ };
249
+ return { type: "Frame", method: "selectOption", params };
250
+ }
251
+ case "expectValue": {
252
+ if (action.type === "textbox" || action.type === "combobox" || action.type === "slider") {
253
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([action.value]);
254
+ const params = {
255
+ selector: action.selector,
256
+ expression: "to.have.value",
257
+ expectedText,
258
+ isNot: !!action.isNot,
259
+ timeout
260
+ };
261
+ return { type: "Frame", method: "expect", title: "Expect Value", params };
262
+ } else if (action.type === "checkbox" || action.type === "radio") {
263
+ const params = {
264
+ selector: action.selector,
265
+ expression: "to.be.checked",
266
+ isNot: !!action.isNot,
267
+ timeout
268
+ };
269
+ return { type: "Frame", method: "expect", title: "Expect Checked", params };
270
+ } else {
271
+ throw new Error(`Unsupported element type: ${action.type}`);
272
+ }
273
+ }
274
+ case "expectVisible": {
275
+ const params = {
276
+ selector: action.selector,
277
+ expression: "to.be.visible",
278
+ isNot: !!action.isNot,
279
+ timeout
280
+ };
281
+ return { type: "Frame", method: "expect", title: "Expect Visible", params };
282
+ }
283
+ case "expectAria": {
284
+ const params = {
285
+ selector: "body",
286
+ expression: "to.match.snapshot",
287
+ expectedText: [],
288
+ isNot: !!action.isNot,
289
+ timeout
290
+ };
291
+ return { type: "Frame", method: "expect", title: "Expect Aria Snapshot", params };
292
+ }
293
+ case "expectURL": {
294
+ const expected = action.regex ? (0, import_stringUtils.parseRegex)(action.regex) : action.value;
295
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([expected]);
296
+ const params = {
297
+ selector: void 0,
298
+ expression: "to.have.url",
299
+ expectedText,
300
+ isNot: !!action.isNot,
301
+ timeout
302
+ };
303
+ return { type: "Frame", method: "expect", title: "Expect URL", params };
304
+ }
305
+ case "expectTitle": {
306
+ const expectedText = (0, import_expectUtils.serializeExpectedTextValues)([action.value], { normalizeWhiteSpace: true });
307
+ const params = {
308
+ selector: void 0,
309
+ expression: "to.have.title",
310
+ expectedText,
311
+ isNot: !!action.isNot,
312
+ timeout
313
+ };
314
+ return { type: "Frame", method: "expect", title: "Expect Title", params };
315
+ }
316
+ }
317
+ }
318
+ function callMetadataForAction(progress, frame, action, mode) {
319
+ const callMetadata = {
320
+ id: `call@${(0, import_crypto.createGuid)()}`,
321
+ objectId: frame.guid,
322
+ pageId: frame._page.guid,
323
+ frameId: frame.guid,
324
+ startTime: (0, import_time.monotonicTime)(),
325
+ endTime: 0,
326
+ log: [],
327
+ ...traceParamsForAction(progress, action, mode)
328
+ };
329
+ return callMetadata;
330
+ }
331
+ // Annotate the CommonJS export names for ESM import in node:
332
+ 0 && (module.exports = {
333
+ runAction,
334
+ traceParamsForAction
335
+ });
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var actions_exports = {};
20
+ __export(actions_exports, {
21
+ cachedActionsSchema: () => cachedActionsSchema
22
+ });
23
+ module.exports = __toCommonJS(actions_exports);
24
+ var import_mcpBundle = require("../../mcpBundle");
25
+ const modifiersSchema = import_mcpBundle.z.array(
26
+ import_mcpBundle.z.enum(["Alt", "Control", "ControlOrMeta", "Meta", "Shift"])
27
+ );
28
+ const navigateActionSchema = import_mcpBundle.z.object({
29
+ method: import_mcpBundle.z.literal("navigate"),
30
+ url: import_mcpBundle.z.string()
31
+ });
32
+ const clickActionSchema = import_mcpBundle.z.object({
33
+ method: import_mcpBundle.z.literal("click"),
34
+ selector: import_mcpBundle.z.string(),
35
+ button: import_mcpBundle.z.enum(["left", "right", "middle"]).optional(),
36
+ clickCount: import_mcpBundle.z.number().optional(),
37
+ modifiers: modifiersSchema.optional()
38
+ });
39
+ const dragActionSchema = import_mcpBundle.z.object({
40
+ method: import_mcpBundle.z.literal("drag"),
41
+ sourceSelector: import_mcpBundle.z.string(),
42
+ targetSelector: import_mcpBundle.z.string()
43
+ });
44
+ const hoverActionSchema = import_mcpBundle.z.object({
45
+ method: import_mcpBundle.z.literal("hover"),
46
+ selector: import_mcpBundle.z.string(),
47
+ modifiers: modifiersSchema.optional()
48
+ });
49
+ const selectOptionActionSchema = import_mcpBundle.z.object({
50
+ method: import_mcpBundle.z.literal("selectOption"),
51
+ selector: import_mcpBundle.z.string(),
52
+ labels: import_mcpBundle.z.array(import_mcpBundle.z.string())
53
+ });
54
+ const pressActionSchema = import_mcpBundle.z.object({
55
+ method: import_mcpBundle.z.literal("pressKey"),
56
+ key: import_mcpBundle.z.string()
57
+ });
58
+ const pressSequentiallyActionSchema = import_mcpBundle.z.object({
59
+ method: import_mcpBundle.z.literal("pressSequentially"),
60
+ selector: import_mcpBundle.z.string(),
61
+ text: import_mcpBundle.z.string(),
62
+ submit: import_mcpBundle.z.boolean().optional()
63
+ });
64
+ const fillActionSchema = import_mcpBundle.z.object({
65
+ method: import_mcpBundle.z.literal("fill"),
66
+ selector: import_mcpBundle.z.string(),
67
+ text: import_mcpBundle.z.string(),
68
+ submit: import_mcpBundle.z.boolean().optional()
69
+ });
70
+ const setCheckedSchema = import_mcpBundle.z.object({
71
+ method: import_mcpBundle.z.literal("setChecked"),
72
+ selector: import_mcpBundle.z.string(),
73
+ checked: import_mcpBundle.z.boolean()
74
+ });
75
+ const expectVisibleSchema = import_mcpBundle.z.object({
76
+ method: import_mcpBundle.z.literal("expectVisible"),
77
+ selector: import_mcpBundle.z.string(),
78
+ isNot: import_mcpBundle.z.boolean().optional()
79
+ });
80
+ const expectValueSchema = import_mcpBundle.z.object({
81
+ method: import_mcpBundle.z.literal("expectValue"),
82
+ selector: import_mcpBundle.z.string(),
83
+ type: import_mcpBundle.z.enum(["textbox", "checkbox", "radio", "combobox", "slider"]),
84
+ value: import_mcpBundle.z.string(),
85
+ isNot: import_mcpBundle.z.boolean().optional()
86
+ });
87
+ const expectAriaSchema = import_mcpBundle.z.object({
88
+ method: import_mcpBundle.z.literal("expectAria"),
89
+ template: import_mcpBundle.z.string(),
90
+ isNot: import_mcpBundle.z.boolean().optional()
91
+ });
92
+ const expectURLSchema = import_mcpBundle.z.object({
93
+ method: import_mcpBundle.z.literal("expectURL"),
94
+ value: import_mcpBundle.z.string().optional(),
95
+ regex: import_mcpBundle.z.string().optional(),
96
+ isNot: import_mcpBundle.z.boolean().optional()
97
+ });
98
+ const expectTitleSchema = import_mcpBundle.z.object({
99
+ method: import_mcpBundle.z.literal("expectTitle"),
100
+ value: import_mcpBundle.z.string(),
101
+ isNot: import_mcpBundle.z.boolean().optional()
102
+ });
103
+ const actionSchema = import_mcpBundle.z.discriminatedUnion("method", [
104
+ navigateActionSchema,
105
+ clickActionSchema,
106
+ dragActionSchema,
107
+ hoverActionSchema,
108
+ selectOptionActionSchema,
109
+ pressActionSchema,
110
+ pressSequentiallyActionSchema,
111
+ fillActionSchema,
112
+ setCheckedSchema,
113
+ expectVisibleSchema,
114
+ expectValueSchema,
115
+ expectAriaSchema,
116
+ expectURLSchema,
117
+ expectTitleSchema
118
+ ]);
119
+ const actionWithCodeSchema = actionSchema.and(import_mcpBundle.z.object({
120
+ code: import_mcpBundle.z.string()
121
+ }));
122
+ const cachedActionsSchema = import_mcpBundle.z.record(import_mcpBundle.z.string(), import_mcpBundle.z.object({
123
+ actions: import_mcpBundle.z.array(actionWithCodeSchema)
124
+ }));
125
+ // Annotate the CommonJS export names for ESM import in node:
126
+ 0 && (module.exports = {
127
+ cachedActionsSchema
128
+ });
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var codegen_exports = {};
20
+ __export(codegen_exports, {
21
+ generateCode: () => generateCode
22
+ });
23
+ module.exports = __toCommonJS(codegen_exports);
24
+ var import_locatorGenerators = require("../../utils/isomorphic/locatorGenerators");
25
+ var import_stringUtils = require("../../utils/isomorphic/stringUtils");
26
+ async function generateCode(sdkLanguage, action) {
27
+ switch (action.method) {
28
+ case "navigate": {
29
+ return `await page.goto(${(0, import_stringUtils.escapeWithQuotes)(action.url)});`;
30
+ }
31
+ case "click": {
32
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
33
+ return `await page.${locator}.click(${(0, import_stringUtils.formatObjectOrVoid)({
34
+ button: action.button,
35
+ clickCount: action.clickCount,
36
+ modifiers: action.modifiers
37
+ })});`;
38
+ }
39
+ case "drag": {
40
+ const sourceLocator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.sourceSelector);
41
+ const targetLocator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.targetSelector);
42
+ return `await page.${sourceLocator}.dragAndDrop(${targetLocator});`;
43
+ }
44
+ case "hover": {
45
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
46
+ return `await page.${locator}.hover(${(0, import_stringUtils.formatObjectOrVoid)({
47
+ modifiers: action.modifiers
48
+ })});`;
49
+ }
50
+ case "pressKey": {
51
+ return `await page.keyboard.press(${(0, import_stringUtils.escapeWithQuotes)(action.key, "'")});`;
52
+ }
53
+ case "selectOption": {
54
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
55
+ return `await page.${locator}.selectOption(${action.labels.length === 1 ? (0, import_stringUtils.escapeWithQuotes)(action.labels[0]) : "[" + action.labels.map((label) => (0, import_stringUtils.escapeWithQuotes)(label)).join(", ") + "]"});`;
56
+ }
57
+ case "pressSequentially": {
58
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
59
+ const code = [`await page.${locator}.pressSequentially(${(0, import_stringUtils.escapeWithQuotes)(action.text)});`];
60
+ if (action.submit)
61
+ code.push(`await page.keyboard.press('Enter');`);
62
+ return code.join("\n");
63
+ }
64
+ case "fill": {
65
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
66
+ const code = [`await page.${locator}.fill(${(0, import_stringUtils.escapeWithQuotes)(action.text)});`];
67
+ if (action.submit)
68
+ code.push(`await page.keyboard.press('Enter');`);
69
+ return code.join("\n");
70
+ }
71
+ case "setChecked": {
72
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
73
+ if (action.checked)
74
+ return `await page.${locator}.check();`;
75
+ else
76
+ return `await page.${locator}.uncheck();`;
77
+ }
78
+ case "expectVisible": {
79
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
80
+ const notInfix = action.isNot ? "not." : "";
81
+ return `await expect(page.${locator}).${notInfix}toBeVisible();`;
82
+ }
83
+ case "expectValue": {
84
+ const notInfix = action.isNot ? "not." : "";
85
+ const locator = (0, import_locatorGenerators.asLocator)(sdkLanguage, action.selector);
86
+ if (action.type === "checkbox" || action.type === "radio")
87
+ return `await expect(page.${locator}).${notInfix}toBeChecked({ checked: ${action.value === "true"} });`;
88
+ return `await expect(page.${locator}).${notInfix}toHaveValue(${(0, import_stringUtils.escapeWithQuotes)(action.value)});`;
89
+ }
90
+ case "expectAria": {
91
+ const notInfix = action.isNot ? "not." : "";
92
+ return `await expect(page.locator('body')).${notInfix}toMatchAria(\`
93
+ ${(0, import_stringUtils.escapeTemplateString)(action.template)}
94
+ \`);`;
95
+ }
96
+ case "expectURL": {
97
+ const arg = action.regex ? (0, import_stringUtils.parseRegex)(action.regex).toString() : (0, import_stringUtils.escapeWithQuotes)(action.value);
98
+ const notInfix = action.isNot ? "not." : "";
99
+ return `await expect(page).${notInfix}toHaveURL(${arg});`;
100
+ }
101
+ case "expectTitle": {
102
+ const notInfix = action.isNot ? "not." : "";
103
+ return `await expect(page).${notInfix}toHaveTitle(${(0, import_stringUtils.escapeWithQuotes)(action.value)});`;
104
+ }
105
+ }
106
+ throw new Error("Unknown action " + action.method);
107
+ }
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ generateCode
111
+ });