@checkly/playwright-core 1.51.17-beta.1 → 1.54.2-beta.0

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 (376) hide show
  1. package/ThirdPartyNotices.txt +65 -123
  2. package/browsers.json +16 -14
  3. package/index.js +1 -1
  4. package/lib/androidServerImpl.js +47 -50
  5. package/lib/browserServerImpl.js +89 -69
  6. package/lib/checkly/escapeRegExp.js +23 -27
  7. package/lib/checkly/fetch.js +64 -46
  8. package/lib/checkly/secretsFilter.js +49 -36
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +400 -359
  11. package/lib/cli/programWithTestStub.js +51 -45
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +151 -242
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -36
  16. package/lib/client/browser.js +96 -71
  17. package/lib/client/browserContext.js +314 -345
  18. package/lib/client/browserType.js +103 -127
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +90 -113
  21. package/lib/client/clientHelper.js +48 -39
  22. package/lib/client/clientInstrumentation.js +40 -37
  23. package/lib/client/clientStackTrace.js +41 -37
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +188 -214
  26. package/lib/client/consoleMessage.js +31 -28
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +80 -77
  31. package/lib/client/elementHandle.js +120 -159
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +124 -121
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +166 -190
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +31 -28
  38. package/lib/client/frame.js +207 -306
  39. package/lib/client/harRouter.js +42 -52
  40. package/lib/client/input.js +42 -69
  41. package/lib/client/jsHandle.js +54 -69
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +29 -29
  44. package/lib/client/locator.js +145 -237
  45. package/lib/client/network.js +282 -307
  46. package/lib/client/page.js +269 -318
  47. package/lib/client/platform.js +46 -43
  48. package/lib/client/playwright.js +51 -76
  49. package/lib/client/selectors.js +45 -63
  50. package/lib/client/stream.js +29 -25
  51. package/lib/client/timeoutSettings.js +55 -41
  52. package/lib/client/tracing.js +49 -96
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +69 -88
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +43 -56
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +27 -23
  60. package/lib/generated/bindingsControllerSource.js +28 -0
  61. package/lib/generated/clockSource.js +26 -6
  62. package/lib/generated/consoleApiSource.js +26 -6
  63. package/lib/generated/injectedScriptSource.js +26 -6
  64. package/lib/generated/pollingRecorderSource.js +26 -6
  65. package/lib/generated/storageScriptSource.js +28 -0
  66. package/lib/generated/utilityScriptSource.js +26 -6
  67. package/lib/generated/webSocketMockSource.js +333 -5
  68. package/lib/inProcessFactory.js +51 -53
  69. package/lib/inprocess.js +2 -19
  70. package/lib/outofprocess.js +51 -46
  71. package/lib/protocol/serializers.js +153 -134
  72. package/lib/protocol/validator.js +2807 -2739
  73. package/lib/protocol/validatorPrimitives.js +114 -73
  74. package/lib/remote/playwrightConnection.js +88 -242
  75. package/lib/remote/playwrightServer.js +305 -92
  76. package/lib/server/accessibility.js +44 -37
  77. package/lib/server/android/android.js +251 -241
  78. package/lib/server/android/backendAdb.js +87 -82
  79. package/lib/server/artifact.js +78 -55
  80. package/lib/server/bidi/bidiBrowser.js +297 -158
  81. package/lib/server/bidi/bidiChromium.js +119 -89
  82. package/lib/server/bidi/bidiConnection.js +66 -83
  83. package/lib/server/bidi/bidiExecutionContext.js +129 -113
  84. package/lib/server/bidi/bidiFirefox.js +86 -76
  85. package/lib/server/bidi/bidiInput.js +106 -117
  86. package/lib/server/bidi/bidiNetworkManager.js +142 -159
  87. package/lib/server/bidi/bidiOverCdp.js +57 -58
  88. package/lib/server/bidi/bidiPage.js +260 -260
  89. package/lib/server/bidi/bidiPdf.js +52 -86
  90. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  91. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  92. package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
  93. package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
  94. package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
  95. package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  96. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  97. package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
  98. package/lib/server/browser.js +93 -95
  99. package/lib/server/browserContext.js +419 -429
  100. package/lib/server/browserType.js +186 -216
  101. package/lib/server/callLog.js +47 -44
  102. package/lib/server/chromium/chromium.js +235 -203
  103. package/lib/server/chromium/chromiumSwitches.js +100 -67
  104. package/lib/server/chromium/crAccessibility.js +157 -131
  105. package/lib/server/chromium/crBrowser.js +310 -292
  106. package/lib/server/chromium/crConnection.js +95 -121
  107. package/lib/server/chromium/crCoverage.js +121 -131
  108. package/lib/server/chromium/crDevTools.js +60 -51
  109. package/lib/server/chromium/crDragDrop.js +68 -84
  110. package/lib/server/chromium/crExecutionContext.js +89 -83
  111. package/lib/server/chromium/crInput.js +118 -113
  112. package/lib/server/chromium/crNetworkManager.js +274 -375
  113. package/lib/server/chromium/crPage.js +536 -593
  114. package/lib/server/chromium/crPdf.js +54 -86
  115. package/lib/server/chromium/crProtocolHelper.js +92 -80
  116. package/lib/server/chromium/crServiceWorker.js +84 -73
  117. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  118. package/lib/server/chromium/protocol.d.js +16 -0
  119. package/lib/server/chromium/videoRecorder.js +66 -99
  120. package/lib/server/clock.js +107 -83
  121. package/lib/server/codegen/csharp.js +192 -162
  122. package/lib/server/codegen/java.js +156 -129
  123. package/lib/server/codegen/javascript.js +163 -148
  124. package/lib/server/codegen/jsonl.js +32 -28
  125. package/lib/server/codegen/language.js +75 -52
  126. package/lib/server/codegen/languages.js +65 -27
  127. package/lib/server/codegen/python.js +141 -126
  128. package/lib/server/codegen/types.js +15 -4
  129. package/lib/server/console.js +28 -32
  130. package/lib/server/cookieStore.js +108 -86
  131. package/lib/server/debugController.js +147 -151
  132. package/lib/server/debugger.js +86 -78
  133. package/lib/server/deviceDescriptors.js +37 -24
  134. package/lib/server/deviceDescriptorsSource.json +238 -128
  135. package/lib/server/dialog.js +84 -39
  136. package/lib/server/dispatchers/androidDispatcher.js +257 -148
  137. package/lib/server/dispatchers/artifactDispatcher.js +79 -79
  138. package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
  139. package/lib/server/dispatchers/browserDispatcher.js +96 -148
  140. package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
  141. package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
  142. package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
  143. package/lib/server/dispatchers/dialogDispatcher.js +34 -31
  144. package/lib/server/dispatchers/dispatcher.js +208 -248
  145. package/lib/server/dispatchers/electronDispatcher.js +66 -70
  146. package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
  147. package/lib/server/dispatchers/frameDispatcher.js +211 -272
  148. package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
  149. package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
  150. package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
  151. package/lib/server/dispatchers/networkDispatchers.js +117 -128
  152. package/lib/server/dispatchers/pageDispatcher.js +256 -248
  153. package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
  154. package/lib/server/dispatchers/streamDispatcher.js +52 -48
  155. package/lib/server/dispatchers/tracingDispatcher.js +47 -52
  156. package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
  157. package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
  158. package/lib/server/dom.js +485 -582
  159. package/lib/server/download.js +47 -37
  160. package/lib/server/electron/electron.js +216 -243
  161. package/lib/server/electron/loader.js +9 -37
  162. package/lib/server/errors.js +47 -46
  163. package/lib/server/fetch.js +317 -360
  164. package/lib/server/fileChooser.js +25 -24
  165. package/lib/server/fileUploadUtils.js +66 -60
  166. package/lib/server/firefox/ffAccessibility.js +153 -131
  167. package/lib/server/firefox/ffBrowser.js +268 -305
  168. package/lib/server/firefox/ffConnection.js +63 -84
  169. package/lib/server/firefox/ffExecutionContext.js +92 -73
  170. package/lib/server/firefox/ffInput.js +82 -84
  171. package/lib/server/firefox/ffNetworkManager.js +137 -114
  172. package/lib/server/firefox/ffPage.js +261 -293
  173. package/lib/server/firefox/firefox.js +80 -72
  174. package/lib/server/firefox/protocol.d.js +16 -0
  175. package/lib/server/formData.js +107 -35
  176. package/lib/server/frameSelectors.js +98 -114
  177. package/lib/server/frames.js +845 -1055
  178. package/lib/server/har/harRecorder.js +85 -77
  179. package/lib/server/har/harTracer.js +290 -223
  180. package/lib/server/harBackend.js +80 -80
  181. package/lib/server/helper.js +55 -59
  182. package/lib/server/index.js +59 -99
  183. package/lib/server/input.js +151 -189
  184. package/lib/server/instrumentation.js +57 -44
  185. package/lib/server/javascript.js +133 -134
  186. package/lib/server/launchApp.js +113 -75
  187. package/lib/server/localUtils.js +150 -142
  188. package/lib/server/macEditingCommands.js +141 -137
  189. package/lib/server/network.js +299 -303
  190. package/lib/server/page.js +513 -544
  191. package/lib/server/pipeTransport.js +49 -45
  192. package/lib/server/playwright.js +58 -67
  193. package/lib/server/progress.js +137 -68
  194. package/lib/server/protocolError.js +34 -31
  195. package/lib/server/recorder/chat.js +70 -86
  196. package/lib/server/recorder/recorderApp.js +341 -176
  197. package/lib/server/recorder/recorderInTraceViewer.js +65 -94
  198. package/lib/server/recorder/recorderRunner.js +93 -116
  199. package/lib/server/recorder/recorderSignalProcessor.js +83 -0
  200. package/lib/server/recorder/recorderUtils.js +104 -47
  201. package/lib/server/recorder/throttledFile.js +42 -30
  202. package/lib/server/recorder.js +395 -275
  203. package/lib/server/registry/browserFetcher.js +106 -101
  204. package/lib/server/registry/dependencies.js +245 -196
  205. package/lib/server/registry/index.js +930 -803
  206. package/lib/server/registry/nativeDeps.js +1073 -464
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +160 -191
  209. package/lib/server/selectors.js +90 -51
  210. package/lib/server/socksClientCertificatesInterceptor.js +171 -186
  211. package/lib/server/socksInterceptor.js +62 -70
  212. package/lib/server/trace/recorder/snapshotter.js +76 -102
  213. package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
  214. package/lib/server/trace/recorder/tracing.js +354 -362
  215. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  216. package/lib/server/trace/viewer/traceViewer.js +160 -147
  217. package/lib/server/transport.js +119 -134
  218. package/lib/server/types.js +26 -22
  219. package/lib/server/usKeyboardLayout.js +135 -545
  220. package/lib/server/utils/ascii.js +39 -26
  221. package/lib/server/utils/comparators.js +105 -103
  222. package/lib/server/utils/crypto.js +157 -112
  223. package/lib/server/utils/debug.js +36 -32
  224. package/lib/server/utils/debugLogger.js +77 -48
  225. package/lib/server/utils/env.js +52 -37
  226. package/lib/server/utils/eventsHelper.js +29 -28
  227. package/lib/server/utils/expectUtils.js +31 -26
  228. package/lib/server/utils/fileUtils.js +123 -136
  229. package/lib/server/utils/happyEyeballs.js +141 -126
  230. package/lib/server/utils/hostPlatform.js +84 -120
  231. package/lib/server/utils/httpServer.js +106 -121
  232. package/lib/server/utils/image_tools/colorUtils.js +42 -51
  233. package/lib/server/utils/image_tools/compare.js +44 -43
  234. package/lib/server/utils/image_tools/imageChannel.js +38 -30
  235. package/lib/server/utils/image_tools/stats.js +40 -40
  236. package/lib/server/utils/linuxUtils.js +50 -37
  237. package/lib/server/utils/network.js +152 -96
  238. package/lib/server/utils/nodePlatform.js +87 -79
  239. package/lib/server/utils/pipeTransport.js +44 -42
  240. package/lib/server/utils/processLauncher.js +111 -121
  241. package/lib/server/utils/profiler.js +52 -39
  242. package/lib/server/utils/socksProxy.js +280 -339
  243. package/lib/server/utils/spawnAsync.js +37 -41
  244. package/lib/server/utils/task.js +31 -38
  245. package/lib/server/utils/userAgent.js +73 -66
  246. package/lib/server/utils/wsServer.js +68 -75
  247. package/lib/server/utils/zipFile.js +36 -37
  248. package/lib/server/utils/zones.js +37 -34
  249. package/lib/server/webkit/protocol.d.js +16 -0
  250. package/lib/server/webkit/webkit.js +77 -61
  251. package/lib/server/webkit/wkAccessibility.js +161 -118
  252. package/lib/server/webkit/wkBrowser.js +193 -184
  253. package/lib/server/webkit/wkConnection.js +59 -83
  254. package/lib/server/webkit/wkExecutionContext.js +85 -70
  255. package/lib/server/webkit/wkInput.js +97 -95
  256. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  257. package/lib/server/webkit/wkPage.js +568 -667
  258. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  259. package/lib/server/webkit/wkWorkers.js +79 -79
  260. package/lib/utils/expectUtils.js +31 -26
  261. package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
  262. package/lib/utils/isomorphic/assert.js +28 -22
  263. package/lib/utils/isomorphic/colors.js +66 -59
  264. package/lib/utils/isomorphic/cssParser.js +120 -125
  265. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  266. package/lib/utils/isomorphic/headers.js +38 -37
  267. package/lib/utils/isomorphic/locatorGenerators.js +358 -357
  268. package/lib/utils/isomorphic/locatorParser.js +96 -105
  269. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  270. package/lib/utils/isomorphic/manualPromise.js +46 -39
  271. package/lib/utils/isomorphic/mimeType.js +447 -25
  272. package/lib/utils/isomorphic/multimap.js +34 -27
  273. package/lib/utils/isomorphic/protocolFormatter.js +68 -0
  274. package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
  275. package/lib/utils/isomorphic/recorderUtils.js +140 -181
  276. package/lib/utils/isomorphic/rtti.js +35 -33
  277. package/lib/utils/isomorphic/selectorParser.js +182 -193
  278. package/lib/utils/isomorphic/semaphore.js +27 -24
  279. package/lib/utils/isomorphic/stackTrace.js +87 -98
  280. package/lib/utils/isomorphic/stringUtils.js +98 -112
  281. package/lib/utils/isomorphic/time.js +46 -22
  282. package/lib/utils/isomorphic/timeoutRunner.js +53 -53
  283. package/lib/utils/isomorphic/traceUtils.js +37 -41
  284. package/lib/utils/isomorphic/types.js +15 -4
  285. package/lib/utils/isomorphic/urlMatch.js +113 -67
  286. package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
  287. package/lib/utils.js +101 -443
  288. package/lib/utilsBundle.js +101 -52
  289. package/lib/utilsBundleImpl/index.js +160 -150
  290. package/lib/zipBundle.js +32 -23
  291. package/lib/zipBundleImpl.js +4 -4
  292. package/package.json +1 -1
  293. package/types/protocol.d.ts +1267 -1057
  294. package/types/types.d.ts +131 -29
  295. package/lib/common/socksProxy.js +0 -569
  296. package/lib/common/timeoutSettings.js +0 -73
  297. package/lib/common/types.js +0 -5
  298. package/lib/image_tools/colorUtils.js +0 -98
  299. package/lib/image_tools/compare.js +0 -108
  300. package/lib/image_tools/imageChannel.js +0 -70
  301. package/lib/image_tools/stats.js +0 -102
  302. package/lib/protocol/debug.js +0 -27
  303. package/lib/protocol/transport.js +0 -82
  304. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  305. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
  306. package/lib/server/recorder/contextRecorder.js +0 -290
  307. package/lib/server/recorder/recorderCollection.js +0 -104
  308. package/lib/server/recorder/recorderFrontend.js +0 -5
  309. package/lib/server/storageScript.js +0 -160
  310. package/lib/server/timeoutSettings.js +0 -74
  311. package/lib/third_party/diff_match_patch.js +0 -2222
  312. package/lib/utils/ascii.js +0 -31
  313. package/lib/utils/comparators.js +0 -171
  314. package/lib/utils/crypto.js +0 -174
  315. package/lib/utils/debug.js +0 -46
  316. package/lib/utils/debugLogger.js +0 -91
  317. package/lib/utils/env.js +0 -49
  318. package/lib/utils/eventsHelper.js +0 -38
  319. package/lib/utils/fileUtils.js +0 -205
  320. package/lib/utils/happy-eyeballs.js +0 -210
  321. package/lib/utils/headers.js +0 -52
  322. package/lib/utils/hostPlatform.js +0 -133
  323. package/lib/utils/httpServer.js +0 -237
  324. package/lib/utils/index.js +0 -368
  325. package/lib/utils/linuxUtils.js +0 -78
  326. package/lib/utils/manualPromise.js +0 -109
  327. package/lib/utils/multimap.js +0 -75
  328. package/lib/utils/network.js +0 -160
  329. package/lib/utils/processLauncher.js +0 -248
  330. package/lib/utils/profiler.js +0 -53
  331. package/lib/utils/rtti.js +0 -44
  332. package/lib/utils/semaphore.js +0 -51
  333. package/lib/utils/spawnAsync.js +0 -45
  334. package/lib/utils/stackTrace.js +0 -121
  335. package/lib/utils/task.js +0 -58
  336. package/lib/utils/time.js +0 -37
  337. package/lib/utils/timeoutRunner.js +0 -66
  338. package/lib/utils/traceUtils.js +0 -44
  339. package/lib/utils/userAgent.js +0 -105
  340. package/lib/utils/wsServer.js +0 -127
  341. package/lib/utils/zipFile.js +0 -75
  342. package/lib/utils/zones.js +0 -62
  343. package/lib/vite/htmlReport/index.html +0 -69
  344. package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
  345. package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
  348. package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
  349. package/lib/vite/recorder/index.html +0 -29
  350. package/lib/vite/recorder/playwright-logo.svg +0 -9
  351. package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
  353. package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
  354. package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
  355. package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
  356. package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
  359. package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
  360. package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
  363. package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
  368. package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
  369. package/lib/vite/traceViewer/recorder.html +0 -17
  370. package/lib/vite/traceViewer/snapshot.html +0 -21
  371. package/lib/vite/traceViewer/sw.bundle.js +0 -3
  372. package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
  373. package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
  376. package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
