@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,180 +1,162 @@
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 page_exports = {};
20
+ __export(page_exports, {
21
+ BindingCall: () => BindingCall,
22
+ Page: () => Page
5
23
  });
6
- exports.Page = exports.BindingCall = void 0;
7
- var _accessibility = require("./accessibility");
8
- var _artifact = require("./artifact");
9
- var _channelOwner = require("./channelOwner");
10
- var _clientHelper = require("./clientHelper");
11
- var _coverage = require("./coverage");
12
- var _download = require("./download");
13
- var _elementHandle = require("./elementHandle");
14
- var _errors = require("./errors");
15
- var _events = require("./events");
16
- var _fileChooser = require("./fileChooser");
17
- var _frame = require("./frame");
18
- var _harRouter = require("./harRouter");
19
- var _input = require("./input");
20
- var _jsHandle = require("./jsHandle");
21
- var _network = require("./network");
22
- var _video = require("./video");
23
- var _waiter = require("./waiter");
24
- var _worker = require("./worker");
25
- var _timeoutSettings = require("./timeoutSettings");
26
- var _assert = require("../utils/isomorphic/assert");
27
- var _fileUtils = require("./fileUtils");
28
- var _headers = require("../utils/isomorphic/headers");
29
- var _stringUtils = require("../utils/isomorphic/stringUtils");
30
- var _urlMatch = require("../utils/isomorphic/urlMatch");
31
- var _manualPromise = require("../utils/isomorphic/manualPromise");
32
- var _rtti = require("../utils/isomorphic/rtti");
33
- /**
34
- * Copyright 2017 Google Inc. All rights reserved.
35
- * Modifications copyright (c) Microsoft Corporation.
36
- *
37
- * Licensed under the Apache License, Version 2.0 (the "License");
38
- * you may not use this file except in compliance with the License.
39
- * You may obtain a copy of the License at
40
- *
41
- * http://www.apache.org/licenses/LICENSE-2.0
42
- *
43
- * Unless required by applicable law or agreed to in writing, software
44
- * distributed under the License is distributed on an "AS IS" BASIS,
45
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
46
- * See the License for the specific language governing permissions and
47
- * limitations under the License.
48
- */
49
-
50
- class Page extends _channelOwner.ChannelOwner {
51
- static from(page) {
52
- return page._object;
53
- }
54
- static fromNullable(page) {
55
- return page ? Page.from(page) : null;
56
- }
24
+ module.exports = __toCommonJS(page_exports);
25
+ var import_accessibility = require("./accessibility");
26
+ var import_artifact = require("./artifact");
27
+ var import_channelOwner = require("./channelOwner");
28
+ var import_clientHelper = require("./clientHelper");
29
+ var import_coverage = require("./coverage");
30
+ var import_download = require("./download");
31
+ var import_elementHandle = require("./elementHandle");
32
+ var import_errors = require("./errors");
33
+ var import_events = require("./events");
34
+ var import_fileChooser = require("./fileChooser");
35
+ var import_frame = require("./frame");
36
+ var import_harRouter = require("./harRouter");
37
+ var import_input = require("./input");
38
+ var import_jsHandle = require("./jsHandle");
39
+ var import_network = require("./network");
40
+ var import_video = require("./video");
41
+ var import_waiter = require("./waiter");
42
+ var import_worker = require("./worker");
43
+ var import_timeoutSettings = require("./timeoutSettings");
44
+ var import_assert = require("../utils/isomorphic/assert");
45
+ var import_fileUtils = require("./fileUtils");
46
+ var import_headers = require("../utils/isomorphic/headers");
47
+ var import_stringUtils = require("../utils/isomorphic/stringUtils");
48
+ var import_urlMatch = require("../utils/isomorphic/urlMatch");
49
+ var import_manualPromise = require("../utils/isomorphic/manualPromise");
50
+ var import_rtti = require("../utils/isomorphic/rtti");
51
+ class Page extends import_channelOwner.ChannelOwner {
57
52
  constructor(parent, type, guid, initializer) {
58
53
  super(parent, type, guid, initializer);
59
- this._browserContext = void 0;
60
- this._ownedContext = void 0;
61
- this._mainFrame = void 0;
62
- this._frames = new Set();
63
- this._workers = new Set();
54
+ this._frames = /* @__PURE__ */ new Set();
55
+ this._workers = /* @__PURE__ */ new Set();
64
56
  this._closed = false;
65
- this._closedOrCrashedScope = new _manualPromise.LongStandingScope();
66
- this._viewportSize = void 0;
57
+ this._closedOrCrashedScope = new import_manualPromise.LongStandingScope();
67
58
  this._routes = [];
68
59
  this._webSocketRoutes = [];
69
- this.accessibility = void 0;
70
- this.coverage = void 0;
71
- this.keyboard = void 0;
72
- this.mouse = void 0;
73
- this.request = void 0;
74
- this.touchscreen = void 0;
75
- this.clock = void 0;
76
- this._bindings = new Map();
77
- this._timeoutSettings = void 0;
60
+ this._bindings = /* @__PURE__ */ new Map();
78
61
  this._video = null;
79
- this._opener = void 0;
80
- this._closeReason = void 0;
81
62
  this._closeWasCalled = false;
82
63
  this._harRouters = [];
83
- this._locatorHandlers = new Map();
64
+ this._locatorHandlers = /* @__PURE__ */ new Map();
84
65
  this._browserContext = parent;
85
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform, this._browserContext._timeoutSettings);
86
- this.accessibility = new _accessibility.Accessibility(this._channel);
87
- this.keyboard = new _input.Keyboard(this);
88
- this.mouse = new _input.Mouse(this);
66
+ this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform, this._browserContext._timeoutSettings);
67
+ this.accessibility = new import_accessibility.Accessibility(this._channel);
68
+ this.keyboard = new import_input.Keyboard(this);
69
+ this.mouse = new import_input.Mouse(this);
89
70
  this.request = this._browserContext.request;
90
- this.touchscreen = new _input.Touchscreen(this);
71
+ this.touchscreen = new import_input.Touchscreen(this);
91
72
  this.clock = this._browserContext.clock;
92
- this._mainFrame = _frame.Frame.from(initializer.mainFrame);
73
+ this._mainFrame = import_frame.Frame.from(initializer.mainFrame);
93
74
  this._mainFrame._page = this;
94
75
  this._frames.add(this._mainFrame);
95
- this._viewportSize = initializer.viewportSize || null;
76
+ this._viewportSize = initializer.viewportSize;
96
77
  this._closed = initializer.isClosed;
97
78
  this._opener = Page.fromNullable(initializer.opener);
98
- this._channel.on('bindingCall', ({
99
- binding
100
- }) => this._onBinding(BindingCall.from(binding)));
101
- this._channel.on('close', () => this._onClose());
102
- this._channel.on('crash', () => this._onCrash());
103
- this._channel.on('download', ({
104
- url,
105
- suggestedFilename,
106
- artifact
107
- }) => {
108
- const artifactObject = _artifact.Artifact.from(artifact);
109
- this.emit(_events.Events.Page.Download, new _download.Download(this, url, suggestedFilename, artifactObject));
79
+ this._channel.on("bindingCall", ({ binding }) => this._onBinding(BindingCall.from(binding)));
80
+ this._channel.on("close", () => this._onClose());
81
+ this._channel.on("crash", () => this._onCrash());
82
+ this._channel.on("download", ({ url, suggestedFilename, artifact }) => {
83
+ const artifactObject = import_artifact.Artifact.from(artifact);
84
+ this.emit(import_events.Events.Page.Download, new import_download.Download(this, url, suggestedFilename, artifactObject));
110
85
  });
111
- this._channel.on('fileChooser', ({
112
- element,
113
- isMultiple
114
- }) => this.emit(_events.Events.Page.FileChooser, new _fileChooser.FileChooser(this, _elementHandle.ElementHandle.from(element), isMultiple)));
115
- this._channel.on('frameAttached', ({
116
- frame
117
- }) => this._onFrameAttached(_frame.Frame.from(frame)));
118
- this._channel.on('frameDetached', ({
119
- frame
120
- }) => this._onFrameDetached(_frame.Frame.from(frame)));
121
- this._channel.on('locatorHandlerTriggered', ({
122
- uid
123
- }) => this._onLocatorHandlerTriggered(uid));
124
- this._channel.on('route', ({
125
- route
126
- }) => this._onRoute(_network.Route.from(route)));
127
- this._channel.on('webSocketRoute', ({
128
- webSocketRoute
129
- }) => this._onWebSocketRoute(_network.WebSocketRoute.from(webSocketRoute)));
130
- this._channel.on('video', ({
131
- artifact
132
- }) => {
133
- const artifactObject = _artifact.Artifact.from(artifact);
86
+ this._channel.on("fileChooser", ({ element, isMultiple }) => this.emit(import_events.Events.Page.FileChooser, new import_fileChooser.FileChooser(this, import_elementHandle.ElementHandle.from(element), isMultiple)));
87
+ this._channel.on("frameAttached", ({ frame }) => this._onFrameAttached(import_frame.Frame.from(frame)));
88
+ this._channel.on("frameDetached", ({ frame }) => this._onFrameDetached(import_frame.Frame.from(frame)));
89
+ this._channel.on("locatorHandlerTriggered", ({ uid }) => this._onLocatorHandlerTriggered(uid));
90
+ this._channel.on("route", ({ route }) => this._onRoute(import_network.Route.from(route)));
91
+ this._channel.on("webSocketRoute", ({ webSocketRoute }) => this._onWebSocketRoute(import_network.WebSocketRoute.from(webSocketRoute)));
92
+ this._channel.on("video", ({ artifact }) => {
93
+ const artifactObject = import_artifact.Artifact.from(artifact);
134
94
  this._forceVideo()._artifactReady(artifactObject);
135
95
  });
136
- this._channel.on('webSocket', ({
137
- webSocket
138
- }) => this.emit(_events.Events.Page.WebSocket, _network.WebSocket.from(webSocket)));
139
- this._channel.on('worker', ({
140
- worker
141
- }) => this._onWorker(_worker.Worker.from(worker)));
142
- this.coverage = new _coverage.Coverage(this._channel);
143
- this.once(_events.Events.Page.Close, () => this._closedOrCrashedScope.close(this._closeErrorWithReason()));
144
- this.once(_events.Events.Page.Crash, () => this._closedOrCrashedScope.close(new _errors.TargetClosedError()));
145
- this._setEventToSubscriptionMapping(new Map([[_events.Events.Page.Console, 'console'], [_events.Events.Page.Dialog, 'dialog'], [_events.Events.Page.Request, 'request'], [_events.Events.Page.Response, 'response'], [_events.Events.Page.RequestFinished, 'requestFinished'], [_events.Events.Page.RequestFailed, 'requestFailed'], [_events.Events.Page.FileChooser, 'fileChooser']]));
96
+ this._channel.on("viewportSizeChanged", ({ viewportSize }) => this._viewportSize = viewportSize);
97
+ this._channel.on("webSocket", ({ webSocket }) => this.emit(import_events.Events.Page.WebSocket, import_network.WebSocket.from(webSocket)));
98
+ this._channel.on("worker", ({ worker }) => this._onWorker(import_worker.Worker.from(worker)));
99
+ this.coverage = new import_coverage.Coverage(this._channel);
100
+ this.once(import_events.Events.Page.Close, () => this._closedOrCrashedScope.close(this._closeErrorWithReason()));
101
+ this.once(import_events.Events.Page.Crash, () => this._closedOrCrashedScope.close(new import_errors.TargetClosedError()));
102
+ this._setEventToSubscriptionMapping(/* @__PURE__ */ new Map([
103
+ [import_events.Events.Page.Console, "console"],
104
+ [import_events.Events.Page.Dialog, "dialog"],
105
+ [import_events.Events.Page.Request, "request"],
106
+ [import_events.Events.Page.Response, "response"],
107
+ [import_events.Events.Page.RequestFinished, "requestFinished"],
108
+ [import_events.Events.Page.RequestFailed, "requestFailed"],
109
+ [import_events.Events.Page.FileChooser, "fileChooser"]
110
+ ]));
111
+ }
112
+ static from(page) {
113
+ return page._object;
114
+ }
115
+ static fromNullable(page) {
116
+ return page ? Page.from(page) : null;
146
117
  }
147
118
  _onFrameAttached(frame) {
148
119
  frame._page = this;
149
120
  this._frames.add(frame);
150
- if (frame._parentFrame) frame._parentFrame._childFrames.add(frame);
151
- this.emit(_events.Events.Page.FrameAttached, frame);
121
+ if (frame._parentFrame)
122
+ frame._parentFrame._childFrames.add(frame);
123
+ this.emit(import_events.Events.Page.FrameAttached, frame);
152
124
  }
153
125
  _onFrameDetached(frame) {
154
126
  this._frames.delete(frame);
155
127
  frame._detached = true;
156
- if (frame._parentFrame) frame._parentFrame._childFrames.delete(frame);
157
- this.emit(_events.Events.Page.FrameDetached, frame);
128
+ if (frame._parentFrame)
129
+ frame._parentFrame._childFrames.delete(frame);
130
+ this.emit(import_events.Events.Page.FrameDetached, frame);
158
131
  }
159
132
  async _onRoute(route) {
160
133
  route._context = this.context();
161
134
  const routeHandlers = this._routes.slice();
162
135
  for (const routeHandler of routeHandlers) {
163
- // If the page was closed we stall all requests right away.
164
- if (this._closeWasCalled || this._browserContext._closeWasCalled) return;
165
- if (!routeHandler.matches(route.request().url())) continue;
136
+ if (this._closeWasCalled || this._browserContext._closingStatus !== "none")
137
+ return;
138
+ if (!routeHandler.matches(route.request().url()))
139
+ continue;
166
140
  const index = this._routes.indexOf(routeHandler);
167
- if (index === -1) continue;
168
- if (routeHandler.willExpire()) this._routes.splice(index, 1);
141
+ if (index === -1)
142
+ continue;
143
+ if (routeHandler.willExpire())
144
+ this._routes.splice(index, 1);
169
145
  const handled = await routeHandler.handle(route);
170
- if (!this._routes.length) this._wrapApiCall(() => this._updateInterceptionPatterns(), true).catch(() => {});
171
- if (handled) return;
146
+ if (!this._routes.length)
147
+ this._updateInterceptionPatterns().catch(() => {
148
+ });
149
+ if (handled)
150
+ return;
172
151
  }
173
152
  await this._browserContext._onRoute(route);
174
153
  }
175
154
  async _onWebSocketRoute(webSocketRoute) {
176
- const routeHandler = this._webSocketRoutes.find(route => route.matches(webSocketRoute.url()));
177
- if (routeHandler) await routeHandler.handle(webSocketRoute);else await this._browserContext._onWebSocketRoute(webSocketRoute);
155
+ const routeHandler = this._webSocketRoutes.find((route) => route.matches(webSocketRoute.url()));
156
+ if (routeHandler)
157
+ await routeHandler.handle(webSocketRoute);
158
+ else
159
+ await this._browserContext._onWebSocketRoute(webSocketRoute);
178
160
  }
179
161
  async _onBinding(bindingCall) {
180
162
  const func = this._bindings.get(bindingCall._initializer.name);
@@ -187,35 +169,37 @@ class Page extends _channelOwner.ChannelOwner {
187
169
  _onWorker(worker) {
188
170
  this._workers.add(worker);
189
171
  worker._page = this;
190
- this.emit(_events.Events.Page.Worker, worker);
172
+ this.emit(import_events.Events.Page.Worker, worker);
191
173
  }
192
174
  _onClose() {
193
175
  this._closed = true;
194
176
  this._browserContext._pages.delete(this);
195
177
  this._browserContext._backgroundPages.delete(this);
196
178
  this._disposeHarRouters();
197
- this.emit(_events.Events.Page.Close, this);
179
+ this.emit(import_events.Events.Page.Close, this);
198
180
  }
199
181
  _onCrash() {
200
- this.emit(_events.Events.Page.Crash, this);
182
+ this.emit(import_events.Events.Page.Crash, this);
201
183
  }
202
184
  context() {
203
185
  return this._browserContext;
204
186
  }
205
187
  async opener() {
206
- if (!this._opener || this._opener.isClosed()) return null;
188
+ if (!this._opener || this._opener.isClosed())
189
+ return null;
207
190
  return this._opener;
208
191
  }
209
192
  mainFrame() {
210
193
  return this._mainFrame;
211
194
  }
212
195
  frame(frameSelector) {
213
- const name = (0, _rtti.isString)(frameSelector) ? frameSelector : frameSelector.name;
214
- const url = (0, _rtti.isObject)(frameSelector) ? frameSelector.url : undefined;
215
- (0, _assert.assert)(name || url, 'Either name or url matcher should be specified');
216
- return this.frames().find(f => {
217
- if (name) return f.name() === name;
218
- return (0, _urlMatch.urlMatches)(this._browserContext._options.baseURL, f.url(), url);
196
+ const name = (0, import_rtti.isString)(frameSelector) ? frameSelector : frameSelector.name;
197
+ const url = (0, import_rtti.isObject)(frameSelector) ? frameSelector.url : void 0;
198
+ (0, import_assert.assert)(name || url, "Either name or url matcher should be specified");
199
+ return this.frames().find((f) => {
200
+ if (name)
201
+ return f.name() === name;
202
+ return (0, import_urlMatch.urlMatches)(this._browserContext._options.baseURL, f.url(), url);
219
203
  }) || null;
220
204
  }
221
205
  frames() {
@@ -223,29 +207,18 @@ class Page extends _channelOwner.ChannelOwner {
223
207
  }
224
208
  setDefaultNavigationTimeout(timeout) {
225
209
  this._timeoutSettings.setDefaultNavigationTimeout(timeout);
226
- this._wrapApiCall(async () => {
227
- await this._channel.setDefaultNavigationTimeoutNoReply({
228
- timeout
229
- });
230
- }, true).catch(() => {});
231
210
  }
232
211
  setDefaultTimeout(timeout) {
233
212
  this._timeoutSettings.setDefaultTimeout(timeout);
234
- this._wrapApiCall(async () => {
235
- await this._channel.setDefaultTimeoutNoReply({
236
- timeout
237
- });
238
- }, true).catch(() => {});
239
213
  }
240
214
  _forceVideo() {
241
- if (!this._video) this._video = new _video.Video(this, this._connection);
215
+ if (!this._video)
216
+ this._video = new import_video.Video(this, this._connection);
242
217
  return this._video;
243
218
  }
244
219
  video() {
245
- // Note: we are creating Video object lazily, because we do not know
246
- // BrowserContextOptions when constructing the page - it is assigned
247
- // too late during launchPersistentContext.
248
- if (!this._browserContext._options.recordVideo) return null;
220
+ if (!this._browserContext._options.recordVideo)
221
+ return null;
249
222
  return this._forceVideo();
250
223
  }
251
224
  async $(selector, options) {
@@ -258,15 +231,15 @@ class Page extends _channelOwner.ChannelOwner {
258
231
  return await this._mainFrame.dispatchEvent(selector, type, eventInit, options);
259
232
  }
260
233
  async evaluateHandle(pageFunction, arg) {
261
- (0, _jsHandle.assertMaxArguments)(arguments.length, 2);
234
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
262
235
  return await this._mainFrame.evaluateHandle(pageFunction, arg);
263
236
  }
264
237
  async $eval(selector, pageFunction, arg) {
265
- (0, _jsHandle.assertMaxArguments)(arguments.length, 3);
238
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 3);
266
239
  return await this._mainFrame.$eval(selector, pageFunction, arg);
267
240
  }
268
241
  async $$eval(selector, pageFunction, arg) {
269
- (0, _jsHandle.assertMaxArguments)(arguments.length, 3);
242
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 3);
270
243
  return await this._mainFrame.$$eval(selector, pageFunction, arg);
271
244
  }
272
245
  async $$(selector) {
@@ -279,24 +252,17 @@ class Page extends _channelOwner.ChannelOwner {
279
252
  return await this._mainFrame.addStyleTag(options);
280
253
  }
281
254
  async exposeFunction(name, callback) {
282
- await this._channel.exposeBinding({
283
- name
284
- });
255
+ await this._channel.exposeBinding({ name });
285
256
  const binding = (source, ...args) => callback(...args);
286
257
  this._bindings.set(name, binding);
287
258
  }
288
259
  async exposeBinding(name, callback, options = {}) {
289
- await this._channel.exposeBinding({
290
- name,
291
- needsHandle: options.handle
292
- });
260
+ await this._channel.exposeBinding({ name, needsHandle: options.handle });
293
261
  this._bindings.set(name, callback);
294
262
  }
295
263
  async setExtraHTTPHeaders(headers) {
296
- (0, _network.validateHeaders)(headers);
297
- await this._channel.setExtraHTTPHeaders({
298
- headers: (0, _headers.headersObjectToArray)(headers)
299
- });
264
+ (0, import_network.validateHeaders)(headers);
265
+ await this._channel.setExtraHTTPHeaders({ headers: (0, import_headers.headersObjectToArray)(headers) });
300
266
  }
301
267
  url() {
302
268
  return this._mainFrame.url();
@@ -311,51 +277,40 @@ class Page extends _channelOwner.ChannelOwner {
311
277
  return await this._mainFrame.goto(url, options);
312
278
  }
313
279
  async reload(options = {}) {
314
- const waitUntil = (0, _frame.verifyLoadState)('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
315
- return _network.Response.fromNullable((await this._channel.reload({
316
- ...options,
317
- waitUntil
318
- })).response);
280
+ const waitUntil = (0, import_frame.verifyLoadState)("waitUntil", options.waitUntil === void 0 ? "load" : options.waitUntil);
281
+ return import_network.Response.fromNullable((await this._channel.reload({ ...options, waitUntil, timeout: this._timeoutSettings.navigationTimeout(options) })).response);
319
282
  }
320
283
  async addLocatorHandler(locator, handler, options = {}) {
321
- if (locator._frame !== this._mainFrame) throw new Error(`Locator must belong to the main frame of this page`);
322
- if (options.times === 0) return;
323
- const {
324
- uid
325
- } = await this._channel.registerLocatorHandler({
326
- selector: locator._selector,
327
- noWaitAfter: options.noWaitAfter
328
- });
329
- this._locatorHandlers.set(uid, {
330
- locator,
331
- handler,
332
- times: options.times
333
- });
284
+ if (locator._frame !== this._mainFrame)
285
+ throw new Error(`Locator must belong to the main frame of this page`);
286
+ if (options.times === 0)
287
+ return;
288
+ const { uid } = await this._channel.registerLocatorHandler({ selector: locator._selector, noWaitAfter: options.noWaitAfter });
289
+ this._locatorHandlers.set(uid, { locator, handler, times: options.times });
334
290
  }
335
291
  async _onLocatorHandlerTriggered(uid) {
336
292
  let remove = false;
337
293
  try {
338
294
  const handler = this._locatorHandlers.get(uid);
339
295
  if (handler && handler.times !== 0) {
340
- if (handler.times !== undefined) handler.times--;
296
+ if (handler.times !== void 0)
297
+ handler.times--;
341
298
  await handler.handler(handler.locator);
342
299
  }
343
- remove = (handler === null || handler === void 0 ? void 0 : handler.times) === 0;
300
+ remove = handler?.times === 0;
344
301
  } finally {
345
- if (remove) this._locatorHandlers.delete(uid);
346
- this._wrapApiCall(() => this._channel.resolveLocatorHandlerNoReply({
347
- uid,
348
- remove
349
- }), true).catch(() => {});
302
+ if (remove)
303
+ this._locatorHandlers.delete(uid);
304
+ this._channel.resolveLocatorHandlerNoReply({ uid, remove }).catch(() => {
305
+ });
350
306
  }
351
307
  }
352
308
  async removeLocatorHandler(locator) {
353
309
  for (const [uid, data] of this._locatorHandlers) {
354
310
  if (data.locator._equals(locator)) {
355
311
  this._locatorHandlers.delete(uid);
356
- await this._channel.unregisterLocatorHandler({
357
- uid
358
- }).catch(() => {});
312
+ await this._channel.unregisterLocatorHandler({ uid }).catch(() => {
313
+ });
359
314
  }
360
315
  }
361
316
  }
@@ -369,179 +324,165 @@ class Page extends _channelOwner.ChannelOwner {
369
324
  return await this._mainFrame.waitForURL(url, options);
370
325
  }
371
326
  async waitForRequest(urlOrPredicate, options = {}) {
372
- const predicate = async request => {
373
- if ((0, _rtti.isString)(urlOrPredicate) || (0, _rtti.isRegExp)(urlOrPredicate)) return (0, _urlMatch.urlMatches)(this._browserContext._options.baseURL, request.url(), urlOrPredicate);
327
+ const predicate = async (request) => {
328
+ if ((0, import_rtti.isString)(urlOrPredicate) || (0, import_rtti.isRegExp)(urlOrPredicate))
329
+ return (0, import_urlMatch.urlMatches)(this._browserContext._options.baseURL, request.url(), urlOrPredicate);
374
330
  return await urlOrPredicate(request);
375
331
  };
376
332
  const trimmedUrl = trimUrl(urlOrPredicate);
377
- const logLine = trimmedUrl ? `waiting for request ${trimmedUrl}` : undefined;
378
- return await this._waitForEvent(_events.Events.Page.Request, {
379
- predicate,
380
- timeout: options.timeout
381
- }, logLine);
333
+ const logLine = trimmedUrl ? `waiting for request ${trimmedUrl}` : void 0;
334
+ return await this._waitForEvent(import_events.Events.Page.Request, { predicate, timeout: options.timeout }, logLine);
382
335
  }
383
336
  async waitForResponse(urlOrPredicate, options = {}) {
384
- const predicate = async response => {
385
- if ((0, _rtti.isString)(urlOrPredicate) || (0, _rtti.isRegExp)(urlOrPredicate)) return (0, _urlMatch.urlMatches)(this._browserContext._options.baseURL, response.url(), urlOrPredicate);
337
+ const predicate = async (response) => {
338
+ if ((0, import_rtti.isString)(urlOrPredicate) || (0, import_rtti.isRegExp)(urlOrPredicate))
339
+ return (0, import_urlMatch.urlMatches)(this._browserContext._options.baseURL, response.url(), urlOrPredicate);
386
340
  return await urlOrPredicate(response);
387
341
  };
388
342
  const trimmedUrl = trimUrl(urlOrPredicate);
389
- const logLine = trimmedUrl ? `waiting for response ${trimmedUrl}` : undefined;
390
- return await this._waitForEvent(_events.Events.Page.Response, {
391
- predicate,
392
- timeout: options.timeout
393
- }, logLine);
343
+ const logLine = trimmedUrl ? `waiting for response ${trimmedUrl}` : void 0;
344
+ return await this._waitForEvent(import_events.Events.Page.Response, { predicate, timeout: options.timeout }, logLine);
394
345
  }
395
346
  async waitForEvent(event, optionsOrPredicate = {}) {
396
347
  return await this._waitForEvent(event, optionsOrPredicate, `waiting for event "${event}"`);
397
348
  }
398
349
  _closeErrorWithReason() {
399
- return new _errors.TargetClosedError(this._closeReason || this._browserContext._effectiveCloseReason());
350
+ return new import_errors.TargetClosedError(this._closeReason || this._browserContext._effectiveCloseReason());
400
351
  }
401
352
  async _waitForEvent(event, optionsOrPredicate, logLine) {
402
353
  return await this._wrapApiCall(async () => {
403
- const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
404
- const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
405
- const waiter = _waiter.Waiter.createForEvent(this, event);
406
- if (logLine) waiter.log(logLine);
354
+ const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
355
+ const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
356
+ const waiter = import_waiter.Waiter.createForEvent(this, event);
357
+ if (logLine)
358
+ waiter.log(logLine);
407
359
  waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
408
- if (event !== _events.Events.Page.Crash) waiter.rejectOnEvent(this, _events.Events.Page.Crash, new Error('Page crashed'));
409
- if (event !== _events.Events.Page.Close) waiter.rejectOnEvent(this, _events.Events.Page.Close, () => this._closeErrorWithReason());
360
+ if (event !== import_events.Events.Page.Crash)
361
+ waiter.rejectOnEvent(this, import_events.Events.Page.Crash, new Error("Page crashed"));
362
+ if (event !== import_events.Events.Page.Close)
363
+ waiter.rejectOnEvent(this, import_events.Events.Page.Close, () => this._closeErrorWithReason());
410
364
  const result = await waiter.waitForEvent(this, event, predicate);
411
365
  waiter.dispose();
412
366
  return result;
413
367
  });
414
368
  }
415
369
  async goBack(options = {}) {
416
- const waitUntil = (0, _frame.verifyLoadState)('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
417
- return _network.Response.fromNullable((await this._channel.goBack({
418
- ...options,
419
- waitUntil
420
- })).response);
370
+ const waitUntil = (0, import_frame.verifyLoadState)("waitUntil", options.waitUntil === void 0 ? "load" : options.waitUntil);
371
+ return import_network.Response.fromNullable((await this._channel.goBack({ ...options, waitUntil, timeout: this._timeoutSettings.navigationTimeout(options) })).response);
421
372
  }
422
373
  async goForward(options = {}) {
423
- const waitUntil = (0, _frame.verifyLoadState)('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
424
- return _network.Response.fromNullable((await this._channel.goForward({
425
- ...options,
426
- waitUntil
427
- })).response);
374
+ const waitUntil = (0, import_frame.verifyLoadState)("waitUntil", options.waitUntil === void 0 ? "load" : options.waitUntil);
375
+ return import_network.Response.fromNullable((await this._channel.goForward({ ...options, waitUntil, timeout: this._timeoutSettings.navigationTimeout(options) })).response);
428
376
  }
429
377
  async requestGC() {
430
378
  await this._channel.requestGC();
431
379
  }
432
380
  async emulateMedia(options = {}) {
433
381
  await this._channel.emulateMedia({
434
- media: options.media === null ? 'no-override' : options.media,
435
- colorScheme: options.colorScheme === null ? 'no-override' : options.colorScheme,
436
- reducedMotion: options.reducedMotion === null ? 'no-override' : options.reducedMotion,
437
- forcedColors: options.forcedColors === null ? 'no-override' : options.forcedColors,
438
- contrast: options.contrast === null ? 'no-override' : options.contrast
382
+ media: options.media === null ? "no-override" : options.media,
383
+ colorScheme: options.colorScheme === null ? "no-override" : options.colorScheme,
384
+ reducedMotion: options.reducedMotion === null ? "no-override" : options.reducedMotion,
385
+ forcedColors: options.forcedColors === null ? "no-override" : options.forcedColors,
386
+ contrast: options.contrast === null ? "no-override" : options.contrast
439
387
  });
440
388
  }
441
389
  async setViewportSize(viewportSize) {
442
390
  this._viewportSize = viewportSize;
443
- await this._channel.setViewportSize({
444
- viewportSize
445
- });
391
+ await this._channel.setViewportSize({ viewportSize });
446
392
  }
447
393
  viewportSize() {
448
- return this._viewportSize;
394
+ return this._viewportSize || null;
449
395
  }
450
396
  async evaluate(pageFunction, arg) {
451
- (0, _jsHandle.assertMaxArguments)(arguments.length, 2);
397
+ (0, import_jsHandle.assertMaxArguments)(arguments.length, 2);
452
398
  return await this._mainFrame.evaluate(pageFunction, arg);
453
399
  }
454
400
  async addInitScript(script, arg) {
455
- const source = await (0, _clientHelper.evaluationScript)(this._platform, script, arg);
456
- await this._channel.addInitScript({
457
- source
458
- });
401
+ const source = await (0, import_clientHelper.evaluationScript)(this._platform, script, arg);
402
+ await this._channel.addInitScript({ source });
459
403
  }
460
404
  async route(url, handler, options = {}) {
461
- this._routes.unshift(new _network.RouteHandler(this._platform, this._browserContext._options.baseURL, url, handler, options.times));
405
+ this._routes.unshift(new import_network.RouteHandler(this._platform, this._browserContext._options.baseURL, url, handler, options.times));
462
406
  await this._updateInterceptionPatterns();
463
407
  }
464
408
  async routeFromHAR(har, options = {}) {
465
409
  const localUtils = this._connection.localUtils();
466
- if (!localUtils) throw new Error('Route from har is not supported in thin clients');
410
+ if (!localUtils)
411
+ throw new Error("Route from har is not supported in thin clients");
467
412
  if (options.update) {
468
413
  await this._browserContext._recordIntoHAR(har, this, options);
469
414
  return;
470
415
  }
471
- const harRouter = await _harRouter.HarRouter.create(localUtils, har, options.notFound || 'abort', {
472
- urlMatch: options.url
473
- });
416
+ const harRouter = await import_harRouter.HarRouter.create(localUtils, har, options.notFound || "abort", { urlMatch: options.url });
474
417
  this._harRouters.push(harRouter);
475
418
  await harRouter.addPageRoute(this);
476
419
  }
477
420
  async routeWebSocket(url, handler) {
478
- this._webSocketRoutes.unshift(new _network.WebSocketRouteHandler(this._browserContext._options.baseURL, url, handler));
421
+ this._webSocketRoutes.unshift(new import_network.WebSocketRouteHandler(this._browserContext._options.baseURL, url, handler));
479
422
  await this._updateWebSocketInterceptionPatterns();
480
423
  }
481
424
  _disposeHarRouters() {
482
- this._harRouters.forEach(router => router.dispose());
425
+ this._harRouters.forEach((router) => router.dispose());
483
426
  this._harRouters = [];
484
427
  }
485
428
  async unrouteAll(options) {
486
- await this._unrouteInternal(this._routes, [], options === null || options === void 0 ? void 0 : options.behavior);
429
+ await this._unrouteInternal(this._routes, [], options?.behavior);
487
430
  this._disposeHarRouters();
488
431
  }
489
432
  async unroute(url, handler) {
490
433
  const removed = [];
491
434
  const remaining = [];
492
435
  for (const route of this._routes) {
493
- if ((0, _urlMatch.urlMatchesEqual)(route.url, url) && (!handler || route.handler === handler)) removed.push(route);else remaining.push(route);
436
+ if ((0, import_urlMatch.urlMatchesEqual)(route.url, url) && (!handler || route.handler === handler))
437
+ removed.push(route);
438
+ else
439
+ remaining.push(route);
494
440
  }
495
- await this._unrouteInternal(removed, remaining, 'default');
441
+ await this._unrouteInternal(removed, remaining, "default");
496
442
  }
497
443
  async _unrouteInternal(removed, remaining, behavior) {
498
444
  this._routes = remaining;
445
+ if (behavior && behavior !== "default") {
446
+ const promises = removed.map((routeHandler) => routeHandler.stop(behavior));
447
+ await Promise.all(promises);
448
+ }
499
449
  await this._updateInterceptionPatterns();
500
- if (!behavior || behavior === 'default') return;
501
- const promises = removed.map(routeHandler => routeHandler.stop(behavior));
502
- await Promise.all(promises);
503
450
  }
504
451
  async _updateInterceptionPatterns() {
505
- const patterns = _network.RouteHandler.prepareInterceptionPatterns(this._routes);
506
- await this._channel.setNetworkInterceptionPatterns({
507
- patterns
508
- });
452
+ const patterns = import_network.RouteHandler.prepareInterceptionPatterns(this._routes);
453
+ await this._channel.setNetworkInterceptionPatterns({ patterns });
509
454
  }
510
455
  async _updateWebSocketInterceptionPatterns() {
511
- const patterns = _network.WebSocketRouteHandler.prepareInterceptionPatterns(this._webSocketRoutes);
512
- await this._channel.setWebSocketInterceptionPatterns({
513
- patterns
514
- });
456
+ const patterns = import_network.WebSocketRouteHandler.prepareInterceptionPatterns(this._webSocketRoutes);
457
+ await this._channel.setWebSocketInterceptionPatterns({ patterns });
515
458
  }
516
459
  async screenshot(options = {}) {
517
460
  const mask = options.mask;
518
- const copy = {
519
- ...options,
520
- mask: undefined
521
- };
522
- if (!copy.type) copy.type = (0, _elementHandle.determineScreenshotType)(options);
461
+ const copy = { ...options, mask: void 0, timeout: this._timeoutSettings.timeout(options) };
462
+ if (!copy.type)
463
+ copy.type = (0, import_elementHandle.determineScreenshotType)(options);
523
464
  if (mask) {
524
- copy.mask = mask.map(locator => ({
465
+ copy.mask = mask.map((locator) => ({
525
466
  frame: locator._frame._channel,
526
467
  selector: locator._selector
527
468
  }));
528
469
  }
529
470
  const result = await this._channel.screenshot(copy);
530
471
  if (options.path) {
531
- await (0, _fileUtils.mkdirIfNeeded)(this._platform, options.path);
472
+ await (0, import_fileUtils.mkdirIfNeeded)(this._platform, options.path);
532
473
  await this._platform.fs().promises.writeFile(options.path, result.binary);
533
474
  }
534
475
  return result.binary;
535
476
  }
536
477
  async _expectScreenshot(options) {
537
- const mask = options !== null && options !== void 0 && options.mask ? options === null || options === void 0 ? void 0 : options.mask.map(locator => ({
538
- frame: locator._frame._channel,
539
- selector: locator._selector
540
- })) : undefined;
478
+ const mask = options?.mask ? options?.mask.map((locator2) => ({
479
+ frame: locator2._frame._channel,
480
+ selector: locator2._selector
481
+ })) : void 0;
541
482
  const locator = options.locator ? {
542
483
  frame: options.locator._frame._channel,
543
484
  selector: options.locator._selector
544
- } : undefined;
485
+ } : void 0;
545
486
  return await this._channel.expectScreenshot({
546
487
  ...options,
547
488
  isNot: !!options.isNot,
@@ -562,9 +503,13 @@ class Page extends _channelOwner.ChannelOwner {
562
503
  this._closeReason = options.reason;
563
504
  this._closeWasCalled = true;
564
505
  try {
565
- if (this._ownedContext) await this._ownedContext.close();else await this._channel.close(options);
506
+ if (this._ownedContext)
507
+ await this._ownedContext.close();
508
+ else
509
+ await this._channel.close(options);
566
510
  } catch (e) {
567
- if ((0, _errors.isTargetClosedError)(e) && !options.runBeforeUnload) return;
511
+ if ((0, import_errors.isTargetClosedError)(e) && !options.runBeforeUnload)
512
+ return;
568
513
  throw e;
569
514
  }
570
515
  }
@@ -578,7 +523,7 @@ class Page extends _channelOwner.ChannelOwner {
578
523
  return await this._mainFrame.dragAndDrop(source, target, options);
579
524
  }
580
525
  async dblclick(selector, options) {
581
- return await this._mainFrame.dblclick(selector, options);
526
+ await this._mainFrame.dblclick(selector, options);
582
527
  }
583
528
  async tap(selector, options) {
584
529
  return await this._mainFrame.tap(selector, options);
@@ -683,45 +628,44 @@ class Page extends _channelOwner.ChannelOwner {
683
628
  return [...this._workers];
684
629
  }
685
630
  async pause(_options) {
686
- var _this$_instrumentatio;
687
- if (this._platform.isJSDebuggerAttached()) return;
631
+ if (this._platform.isJSDebuggerAttached())
632
+ return;
688
633
  const defaultNavigationTimeout = this._browserContext._timeoutSettings.defaultNavigationTimeout();
689
634
  const defaultTimeout = this._browserContext._timeoutSettings.defaultTimeout();
690
635
  this._browserContext.setDefaultNavigationTimeout(0);
691
636
  this._browserContext.setDefaultTimeout(0);
692
- (_this$_instrumentatio = this._instrumentation) === null || _this$_instrumentatio === void 0 || _this$_instrumentatio.onWillPause({
693
- keepTestTimeout: !!(_options !== null && _options !== void 0 && _options.__testHookKeepTestTimeout)
694
- });
637
+ this._instrumentation?.onWillPause({ keepTestTimeout: !!_options?.__testHookKeepTestTimeout });
695
638
  await this._closedOrCrashedScope.safeRace(this.context()._channel.pause());
696
639
  this._browserContext.setDefaultNavigationTimeout(defaultNavigationTimeout);
697
640
  this._browserContext.setDefaultTimeout(defaultTimeout);
698
641
  }
699
642
  async pdf(options = {}) {
700
- const transportOptions = {
701
- ...options
702
- };
703
- if (transportOptions.margin) transportOptions.margin = {
704
- ...transportOptions.margin
705
- };
706
- if (typeof options.width === 'number') transportOptions.width = options.width + 'px';
707
- if (typeof options.height === 'number') transportOptions.height = options.height + 'px';
708
- for (const margin of ['top', 'right', 'bottom', 'left']) {
643
+ const transportOptions = { ...options };
644
+ if (transportOptions.margin)
645
+ transportOptions.margin = { ...transportOptions.margin };
646
+ if (typeof options.width === "number")
647
+ transportOptions.width = options.width + "px";
648
+ if (typeof options.height === "number")
649
+ transportOptions.height = options.height + "px";
650
+ for (const margin of ["top", "right", "bottom", "left"]) {
709
651
  const index = margin;
710
- if (options.margin && typeof options.margin[index] === 'number') transportOptions.margin[index] = transportOptions.margin[index] + 'px';
652
+ if (options.margin && typeof options.margin[index] === "number")
653
+ transportOptions.margin[index] = transportOptions.margin[index] + "px";
711
654
  }
712
655
  const result = await this._channel.pdf(transportOptions);
713
656
  if (options.path) {
714
657
  const platform = this._platform;
715
- await platform.fs().promises.mkdir(platform.path().dirname(options.path), {
716
- recursive: true
717
- });
658
+ await platform.fs().promises.mkdir(platform.path().dirname(options.path), { recursive: true });
718
659
  await platform.fs().promises.writeFile(options.path, result.pdf);
719
660
  }
720
661
  return result.pdf;
721
662
  }
663
+ async _snapshotForAI() {
664
+ const result = await this._channel.snapshotForAI();
665
+ return result.snapshot;
666
+ }
722
667
  }
723
- exports.Page = Page;
724
- class BindingCall extends _channelOwner.ChannelOwner {
668
+ class BindingCall extends import_channelOwner.ChannelOwner {
725
669
  static from(channel) {
726
670
  return channel._object;
727
671
  }
@@ -730,26 +674,33 @@ class BindingCall extends _channelOwner.ChannelOwner {
730
674
  }
731
675
  async call(func) {
732
676
  try {
733
- const frame = _frame.Frame.from(this._initializer.frame);
677
+ const frame = import_frame.Frame.from(this._initializer.frame);
734
678
  const source = {
735
679
  context: frame._page.context(),
736
680
  page: frame._page,
737
681
  frame
738
682
  };
739
683
  let result;
740
- if (this._initializer.handle) result = await func(source, _jsHandle.JSHandle.from(this._initializer.handle));else result = await func(source, ...this._initializer.args.map(_jsHandle.parseResult));
741
- this._channel.resolve({
742
- result: (0, _jsHandle.serializeArgument)(result)
743
- }).catch(() => {});
684
+ if (this._initializer.handle)
685
+ result = await func(source, import_jsHandle.JSHandle.from(this._initializer.handle));
686
+ else
687
+ result = await func(source, ...this._initializer.args.map(import_jsHandle.parseResult));
688
+ this._channel.resolve({ result: (0, import_jsHandle.serializeArgument)(result) }).catch(() => {
689
+ });
744
690
  } catch (e) {
745
- this._channel.reject({
746
- error: (0, _errors.serializeError)(e)
747
- }).catch(() => {});
691
+ this._channel.reject({ error: (0, import_errors.serializeError)(e) }).catch(() => {
692
+ });
748
693
  }
749
694
  }
750
695
  }
751
- exports.BindingCall = BindingCall;
752
696
  function trimUrl(param) {
753
- if ((0, _rtti.isRegExp)(param)) return `/${(0, _stringUtils.trimStringWithEllipsis)(param.source, 50)}/${param.flags}`;
754
- if ((0, _rtti.isString)(param)) return `"${(0, _stringUtils.trimStringWithEllipsis)(param, 50)}"`;
755
- }
697
+ if ((0, import_rtti.isRegExp)(param))
698
+ return `/${(0, import_stringUtils.trimStringWithEllipsis)(param.source, 50)}/${param.flags}`;
699
+ if ((0, import_rtti.isString)(param))
700
+ return `"${(0, import_stringUtils.trimStringWithEllipsis)(param, 50)}"`;
701
+ }
702
+ // Annotate the CommonJS export names for ESM import in node:
703
+ 0 && (module.exports = {
704
+ BindingCall,
705
+ Page
706
+ });