rebrowser-playwright-core 1.52.0 → 1.64.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 (395) hide show
  1. package/ThirdPartyNotices.txt +7 -1554
  2. package/bin/install_webkit_wsl.ps1 +33 -0
  3. package/bin/reinstall_chrome_beta_linux.sh +1 -1
  4. package/bin/reinstall_chrome_beta_mac.sh +1 -1
  5. package/bin/reinstall_chrome_stable_linux.sh +1 -1
  6. package/bin/reinstall_chrome_stable_mac.sh +1 -1
  7. package/bin/reinstall_msedge_beta_linux.sh +1 -1
  8. package/bin/reinstall_msedge_beta_mac.sh +1 -1
  9. package/bin/reinstall_msedge_dev_linux.sh +1 -1
  10. package/bin/reinstall_msedge_dev_mac.sh +1 -1
  11. package/bin/reinstall_msedge_stable_linux.sh +1 -1
  12. package/bin/reinstall_msedge_stable_mac.sh +1 -1
  13. package/browsers.json +16 -44
  14. package/cli.js +5 -1
  15. package/index.js +2 -17
  16. package/lib/bootstrap.js +149 -0
  17. package/lib/coreBundle.js +78218 -0
  18. package/lib/entry/cliDaemon.js +5 -0
  19. package/lib/entry/dashboardApp.js +3 -0
  20. package/lib/entry/mcp.js +10 -0
  21. package/lib/entry/oopBrowserDownload.js +3 -0
  22. package/lib/{server/deviceDescriptors.js → package.js} +18 -7
  23. package/lib/server/electron/loader.js +108 -14
  24. package/lib/serverRegistry.js +1939 -0
  25. package/lib/serverRegistry.js.LICENSE +65 -0
  26. package/lib/tools/cli-client/channelSessions.js +141 -0
  27. package/lib/tools/cli-client/cli.js +7 -0
  28. package/lib/tools/cli-client/help.json +808 -0
  29. package/lib/tools/cli-client/minimist.js +128 -0
  30. package/lib/tools/cli-client/output.js +352 -0
  31. package/lib/tools/cli-client/program.js +422 -0
  32. package/lib/tools/cli-client/registry.js +180 -0
  33. package/lib/tools/cli-client/session.js +261 -0
  34. package/lib/tools/dashboard/appIcon.png +0 -0
  35. package/lib/tools/skills/playwright-cli/SKILL.md +493 -0
  36. package/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
  37. package/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
  38. package/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  39. package/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
  40. package/lib/tools/skills/playwright-cli/references/running-code.md +245 -0
  41. package/lib/tools/skills/playwright-cli/references/session-management.md +227 -0
  42. package/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
  43. package/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
  44. package/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
  45. package/lib/tools/skills/playwright-cli/references/video-recording.md +216 -0
  46. package/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
  47. package/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
  48. package/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
  49. package/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
  50. package/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  51. package/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
  52. package/lib/tools/skills/playwright-trace/SKILL.md +174 -0
  53. package/lib/tools/utils/extension.js +112 -0
  54. package/lib/tools/utils/socketConnection.js +108 -0
  55. package/lib/utilsBundle.js +86038 -66
  56. package/lib/utilsBundle.js.LICENSE +1890 -0
  57. package/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  58. package/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  59. package/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  60. package/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  61. package/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  62. package/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  63. package/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  64. package/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  65. package/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  66. package/lib/vite/dashboard/index.html +29 -0
  67. package/lib/vite/dashboard/playwright-logo.svg +24 -0
  68. package/lib/vite/htmlReport/index.html +2 -61
  69. package/lib/vite/htmlReport/report.css +2 -0
  70. package/lib/vite/htmlReport/report.js +32 -0
  71. package/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  72. package/lib/vite/recorder/assets/codeMirrorModule-DK72OMRi.js +32 -0
  73. package/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  74. package/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  75. package/lib/vite/recorder/index.html +3 -3
  76. package/lib/vite/traceViewer/assets/codeMirrorModule-BEB2e8M3.js +32 -0
  77. package/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  78. package/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  79. package/lib/vite/traceViewer/assets/xtermModule-B794rD2Z.js +7 -0
  80. package/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  81. package/lib/vite/traceViewer/defaultSettingsView.C8BeHuxd.css +1 -0
  82. package/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  83. package/lib/vite/traceViewer/index.html +9 -8
  84. package/lib/vite/traceViewer/index.oNry3Hjv.js +1 -0
  85. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  86. package/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  87. package/lib/vite/traceViewer/snapshot.html +4 -15
  88. package/lib/vite/traceViewer/sw.bundle.js +4 -3
  89. package/lib/vite/traceViewer/uiMode.CYwC_gH1.js +5 -0
  90. package/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  91. package/lib/vite/traceViewer/uiMode.html +6 -5
  92. package/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  93. package/lib/webp_codec.LICENSE +173 -0
  94. package/lib/webp_codec.wasm +0 -0
  95. package/lib/{utilsBundleImpl/xdg-open → xdg-open} +338 -137
  96. package/package.json +6 -16
  97. package/types/protocol.d.ts +10495 -8030
  98. package/types/structs.d.ts +8 -1
  99. package/types/types.d.ts +9256 -4825
  100. package/lib/androidServerImpl.js +0 -63
  101. package/lib/browserServerImpl.js +0 -88
  102. package/lib/cli/driver.js +0 -97
  103. package/lib/cli/program.js +0 -567
  104. package/lib/cli/programWithTestStub.js +0 -74
  105. package/lib/client/accessibility.js +0 -49
  106. package/lib/client/android.js +0 -365
  107. package/lib/client/api.js +0 -137
  108. package/lib/client/artifact.js +0 -79
  109. package/lib/client/browser.js +0 -136
  110. package/lib/client/browserContext.js +0 -539
  111. package/lib/client/browserType.js +0 -193
  112. package/lib/client/cdpSession.js +0 -51
  113. package/lib/client/channelOwner.js +0 -205
  114. package/lib/client/clientHelper.js +0 -64
  115. package/lib/client/clientInstrumentation.js +0 -55
  116. package/lib/client/clientStackTrace.js +0 -69
  117. package/lib/client/clock.js +0 -68
  118. package/lib/client/connection.js +0 -318
  119. package/lib/client/consoleMessage.js +0 -55
  120. package/lib/client/coverage.js +0 -44
  121. package/lib/client/dialog.js +0 -56
  122. package/lib/client/download.js +0 -62
  123. package/lib/client/electron.js +0 -133
  124. package/lib/client/elementHandle.js +0 -284
  125. package/lib/client/errors.js +0 -77
  126. package/lib/client/eventEmitter.js +0 -314
  127. package/lib/client/events.js +0 -98
  128. package/lib/client/fetch.js +0 -367
  129. package/lib/client/fileChooser.js +0 -46
  130. package/lib/client/fileUtils.js +0 -34
  131. package/lib/client/frame.js +0 -386
  132. package/lib/client/harRouter.js +0 -87
  133. package/lib/client/input.js +0 -82
  134. package/lib/client/jsHandle.js +0 -105
  135. package/lib/client/jsonPipe.js +0 -39
  136. package/lib/client/localUtils.js +0 -61
  137. package/lib/client/locator.js +0 -362
  138. package/lib/client/network.js +0 -751
  139. package/lib/client/page.js +0 -709
  140. package/lib/client/platform.js +0 -74
  141. package/lib/client/playwright.js +0 -85
  142. package/lib/client/selectors.js +0 -75
  143. package/lib/client/stream.js +0 -39
  144. package/lib/client/timeoutSettings.js +0 -75
  145. package/lib/client/tracing.js +0 -114
  146. package/lib/client/types.js +0 -28
  147. package/lib/client/video.js +0 -59
  148. package/lib/client/waiter.js +0 -142
  149. package/lib/client/webError.js +0 -39
  150. package/lib/client/webSocket.js +0 -111
  151. package/lib/client/worker.js +0 -63
  152. package/lib/client/writableStream.js +0 -39
  153. package/lib/generated/clockSource.js +0 -28
  154. package/lib/generated/consoleApiSource.js +0 -28
  155. package/lib/generated/injectedScriptSource.js +0 -28
  156. package/lib/generated/pollingRecorderSource.js +0 -28
  157. package/lib/generated/utilityScriptSource.js +0 -28
  158. package/lib/generated/webSocketMockSource.js +0 -378
  159. package/lib/inProcessFactory.js +0 -59
  160. package/lib/inprocess.js +0 -3
  161. package/lib/outofprocess.js +0 -78
  162. package/lib/protocol/debug.js +0 -211
  163. package/lib/protocol/serializers.js +0 -192
  164. package/lib/protocol/validator.js +0 -2825
  165. package/lib/protocol/validatorPrimitives.js +0 -179
  166. package/lib/remote/playwrightConnection.js +0 -266
  167. package/lib/remote/playwrightServer.js +0 -139
  168. package/lib/server/accessibility.js +0 -69
  169. package/lib/server/android/android.js +0 -451
  170. package/lib/server/android/backendAdb.js +0 -179
  171. package/lib/server/artifact.js +0 -127
  172. package/lib/server/bidi/bidiBrowser.js +0 -380
  173. package/lib/server/bidi/bidiChromium.js +0 -152
  174. package/lib/server/bidi/bidiConnection.js +0 -187
  175. package/lib/server/bidi/bidiExecutionContext.js +0 -220
  176. package/lib/server/bidi/bidiFirefox.js +0 -112
  177. package/lib/server/bidi/bidiInput.js +0 -146
  178. package/lib/server/bidi/bidiNetworkManager.js +0 -320
  179. package/lib/server/bidi/bidiOverCdp.js +0 -102
  180. package/lib/server/bidi/bidiPage.js +0 -530
  181. package/lib/server/bidi/bidiPdf.js +0 -106
  182. package/lib/server/bidi/third_party/bidiCommands.d.js +0 -22
  183. package/lib/server/bidi/third_party/bidiDeserializer.js +0 -98
  184. package/lib/server/bidi/third_party/bidiKeyboard.js +0 -256
  185. package/lib/server/bidi/third_party/bidiProtocol.js +0 -152
  186. package/lib/server/bidi/third_party/bidiSerializer.js +0 -148
  187. package/lib/server/bidi/third_party/firefoxPrefs.js +0 -259
  188. package/lib/server/browser.js +0 -140
  189. package/lib/server/browserContext.js +0 -650
  190. package/lib/server/browserType.js +0 -326
  191. package/lib/server/callLog.js +0 -82
  192. package/lib/server/chromium/chromium.js +0 -376
  193. package/lib/server/chromium/chromiumSwitches.js +0 -101
  194. package/lib/server/chromium/crAccessibility.js +0 -263
  195. package/lib/server/chromium/crBrowser.js +0 -498
  196. package/lib/server/chromium/crConnection.js +0 -324
  197. package/lib/server/chromium/crCoverage.js +0 -232
  198. package/lib/server/chromium/crDevTools.js +0 -117
  199. package/lib/server/chromium/crDragDrop.js +0 -126
  200. package/lib/server/chromium/crExecutionContext.js +0 -145
  201. package/lib/server/chromium/crInput.js +0 -184
  202. package/lib/server/chromium/crNetworkManager.js +0 -666
  203. package/lib/server/chromium/crPage.js +0 -1055
  204. package/lib/server/chromium/crPdf.js +0 -121
  205. package/lib/server/chromium/crProtocolHelper.js +0 -145
  206. package/lib/server/chromium/crServiceWorker.js +0 -130
  207. package/lib/server/chromium/defaultFontFamilies.js +0 -162
  208. package/lib/server/chromium/protocol.d.js +0 -16
  209. package/lib/server/chromium/videoRecorder.js +0 -121
  210. package/lib/server/clock.js +0 -137
  211. package/lib/server/codegen/csharp.js +0 -329
  212. package/lib/server/codegen/java.js +0 -270
  213. package/lib/server/codegen/javascript.js +0 -268
  214. package/lib/server/codegen/jsonl.js +0 -51
  215. package/lib/server/codegen/language.js +0 -111
  216. package/lib/server/codegen/languages.js +0 -68
  217. package/lib/server/codegen/python.js +0 -277
  218. package/lib/server/codegen/types.js +0 -16
  219. package/lib/server/console.js +0 -53
  220. package/lib/server/cookieStore.js +0 -204
  221. package/lib/server/debugController.js +0 -185
  222. package/lib/server/debugger.js +0 -136
  223. package/lib/server/deviceDescriptorsSource.json +0 -1669
  224. package/lib/server/dialog.js +0 -72
  225. package/lib/server/dispatchers/androidDispatcher.js +0 -293
  226. package/lib/server/dispatchers/artifactDispatcher.js +0 -118
  227. package/lib/server/dispatchers/browserContextDispatcher.js +0 -328
  228. package/lib/server/dispatchers/browserDispatcher.js +0 -151
  229. package/lib/server/dispatchers/browserTypeDispatcher.js +0 -55
  230. package/lib/server/dispatchers/cdpSessionDispatcher.js +0 -44
  231. package/lib/server/dispatchers/debugControllerDispatcher.js +0 -87
  232. package/lib/server/dispatchers/dialogDispatcher.js +0 -47
  233. package/lib/server/dispatchers/dispatcher.js +0 -346
  234. package/lib/server/dispatchers/electronDispatcher.js +0 -90
  235. package/lib/server/dispatchers/elementHandlerDispatcher.js +0 -191
  236. package/lib/server/dispatchers/frameDispatcher.js +0 -224
  237. package/lib/server/dispatchers/jsHandleDispatcher.js +0 -80
  238. package/lib/server/dispatchers/jsonPipeDispatcher.js +0 -58
  239. package/lib/server/dispatchers/localUtilsDispatcher.js +0 -155
  240. package/lib/server/dispatchers/networkDispatchers.js +0 -204
  241. package/lib/server/dispatchers/pageDispatcher.js +0 -328
  242. package/lib/server/dispatchers/playwrightDispatcher.js +0 -100
  243. package/lib/server/dispatchers/selectorsDispatcher.js +0 -40
  244. package/lib/server/dispatchers/streamDispatcher.js +0 -60
  245. package/lib/server/dispatchers/tracingDispatcher.js +0 -59
  246. package/lib/server/dispatchers/webSocketRouteDispatcher.js +0 -154
  247. package/lib/server/dispatchers/writableStreamDispatcher.js +0 -73
  248. package/lib/server/dom.js +0 -869
  249. package/lib/server/download.js +0 -70
  250. package/lib/server/electron/electron.js +0 -277
  251. package/lib/server/errors.js +0 -69
  252. package/lib/server/fetch.js +0 -640
  253. package/lib/server/fileChooser.js +0 -43
  254. package/lib/server/fileUploadUtils.js +0 -84
  255. package/lib/server/firefox/ffAccessibility.js +0 -238
  256. package/lib/server/firefox/ffBrowser.js +0 -404
  257. package/lib/server/firefox/ffConnection.js +0 -147
  258. package/lib/server/firefox/ffExecutionContext.js +0 -149
  259. package/lib/server/firefox/ffInput.js +0 -159
  260. package/lib/server/firefox/ffNetworkManager.js +0 -254
  261. package/lib/server/firefox/ffPage.js +0 -501
  262. package/lib/server/firefox/firefox.js +0 -106
  263. package/lib/server/firefox/protocol.d.js +0 -16
  264. package/lib/server/formData.js +0 -147
  265. package/lib/server/frameSelectors.js +0 -137
  266. package/lib/server/frames.js +0 -1555
  267. package/lib/server/har/harRecorder.js +0 -147
  268. package/lib/server/har/harTracer.js +0 -606
  269. package/lib/server/harBackend.js +0 -157
  270. package/lib/server/helper.js +0 -100
  271. package/lib/server/index.js +0 -61
  272. package/lib/server/input.js +0 -280
  273. package/lib/server/instrumentation.js +0 -75
  274. package/lib/server/javascript.js +0 -299
  275. package/lib/server/launchApp.js +0 -110
  276. package/lib/server/localUtils.js +0 -211
  277. package/lib/server/macEditingCommands.js +0 -143
  278. package/lib/server/network.js +0 -583
  279. package/lib/server/page.js +0 -790
  280. package/lib/server/pageBinding.js +0 -88
  281. package/lib/server/pipeTransport.js +0 -89
  282. package/lib/server/playwright.js +0 -81
  283. package/lib/server/progress.js +0 -104
  284. package/lib/server/protocolError.js +0 -52
  285. package/lib/server/recorder/chat.js +0 -161
  286. package/lib/server/recorder/contextRecorder.js +0 -286
  287. package/lib/server/recorder/recorderApp.js +0 -184
  288. package/lib/server/recorder/recorderCollection.js +0 -116
  289. package/lib/server/recorder/recorderFrontend.js +0 -16
  290. package/lib/server/recorder/recorderRunner.js +0 -135
  291. package/lib/server/recorder/recorderUtils.js +0 -100
  292. package/lib/server/recorder/throttledFile.js +0 -57
  293. package/lib/server/recorder.js +0 -360
  294. package/lib/server/registry/browserFetcher.js +0 -175
  295. package/lib/server/registry/dependencies.js +0 -371
  296. package/lib/server/registry/index.js +0 -1271
  297. package/lib/server/registry/nativeDeps.js +0 -1105
  298. package/lib/server/registry/oopDownloadBrowserMain.js +0 -120
  299. package/lib/server/screenshotter.js +0 -332
  300. package/lib/server/selectors.js +0 -112
  301. package/lib/server/socksClientCertificatesInterceptor.js +0 -321
  302. package/lib/server/socksInterceptor.js +0 -95
  303. package/lib/server/storageScript.js +0 -154
  304. package/lib/server/timeoutSettings.js +0 -89
  305. package/lib/server/trace/recorder/snapshotter.js +0 -143
  306. package/lib/server/trace/recorder/snapshotterInjected.js +0 -539
  307. package/lib/server/trace/recorder/tracing.js +0 -593
  308. package/lib/server/trace/test/inMemorySnapshotter.js +0 -87
  309. package/lib/server/trace/viewer/traceViewer.js +0 -249
  310. package/lib/server/transport.js +0 -183
  311. package/lib/server/types.js +0 -28
  312. package/lib/server/usKeyboardLayout.js +0 -145
  313. package/lib/server/utils/ascii.js +0 -44
  314. package/lib/server/utils/comparators.js +0 -161
  315. package/lib/server/utils/crypto.js +0 -216
  316. package/lib/server/utils/debug.js +0 -47
  317. package/lib/server/utils/debugLogger.js +0 -114
  318. package/lib/server/utils/env.js +0 -68
  319. package/lib/server/utils/eventsHelper.js +0 -39
  320. package/lib/server/utils/expectUtils.js +0 -38
  321. package/lib/server/utils/fileUtils.js +0 -191
  322. package/lib/server/utils/happyEyeballs.js +0 -207
  323. package/lib/server/utils/hostPlatform.js +0 -109
  324. package/lib/server/utils/httpServer.js +0 -218
  325. package/lib/server/utils/image_tools/colorUtils.js +0 -89
  326. package/lib/server/utils/image_tools/compare.js +0 -109
  327. package/lib/server/utils/image_tools/imageChannel.js +0 -78
  328. package/lib/server/utils/image_tools/stats.js +0 -102
  329. package/lib/server/utils/linuxUtils.js +0 -71
  330. package/lib/server/utils/network.js +0 -217
  331. package/lib/server/utils/nodePlatform.js +0 -148
  332. package/lib/server/utils/pipeTransport.js +0 -84
  333. package/lib/server/utils/processLauncher.js +0 -238
  334. package/lib/server/utils/profiler.js +0 -65
  335. package/lib/server/utils/socksProxy.js +0 -511
  336. package/lib/server/utils/spawnAsync.js +0 -41
  337. package/lib/server/utils/task.js +0 -51
  338. package/lib/server/utils/userAgent.js +0 -98
  339. package/lib/server/utils/wsServer.js +0 -132
  340. package/lib/server/utils/zipFile.js +0 -74
  341. package/lib/server/utils/zones.js +0 -57
  342. package/lib/server/webkit/protocol.d.js +0 -16
  343. package/lib/server/webkit/webkit.js +0 -100
  344. package/lib/server/webkit/wkAccessibility.js +0 -237
  345. package/lib/server/webkit/wkBrowser.js +0 -312
  346. package/lib/server/webkit/wkConnection.js +0 -149
  347. package/lib/server/webkit/wkExecutionContext.js +0 -153
  348. package/lib/server/webkit/wkInput.js +0 -181
  349. package/lib/server/webkit/wkInterceptableRequest.js +0 -169
  350. package/lib/server/webkit/wkPage.js +0 -1114
  351. package/lib/server/webkit/wkProvisionalPage.js +0 -83
  352. package/lib/server/webkit/wkWorkers.js +0 -104
  353. package/lib/third_party/pixelmatch.js +0 -255
  354. package/lib/utils/isomorphic/ariaSnapshot.js +0 -384
  355. package/lib/utils/isomorphic/assert.js +0 -31
  356. package/lib/utils/isomorphic/builtins.js +0 -90
  357. package/lib/utils/isomorphic/colors.js +0 -72
  358. package/lib/utils/isomorphic/cssParser.js +0 -246
  359. package/lib/utils/isomorphic/cssTokenizer.js +0 -1051
  360. package/lib/utils/isomorphic/headers.js +0 -53
  361. package/lib/utils/isomorphic/locatorGenerators.js +0 -655
  362. package/lib/utils/isomorphic/locatorParser.js +0 -176
  363. package/lib/utils/isomorphic/locatorUtils.js +0 -81
  364. package/lib/utils/isomorphic/manualPromise.js +0 -115
  365. package/lib/utils/isomorphic/mimeType.js +0 -460
  366. package/lib/utils/isomorphic/multimap.js +0 -81
  367. package/lib/utils/isomorphic/rtti.js +0 -43
  368. package/lib/utils/isomorphic/selectorParser.js +0 -387
  369. package/lib/utils/isomorphic/semaphore.js +0 -54
  370. package/lib/utils/isomorphic/stackTrace.js +0 -158
  371. package/lib/utils/isomorphic/stringUtils.js +0 -176
  372. package/lib/utils/isomorphic/time.js +0 -44
  373. package/lib/utils/isomorphic/timeoutRunner.js +0 -67
  374. package/lib/utils/isomorphic/traceUtils.js +0 -59
  375. package/lib/utils/isomorphic/types.js +0 -16
  376. package/lib/utils/isomorphic/urlMatch.js +0 -167
  377. package/lib/utils/isomorphic/utilityScriptSerializers.js +0 -248
  378. package/lib/utils.js +0 -101
  379. package/lib/utilsBundleImpl/index.js +0 -208
  380. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  381. package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +0 -24
  382. package/lib/vite/recorder/assets/index-97EUAAbk.js +0 -184
  383. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  384. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +0 -24
  385. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +0 -265
  386. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  387. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  388. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +0 -1
  389. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  390. package/lib/vite/traceViewer/index.DvtSwn6E.js +0 -2
  391. package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
  392. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +0 -5
  393. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
  394. package/lib/zipBundle.js +0 -34
  395. package/lib/zipBundleImpl.js +0 -5
