@checkly/playwright-core 1.51.17-beta.2 → 1.54.2-beta.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 (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 -35
  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 +89 -112
  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-B9YMkrwa.js +0 -24
  345. package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
  346. package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  347. package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
  348. package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
  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-gU1OOCQO.js +0 -24
  352. package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
  353. package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
  354. package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
  355. package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
  356. package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
  357. package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  358. package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
  359. package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
  362. package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
  363. package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
  364. package/lib/vite/traceViewer/index.html +0 -47
  365. package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
  366. package/lib/vite/traceViewer/playwright-logo.svg +0 -9
  367. package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
  368. package/lib/vite/traceViewer/recorder.html +0 -17
  369. package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
  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.BatfzHMG.css +0 -1
  373. package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
  374. package/lib/vite/traceViewer/uiMode.html +0 -21
  375. package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
  376. package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
@@ -1,268 +1,274 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ffPage_exports = {};
30
+ __export(ffPage_exports, {
31
+ FFPage: () => FFPage,
32
+ UTILITY_WORLD_NAME: () => UTILITY_WORLD_NAME
5
33
  });
6
- exports.UTILITY_WORLD_NAME = exports.FFPage = void 0;
7
- var _eventsHelper = require("../utils/eventsHelper");
8
- var dialog = _interopRequireWildcard(require("../dialog"));
9
- var dom = _interopRequireWildcard(require("../dom"));
10
- var _page = require("../page");
11
- var _ffAccessibility = require("./ffAccessibility");
12
- var _ffConnection = require("./ffConnection");
13
- var _ffExecutionContext = require("./ffExecutionContext");
14
- var _ffInput = require("./ffInput");
15
- var _ffNetworkManager = require("./ffNetworkManager");
16
- var _debugLogger = require("../utils/debugLogger");
17
- var _stackTrace = require("../../utils/isomorphic/stackTrace");
18
- var _browserContext = require("../browserContext");
19
- var _errors = require("../errors");
20
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
- /**
23
- * Copyright 2019 Google Inc. All rights reserved.
24
- * Modifications copyright (c) Microsoft Corporation.
25
- *
26
- * Licensed under the Apache License, Version 2.0 (the "License");
27
- * you may not use this file except in compliance with the License.
28
- * You may obtain a copy of the License at
29
- *
30
- * http://www.apache.org/licenses/LICENSE-2.0
31
- *
32
- * Unless required by applicable law or agreed to in writing, software
33
- * distributed under the License is distributed on an "AS IS" BASIS,
34
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
35
- * See the License for the specific language governing permissions and
36
- * limitations under the License.
37
- */
38
-
39
- const UTILITY_WORLD_NAME = exports.UTILITY_WORLD_NAME = '__playwright_utility_world__';
34
+ module.exports = __toCommonJS(ffPage_exports);
35
+ var import_eventsHelper = require("../utils/eventsHelper");
36
+ var dialog = __toESM(require("../dialog"));
37
+ var dom = __toESM(require("../dom"));
38
+ var import_page = require("../page");
39
+ var import_page2 = require("../page");
40
+ var import_ffAccessibility = require("./ffAccessibility");
41
+ var import_ffConnection = require("./ffConnection");
42
+ var import_ffExecutionContext = require("./ffExecutionContext");
43
+ var import_ffInput = require("./ffInput");
44
+ var import_ffNetworkManager = require("./ffNetworkManager");
45
+ var import_debugLogger = require("../utils/debugLogger");
46
+ var import_stackTrace = require("../../utils/isomorphic/stackTrace");
47
+ var import_browserContext = require("../browserContext");
48
+ var import_errors = require("../errors");
49
+ const UTILITY_WORLD_NAME = "__playwright_utility_world__";
40
50
  class FFPage {
41
51
  constructor(session, browserContext, opener) {
42
52
  this.cspErrorsAsynchronousForInlineScripts = true;
43
- this.rawMouse = void 0;
44
- this.rawKeyboard = void 0;
45
- this.rawTouchscreen = void 0;
46
- this._session = void 0;
47
- this._page = void 0;
48
- this._networkManager = void 0;
49
- this._browserContext = void 0;
50
53
  this._reportedAsNew = false;
51
- this._opener = void 0;
52
- this._contextIdToContext = void 0;
53
- this._eventListeners = void 0;
54
- this._workers = new Map();
55
- this._screencastId = void 0;
54
+ this._workers = /* @__PURE__ */ new Map();
56
55
  this._initScripts = [];
57
56
  this._session = session;
58
57
  this._opener = opener;
59
- this.rawKeyboard = new _ffInput.RawKeyboardImpl(session);
60
- this.rawMouse = new _ffInput.RawMouseImpl(session);
61
- this.rawTouchscreen = new _ffInput.RawTouchscreenImpl(session);
62
- this._contextIdToContext = new Map();
58
+ this.rawKeyboard = new import_ffInput.RawKeyboardImpl(session);
59
+ this.rawMouse = new import_ffInput.RawMouseImpl(session);
60
+ this.rawTouchscreen = new import_ffInput.RawTouchscreenImpl(session);
61
+ this._contextIdToContext = /* @__PURE__ */ new Map();
63
62
  this._browserContext = browserContext;
64
- this._page = new _page.Page(this, browserContext);
63
+ this._page = new import_page2.Page(this, browserContext);
65
64
  this.rawMouse.setPage(this._page);
66
- this._networkManager = new _ffNetworkManager.FFNetworkManager(session, this._page);
67
- this._page.on(_page.Page.Events.FrameDetached, frame => this._removeContextsForFrame(frame));
68
- // TODO: remove Page.willOpenNewWindowAsynchronously from the protocol.
69
- this._eventListeners = [_eventsHelper.eventsHelper.addEventListener(this._session, 'Page.eventFired', this._onEventFired.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameAttached', this._onFrameAttached.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.frameDetached', this._onFrameDetached.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.navigationAborted', this._onNavigationAborted.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.navigationCommitted', this._onNavigationCommitted.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.navigationStarted', this._onNavigationStarted.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.sameDocumentNavigation', this._onSameDocumentNavigation.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.executionContextCreated', this._onExecutionContextCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.executionContextDestroyed', this._onExecutionContextDestroyed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.executionContextsCleared', this._onExecutionContextsCleared.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.linkClicked', event => this._onLinkClicked(event.phase)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.uncaughtError', this._onUncaughtError.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Runtime.console', this._onConsole.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.dialogOpened', this._onDialogOpened.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.bindingCalled', this._onBindingCalled.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.fileChooserOpened', this._onFileChooserOpened.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.workerCreated', this._onWorkerCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.workerDestroyed', this._onWorkerDestroyed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.dispatchMessageFromWorker', this._onDispatchMessageFromWorker.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.crashed', this._onCrashed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.videoRecordingStarted', this._onVideoRecordingStarted.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.webSocketCreated', this._onWebSocketCreated.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.webSocketClosed', this._onWebSocketClosed.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.webSocketFrameReceived', this._onWebSocketFrameReceived.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.webSocketFrameSent', this._onWebSocketFrameSent.bind(this)), _eventsHelper.eventsHelper.addEventListener(this._session, 'Page.screencastFrame', this._onScreencastFrame.bind(this))];
70
- this._session.once('Page.ready', () => {
71
- var _this$_opener;
72
- if (this._reportedAsNew) return;
65
+ this._networkManager = new import_ffNetworkManager.FFNetworkManager(session, this._page);
66
+ this._page.on(import_page2.Page.Events.FrameDetached, (frame) => this._removeContextsForFrame(frame));
67
+ this._eventListeners = [
68
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.eventFired", this._onEventFired.bind(this)),
69
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameAttached", this._onFrameAttached.bind(this)),
70
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.frameDetached", this._onFrameDetached.bind(this)),
71
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.navigationAborted", this._onNavigationAborted.bind(this)),
72
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.navigationCommitted", this._onNavigationCommitted.bind(this)),
73
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.navigationStarted", this._onNavigationStarted.bind(this)),
74
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.sameDocumentNavigation", this._onSameDocumentNavigation.bind(this)),
75
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.executionContextCreated", this._onExecutionContextCreated.bind(this)),
76
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.executionContextDestroyed", this._onExecutionContextDestroyed.bind(this)),
77
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.executionContextsCleared", this._onExecutionContextsCleared.bind(this)),
78
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.linkClicked", (event) => this._onLinkClicked(event.phase)),
79
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.uncaughtError", this._onUncaughtError.bind(this)),
80
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Runtime.console", this._onConsole.bind(this)),
81
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.dialogOpened", this._onDialogOpened.bind(this)),
82
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.bindingCalled", this._onBindingCalled.bind(this)),
83
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.fileChooserOpened", this._onFileChooserOpened.bind(this)),
84
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.workerCreated", this._onWorkerCreated.bind(this)),
85
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.workerDestroyed", this._onWorkerDestroyed.bind(this)),
86
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.dispatchMessageFromWorker", this._onDispatchMessageFromWorker.bind(this)),
87
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.crashed", this._onCrashed.bind(this)),
88
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.videoRecordingStarted", this._onVideoRecordingStarted.bind(this)),
89
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.webSocketCreated", this._onWebSocketCreated.bind(this)),
90
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.webSocketClosed", this._onWebSocketClosed.bind(this)),
91
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.webSocketFrameReceived", this._onWebSocketFrameReceived.bind(this)),
92
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.webSocketFrameSent", this._onWebSocketFrameSent.bind(this)),
93
+ import_eventsHelper.eventsHelper.addEventListener(this._session, "Page.screencastFrame", this._onScreencastFrame.bind(this))
94
+ ];
95
+ this._session.once("Page.ready", () => {
96
+ if (this._reportedAsNew)
97
+ return;
73
98
  this._reportedAsNew = true;
74
- this._page.reportAsNew((_this$_opener = this._opener) === null || _this$_opener === void 0 ? void 0 : _this$_opener._page);
99
+ this._page.reportAsNew(this._opener?._page);
75
100
  });
76
- // Ideally, we somehow ensure that utility world is created before Page.ready arrives, but currently it is racy.
77
- // Therefore, we can end up with an initialized page without utility world, although very unlikely.
78
- this.addInitScript(new _page.InitScript('', true), UTILITY_WORLD_NAME).catch(e => this._markAsError(e));
101
+ this.addInitScript(new import_page.InitScript(""), UTILITY_WORLD_NAME).catch((e) => this._markAsError(e));
79
102
  }
80
103
  async _markAsError(error) {
81
- var _this$_opener2;
82
- // Same error may be reported twice: channel disconnected and session.send fails.
83
- if (this._reportedAsNew) return;
104
+ if (this._reportedAsNew)
105
+ return;
84
106
  this._reportedAsNew = true;
85
- this._page.reportAsNew((_this$_opener2 = this._opener) === null || _this$_opener2 === void 0 ? void 0 : _this$_opener2._page, error);
107
+ this._page.reportAsNew(this._opener?._page, error);
86
108
  }
87
109
  _onWebSocketCreated(event) {
88
- this._page._frameManager.onWebSocketCreated(webSocketId(event.frameId, event.wsid), event.requestURL);
89
- this._page._frameManager.onWebSocketRequest(webSocketId(event.frameId, event.wsid));
110
+ this._page.frameManager.onWebSocketCreated(webSocketId(event.frameId, event.wsid), event.requestURL);
111
+ this._page.frameManager.onWebSocketRequest(webSocketId(event.frameId, event.wsid));
90
112
  }
91
113
  _onWebSocketClosed(event) {
92
- if (event.error) this._page._frameManager.webSocketError(webSocketId(event.frameId, event.wsid), event.error);
93
- this._page._frameManager.webSocketClosed(webSocketId(event.frameId, event.wsid));
114
+ if (event.error)
115
+ this._page.frameManager.webSocketError(webSocketId(event.frameId, event.wsid), event.error);
116
+ this._page.frameManager.webSocketClosed(webSocketId(event.frameId, event.wsid));
94
117
  }
95
118
  _onWebSocketFrameReceived(event) {
96
- this._page._frameManager.webSocketFrameReceived(webSocketId(event.frameId, event.wsid), event.opcode, event.data);
119
+ this._page.frameManager.webSocketFrameReceived(webSocketId(event.frameId, event.wsid), event.opcode, event.data);
97
120
  }
98
121
  _onWebSocketFrameSent(event) {
99
- this._page._frameManager.onWebSocketFrameSent(webSocketId(event.frameId, event.wsid), event.opcode, event.data);
122
+ this._page.frameManager.onWebSocketFrameSent(webSocketId(event.frameId, event.wsid), event.opcode, event.data);
100
123
  }
101
124
  _onExecutionContextCreated(payload) {
102
- const {
103
- executionContextId,
104
- auxData
105
- } = payload;
106
- const frame = this._page._frameManager.frame(auxData.frameId);
107
- if (!frame) return;
108
- const delegate = new _ffExecutionContext.FFExecutionContext(this._session, executionContextId);
125
+ const { executionContextId, auxData } = payload;
126
+ const frame = this._page.frameManager.frame(auxData.frameId);
127
+ if (!frame)
128
+ return;
129
+ const delegate = new import_ffExecutionContext.FFExecutionContext(this._session, executionContextId);
109
130
  let worldName;
110
- if (auxData.name === UTILITY_WORLD_NAME) worldName = 'utility';else if (!auxData.name) worldName = 'main';else return;
131
+ if (auxData.name === UTILITY_WORLD_NAME)
132
+ worldName = "utility";
133
+ else if (!auxData.name)
134
+ worldName = "main";
135
+ else
136
+ return;
111
137
  const context = new dom.FrameExecutionContext(delegate, frame, worldName);
112
- if (worldName) frame._contextCreated(worldName, context);
138
+ if (worldName)
139
+ frame._contextCreated(worldName, context);
113
140
  this._contextIdToContext.set(executionContextId, context);
114
141
  }
115
142
  _onExecutionContextDestroyed(payload) {
116
- const {
117
- executionContextId
118
- } = payload;
143
+ const { executionContextId } = payload;
119
144
  const context = this._contextIdToContext.get(executionContextId);
120
- if (!context) return;
145
+ if (!context)
146
+ return;
121
147
  this._contextIdToContext.delete(executionContextId);
122
148
  context.frame._contextDestroyed(context);
123
149
  }
124
150
  _onExecutionContextsCleared() {
125
- for (const executionContextId of Array.from(this._contextIdToContext.keys())) this._onExecutionContextDestroyed({
126
- executionContextId
127
- });
151
+ for (const executionContextId of Array.from(this._contextIdToContext.keys()))
152
+ this._onExecutionContextDestroyed({ executionContextId });
128
153
  }
129
154
  _removeContextsForFrame(frame) {
130
155
  for (const [contextId, context] of this._contextIdToContext) {
131
- if (context.frame === frame) this._contextIdToContext.delete(contextId);
156
+ if (context.frame === frame)
157
+ this._contextIdToContext.delete(contextId);
132
158
  }
133
159
  }
134
160
  _onLinkClicked(phase) {
135
- if (phase === 'before') this._page._frameManager.frameWillPotentiallyRequestNavigation();else this._page._frameManager.frameDidPotentiallyRequestNavigation();
161
+ if (phase === "before")
162
+ this._page.frameManager.frameWillPotentiallyRequestNavigation();
163
+ else
164
+ this._page.frameManager.frameDidPotentiallyRequestNavigation();
136
165
  }
137
166
  _onNavigationStarted(params) {
138
- this._page._frameManager.frameRequestedNavigation(params.frameId, params.navigationId);
167
+ this._page.frameManager.frameRequestedNavigation(params.frameId, params.navigationId);
139
168
  }
140
169
  _onNavigationAborted(params) {
141
- this._page._frameManager.frameAbortedNavigation(params.frameId, params.errorText, params.navigationId);
170
+ this._page.frameManager.frameAbortedNavigation(params.frameId, params.errorText, params.navigationId);
142
171
  }
143
172
  _onNavigationCommitted(params) {
144
173
  for (const [workerId, worker] of this._workers) {
145
- if (worker.frameId === params.frameId) this._onWorkerDestroyed({
146
- workerId
147
- });
174
+ if (worker.frameId === params.frameId)
175
+ this._onWorkerDestroyed({ workerId });
148
176
  }
149
- this._page._frameManager.frameCommittedNewDocumentNavigation(params.frameId, params.url, params.name || '', params.navigationId || '', false);
177
+ this._page.frameManager.frameCommittedNewDocumentNavigation(params.frameId, params.url, params.name || "", params.navigationId || "", false);
150
178
  }
151
179
  _onSameDocumentNavigation(params) {
152
- this._page._frameManager.frameCommittedSameDocumentNavigation(params.frameId, params.url);
180
+ this._page.frameManager.frameCommittedSameDocumentNavigation(params.frameId, params.url);
153
181
  }
154
182
  _onFrameAttached(params) {
155
- this._page._frameManager.frameAttached(params.frameId, params.parentFrameId);
183
+ this._page.frameManager.frameAttached(params.frameId, params.parentFrameId);
156
184
  }
157
185
  _onFrameDetached(params) {
158
- this._page._frameManager.frameDetached(params.frameId);
186
+ this._page.frameManager.frameDetached(params.frameId);
159
187
  }
160
188
  _onEventFired(payload) {
161
- const {
162
- frameId,
163
- name
164
- } = payload;
165
- if (name === 'load') this._page._frameManager.frameLifecycleEvent(frameId, 'load');
166
- if (name === 'DOMContentLoaded') this._page._frameManager.frameLifecycleEvent(frameId, 'domcontentloaded');
189
+ const { frameId, name } = payload;
190
+ if (name === "load")
191
+ this._page.frameManager.frameLifecycleEvent(frameId, "load");
192
+ if (name === "DOMContentLoaded")
193
+ this._page.frameManager.frameLifecycleEvent(frameId, "domcontentloaded");
167
194
  }
168
195
  _onUncaughtError(params) {
169
- const {
170
- name,
171
- message
172
- } = (0, _stackTrace.splitErrorMessage)(params.message);
196
+ const { name, message } = (0, import_stackTrace.splitErrorMessage)(params.message);
173
197
  const error = new Error(message);
174
- error.stack = params.message + '\n' + params.stack.split('\n').filter(Boolean).map(a => a.replace(/([^@]*)@(.*)/, ' at $1 ($2)')).join('\n');
198
+ error.stack = params.message + "\n" + params.stack.split("\n").filter(Boolean).map((a) => a.replace(/([^@]*)@(.*)/, " at $1 ($2)")).join("\n");
175
199
  error.name = name;
176
- this._page.emitOnContextOnceInitialized(_browserContext.BrowserContext.Events.PageError, error, this._page);
200
+ this._page.emitOnContextOnceInitialized(import_browserContext.BrowserContext.Events.PageError, error, this._page);
177
201
  }
178
202
  _onConsole(payload) {
179
- const {
180
- type,
181
- args,
182
- executionContextId,
183
- location
184
- } = payload;
203
+ const { type, args, executionContextId, location } = payload;
185
204
  const context = this._contextIdToContext.get(executionContextId);
186
- if (!context) return;
187
- // Juggler reports 'warn' for some internal messages generated by the browser.
188
- this._page._addConsoleMessage(type === 'warn' ? 'warning' : type, args.map(arg => (0, _ffExecutionContext.createHandle)(context, arg)), location);
205
+ if (!context)
206
+ return;
207
+ this._page.addConsoleMessage(type === "warn" ? "warning" : type, args.map((arg) => (0, import_ffExecutionContext.createHandle)(context, arg)), location);
189
208
  }
190
209
  _onDialogOpened(params) {
191
- this._page.emitOnContext(_browserContext.BrowserContext.Events.Dialog, new dialog.Dialog(this._page, params.type, params.message, async (accept, promptText) => {
192
- await this._session.sendMayFail('Page.handleDialog', {
193
- dialogId: params.dialogId,
194
- accept,
195
- promptText
196
- });
197
- }, params.defaultValue));
210
+ this._page.browserContext.dialogManager.dialogDidOpen(new dialog.Dialog(
211
+ this._page,
212
+ params.type,
213
+ params.message,
214
+ async (accept, promptText) => {
215
+ await this._session.sendMayFail("Page.handleDialog", { dialogId: params.dialogId, accept, promptText });
216
+ },
217
+ params.defaultValue
218
+ ));
198
219
  }
199
220
  async _onBindingCalled(event) {
200
221
  const pageOrError = await this._page.waitForInitializedOrError();
201
222
  if (!(pageOrError instanceof Error)) {
202
223
  const context = this._contextIdToContext.get(event.executionContextId);
203
- if (context) await this._page._onBindingCalled(event.payload, context);
224
+ if (context)
225
+ await this._page.onBindingCalled(event.payload, context);
204
226
  }
205
227
  }
206
228
  async _onFileChooserOpened(payload) {
207
- const {
208
- executionContextId,
209
- element
210
- } = payload;
229
+ const { executionContextId, element } = payload;
211
230
  const context = this._contextIdToContext.get(executionContextId);
212
- if (!context) return;
213
- const handle = (0, _ffExecutionContext.createHandle)(context, element).asElement();
231
+ if (!context)
232
+ return;
233
+ const handle = (0, import_ffExecutionContext.createHandle)(context, element).asElement();
214
234
  await this._page._onFileChooserOpened(handle);
215
235
  }
216
236
  async _onWorkerCreated(event) {
217
237
  const workerId = event.workerId;
218
- const worker = new _page.Worker(this._page, event.url);
219
- const workerSession = new _ffConnection.FFSession(this._session._connection, workerId, message => {
220
- this._session.send('Page.sendMessageToWorker', {
238
+ const worker = new import_page2.Worker(this._page, event.url);
239
+ const workerSession = new import_ffConnection.FFSession(this._session._connection, workerId, (message) => {
240
+ this._session.send("Page.sendMessageToWorker", {
221
241
  frameId: event.frameId,
222
- workerId: workerId,
242
+ workerId,
223
243
  message: JSON.stringify(message)
224
- }).catch(e => {
225
- workerSession.dispatchMessage({
226
- id: message.id,
227
- method: '',
228
- params: {},
229
- error: {
230
- message: e.message,
231
- data: undefined
232
- }
233
- });
244
+ }).catch((e) => {
245
+ workerSession.dispatchMessage({ id: message.id, method: "", params: {}, error: { message: e.message, data: void 0 } });
234
246
  });
235
247
  });
236
- this._workers.set(workerId, {
237
- session: workerSession,
238
- frameId: event.frameId
248
+ this._workers.set(workerId, { session: workerSession, frameId: event.frameId });
249
+ this._page.addWorker(workerId, worker);
250
+ workerSession.once("Runtime.executionContextCreated", (event2) => {
251
+ worker.createExecutionContext(new import_ffExecutionContext.FFExecutionContext(workerSession, event2.executionContextId));
239
252
  });
240
- this._page._addWorker(workerId, worker);
241
- workerSession.once('Runtime.executionContextCreated', event => {
242
- worker._createExecutionContext(new _ffExecutionContext.FFExecutionContext(workerSession, event.executionContextId));
253
+ workerSession.on("Runtime.console", (event2) => {
254
+ const { type, args, location } = event2;
255
+ const context = worker.existingExecutionContext;
256
+ this._page.addConsoleMessage(type, args.map((arg) => (0, import_ffExecutionContext.createHandle)(context, arg)), location);
243
257
  });
244
- workerSession.on('Runtime.console', event => {
245
- const {
246
- type,
247
- args,
248
- location
249
- } = event;
250
- const context = worker._existingExecutionContext;
251
- this._page._addConsoleMessage(type, args.map(arg => (0, _ffExecutionContext.createHandle)(context, arg)), location);
252
- });
253
- // Note: we receive worker exceptions directly from the page.
254
258
  }
255
259
  _onWorkerDestroyed(event) {
256
260
  const workerId = event.workerId;
257
261
  const worker = this._workers.get(workerId);
258
- if (!worker) return;
262
+ if (!worker)
263
+ return;
259
264
  worker.session.dispose();
260
265
  this._workers.delete(workerId);
261
- this._page._removeWorker(workerId);
266
+ this._page.removeWorker(workerId);
262
267
  }
263
268
  async _onDispatchMessageFromWorker(event) {
264
269
  const worker = this._workers.get(event.workerId);
265
- if (!worker) return;
270
+ if (!worker)
271
+ return;
266
272
  worker.session.dispatchMessage(JSON.parse(event.message));
267
273
  }
268
274
  async _onCrashed(event) {
@@ -273,45 +279,35 @@ class FFPage {
273
279
  this._browserContext._browser._videoStarted(this._browserContext, event.screencastId, event.file, this._page.waitForInitializedOrError());
274
280
  }
275
281
  didClose() {
276
- this._markAsError(new _errors.TargetClosedError());
282
+ this._markAsError(new import_errors.TargetClosedError());
277
283
  this._session.dispose();
278
- _eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
284
+ import_eventsHelper.eventsHelper.removeEventListeners(this._eventListeners);
279
285
  this._networkManager.dispose();
280
286
  this._page._didClose();
281
287
  }
282
288
  async navigateFrame(frame, url, referer) {
283
- const response = await this._session.send('Page.navigate', {
284
- url,
285
- referer,
286
- frameId: frame._id
287
- });
288
- return {
289
- newDocumentId: response.navigationId || undefined
290
- };
289
+ const response = await this._session.send("Page.navigate", { url, referer, frameId: frame._id });
290
+ return { newDocumentId: response.navigationId || void 0 };
291
291
  }
292
292
  async updateExtraHTTPHeaders() {
293
- await this._session.send('Network.setExtraHTTPHeaders', {
294
- headers: this._page.extraHTTPHeaders() || []
295
- });
293
+ await this._session.send("Network.setExtraHTTPHeaders", { headers: this._page.extraHTTPHeaders() || [] });
296
294
  }
297
295
  async updateEmulatedViewportSize() {
298
- const viewportSize = this._page.viewportSize();
299
- await this._session.send('Page.setViewportSize', {
300
- viewportSize
301
- });
296
+ const viewportSize = this._page.emulatedSize()?.viewport ?? null;
297
+ await this._session.send("Page.setViewportSize", { viewportSize });
302
298
  }
303
299
  async bringToFront() {
304
- await this._session.send('Page.bringToFront', {});
300
+ await this._session.send("Page.bringToFront", {});
305
301
  }
306
302
  async updateEmulateMedia() {
307
303
  const emulatedMedia = this._page.emulatedMedia();
308
- const colorScheme = emulatedMedia.colorScheme === 'no-override' ? undefined : emulatedMedia.colorScheme;
309
- const reducedMotion = emulatedMedia.reducedMotion === 'no-override' ? undefined : emulatedMedia.reducedMotion;
310
- const forcedColors = emulatedMedia.forcedColors === 'no-override' ? undefined : emulatedMedia.forcedColors;
311
- const contrast = emulatedMedia.contrast === 'no-override' ? undefined : emulatedMedia.contrast;
312
- await this._session.send('Page.setEmulatedMedia', {
304
+ const colorScheme = emulatedMedia.colorScheme === "no-override" ? void 0 : emulatedMedia.colorScheme;
305
+ const reducedMotion = emulatedMedia.reducedMotion === "no-override" ? void 0 : emulatedMedia.reducedMotion;
306
+ const forcedColors = emulatedMedia.forcedColors === "no-override" ? void 0 : emulatedMedia.forcedColors;
307
+ const contrast = emulatedMedia.contrast === "no-override" ? void 0 : emulatedMedia.contrast;
308
+ await this._session.send("Page.setEmulatedMedia", {
313
309
  // Empty string means reset.
314
- type: emulatedMedia.media === 'no-override' ? '' : emulatedMedia.media,
310
+ type: emulatedMedia.media === "no-override" ? "" : emulatedMedia.media,
315
311
  colorScheme,
316
312
  reducedMotion,
317
313
  forcedColors,
@@ -323,67 +319,45 @@ class FFPage {
323
319
  }
324
320
  async updateFileChooserInterception() {
325
321
  const enabled = this._page.fileChooserIntercepted();
326
- await this._session.send('Page.setInterceptFileChooserDialog', {
327
- enabled
328
- }).catch(() => {}); // target can be closed.
322
+ await this._session.send("Page.setInterceptFileChooserDialog", { enabled }).catch(() => {
323
+ });
329
324
  }
330
325
  async reload() {
331
- await this._session.send('Page.reload');
326
+ await this._session.send("Page.reload");
332
327
  }
333
328
  async goBack() {
334
- const {
335
- success
336
- } = await this._session.send('Page.goBack', {
337
- frameId: this._page.mainFrame()._id
338
- });
329
+ const { success } = await this._session.send("Page.goBack", { frameId: this._page.mainFrame()._id });
339
330
  return success;
340
331
  }
341
332
  async goForward() {
342
- const {
343
- success
344
- } = await this._session.send('Page.goForward', {
345
- frameId: this._page.mainFrame()._id
346
- });
333
+ const { success } = await this._session.send("Page.goForward", { frameId: this._page.mainFrame()._id });
347
334
  return success;
348
335
  }
349
336
  async requestGC() {
350
- await this._session.send('Heap.collectGarbage');
337
+ await this._session.send("Heap.collectGarbage");
351
338
  }
352
339
  async addInitScript(initScript, worldName) {
353
- this._initScripts.push({
354
- initScript,
355
- worldName
356
- });
357
- await this._session.send('Page.setInitScripts', {
358
- scripts: this._initScripts.map(s => ({
359
- script: s.initScript.source,
360
- worldName: s.worldName
361
- }))
362
- });
340
+ this._initScripts.push({ initScript, worldName });
341
+ await this._updateInitScripts();
363
342
  }
364
- async removeNonInternalInitScripts() {
365
- this._initScripts = this._initScripts.filter(s => s.initScript.internal);
366
- await this._session.send('Page.setInitScripts', {
367
- scripts: this._initScripts.map(s => ({
368
- script: s.initScript.source,
369
- worldName: s.worldName
370
- }))
371
- });
343
+ async removeInitScripts(initScripts) {
344
+ const set = new Set(initScripts);
345
+ this._initScripts = this._initScripts.filter((s) => !set.has(s.initScript));
346
+ await this._updateInitScripts();
347
+ }
348
+ async _updateInitScripts() {
349
+ await this._session.send("Page.setInitScripts", { scripts: this._initScripts.map((s) => ({ script: s.initScript.source, worldName: s.worldName })) });
372
350
  }
373
351
  async closePage(runBeforeUnload) {
374
- await this._session.send('Page.close', {
375
- runBeforeUnload
376
- });
352
+ await this._session.send("Page.close", { runBeforeUnload });
377
353
  }
378
354
  async setBackgroundColor(color) {
379
- if (color) throw new Error('Not implemented');
355
+ if (color)
356
+ throw new Error("Not implemented");
380
357
  }
381
358
  async takeScreenshot(progress, format, documentRect, viewportRect, quality, fitsViewport, scale) {
382
359
  if (!documentRect) {
383
- const scrollOffset = await this._page.mainFrame().waitForFunctionValueInUtility(progress, () => ({
384
- x: window.scrollX,
385
- y: window.scrollY
386
- }));
360
+ const scrollOffset = await this._page.mainFrame().waitForFunctionValueInUtility(progress, () => ({ x: window.scrollX, y: window.scrollY }));
387
361
  documentRect = {
388
362
  x: viewportRect.x + scrollOffset.x,
389
363
  y: viewportRect.y + scrollOffset.y,
@@ -391,31 +365,25 @@ class FFPage {
391
365
  height: viewportRect.height
392
366
  };
393
367
  }
394
- progress.throwIfAborted();
395
- const {
396
- data
397
- } = await this._session.send('Page.screenshot', {
398
- mimeType: 'image/' + format,
368
+ const { data } = await progress.race(this._session.send("Page.screenshot", {
369
+ mimeType: "image/" + format,
399
370
  clip: documentRect,
400
371
  quality,
401
- omitDeviceScaleFactor: scale === 'css'
402
- });
403
- return Buffer.from(data, 'base64');
372
+ omitDeviceScaleFactor: scale === "css"
373
+ }));
374
+ return Buffer.from(data, "base64");
404
375
  }
405
376
  async getContentFrame(handle) {
406
- const {
407
- contentFrameId
408
- } = await this._session.send('Page.describeNode', {
377
+ const { contentFrameId } = await this._session.send("Page.describeNode", {
409
378
  frameId: handle._context.frame._id,
410
379
  objectId: handle._objectId
411
380
  });
412
- if (!contentFrameId) return null;
413
- return this._page._frameManager.frame(contentFrameId);
381
+ if (!contentFrameId)
382
+ return null;
383
+ return this._page.frameManager.frame(contentFrameId);
414
384
  }
415
385
  async getOwnerFrame(handle) {
416
- const {
417
- ownerFrameId
418
- } = await this._session.send('Page.describeNode', {
386
+ const { ownerFrameId } = await this._session.send("Page.describeNode", {
419
387
  frameId: handle._context.frame._id,
420
388
  objectId: handle._objectId
421
389
  });
@@ -423,7 +391,8 @@ class FFPage {
423
391
  }
424
392
  async getBoundingBox(handle) {
425
393
  const quads = await this.getContentQuads(handle);
426
- if (!quads || !quads.length) return null;
394
+ if (!quads || !quads.length)
395
+ return null;
427
396
  let minX = Infinity;
428
397
  let maxX = -Infinity;
429
398
  let minY = Infinity;
@@ -436,44 +405,38 @@ class FFPage {
436
405
  maxY = Math.max(maxY, point.y);
437
406
  }
438
407
  }
439
- return {
440
- x: minX,
441
- y: minY,
442
- width: maxX - minX,
443
- height: maxY - minY
444
- };
408
+ return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
445
409
  }
446
410
  async scrollRectIntoViewIfNeeded(handle, rect) {
447
- return await this._session.send('Page.scrollIntoViewIfNeeded', {
411
+ return await this._session.send("Page.scrollIntoViewIfNeeded", {
448
412
  frameId: handle._context.frame._id,
449
413
  objectId: handle._objectId,
450
414
  rect
451
- }).then(() => 'done').catch(e => {
452
- if (e instanceof Error && e.message.includes('Node is detached from document')) return 'error:notconnected';
453
- if (e instanceof Error && e.message.includes('Node does not have a layout object')) return 'error:notvisible';
415
+ }).then(() => "done").catch((e) => {
416
+ if (e instanceof Error && e.message.includes("Node is detached from document"))
417
+ return "error:notconnected";
418
+ if (e instanceof Error && e.message.includes("Node does not have a layout object"))
419
+ return "error:notvisible";
454
420
  throw e;
455
421
  });
456
422
  }
457
423
  async setScreencastOptions(options) {
458
424
  if (options) {
459
- const {
460
- screencastId
461
- } = await this._session.send('Page.startScreencast', options);
425
+ const { screencastId } = await this._session.send("Page.startScreencast", options);
462
426
  this._screencastId = screencastId;
463
427
  } else {
464
- await this._session.send('Page.stopScreencast');
428
+ await this._session.send("Page.stopScreencast");
465
429
  }
466
430
  }
467
431
  _onScreencastFrame(event) {
468
- if (!this._screencastId) return;
432
+ if (!this._screencastId)
433
+ return;
469
434
  const screencastId = this._screencastId;
470
435
  this._page.throttleScreencastFrameAck(() => {
471
- this._session.send('Page.screencastFrameAck', {
472
- screencastId
473
- }).catch(e => _debugLogger.debugLogger.log('error', e));
436
+ this._session.send("Page.screencastFrameAck", { screencastId }).catch((e) => import_debugLogger.debugLogger.log("error", e));
474
437
  });
475
- const buffer = Buffer.from(event.data, 'base64');
476
- this._page.emit(_page.Page.Events.ScreencastFrame, {
438
+ const buffer = Buffer.from(event.data, "base64");
439
+ this._page.emit(import_page2.Page.Events.ScreencastFrame, {
477
440
  buffer,
478
441
  width: event.deviceWidth,
479
442
  height: event.deviceHeight
@@ -483,56 +446,61 @@ class FFPage {
483
446
  return 1;
484
447
  }
485
448
  async getContentQuads(handle) {
486
- const result = await this._session.sendMayFail('Page.getContentQuads', {
449
+ const result = await this._session.sendMayFail("Page.getContentQuads", {
487
450
  frameId: handle._context.frame._id,
488
451
  objectId: handle._objectId
489
452
  });
490
- if (!result) return null;
491
- return result.quads.map(quad => [quad.p1, quad.p2, quad.p3, quad.p4]);
453
+ if (!result)
454
+ return null;
455
+ return result.quads.map((quad) => [quad.p1, quad.p2, quad.p3, quad.p4]);
492
456
  }
493
457
  async setInputFilePaths(handle, files) {
494
- await this._session.send('Page.setFileInputFiles', {
458
+ await this._session.send("Page.setFileInputFiles", {
495
459
  frameId: handle._context.frame._id,
496
460
  objectId: handle._objectId,
497
461
  files
498
462
  });
499
463
  }
500
464
  async adoptElementHandle(handle, to) {
501
- const result = await this._session.send('Page.adoptNode', {
465
+ const result = await this._session.send("Page.adoptNode", {
502
466
  frameId: handle._context.frame._id,
503
467
  objectId: handle._objectId,
504
468
  executionContextId: to.delegate._executionContextId
505
469
  });
506
- if (!result.remoteObject) throw new Error(dom.kUnableToAdoptErrorMessage);
507
- return (0, _ffExecutionContext.createHandle)(to, result.remoteObject);
470
+ if (!result.remoteObject)
471
+ throw new Error(dom.kUnableToAdoptErrorMessage);
472
+ return (0, import_ffExecutionContext.createHandle)(to, result.remoteObject);
508
473
  }
509
474
  async getAccessibilityTree(needle) {
510
- return (0, _ffAccessibility.getAccessibilityTree)(this._session, needle);
475
+ return (0, import_ffAccessibility.getAccessibilityTree)(this._session, needle);
476
+ }
477
+ async inputActionEpilogue() {
511
478
  }
512
- async inputActionEpilogue() {}
513
- async resetForReuse() {
514
- // Firefox sometimes keeps the last mouse position in the page,
515
- // which affects things like hovered state.
516
- // See https://github.com/microsoft/playwright/issues/22432.
517
- // Move mouse to (-1, -1) to avoid anything being hovered.
518
- await this.rawMouse.move(-1, -1, 'none', new Set(), new Set(), false);
479
+ async resetForReuse(progress) {
480
+ await this.rawMouse.move(progress, -1, -1, "none", /* @__PURE__ */ new Set(), /* @__PURE__ */ new Set(), false);
519
481
  }
520
482
  async getFrameElement(frame) {
521
483
  const parent = frame.parentFrame();
522
- if (!parent) throw new Error('Frame has been detached.');
484
+ if (!parent)
485
+ throw new Error("Frame has been detached.");
523
486
  const context = await parent._mainContext();
524
- const result = await this._session.send('Page.adoptNode', {
487
+ const result = await this._session.send("Page.adoptNode", {
525
488
  frameId: frame._id,
526
489
  executionContextId: context.delegate._executionContextId
527
490
  });
528
- if (!result.remoteObject) throw new Error('Frame has been detached.');
529
- return (0, _ffExecutionContext.createHandle)(context, result.remoteObject);
491
+ if (!result.remoteObject)
492
+ throw new Error("Frame has been detached.");
493
+ return (0, import_ffExecutionContext.createHandle)(context, result.remoteObject);
530
494
  }
531
495
  shouldToggleStyleSheetToSyncAnimations() {
532
496
  return false;
533
497
  }
534
498
  }
535
- exports.FFPage = FFPage;
536
499
  function webSocketId(frameId, wsid) {
537
500
  return `${frameId}---${wsid}`;
538
- }
501
+ }
502
+ // Annotate the CommonJS export names for ESM import in node:
503
+ 0 && (module.exports = {
504
+ FFPage,
505
+ UTILITY_WORLD_NAME
506
+ });