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