@@ -1,655 +0,0 @@
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 locatorGenerators_exports = {};
20
- __export(locatorGenerators_exports, {
21
- CSharpLocatorFactory: () => CSharpLocatorFactory,
22
- JavaLocatorFactory: () => JavaLocatorFactory,
23
- JavaScriptLocatorFactory: () => JavaScriptLocatorFactory,
24
- JsonlLocatorFactory: () => JsonlLocatorFactory,
25
- PythonLocatorFactory: () => PythonLocatorFactory,
26
- asLocator: () => asLocator,
27
- asLocators: () => asLocators
28
- });
29
- module.exports = __toCommonJS(locatorGenerators_exports);
30
- var import_selectorParser = require("./selectorParser");
31
- var import_stringUtils = require("./stringUtils");
32
- function asLocator(lang, selector, isFrameLocator = false) {
33
- return asLocators(lang, selector, isFrameLocator, 1)[0];
34
- }
35
- function asLocators(lang, selector, isFrameLocator = false, maxOutputSize = 20, preferredQuote) {
36
- try {
37
- return innerAsLocators(new generators[lang](preferredQuote), (0, import_selectorParser.parseSelector)(selector), isFrameLocator, maxOutputSize);
38
- } catch (e) {
39
- return [selector];
40
- }
41
- }
42
- function innerAsLocators(factory, parsed, isFrameLocator = false, maxOutputSize = 20) {
43
- const parts = [...parsed.parts];
44
- const tokens = [];
45
- let nextBase = isFrameLocator ? "frame-locator" : "page";
46
- for (let index = 0; index < parts.length; index++) {
47
- const part = parts[index];
48
- const base = nextBase;
49
- nextBase = "locator";
50
- if (part.name === "nth") {
51
- if (part.body === "0")
52
- tokens.push([factory.generateLocator(base, "first", ""), factory.generateLocator(base, "nth", "0")]);
53
- else if (part.body === "-1")
54
- tokens.push([factory.generateLocator(base, "last", ""), factory.generateLocator(base, "nth", "-1")]);
55
- else
56
- tokens.push([factory.generateLocator(base, "nth", part.body)]);
57
- continue;
58
- }
59
- if (part.name === "visible") {
60
- tokens.push([factory.generateLocator(base, "visible", part.body), factory.generateLocator(base, "default", `visible=${part.body}`)]);
61
- continue;
62
- }
63
- if (part.name === "internal:text") {
64
- const { exact, text } = detectExact(part.body);
65
- tokens.push([factory.generateLocator(base, "text", text, { exact })]);
66
- continue;
67
- }
68
- if (part.name === "internal:has-text") {
69
- const { exact, text } = detectExact(part.body);
70
- if (!exact) {
71
- tokens.push([factory.generateLocator(base, "has-text", text, { exact })]);
72
- continue;
73
- }
74
- }
75
- if (part.name === "internal:has-not-text") {
76
- const { exact, text } = detectExact(part.body);
77
- if (!exact) {
78
- tokens.push([factory.generateLocator(base, "has-not-text", text, { exact })]);
79
- continue;
80
- }
81
- }
82
- if (part.name === "internal:has") {
83
- const inners = innerAsLocators(factory, part.body.parsed, false, maxOutputSize);
84
- tokens.push(inners.map((inner) => factory.generateLocator(base, "has", inner)));
85
- continue;
86
- }
87
- if (part.name === "internal:has-not") {
88
- const inners = innerAsLocators(factory, part.body.parsed, false, maxOutputSize);
89
- tokens.push(inners.map((inner) => factory.generateLocator(base, "hasNot", inner)));
90
- continue;
91
- }
92
- if (part.name === "internal:and") {
93
- const inners = innerAsLocators(factory, part.body.parsed, false, maxOutputSize);
94
- tokens.push(inners.map((inner) => factory.generateLocator(base, "and", inner)));
95
- continue;
96
- }
97
- if (part.name === "internal:or") {
98
- const inners = innerAsLocators(factory, part.body.parsed, false, maxOutputSize);
99
- tokens.push(inners.map((inner) => factory.generateLocator(base, "or", inner)));
100
- continue;
101
- }
102
- if (part.name === "internal:chain") {
103
- const inners = innerAsLocators(factory, part.body.parsed, false, maxOutputSize);
104
- tokens.push(inners.map((inner) => factory.generateLocator(base, "chain", inner)));
105
- continue;
106
- }
107
- if (part.name === "internal:label") {
108
- const { exact, text } = detectExact(part.body);
109
- tokens.push([factory.generateLocator(base, "label", text, { exact })]);
110
- continue;
111
- }
112
- if (part.name === "internal:role") {
113
- const attrSelector = (0, import_selectorParser.parseAttributeSelector)(part.body, true);
114
- const options = { attrs: [] };
115
- for (const attr of attrSelector.attributes) {
116
- if (attr.name === "name") {
117
- options.exact = attr.caseSensitive;
118
- options.name = attr.value;
119
- } else {
120
- if (attr.name === "level" && typeof attr.value === "string")
121
- attr.value = +attr.value;
122
- options.attrs.push({ name: attr.name === "include-hidden" ? "includeHidden" : attr.name, value: attr.value });
123
- }
124
- }
125
- tokens.push([factory.generateLocator(base, "role", attrSelector.name, options)]);
126
- continue;
127
- }
128
- if (part.name === "internal:testid") {
129
- const attrSelector = (0, import_selectorParser.parseAttributeSelector)(part.body, true);
130
- const { value } = attrSelector.attributes[0];
131
- tokens.push([factory.generateLocator(base, "test-id", value)]);
132
- continue;
133
- }
134
- if (part.name === "internal:attr") {
135
- const attrSelector = (0, import_selectorParser.parseAttributeSelector)(part.body, true);
136
- const { name, value, caseSensitive } = attrSelector.attributes[0];
137
- const text = value;
138
- const exact = !!caseSensitive;
139
- if (name === "placeholder") {
140
- tokens.push([factory.generateLocator(base, "placeholder", text, { exact })]);
141
- continue;
142
- }
143
- if (name === "alt") {
144
- tokens.push([factory.generateLocator(base, "alt", text, { exact })]);
145
- continue;
146
- }
147
- if (name === "title") {
148
- tokens.push([factory.generateLocator(base, "title", text, { exact })]);
149
- continue;
150
- }
151
- }
152
- if (part.name === "internal:control" && part.body === "enter-frame") {
153
- const lastTokens = tokens[tokens.length - 1];
154
- const lastPart = parts[index - 1];
155
- const transformed = lastTokens.map((token) => factory.chainLocators([token, factory.generateLocator(base, "frame", "")]));
156
- if (["xpath", "css"].includes(lastPart.name)) {
157
- transformed.push(
158
- factory.generateLocator(base, "frame-locator", (0, import_selectorParser.stringifySelector)({ parts: [lastPart] })),
159
- factory.generateLocator(base, "frame-locator", (0, import_selectorParser.stringifySelector)({ parts: [lastPart] }, true))
160
- );
161
- }
162
- lastTokens.splice(0, lastTokens.length, ...transformed);
163
- nextBase = "frame-locator";
164
- continue;
165
- }
166
- const nextPart = parts[index + 1];
167
- const selectorPart = (0, import_selectorParser.stringifySelector)({ parts: [part] });
168
- const locatorPart = factory.generateLocator(base, "default", selectorPart);
169
- if (nextPart && ["internal:has-text", "internal:has-not-text"].includes(nextPart.name)) {
170
- const { exact, text } = detectExact(nextPart.body);
171
- if (!exact) {
172
- const nextLocatorPart = factory.generateLocator("locator", nextPart.name === "internal:has-text" ? "has-text" : "has-not-text", text, { exact });
173
- const options = {};
174
- if (nextPart.name === "internal:has-text")
175
- options.hasText = text;
176
- else
177
- options.hasNotText = text;
178
- const combinedPart = factory.generateLocator(base, "default", selectorPart, options);
179
- tokens.push([factory.chainLocators([locatorPart, nextLocatorPart]), combinedPart]);
180
- index++;
181
- continue;
182
- }
183
- }
184
- let locatorPartWithEngine;
185
- if (["xpath", "css"].includes(part.name)) {
186
- const selectorPart2 = (0, import_selectorParser.stringifySelector)(
187
- { parts: [part] },
188
- /* forceEngineName */
189
- true
190
- );
191
- locatorPartWithEngine = factory.generateLocator(base, "default", selectorPart2);
192
- }
193
- tokens.push([locatorPart, locatorPartWithEngine].filter(Boolean));
194
- }
195
- return combineTokens(factory, tokens, maxOutputSize);
196
- }
197
- function combineTokens(factory, tokens, maxOutputSize) {
198
- const currentTokens = tokens.map(() => "");
199
- const result = [];
200
- const visit = (index) => {
201
- if (index === tokens.length) {
202
- result.push(factory.chainLocators(currentTokens));
203
- return result.length < maxOutputSize;
204
- }
205
- for (const taken of tokens[index]) {
206
- currentTokens[index] = taken;
207
- if (!visit(index + 1))
208
- return false;
209
- }
210
- return true;
211
- };
212
- visit(0);
213
- return result;
214
- }
215
- function detectExact(text) {
216
- let exact = false;
217
- const match = text.match(/^\/(.*)\/([igm]*)$/);
218
- if (match)
219
- return { text: new RegExp(match[1], match[2]) };
220
- if (text.endsWith('"')) {
221
- text = JSON.parse(text);
222
- exact = true;
223
- } else if (text.endsWith('"s')) {
224
- text = JSON.parse(text.substring(0, text.length - 1));
225
- exact = true;
226
- } else if (text.endsWith('"i')) {
227
- text = JSON.parse(text.substring(0, text.length - 1));
228
- exact = false;
229
- }
230
- return { exact, text };
231
- }
232
- class JavaScriptLocatorFactory {
233
- constructor(preferredQuote) {
234
- this.preferredQuote = preferredQuote;
235
- }
236
- generateLocator(base, kind, body, options = {}) {
237
- switch (kind) {
238
- case "default":
239
- if (options.hasText !== void 0)
240
- return `locator(${this.quote(body)}, { hasText: ${this.toHasText(options.hasText)} })`;
241
- if (options.hasNotText !== void 0)
242
- return `locator(${this.quote(body)}, { hasNotText: ${this.toHasText(options.hasNotText)} })`;
243
- return `locator(${this.quote(body)})`;
244
- case "frame-locator":
245
- return `frameLocator(${this.quote(body)})`;
246
- case "frame":
247
- return `contentFrame()`;
248
- case "nth":
249
- return `nth(${body})`;
250
- case "first":
251
- return `first()`;
252
- case "last":
253
- return `last()`;
254
- case "visible":
255
- return `filter({ visible: ${body === "true" ? "true" : "false"} })`;
256
- case "role":
257
- const attrs = [];
258
- if (isRegExp(options.name)) {
259
- attrs.push(`name: ${this.regexToSourceString(options.name)}`);
260
- } else if (typeof options.name === "string") {
261
- attrs.push(`name: ${this.quote(options.name)}`);
262
- if (options.exact)
263
- attrs.push(`exact: true`);
264
- }
265
- for (const { name, value } of options.attrs)
266
- attrs.push(`${name}: ${typeof value === "string" ? this.quote(value) : value}`);
267
- const attrString = attrs.length ? `, { ${attrs.join(", ")} }` : "";
268
- return `getByRole(${this.quote(body)}${attrString})`;
269
- case "has-text":
270
- return `filter({ hasText: ${this.toHasText(body)} })`;
271
- case "has-not-text":
272
- return `filter({ hasNotText: ${this.toHasText(body)} })`;
273
- case "has":
274
- return `filter({ has: ${body} })`;
275
- case "hasNot":
276
- return `filter({ hasNot: ${body} })`;
277
- case "and":
278
- return `and(${body})`;
279
- case "or":
280
- return `or(${body})`;
281
- case "chain":
282
- return `locator(${body})`;
283
- case "test-id":
284
- return `getByTestId(${this.toTestIdValue(body)})`;
285
- case "text":
286
- return this.toCallWithExact("getByText", body, !!options.exact);
287
- case "alt":
288
- return this.toCallWithExact("getByAltText", body, !!options.exact);
289
- case "placeholder":
290
- return this.toCallWithExact("getByPlaceholder", body, !!options.exact);
291
- case "label":
292
- return this.toCallWithExact("getByLabel", body, !!options.exact);
293
- case "title":
294
- return this.toCallWithExact("getByTitle", body, !!options.exact);
295
- default:
296
- throw new Error("Unknown selector kind " + kind);
297
- }
298
- }
299
- chainLocators(locators) {
300
- return locators.join(".");
301
- }
302
- regexToSourceString(re) {
303
- return (0, import_stringUtils.normalizeEscapedRegexQuotes)(String(re));
304
- }
305
- toCallWithExact(method, body, exact) {
306
- if (isRegExp(body))
307
- return `${method}(${this.regexToSourceString(body)})`;
308
- return exact ? `${method}(${this.quote(body)}, { exact: true })` : `${method}(${this.quote(body)})`;
309
- }
310
- toHasText(body) {
311
- if (isRegExp(body))
312
- return this.regexToSourceString(body);
313
- return this.quote(body);
314
- }
315
- toTestIdValue(value) {
316
- if (isRegExp(value))
317
- return this.regexToSourceString(value);
318
- return this.quote(value);
319
- }
320
- quote(text) {
321
- return (0, import_stringUtils.escapeWithQuotes)(text, this.preferredQuote ?? "'");
322
- }
323
- }
324
- class PythonLocatorFactory {
325
- generateLocator(base, kind, body, options = {}) {
326
- switch (kind) {
327
- case "default":
328
- if (options.hasText !== void 0)
329
- return `locator(${this.quote(body)}, has_text=${this.toHasText(options.hasText)})`;
330
- if (options.hasNotText !== void 0)
331
- return `locator(${this.quote(body)}, has_not_text=${this.toHasText(options.hasNotText)})`;
332
- return `locator(${this.quote(body)})`;
333
- case "frame-locator":
334
- return `frame_locator(${this.quote(body)})`;
335
- case "frame":
336
- return `content_frame`;
337
- case "nth":
338
- return `nth(${body})`;
339
- case "first":
340
- return `first`;
341
- case "last":
342
- return `last`;
343
- case "visible":
344
- return `filter(visible=${body === "true" ? "True" : "False"})`;
345
- case "role":
346
- const attrs = [];
347
- if (isRegExp(options.name)) {
348
- attrs.push(`name=${this.regexToString(options.name)}`);
349
- } else if (typeof options.name === "string") {
350
- attrs.push(`name=${this.quote(options.name)}`);
351
- if (options.exact)
352
- attrs.push(`exact=True`);
353
- }
354
- for (const { name, value } of options.attrs) {
355
- let valueString = typeof value === "string" ? this.quote(value) : value;
356
- if (typeof value === "boolean")
357
- valueString = value ? "True" : "False";
358
- attrs.push(`${(0, import_stringUtils.toSnakeCase)(name)}=${valueString}`);
359
- }
360
- const attrString = attrs.length ? `, ${attrs.join(", ")}` : "";
361
- return `get_by_role(${this.quote(body)}${attrString})`;
362
- case "has-text":
363
- return `filter(has_text=${this.toHasText(body)})`;
364
- case "has-not-text":
365
- return `filter(has_not_text=${this.toHasText(body)})`;
366
- case "has":
367
- return `filter(has=${body})`;
368
- case "hasNot":
369
- return `filter(has_not=${body})`;
370
- case "and":
371
- return `and_(${body})`;
372
- case "or":
373
- return `or_(${body})`;
374
- case "chain":
375
- return `locator(${body})`;
376
- case "test-id":
377
- return `get_by_test_id(${this.toTestIdValue(body)})`;
378
- case "text":
379
- return this.toCallWithExact("get_by_text", body, !!options.exact);
380
- case "alt":
381
- return this.toCallWithExact("get_by_alt_text", body, !!options.exact);
382
- case "placeholder":
383
- return this.toCallWithExact("get_by_placeholder", body, !!options.exact);
384
- case "label":
385
- return this.toCallWithExact("get_by_label", body, !!options.exact);
386
- case "title":
387
- return this.toCallWithExact("get_by_title", body, !!options.exact);
388
- default:
389
- throw new Error("Unknown selector kind " + kind);
390
- }
391
- }
392
- chainLocators(locators) {
393
- return locators.join(".");
394
- }
395
- regexToString(body) {
396
- const suffix = body.flags.includes("i") ? ", re.IGNORECASE" : "";
397
- return `re.compile(r"${(0, import_stringUtils.normalizeEscapedRegexQuotes)(body.source).replace(/\\\//, "/").replace(/"/g, '\\"')}"${suffix})`;
398
- }
399
- toCallWithExact(method, body, exact) {
400
- if (isRegExp(body))
401
- return `${method}(${this.regexToString(body)})`;
402
- if (exact)
403
- return `${method}(${this.quote(body)}, exact=True)`;
404
- return `${method}(${this.quote(body)})`;
405
- }
406
- toHasText(body) {
407
- if (isRegExp(body))
408
- return this.regexToString(body);
409
- return `${this.quote(body)}`;
410
- }
411
- toTestIdValue(value) {
412
- if (isRegExp(value))
413
- return this.regexToString(value);
414
- return this.quote(value);
415
- }
416
- quote(text) {
417
- return (0, import_stringUtils.escapeWithQuotes)(text, '"');
418
- }
419
- }
420
- class JavaLocatorFactory {
421
- generateLocator(base, kind, body, options = {}) {
422
- let clazz;
423
- switch (base) {
424
- case "page":
425
- clazz = "Page";
426
- break;
427
- case "frame-locator":
428
- clazz = "FrameLocator";
429
- break;
430
- case "locator":
431
- clazz = "Locator";
432
- break;
433
- }
434
- switch (kind) {
435
- case "default":
436
- if (options.hasText !== void 0)
437
- return `locator(${this.quote(body)}, new ${clazz}.LocatorOptions().setHasText(${this.toHasText(options.hasText)}))`;
438
- if (options.hasNotText !== void 0)
439
- return `locator(${this.quote(body)}, new ${clazz}.LocatorOptions().setHasNotText(${this.toHasText(options.hasNotText)}))`;
440
- return `locator(${this.quote(body)})`;
441
- case "frame-locator":
442
- return `frameLocator(${this.quote(body)})`;
443
- case "frame":
444
- return `contentFrame()`;
445
- case "nth":
446
- return `nth(${body})`;
447
- case "first":
448
- return `first()`;
449
- case "last":
450
- return `last()`;
451
- case "visible":
452
- return `filter(new ${clazz}.FilterOptions().setVisible(${body === "true" ? "true" : "false"}))`;
453
- case "role":
454
- const attrs = [];
455
- if (isRegExp(options.name)) {
456
- attrs.push(`.setName(${this.regexToString(options.name)})`);
457
- } else if (typeof options.name === "string") {
458
- attrs.push(`.setName(${this.quote(options.name)})`);
459
- if (options.exact)
460
- attrs.push(`.setExact(true)`);
461
- }
462
- for (const { name, value } of options.attrs)
463
- attrs.push(`.set${(0, import_stringUtils.toTitleCase)(name)}(${typeof value === "string" ? this.quote(value) : value})`);
464
- const attrString = attrs.length ? `, new ${clazz}.GetByRoleOptions()${attrs.join("")}` : "";
465
- return `getByRole(AriaRole.${(0, import_stringUtils.toSnakeCase)(body).toUpperCase()}${attrString})`;
466
- case "has-text":
467
- return `filter(new ${clazz}.FilterOptions().setHasText(${this.toHasText(body)}))`;
468
- case "has-not-text":
469
- return `filter(new ${clazz}.FilterOptions().setHasNotText(${this.toHasText(body)}))`;
470
- case "has":
471
- return `filter(new ${clazz}.FilterOptions().setHas(${body}))`;
472
- case "hasNot":
473
- return `filter(new ${clazz}.FilterOptions().setHasNot(${body}))`;
474
- case "and":
475
- return `and(${body})`;
476
- case "or":
477
- return `or(${body})`;
478
- case "chain":
479
- return `locator(${body})`;
480
- case "test-id":
481
- return `getByTestId(${this.toTestIdValue(body)})`;
482
- case "text":
483
- return this.toCallWithExact(clazz, "getByText", body, !!options.exact);
484
- case "alt":
485
- return this.toCallWithExact(clazz, "getByAltText", body, !!options.exact);
486
- case "placeholder":
487
- return this.toCallWithExact(clazz, "getByPlaceholder", body, !!options.exact);
488
- case "label":
489
- return this.toCallWithExact(clazz, "getByLabel", body, !!options.exact);
490
- case "title":
491
- return this.toCallWithExact(clazz, "getByTitle", body, !!options.exact);
492
- default:
493
- throw new Error("Unknown selector kind " + kind);
494
- }
495
- }
496
- chainLocators(locators) {
497
- return locators.join(".");
498
- }
499
- regexToString(body) {
500
- const suffix = body.flags.includes("i") ? ", Pattern.CASE_INSENSITIVE" : "";
501
- return `Pattern.compile(${this.quote((0, import_stringUtils.normalizeEscapedRegexQuotes)(body.source))}${suffix})`;
502
- }
503
- toCallWithExact(clazz, method, body, exact) {
504
- if (isRegExp(body))
505
- return `${method}(${this.regexToString(body)})`;
506
- if (exact)
507
- return `${method}(${this.quote(body)}, new ${clazz}.${(0, import_stringUtils.toTitleCase)(method)}Options().setExact(true))`;
508
- return `${method}(${this.quote(body)})`;
509
- }
510
- toHasText(body) {
511
- if (isRegExp(body))
512
- return this.regexToString(body);
513
- return this.quote(body);
514
- }
515
- toTestIdValue(value) {
516
- if (isRegExp(value))
517
- return this.regexToString(value);
518
- return this.quote(value);
519
- }
520
- quote(text) {
521
- return (0, import_stringUtils.escapeWithQuotes)(text, '"');
522
- }
523
- }
524
- class CSharpLocatorFactory {
525
- generateLocator(base, kind, body, options = {}) {
526
- switch (kind) {
527
- case "default":
528
- if (options.hasText !== void 0)
529
- return `Locator(${this.quote(body)}, new() { ${this.toHasText(options.hasText)} })`;
530
- if (options.hasNotText !== void 0)
531
- return `Locator(${this.quote(body)}, new() { ${this.toHasNotText(options.hasNotText)} })`;
532
- return `Locator(${this.quote(body)})`;
533
- case "frame-locator":
534
- return `FrameLocator(${this.quote(body)})`;
535
- case "frame":
536
- return `ContentFrame`;
537
- case "nth":
538
- return `Nth(${body})`;
539
- case "first":
540
- return `First`;
541
- case "last":
542
- return `Last`;
543
- case "visible":
544
- return `Filter(new() { Visible = ${body === "true" ? "true" : "false"} })`;
545
- case "role":
546
- const attrs = [];
547
- if (isRegExp(options.name)) {
548
- attrs.push(`NameRegex = ${this.regexToString(options.name)}`);
549
- } else if (typeof options.name === "string") {
550
- attrs.push(`Name = ${this.quote(options.name)}`);
551
- if (options.exact)
552
- attrs.push(`Exact = true`);
553
- }
554
- for (const { name, value } of options.attrs)
555
- attrs.push(`${(0, import_stringUtils.toTitleCase)(name)} = ${typeof value === "string" ? this.quote(value) : value}`);
556
- const attrString = attrs.length ? `, new() { ${attrs.join(", ")} }` : "";
557
- return `GetByRole(AriaRole.${(0, import_stringUtils.toTitleCase)(body)}${attrString})`;
558
- case "has-text":
559
- return `Filter(new() { ${this.toHasText(body)} })`;
560
- case "has-not-text":
561
- return `Filter(new() { ${this.toHasNotText(body)} })`;
562
- case "has":
563
- return `Filter(new() { Has = ${body} })`;
564
- case "hasNot":
565
- return `Filter(new() { HasNot = ${body} })`;
566
- case "and":
567
- return `And(${body})`;
568
- case "or":
569
- return `Or(${body})`;
570
- case "chain":
571
- return `Locator(${body})`;
572
- case "test-id":
573
- return `GetByTestId(${this.toTestIdValue(body)})`;
574
- case "text":
575
- return this.toCallWithExact("GetByText", body, !!options.exact);
576
- case "alt":
577
- return this.toCallWithExact("GetByAltText", body, !!options.exact);
578
- case "placeholder":
579
- return this.toCallWithExact("GetByPlaceholder", body, !!options.exact);
580
- case "label":
581
- return this.toCallWithExact("GetByLabel", body, !!options.exact);
582
- case "title":
583
- return this.toCallWithExact("GetByTitle", body, !!options.exact);
584
- default:
585
- throw new Error("Unknown selector kind " + kind);
586
- }
587
- }
588
- chainLocators(locators) {
589
- return locators.join(".");
590
- }
591
- regexToString(body) {
592
- const suffix = body.flags.includes("i") ? ", RegexOptions.IgnoreCase" : "";
593
- return `new Regex(${this.quote((0, import_stringUtils.normalizeEscapedRegexQuotes)(body.source))}${suffix})`;
594
- }
595
- toCallWithExact(method, body, exact) {
596
- if (isRegExp(body))
597
- return `${method}(${this.regexToString(body)})`;
598
- if (exact)
599
- return `${method}(${this.quote(body)}, new() { Exact = true })`;
600
- return `${method}(${this.quote(body)})`;
601
- }
602
- toHasText(body) {
603
- if (isRegExp(body))
604
- return `HasTextRegex = ${this.regexToString(body)}`;
605
- return `HasText = ${this.quote(body)}`;
606
- }
607
- toTestIdValue(value) {
608
- if (isRegExp(value))
609
- return this.regexToString(value);
610
- return this.quote(value);
611
- }
612
- toHasNotText(body) {
613
- if (isRegExp(body))
614
- return `HasNotTextRegex = ${this.regexToString(body)}`;
615
- return `HasNotText = ${this.quote(body)}`;
616
- }
617
- quote(text) {
618
- return (0, import_stringUtils.escapeWithQuotes)(text, '"');
619
- }
620
- }
621
- class JsonlLocatorFactory {
622
- generateLocator(base, kind, body, options = {}) {
623
- return JSON.stringify({
624
- kind,
625
- body,
626
- options
627
- });
628
- }
629
- chainLocators(locators) {
630
- const objects = locators.map((l) => JSON.parse(l));
631
- for (let i = 0; i < objects.length - 1; ++i)
632
- objects[i].next = objects[i + 1];
633
- return JSON.stringify(objects[0]);
634
- }
635
- }
636
- const generators = {
637
- javascript: JavaScriptLocatorFactory,
638
- python: PythonLocatorFactory,
639
- java: JavaLocatorFactory,
640
- csharp: CSharpLocatorFactory,
641
- jsonl: JsonlLocatorFactory
642
- };
643
- function isRegExp(obj) {
644
- return obj instanceof RegExp;
645
- }
646
- // Annotate the CommonJS export names for ESM import in node:
647
- 0 && (module.exports = {
648
- CSharpLocatorFactory,
649
- JavaLocatorFactory,
650
- JavaScriptLocatorFactory,
651
- JsonlLocatorFactory,
652
- PythonLocatorFactory,
653
- asLocator,
654
- asLocators
655
- });