@@ -1,44 +1,42 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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 csharp_exports = {};
20
+ __export(csharp_exports, {
21
+ CSharpLanguageGenerator: () => CSharpLanguageGenerator
5
22
  });
6
- exports.CSharpLanguageGenerator = void 0;
7
- var _language = require("./language");
8
- var _utils = require("../../utils");
9
- var _deviceDescriptors = require("../deviceDescriptors");
10
- /**
11
- * Copyright (c) Microsoft Corporation.
12
- *
13
- * Licensed under the Apache License, Version 2.0 (the "License");
14
- * you may not use this file except in compliance with the License.
15
- * You may obtain a copy of the License at
16
- *
17
- * http://www.apache.org/licenses/LICENSE-2.0
18
- *
19
- * Unless required by applicable law or agreed to in writing, software
20
- * distributed under the License is distributed on an "AS IS" BASIS,
21
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
- * See the License for the specific language governing permissions and
23
- * limitations under the License.
24
- */
25
-
23
+ module.exports = __toCommonJS(csharp_exports);
24
+ var import_language = require("./language");
25
+ var import_utils = require("../../utils");
26
+ var import_deviceDescriptors = require("../deviceDescriptors");
26
27
  class CSharpLanguageGenerator {
27
28
  constructor(mode) {
28
- this.id = void 0;
29
- this.groupName = '.NET C#';
30
- this.name = void 0;
31
- this.highlighter = 'csharp';
32
- this._mode = void 0;
33
- if (mode === 'library') {
34
- this.name = 'Library';
35
- this.id = 'csharp';
36
- } else if (mode === 'mstest') {
37
- this.name = 'MSTest';
38
- this.id = 'csharp-mstest';
39
- } else if (mode === 'nunit') {
40
- this.name = 'NUnit';
41
- this.id = 'csharp-nunit';
29
+ this.groupName = ".NET C#";
30
+ this.highlighter = "csharp";
31
+ if (mode === "library") {
32
+ this.name = "Library";
33
+ this.id = "csharp";
34
+ } else if (mode === "mstest") {
35
+ this.name = "MSTest";
36
+ this.id = "csharp-mstest";
37
+ } else if (mode === "nunit") {
38
+ this.name = "NUnit";
39
+ this.id = "csharp-nunit";
42
40
  } else {
43
41
  throw new Error(`Unknown C# language mode: ${mode}`);
44
42
  }
@@ -46,23 +44,25 @@ class CSharpLanguageGenerator {
46
44
  }
47
45
  generateAction(actionInContext) {
48
46
  const action = this._generateActionInner(actionInContext);
49
- if (action) return action;
50
- return '';
47
+ if (action)
48
+ return action;
49
+ return "";
51
50
  }
52
51
  _generateActionInner(actionInContext) {
53
52
  const action = actionInContext.action;
54
- if (this._mode !== 'library' && (action.name === 'openPage' || action.name === 'closePage')) return '';
55
- let pageAlias = actionInContext.frame.pageAlias;
56
- if (this._mode !== 'library') pageAlias = pageAlias.replace('page', 'Page');
57
- const formatter = new CSharpFormatter(this._mode === 'library' ? 0 : 8);
58
- if (action.name === 'openPage') {
53
+ if (this._mode !== "library" && (action.name === "openPage" || action.name === "closePage"))
54
+ return "";
55
+ const pageAlias = this._formatPageAlias(actionInContext.frame.pageAlias);
56
+ const formatter = new CSharpFormatter(this._mode === "library" ? 0 : 8);
57
+ if (action.name === "openPage") {
59
58
  formatter.add(`var ${pageAlias} = await context.NewPageAsync();`);
60
- if (action.url && action.url !== 'about:blank' && action.url !== 'chrome://newtab/') formatter.add(`await ${pageAlias}.GotoAsync(${quote(action.url)});`);
59
+ if (action.url && action.url !== "about:blank" && action.url !== "chrome://newtab/")
60
+ formatter.add(`await ${pageAlias}.GotoAsync(${quote(action.url)});`);
61
61
  return formatter.format();
62
62
  }
63
- const locators = actionInContext.frame.framePath.map(selector => `.${this._asLocator(selector)}.ContentFrame`);
64
- const subject = `${pageAlias}${locators.join('')}`;
65
- const signals = (0, _language.toSignalMap)(action);
63
+ const locators = actionInContext.frame.framePath.map((selector) => `.${this._asLocator(selector)}.ContentFrame`);
64
+ const subject = `${pageAlias}${locators.join("")}`;
65
+ const signals = (0, import_language.toSignalMap)(action);
66
66
  if (signals.dialog) {
67
67
  formatter.add(` void ${pageAlias}_Dialog${signals.dialog.dialogAlias}_EventHandler(object sender, IDialog dialog)
68
68
  {
@@ -75,70 +75,80 @@ class CSharpLanguageGenerator {
75
75
  const lines = [];
76
76
  lines.push(this._generateActionCall(subject, actionInContext));
77
77
  if (signals.download) {
78
- lines.unshift(`var download${signals.download.downloadAlias} = await ${pageAlias}.RunAndWaitForDownloadAsync(async () =>\n{`);
78
+ lines.unshift(`var download${signals.download.downloadAlias} = await ${pageAlias}.RunAndWaitForDownloadAsync(async () =>
79
+ {`);
79
80
  lines.push(`});`);
80
81
  }
81
82
  if (signals.popup) {
82
- lines.unshift(`var ${signals.popup.popupAlias} = await ${pageAlias}.RunAndWaitForPopupAsync(async () =>\n{`);
83
+ lines.unshift(`var ${this._formatPageAlias(signals.popup.popupAlias)} = await ${pageAlias}.RunAndWaitForPopupAsync(async () =>
84
+ {`);
83
85
  lines.push(`});`);
84
86
  }
85
- for (const line of lines) formatter.add(line);
87
+ for (const line of lines)
88
+ formatter.add(line);
86
89
  return formatter.format();
87
90
  }
91
+ _formatPageAlias(pageAlias) {
92
+ if (this._mode === "library")
93
+ return pageAlias;
94
+ if (pageAlias === "page")
95
+ return "Page";
96
+ return pageAlias;
97
+ }
88
98
  _generateActionCall(subject, actionInContext) {
89
99
  const action = actionInContext.action;
90
100
  switch (action.name) {
91
- case 'openPage':
92
- throw Error('Not reached');
93
- case 'closePage':
101
+ case "openPage":
102
+ throw Error("Not reached");
103
+ case "closePage":
94
104
  return `await ${subject}.CloseAsync();`;
95
- case 'click':
96
- {
97
- let method = 'Click';
98
- if (action.clickCount === 2) method = 'DblClick';
99
- const options = (0, _language.toClickOptionsForSourceCode)(action);
100
- if (!Object.entries(options).length) return `await ${subject}.${this._asLocator(action.selector)}.${method}Async();`;
101
- const optionsString = formatObject(options, ' ', 'Locator' + method + 'Options');
102
- return `await ${subject}.${this._asLocator(action.selector)}.${method}Async(${optionsString});`;
103
- }
104
- case 'check':
105
+ case "click": {
106
+ let method = "Click";
107
+ if (action.clickCount === 2)
108
+ method = "DblClick";
109
+ const options = (0, import_language.toClickOptionsForSourceCode)(action);
110
+ if (!Object.entries(options).length)
111
+ return `await ${subject}.${this._asLocator(action.selector)}.${method}Async();`;
112
+ const optionsString = formatObject(options, " ", "Locator" + method + "Options");
113
+ return `await ${subject}.${this._asLocator(action.selector)}.${method}Async(${optionsString});`;
114
+ }
115
+ case "check":
105
116
  return `await ${subject}.${this._asLocator(action.selector)}.CheckAsync();`;
106
- case 'uncheck':
117
+ case "uncheck":
107
118
  return `await ${subject}.${this._asLocator(action.selector)}.UncheckAsync();`;
108
- case 'fill':
119
+ case "fill":
109
120
  return `await ${subject}.${this._asLocator(action.selector)}.FillAsync(${quote(action.text)});`;
110
- case 'setInputFiles':
121
+ case "setInputFiles":
111
122
  return `await ${subject}.${this._asLocator(action.selector)}.SetInputFilesAsync(${formatObject(action.files)});`;
112
- case 'press':
113
- {
114
- const modifiers = (0, _language.toKeyboardModifiers)(action.modifiers);
115
- const shortcut = [...modifiers, action.key].join('+');
116
- return `await ${subject}.${this._asLocator(action.selector)}.PressAsync(${quote(shortcut)});`;
117
- }
118
- case 'navigate':
123
+ case "press": {
124
+ const modifiers = (0, import_language.toKeyboardModifiers)(action.modifiers);
125
+ const shortcut = [...modifiers, action.key].join("+");
126
+ return `await ${subject}.${this._asLocator(action.selector)}.PressAsync(${quote(shortcut)});`;
127
+ }
128
+ case "navigate":
119
129
  return `await ${subject}.GotoAsync(${quote(action.url)});`;
120
- case 'select':
130
+ case "select":
121
131
  return `await ${subject}.${this._asLocator(action.selector)}.SelectOptionAsync(${formatObject(action.options)});`;
122
- case 'assertText':
123
- return `await Expect(${subject}.${this._asLocator(action.selector)}).${action.substring ? 'ToContainTextAsync' : 'ToHaveTextAsync'}(${quote(action.text)});`;
124
- case 'assertChecked':
125
- return `await Expect(${subject}.${this._asLocator(action.selector)})${action.checked ? '' : '.Not'}.ToBeCheckedAsync();`;
126
- case 'assertVisible':
132
+ case "assertText":
133
+ return `await Expect(${subject}.${this._asLocator(action.selector)}).${action.substring ? "ToContainTextAsync" : "ToHaveTextAsync"}(${quote(action.text)});`;
134
+ case "assertChecked":
135
+ return `await Expect(${subject}.${this._asLocator(action.selector)})${action.checked ? "" : ".Not"}.ToBeCheckedAsync();`;
136
+ case "assertVisible":
127
137
  return `await Expect(${subject}.${this._asLocator(action.selector)}).ToBeVisibleAsync();`;
128
- case 'assertValue':
129
- {
130
- const assertion = action.value ? `ToHaveValueAsync(${quote(action.value)})` : `ToBeEmptyAsync()`;
131
- return `await Expect(${subject}.${this._asLocator(action.selector)}).${assertion};`;
132
- }
133
- case 'assertSnapshot':
134
- return `await Expect(${subject}.${this._asLocator(action.selector)}).ToMatchAriaSnapshotAsync(${quote(action.snapshot)});`;
138
+ case "assertValue": {
139
+ const assertion = action.value ? `ToHaveValueAsync(${quote(action.value)})` : `ToBeEmptyAsync()`;
140
+ return `await Expect(${subject}.${this._asLocator(action.selector)}).${assertion};`;
141
+ }
142
+ case "assertSnapshot":
143
+ return `await Expect(${subject}.${this._asLocator(action.selector)}).ToMatchAriaSnapshotAsync(${quote(action.ariaSnapshot)});`;
135
144
  }
136
145
  }
137
146
  _asLocator(selector) {
138
- return (0, _utils.asLocator)('csharp', selector);
147
+ return (0, import_utils.asLocator)("csharp", selector);
139
148
  }
140
149
  generateHeader(options) {
141
- if (this._mode === 'library') return this.generateStandaloneHeader(options);
150
+ if (this._mode === "library")
151
+ return this.generateStandaloneHeader(options);
142
152
  return this.generateTestRunnerHeader(options);
143
153
  }
144
154
  generateStandaloneHeader(options) {
@@ -149,13 +159,11 @@ class CSharpLanguageGenerator {
149
159
  using System.Threading.Tasks;
150
160
 
151
161
  using var playwright = await Playwright.CreateAsync();
152
- await using var browser = await playwright.${toPascal(options.browserName)}.LaunchAsync(${formatObject(options.launchOptions, ' ', 'BrowserTypeLaunchOptions')});
162
+ await using var browser = await playwright.${toPascal(options.browserName)}.LaunchAsync(${formatObject(options.launchOptions, " ", "BrowserTypeLaunchOptions")});
153
163
  var context = await browser.NewContextAsync(${formatContextOptions(options.contextOptions, options.deviceName)});`);
154
164
  if (options.contextOptions.recordHar) {
155
165
  const url = options.contextOptions.recordHar.urlFilter;
156
- formatter.add(` await context.RouteFromHARAsync(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatObject({
157
- url
158
- }, ' ', 'BrowserContextRouteFromHAROptions')}` : ''});`);
166
+ formatter.add(` await context.RouteFromHARAsync(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatObject({ url }, " ", "BrowserContextRouteFromHAROptions")}` : ""});`);
159
167
  }
160
168
  formatter.newLine();
161
169
  return formatter.format();
@@ -163,11 +171,11 @@ class CSharpLanguageGenerator {
163
171
  generateTestRunnerHeader(options) {
164
172
  const formatter = new CSharpFormatter(0);
165
173
  formatter.add(`
166
- using Microsoft.Playwright.${this._mode === 'nunit' ? 'NUnit' : 'MSTest'};
174
+ using Microsoft.Playwright.${this._mode === "nunit" ? "NUnit" : "MSTest"};
167
175
  using Microsoft.Playwright;
168
176
 
169
- ${this._mode === 'nunit' ? `[Parallelizable(ParallelScope.Self)]
170
- [TestFixture]` : '[TestClass]'}
177
+ ${this._mode === "nunit" ? `[Parallelizable(ParallelScope.Self)]
178
+ [TestFixture]` : "[TestClass]"}
171
179
  public class Tests : PageTest
172
180
  {`);
173
181
  const formattedContextOptions = formatContextOptions(options.contextOptions, options.deviceName);
@@ -178,73 +186,90 @@ class CSharpLanguageGenerator {
178
186
  }`);
179
187
  formatter.newLine();
180
188
  }
181
- formatter.add(` [${this._mode === 'nunit' ? 'Test' : 'TestMethod'}]
189
+ formatter.add(` [${this._mode === "nunit" ? "Test" : "TestMethod"}]
182
190
  public async Task MyTest()
183
191
  {`);
184
192
  if (options.contextOptions.recordHar) {
185
193
  const url = options.contextOptions.recordHar.urlFilter;
186
- formatter.add(` await Context.RouteFromHARAsync(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatObject({
187
- url
188
- }, ' ', 'BrowserContextRouteFromHAROptions')}` : ''});`);
194
+ formatter.add(` await Context.RouteFromHARAsync(${quote(options.contextOptions.recordHar.path)}${url ? `, ${formatObject({ url }, " ", "BrowserContextRouteFromHAROptions")}` : ""});`);
189
195
  }
190
196
  return formatter.format();
191
197
  }
192
198
  generateFooter(saveStorage) {
193
- const offset = this._mode === 'library' ? '' : ' ';
194
- let storageStateLine = saveStorage ? `\n${offset}await context.StorageStateAsync(new BrowserContextStorageStateOptions\n${offset}{\n${offset} Path = ${quote(saveStorage)}\n${offset}});\n` : '';
195
- if (this._mode !== 'library') storageStateLine += ` }\n}\n`;
199
+ const offset = this._mode === "library" ? "" : " ";
200
+ let storageStateLine = saveStorage ? `
201
+ ${offset}await context.StorageStateAsync(new BrowserContextStorageStateOptions
202
+ ${offset}{
203
+ ${offset} Path = ${quote(saveStorage)}
204
+ ${offset}});
205
+ ` : "";
206
+ if (this._mode !== "library")
207
+ storageStateLine += ` }
208
+ }
209
+ `;
196
210
  return storageStateLine;
197
211
  }
198
212
  }
199
- exports.CSharpLanguageGenerator = CSharpLanguageGenerator;
200
- function formatObject(value, indent = ' ', name = '') {
201
- if (typeof value === 'string') {
202
- if (['permissions', 'colorScheme', 'modifiers', 'button', 'recordHarContent', 'recordHarMode', 'serviceWorkers'].includes(name)) return `${getClassName(name)}.${toPascal(value)}`;
213
+ function formatObject(value, indent = " ", name = "") {
214
+ if (typeof value === "string") {
215
+ if (["permissions", "colorScheme", "modifiers", "button", "recordHarContent", "recordHarMode", "serviceWorkers"].includes(name))
216
+ return `${getClassName(name)}.${toPascal(value)}`;
203
217
  return quote(value);
204
218
  }
205
- if (Array.isArray(value)) return `new[] { ${value.map(o => formatObject(o, indent, name)).join(', ')} }`;
206
- if (typeof value === 'object') {
207
- const keys = Object.keys(value).filter(key => value[key] !== undefined).sort();
208
- if (!keys.length) return name ? `new ${getClassName(name)}` : '';
219
+ if (Array.isArray(value))
220
+ return `new[] { ${value.map((o) => formatObject(o, indent, name)).join(", ")} }`;
221
+ if (typeof value === "object") {
222
+ const keys = Object.keys(value).filter((key) => value[key] !== void 0).sort();
223
+ if (!keys.length)
224
+ return name ? `new ${getClassName(name)}` : "";
209
225
  const tokens = [];
210
226
  for (const key of keys) {
211
227
  const property = getPropertyName(key);
212
228
  tokens.push(`${property} = ${formatObject(value[key], indent, key)},`);
213
229
  }
214
- if (name) return `new ${getClassName(name)}\n{\n${indent}${tokens.join(`\n${indent}`)}\n${indent}}`;
215
- return `{\n${indent}${tokens.join(`\n${indent}`)}\n${indent}}`;
230
+ if (name)
231
+ return `new ${getClassName(name)}
232
+ {
233
+ ${indent}${tokens.join(`
234
+ ${indent}`)}
235
+ ${indent}}`;
236
+ return `{
237
+ ${indent}${tokens.join(`
238
+ ${indent}`)}
239
+ ${indent}}`;
216
240
  }
217
- if (name === 'latitude' || name === 'longitude') return String(value) + 'm';
241
+ if (name === "latitude" || name === "longitude")
242
+ return String(value) + "m";
218
243
  return String(value);
219
244
  }
220
245
  function getClassName(value) {
221
246
  switch (value) {
222
- case 'viewport':
223
- return 'ViewportSize';
224
- case 'proxy':
225
- return 'ProxySettings';
226
- case 'permissions':
227
- return 'ContextPermission';
228
- case 'modifiers':
229
- return 'KeyboardModifier';
230
- case 'button':
231
- return 'MouseButton';
232
- case 'recordHarMode':
233
- return 'HarMode';
234
- case 'recordHarContent':
235
- return 'HarContentPolicy';
236
- case 'serviceWorkers':
237
- return 'ServiceWorkerPolicy';
247
+ case "viewport":
248
+ return "ViewportSize";
249
+ case "proxy":
250
+ return "ProxySettings";
251
+ case "permissions":
252
+ return "ContextPermission";
253
+ case "modifiers":
254
+ return "KeyboardModifier";
255
+ case "button":
256
+ return "MouseButton";
257
+ case "recordHarMode":
258
+ return "HarMode";
259
+ case "recordHarContent":
260
+ return "HarContentPolicy";
261
+ case "serviceWorkers":
262
+ return "ServiceWorkerPolicy";
238
263
  default:
239
264
  return toPascal(value);
240
265
  }
241
266
  }
242
267
  function getPropertyName(key) {
243
268
  switch (key) {
244
- case 'storageState':
245
- return 'StorageStatePath';
246
- case 'viewport':
247
- return 'ViewportSize';
269
+ case "storageState":
270
+ return "StorageStatePath";
271
+ case "viewport":
272
+ return "ViewportSize";
248
273
  default:
249
274
  return toPascal(key);
250
275
  }
@@ -253,52 +278,57 @@ function toPascal(value) {
253
278
  return value[0].toUpperCase() + value.slice(1);
254
279
  }
255
280
  function formatContextOptions(contextOptions, deviceName) {
256
- let options = {
257
- ...contextOptions
258
- };
259
- // recordHAR is replaced with routeFromHAR in the generated code.
281
+ let options = { ...contextOptions };
260
282
  delete options.recordHar;
261
- const device = deviceName && _deviceDescriptors.deviceDescriptors[deviceName];
283
+ const device = deviceName && import_deviceDescriptors.deviceDescriptors[deviceName];
262
284
  if (!device) {
263
- if (!Object.entries(options).length) return '';
264
- return formatObject(options, ' ', 'BrowserNewContextOptions');
285
+ if (!Object.entries(options).length)
286
+ return "";
287
+ return formatObject(options, " ", "BrowserNewContextOptions");
265
288
  }
266
- options = (0, _language.sanitizeDeviceOptions)(device, options);
267
- if (!Object.entries(options).length) return `playwright.Devices[${quote(deviceName)}]`;
268
- return formatObject(options, ' ', `BrowserNewContextOptions(playwright.Devices[${quote(deviceName)}])`);
289
+ options = (0, import_language.sanitizeDeviceOptions)(device, options);
290
+ if (!Object.entries(options).length)
291
+ return `playwright.Devices[${quote(deviceName)}]`;
292
+ return formatObject(options, " ", `BrowserNewContextOptions(playwright.Devices[${quote(deviceName)}])`);
269
293
  }
270
294
  class CSharpFormatter {
271
295
  constructor(offset = 0) {
272
- this._baseIndent = void 0;
273
- this._baseOffset = void 0;
274
296
  this._lines = [];
275
- this._baseIndent = ' '.repeat(4);
276
- this._baseOffset = ' '.repeat(offset);
297
+ this._baseIndent = " ".repeat(4);
298
+ this._baseOffset = " ".repeat(offset);
277
299
  }
278
300
  prepend(text) {
279
- this._lines = text.trim().split('\n').map(line => line.trim()).concat(this._lines);
301
+ this._lines = text.trim().split("\n").map((line) => line.trim()).concat(this._lines);
280
302
  }
281
303
  add(text) {
282
- this._lines.push(...text.trim().split('\n').map(line => line.trim()));
304
+ this._lines.push(...text.trim().split("\n").map((line) => line.trim()));
283
305
  }
284
306
  newLine() {
285
- this._lines.push('');
307
+ this._lines.push("");
286
308
  }
287
309
  format() {
288
- let spaces = '';
289
- let previousLine = '';
290
- return this._lines.map(line => {
291
- if (line === '') return line;
292
- if (line.startsWith('}') || line.startsWith(']') || line.includes('});') || line === ');') spaces = spaces.substring(this._baseIndent.length);
293
- const extraSpaces = /^(for|while|if).*\(.*\)$/.test(previousLine) ? this._baseIndent : '';
310
+ let spaces = "";
311
+ let previousLine = "";
312
+ return this._lines.map((line) => {
313
+ if (line === "")
314
+ return line;
315
+ if (line.startsWith("}") || line.startsWith("]") || line.includes("});") || line === ");")
316
+ spaces = spaces.substring(this._baseIndent.length);
317
+ const extraSpaces = /^(for|while|if).*\(.*\)$/.test(previousLine) ? this._baseIndent : "";
294
318
  previousLine = line;
295
319
  line = spaces + extraSpaces + line;
296
- if (line.endsWith('{') || line.endsWith('[') || line.endsWith('(')) spaces += this._baseIndent;
297
- if (line.endsWith('));')) spaces = spaces.substring(this._baseIndent.length);
320
+ if (line.endsWith("{") || line.endsWith("[") || line.endsWith("("))
321
+ spaces += this._baseIndent;
322
+ if (line.endsWith("));"))
323
+ spaces = spaces.substring(this._baseIndent.length);
298
324
  return this._baseOffset + line;
299
- }).join('\n');
325
+ }).join("\n");
300
326
  }
301
327
  }
302
328
  function quote(text) {
303
- return (0, _utils.escapeWithQuotes)(text, '\"');
304
- }
329
+ return (0, import_utils.escapeWithQuotes)(text, '"');
330
+ }
331
+ // Annotate the CommonJS export names for ESM import in node:
332
+ 0 && (module.exports = {
333
+ CSharpLanguageGenerator
334
+ });