@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,58 +1,57 @@
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 snapshotterInjected_exports = {};
20
+ __export(snapshotterInjected_exports, {
21
+ frameSnapshotStreamer: () => frameSnapshotStreamer
5
22
  });
6
- exports.frameSnapshotStreamer = frameSnapshotStreamer;
7
- /**
8
- * Copyright (c) Microsoft Corporation.
9
- *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- */
22
-
23
+ module.exports = __toCommonJS(snapshotterInjected_exports);
23
24
  function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
24
- // Communication with Playwright.
25
- if (window[snapshotStreamer]) return;
26
-
27
- // Attributes present in the snapshot.
28
- const kShadowAttribute = '__playwright_shadow_root_';
29
- const kValueAttribute = '__playwright_value_';
30
- const kCheckedAttribute = '__playwright_checked_';
31
- const kSelectedAttribute = '__playwright_selected_';
32
- const kScrollTopAttribute = '__playwright_scroll_top_';
33
- const kScrollLeftAttribute = '__playwright_scroll_left_';
34
- const kStyleSheetAttribute = '__playwright_style_sheet_';
35
- const kTargetAttribute = '__playwright_target__';
36
- const kCustomElementsAttribute = '__playwright_custom_elements__';
37
- const kCurrentSrcAttribute = '__playwright_current_src__';
38
- const kBoundingRectAttribute = '__playwright_bounding_rect__';
39
- const kPopoverOpenAttribute = '__playwright_popover_open_';
40
-
41
- // Symbols for our own info on Nodes/StyleSheets.
42
- const kSnapshotFrameId = Symbol('__playwright_snapshot_frameid_');
43
- const kCachedData = Symbol('__playwright_snapshot_cache_');
44
- const kEndOfList = Symbol('__playwright_end_of_list_');
25
+ if (window[snapshotStreamer])
26
+ return;
27
+ const kShadowAttribute = "__playwright_shadow_root_";
28
+ const kValueAttribute = "__playwright_value_";
29
+ const kCheckedAttribute = "__playwright_checked_";
30
+ const kSelectedAttribute = "__playwright_selected_";
31
+ const kScrollTopAttribute = "__playwright_scroll_top_";
32
+ const kScrollLeftAttribute = "__playwright_scroll_left_";
33
+ const kStyleSheetAttribute = "__playwright_style_sheet_";
34
+ const kTargetAttribute = "__playwright_target__";
35
+ const kCustomElementsAttribute = "__playwright_custom_elements__";
36
+ const kCurrentSrcAttribute = "__playwright_current_src__";
37
+ const kBoundingRectAttribute = "__playwright_bounding_rect__";
38
+ const kPopoverOpenAttribute = "__playwright_popover_open_";
39
+ const kDialogOpenAttribute = "__playwright_dialog_open_";
40
+ const kSnapshotFrameId = Symbol("__playwright_snapshot_frameid_");
41
+ const kCachedData = Symbol("__playwright_snapshot_cache_");
42
+ const kEndOfList = Symbol("__playwright_end_of_list_");
45
43
  function resetCachedData(obj) {
46
44
  delete obj[kCachedData];
47
45
  }
48
46
  function ensureCachedData(obj) {
49
- if (!obj[kCachedData]) obj[kCachedData] = {};
47
+ if (!obj[kCachedData])
48
+ obj[kCachedData] = {};
50
49
  return obj[kCachedData];
51
50
  }
52
51
  function removeHash(url) {
53
52
  try {
54
53
  const u = new URL(url);
55
- u.hash = '';
54
+ u.hash = "";
56
55
  return u.toString();
57
56
  } catch (e) {
58
57
  return url;
@@ -61,74 +60,68 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
61
60
  class Streamer {
62
61
  constructor() {
63
62
  this._lastSnapshotNumber = 0;
64
- this._staleStyleSheets = new Set();
63
+ this._staleStyleSheets = /* @__PURE__ */ new Set();
65
64
  this._readingStyleSheet = false;
66
- // To avoid invalidating due to our own reads.
67
- this._fakeBase = void 0;
68
- this._observer = void 0;
69
- const invalidateCSSGroupingRule = rule => {
70
- if (rule.parentStyleSheet) this._invalidateStyleSheet(rule.parentStyleSheet);
71
- };
72
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'insertRule', sheet => this._invalidateStyleSheet(sheet));
73
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'deleteRule', sheet => this._invalidateStyleSheet(sheet));
74
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'addRule', sheet => this._invalidateStyleSheet(sheet));
75
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'removeRule', sheet => this._invalidateStyleSheet(sheet));
76
- this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'rules', sheet => this._invalidateStyleSheet(sheet));
77
- this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'cssRules', sheet => this._invalidateStyleSheet(sheet));
78
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'replaceSync', sheet => this._invalidateStyleSheet(sheet));
79
- this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'insertRule', invalidateCSSGroupingRule);
80
- this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'deleteRule', invalidateCSSGroupingRule);
81
- this._interceptNativeGetter(window.CSSGroupingRule.prototype, 'cssRules', invalidateCSSGroupingRule);
82
- this._interceptNativeAsyncMethod(window.CSSStyleSheet.prototype, 'replace', sheet => this._invalidateStyleSheet(sheet));
83
- this._fakeBase = document.createElement('base');
84
- this._observer = new MutationObserver(list => this._handleMutations(list));
85
- const observerConfig = {
86
- attributes: true,
87
- subtree: true
65
+ const invalidateCSSGroupingRule = (rule) => {
66
+ if (rule.parentStyleSheet)
67
+ this._invalidateStyleSheet(rule.parentStyleSheet);
88
68
  };
69
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, "insertRule", (sheet) => this._invalidateStyleSheet(sheet));
70
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, "deleteRule", (sheet) => this._invalidateStyleSheet(sheet));
71
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, "addRule", (sheet) => this._invalidateStyleSheet(sheet));
72
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, "removeRule", (sheet) => this._invalidateStyleSheet(sheet));
73
+ this._interceptNativeGetter(window.CSSStyleSheet.prototype, "rules", (sheet) => this._invalidateStyleSheet(sheet));
74
+ this._interceptNativeGetter(window.CSSStyleSheet.prototype, "cssRules", (sheet) => this._invalidateStyleSheet(sheet));
75
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, "replaceSync", (sheet) => this._invalidateStyleSheet(sheet));
76
+ this._interceptNativeMethod(window.CSSGroupingRule.prototype, "insertRule", invalidateCSSGroupingRule);
77
+ this._interceptNativeMethod(window.CSSGroupingRule.prototype, "deleteRule", invalidateCSSGroupingRule);
78
+ this._interceptNativeGetter(window.CSSGroupingRule.prototype, "cssRules", invalidateCSSGroupingRule);
79
+ this._interceptNativeAsyncMethod(window.CSSStyleSheet.prototype, "replace", (sheet) => this._invalidateStyleSheet(sheet));
80
+ this._fakeBase = document.createElement("base");
81
+ this._observer = new MutationObserver((list) => this._handleMutations(list));
82
+ const observerConfig = { attributes: true, subtree: true };
89
83
  this._observer.observe(document, observerConfig);
90
84
  this._refreshListenersWhenNeeded();
91
85
  }
92
86
  _refreshListenersWhenNeeded() {
93
87
  this._refreshListeners();
94
- const customEventName = '__playwright_snapshotter_global_listeners_check__';
88
+ const customEventName = "__playwright_snapshotter_global_listeners_check__";
95
89
  let seenEvent = false;
96
90
  const handleCustomEvent = () => seenEvent = true;
97
91
  window.addEventListener(customEventName, handleCustomEvent);
98
- const observer = new MutationObserver(entries => {
99
- // Check for new documentElement in case we need to reinstall document listeners.
100
- const newDocumentElement = entries.some(entry => Array.from(entry.addedNodes).includes(document.documentElement));
92
+ const observer = new MutationObserver((entries) => {
93
+ const newDocumentElement = entries.some((entry) => Array.from(entry.addedNodes).includes(document.documentElement));
101
94
  if (newDocumentElement) {
102
- // New documentElement - let's check whether listeners are still here.
103
95
  seenEvent = false;
104
96
  window.dispatchEvent(new CustomEvent(customEventName));
105
97
  if (!seenEvent) {
106
- // Listener did not fire. Reattach the listener and notify.
107
98
  window.addEventListener(customEventName, handleCustomEvent);
108
99
  this._refreshListeners();
109
100
  }
110
101
  }
111
102
  });
112
- observer.observe(document, {
113
- childList: true
114
- });
103
+ observer.observe(document, { childList: true });
115
104
  }
116
105
  _refreshListeners() {
117
- document.addEventListener('__playwright_mark_target__', event => {
118
- if (!event.detail) return;
106
+ document.addEventListener("__playwright_mark_target__", (event) => {
107
+ if (!event.detail)
108
+ return;
119
109
  const callId = event.detail;
120
110
  event.composedPath()[0].__playwright_target__ = callId;
121
111
  });
122
- document.addEventListener('__playwright_unmark_target__', event => {
123
- if (!event.detail) return;
112
+ document.addEventListener("__playwright_unmark_target__", (event) => {
113
+ if (!event.detail)
114
+ return;
124
115
  const callId = event.detail;
125
- if (event.composedPath()[0].__playwright_target__ === callId) delete event.composedPath()[0].__playwright_target__;
116
+ if (event.composedPath()[0].__playwright_target__ === callId)
117
+ delete event.composedPath()[0].__playwright_target__;
126
118
  });
127
119
  }
128
120
  _interceptNativeMethod(obj, method, cb) {
129
121
  const native = obj[method];
130
- if (!native) return;
131
- obj[method] = function (...args) {
122
+ if (!native)
123
+ return;
124
+ obj[method] = function(...args) {
132
125
  const result = native.call(this, ...args);
133
126
  cb(this, result);
134
127
  return result;
@@ -136,8 +129,9 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
136
129
  }
137
130
  _interceptNativeAsyncMethod(obj, method, cb) {
138
131
  const native = obj[method];
139
- if (!native) return;
140
- obj[method] = async function (...args) {
132
+ if (!native)
133
+ return;
134
+ obj[method] = async function(...args) {
141
135
  const result = await native.call(this, ...args);
142
136
  cb(this, result);
143
137
  return result;
@@ -147,7 +141,7 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
147
141
  const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
148
142
  Object.defineProperty(obj, prop, {
149
143
  ...descriptor,
150
- get: function () {
144
+ get: function() {
151
145
  const result = descriptor.get.call(this);
152
146
  cb(this, result);
153
147
  return result;
@@ -155,26 +149,26 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
155
149
  });
156
150
  }
157
151
  _handleMutations(list) {
158
- for (const mutation of list) ensureCachedData(mutation.target).attributesCached = undefined;
152
+ for (const mutation of list)
153
+ ensureCachedData(mutation.target).attributesCached = void 0;
159
154
  }
160
155
  _invalidateStyleSheet(sheet) {
161
- if (this._readingStyleSheet) return;
156
+ if (this._readingStyleSheet)
157
+ return;
162
158
  this._staleStyleSheets.add(sheet);
163
159
  }
164
160
  _updateStyleElementStyleSheetTextIfNeeded(sheet, forceText) {
165
161
  const data = ensureCachedData(sheet);
166
- if (this._staleStyleSheets.has(sheet) || forceText && data.cssText === undefined) {
162
+ if (this._staleStyleSheets.has(sheet) || forceText && data.cssText === void 0) {
167
163
  this._staleStyleSheets.delete(sheet);
168
164
  try {
169
165
  data.cssText = this._getSheetText(sheet);
170
166
  } catch (e) {
171
- // Sometimes we cannot access cross-origin stylesheets.
172
- data.cssText = '';
167
+ data.cssText = "";
173
168
  }
174
169
  }
175
170
  return data.cssText;
176
171
  }
177
-
178
172
  // Returns either content, ref, or no override.
179
173
  _updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber) {
180
174
  const data = ensureCachedData(sheet);
@@ -185,50 +179,58 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
185
179
  data.cssRef = snapshotNumber;
186
180
  return data.cssText;
187
181
  } catch (e) {
188
- // Sometimes we cannot access cross-origin stylesheets.
189
182
  }
190
183
  }
191
- return data.cssRef === undefined ? undefined : snapshotNumber - data.cssRef;
184
+ return data.cssRef === void 0 ? void 0 : snapshotNumber - data.cssRef;
192
185
  }
193
186
  markIframe(iframeElement, frameId) {
194
187
  iframeElement[kSnapshotFrameId] = frameId;
195
188
  }
196
189
  reset() {
197
190
  this._staleStyleSheets.clear();
198
- const visitNode = node => {
191
+ const visitNode = (node) => {
199
192
  resetCachedData(node);
200
193
  if (node.nodeType === Node.ELEMENT_NODE) {
201
194
  const element = node;
202
- if (element.shadowRoot) visitNode(element.shadowRoot);
195
+ if (element.shadowRoot)
196
+ visitNode(element.shadowRoot);
203
197
  }
204
- for (let child = node.firstChild; child; child = child.nextSibling) visitNode(child);
198
+ for (let child = node.firstChild; child; child = child.nextSibling)
199
+ visitNode(child);
205
200
  };
206
201
  visitNode(document.documentElement);
207
202
  visitNode(this._fakeBase);
208
203
  }
209
204
  __sanitizeMetaAttribute(name, value, httpEquiv) {
210
- if (name === 'charset') return 'utf-8';
211
- if (httpEquiv.toLowerCase() !== 'content-type' || name !== 'content') return value;
212
- const [type, ...params] = value.split(';');
213
- if (type !== 'text/html' || params.length <= 0) return value;
214
- const charsetParamIdx = params.findIndex(param => param.trim().startsWith('charset='));
215
- if (charsetParamIdx > -1) params[charsetParamIdx] = 'charset=utf-8';
216
- return `${type}; ${params.join('; ')}`;
205
+ if (name === "charset")
206
+ return "utf-8";
207
+ if (httpEquiv.toLowerCase() !== "content-type" || name !== "content")
208
+ return value;
209
+ const [type, ...params] = value.split(";");
210
+ if (type !== "text/html" || params.length <= 0)
211
+ return value;
212
+ const charsetParamIdx = params.findIndex((param) => param.trim().startsWith("charset="));
213
+ if (charsetParamIdx > -1)
214
+ params[charsetParamIdx] = "charset=utf-8";
215
+ return `${type}; ${params.join("; ")}`;
217
216
  }
218
217
  _sanitizeUrl(url) {
219
- if (url.startsWith('javascript:') || url.startsWith('vbscript:')) return '';
218
+ if (url.startsWith("javascript:") || url.startsWith("vbscript:"))
219
+ return "";
220
220
  return url;
221
221
  }
222
222
  _sanitizeSrcSet(srcset) {
223
- return srcset.split(',').map(src => {
223
+ return srcset.split(",").map((src) => {
224
224
  src = src.trim();
225
- const spaceIndex = src.lastIndexOf(' ');
226
- if (spaceIndex === -1) return this._sanitizeUrl(src);
225
+ const spaceIndex = src.lastIndexOf(" ");
226
+ if (spaceIndex === -1)
227
+ return this._sanitizeUrl(src);
227
228
  return this._sanitizeUrl(src.substring(0, spaceIndex).trim()) + src.substring(spaceIndex);
228
- }).join(', ');
229
+ }).join(", ");
229
230
  }
230
231
  _resolveUrl(base, url) {
231
- if (url === '') return '';
232
+ if (url === "")
233
+ return "";
232
234
  try {
233
235
  return new URL(url, base).href;
234
236
  } catch (e) {
@@ -237,16 +239,19 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
237
239
  }
238
240
  _getSheetBase(sheet) {
239
241
  let rootSheet = sheet;
240
- while (rootSheet.parentStyleSheet) rootSheet = rootSheet.parentStyleSheet;
241
- if (rootSheet.ownerNode) return rootSheet.ownerNode.baseURI;
242
+ while (rootSheet.parentStyleSheet)
243
+ rootSheet = rootSheet.parentStyleSheet;
244
+ if (rootSheet.ownerNode)
245
+ return rootSheet.ownerNode.baseURI;
242
246
  return document.baseURI;
243
247
  }
244
248
  _getSheetText(sheet) {
245
249
  this._readingStyleSheet = true;
246
250
  try {
247
251
  const rules = [];
248
- for (const rule of sheet.cssRules) rules.push(rule.cssText);
249
- return rules.join('\n');
252
+ for (const rule of sheet.cssRules)
253
+ rules.push(rule.cssText);
254
+ return rules.join("\n");
250
255
  } finally {
251
256
  this._readingStyleSheet = false;
252
257
  }
@@ -257,105 +262,101 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
257
262
  let nodeCounter = 0;
258
263
  let shadowDomNesting = 0;
259
264
  let headNesting = 0;
260
-
261
- // Ensure we are up to date.
262
265
  this._handleMutations(this._observer.takeRecords());
263
- const definedCustomElements = new Set();
264
- const visitNode = node => {
266
+ const definedCustomElements = /* @__PURE__ */ new Set();
267
+ const visitNode = (node) => {
265
268
  const nodeType = node.nodeType;
266
- const nodeName = nodeType === Node.DOCUMENT_FRAGMENT_NODE ? 'template' : node.nodeName;
267
- if (nodeType !== Node.ELEMENT_NODE && nodeType !== Node.DOCUMENT_FRAGMENT_NODE && nodeType !== Node.TEXT_NODE) return;
268
- if (nodeName === 'SCRIPT') return;
269
- // Don't preload resources.
270
- if (nodeName === 'LINK' && nodeType === Node.ELEMENT_NODE) {
271
- var _getAttribute;
272
- const rel = (_getAttribute = node.getAttribute('rel')) === null || _getAttribute === void 0 ? void 0 : _getAttribute.toLowerCase();
273
- if (rel === 'preload' || rel === 'prefetch') return;
269
+ const nodeName = nodeType === Node.DOCUMENT_FRAGMENT_NODE ? "template" : node.nodeName;
270
+ if (nodeType !== Node.ELEMENT_NODE && nodeType !== Node.DOCUMENT_FRAGMENT_NODE && nodeType !== Node.TEXT_NODE)
271
+ return;
272
+ if (nodeName === "SCRIPT")
273
+ return;
274
+ if (nodeName === "LINK" && nodeType === Node.ELEMENT_NODE) {
275
+ const rel = node.getAttribute("rel")?.toLowerCase();
276
+ if (rel === "preload" || rel === "prefetch")
277
+ return;
274
278
  }
275
- if (removeNoScript && nodeName === 'NOSCRIPT') return;
276
- if (nodeName === 'META' && node.httpEquiv.toLowerCase() === 'content-security-policy') return;
277
- // Skip iframes which are inside document's head as they are not visible.
278
- // See https://github.com/microsoft/playwright/issues/12005.
279
- if ((nodeName === 'IFRAME' || nodeName === 'FRAME') && headNesting) return;
279
+ if (removeNoScript && nodeName === "NOSCRIPT")
280
+ return;
281
+ if (nodeName === "META" && node.httpEquiv.toLowerCase() === "content-security-policy")
282
+ return;
283
+ if ((nodeName === "IFRAME" || nodeName === "FRAME") && headNesting)
284
+ return;
280
285
  const data = ensureCachedData(node);
281
286
  const values = [];
282
287
  let equals = !!data.cached;
283
288
  let extraNodes = 0;
284
- const expectValue = value => {
289
+ const expectValue = (value) => {
285
290
  equals = equals && data.cached[values.length] === value;
286
291
  values.push(value);
287
292
  };
288
- const checkAndReturn = n => {
293
+ const checkAndReturn = (n) => {
289
294
  data.attributesCached = true;
290
- if (equals) return {
291
- equals: true,
292
- n: [[snapshotNumber - data.ref[0], data.ref[1]]]
293
- };
295
+ if (equals)
296
+ return { equals: true, n: [[snapshotNumber - data.ref[0], data.ref[1]]] };
294
297
  nodeCounter += extraNodes;
295
298
  data.ref = [snapshotNumber, nodeCounter++];
296
299
  data.cached = values;
297
- return {
298
- equals: false,
299
- n
300
- };
300
+ return { equals: false, n };
301
301
  };
302
302
  if (nodeType === Node.TEXT_NODE) {
303
- const value = node.nodeValue || '';
303
+ const value = node.nodeValue || "";
304
304
  expectValue(value);
305
305
  return checkAndReturn(value);
306
306
  }
307
- if (nodeName === 'STYLE') {
307
+ if (nodeName === "STYLE") {
308
308
  const sheet = node.sheet;
309
309
  let cssText;
310
- if (sheet) cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet);
311
- cssText = cssText || node.textContent || '';
310
+ if (sheet)
311
+ cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet);
312
+ cssText = cssText || node.textContent || "";
312
313
  expectValue(cssText);
313
- // Compensate for the extra 'cssText' text node.
314
314
  extraNodes++;
315
315
  return checkAndReturn([nodeName, {}, cssText]);
316
316
  }
317
317
  const attrs = {};
318
- const result = [nodeName, attrs];
319
- const visitChild = child => {
318
+ const result2 = [nodeName, attrs];
319
+ const visitChild = (child) => {
320
320
  const snapshot = visitNode(child);
321
321
  if (snapshot) {
322
- result.push(snapshot.n);
322
+ result2.push(snapshot.n);
323
323
  expectValue(child);
324
324
  equals = equals && snapshot.equals;
325
325
  }
326
326
  };
327
- const visitChildStyleSheet = child => {
327
+ const visitChildStyleSheet = (child) => {
328
328
  const snapshot = visitStyleSheet(child);
329
329
  if (snapshot) {
330
- result.push(snapshot.n);
330
+ result2.push(snapshot.n);
331
331
  expectValue(child);
332
332
  equals = equals && snapshot.equals;
333
333
  }
334
334
  };
335
- if (nodeType === Node.DOCUMENT_FRAGMENT_NODE) attrs[kShadowAttribute] = 'open';
335
+ if (nodeType === Node.DOCUMENT_FRAGMENT_NODE)
336
+ attrs[kShadowAttribute] = "open";
336
337
  if (nodeType === Node.ELEMENT_NODE) {
337
- var _window$customElement;
338
338
  const element = node;
339
- if (element.localName.includes('-') && (_window$customElement = window.customElements) !== null && _window$customElement !== void 0 && _window$customElement.get(element.localName)) definedCustomElements.add(element.localName);
340
- if (nodeName === 'INPUT' || nodeName === 'TEXTAREA') {
339
+ if (element.localName.includes("-") && window.customElements?.get(element.localName))
340
+ definedCustomElements.add(element.localName);
341
+ if (nodeName === "INPUT" || nodeName === "TEXTAREA") {
341
342
  const value = element.value;
342
343
  expectValue(kValueAttribute);
343
344
  expectValue(value);
344
345
  attrs[kValueAttribute] = value;
345
346
  }
346
- if (nodeName === 'INPUT' && ['checkbox', 'radio'].includes(element.type)) {
347
- const value = element.checked ? 'true' : 'false';
347
+ if (nodeName === "INPUT" && ["checkbox", "radio"].includes(element.type)) {
348
+ const value = element.checked ? "true" : "false";
348
349
  expectValue(kCheckedAttribute);
349
350
  expectValue(value);
350
351
  attrs[kCheckedAttribute] = value;
351
352
  }
352
- if (nodeName === 'OPTION') {
353
- const value = element.selected ? 'true' : 'false';
353
+ if (nodeName === "OPTION") {
354
+ const value = element.selected ? "true" : "false";
354
355
  expectValue(kSelectedAttribute);
355
356
  expectValue(value);
356
357
  attrs[kSelectedAttribute] = value;
357
358
  }
358
- if (nodeName === 'CANVAS' || nodeName === 'IFRAME' || nodeName === 'FRAME') {
359
+ if (nodeName === "CANVAS" || nodeName === "IFRAME" || nodeName === "FRAME") {
359
360
  const boundingRect = element.getBoundingClientRect();
360
361
  const value = JSON.stringify({
361
362
  left: boundingRect.left,
@@ -367,125 +368,145 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
367
368
  expectValue(value);
368
369
  attrs[kBoundingRectAttribute] = value;
369
370
  }
370
- if (element.popover && element.matches && element.matches(':popover-open')) {
371
- const value = 'true';
371
+ if (element.popover && element.matches && element.matches(":popover-open")) {
372
+ const value = "true";
372
373
  expectValue(kPopoverOpenAttribute);
373
374
  expectValue(value);
374
375
  attrs[kPopoverOpenAttribute] = value;
375
376
  }
377
+ if (nodeName === "DIALOG" && element.open) {
378
+ const value = element.matches(":modal") ? "modal" : "true";
379
+ expectValue(kDialogOpenAttribute);
380
+ expectValue(value);
381
+ attrs[kDialogOpenAttribute] = value;
382
+ }
376
383
  if (element.scrollTop) {
377
384
  expectValue(kScrollTopAttribute);
378
385
  expectValue(element.scrollTop);
379
- attrs[kScrollTopAttribute] = '' + element.scrollTop;
386
+ attrs[kScrollTopAttribute] = "" + element.scrollTop;
380
387
  }
381
388
  if (element.scrollLeft) {
382
389
  expectValue(kScrollLeftAttribute);
383
390
  expectValue(element.scrollLeft);
384
- attrs[kScrollLeftAttribute] = '' + element.scrollLeft;
391
+ attrs[kScrollLeftAttribute] = "" + element.scrollLeft;
385
392
  }
386
393
  if (element.shadowRoot) {
387
394
  ++shadowDomNesting;
388
395
  visitChild(element.shadowRoot);
389
396
  --shadowDomNesting;
390
397
  }
391
- if ('__playwright_target__' in element) {
398
+ if ("__playwright_target__" in element) {
392
399
  expectValue(kTargetAttribute);
393
- expectValue(element['__playwright_target__']);
394
- attrs[kTargetAttribute] = element['__playwright_target__'];
400
+ expectValue(element["__playwright_target__"]);
401
+ attrs[kTargetAttribute] = element["__playwright_target__"];
395
402
  }
396
403
  }
397
- if (nodeName === 'HEAD') {
404
+ if (nodeName === "HEAD") {
398
405
  ++headNesting;
399
- // Insert fake <base> first, to ensure all <link> elements use the proper base uri.
400
- this._fakeBase.setAttribute('href', document.baseURI);
406
+ this._fakeBase.setAttribute("href", document.baseURI);
401
407
  visitChild(this._fakeBase);
402
408
  }
403
- for (let child = node.firstChild; child; child = child.nextSibling) visitChild(child);
404
- if (nodeName === 'HEAD') --headNesting;
409
+ for (let child = node.firstChild; child; child = child.nextSibling)
410
+ visitChild(child);
411
+ if (nodeName === "HEAD")
412
+ --headNesting;
405
413
  expectValue(kEndOfList);
406
414
  let documentOrShadowRoot = null;
407
- if (node.ownerDocument.documentElement === node) documentOrShadowRoot = node.ownerDocument;else if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) documentOrShadowRoot = node;
415
+ if (node.ownerDocument.documentElement === node)
416
+ documentOrShadowRoot = node.ownerDocument;
417
+ else if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE)
418
+ documentOrShadowRoot = node;
408
419
  if (documentOrShadowRoot) {
409
- for (const sheet of documentOrShadowRoot.adoptedStyleSheets || []) visitChildStyleSheet(sheet);
420
+ for (const sheet of documentOrShadowRoot.adoptedStyleSheets || [])
421
+ visitChildStyleSheet(sheet);
410
422
  expectValue(kEndOfList);
411
423
  }
412
-
413
- // Process iframe src attribute before bailing out since it depends on a symbol, not the DOM.
414
- if (nodeName === 'IFRAME' || nodeName === 'FRAME') {
424
+ if (nodeName === "IFRAME" || nodeName === "FRAME") {
415
425
  const element = node;
416
426
  const frameId = element[kSnapshotFrameId];
417
- const name = 'src';
418
- const value = frameId ? `/snapshot/${frameId}` : '';
427
+ const name = "src";
428
+ const value = frameId ? `/snapshot/${frameId}` : "";
419
429
  expectValue(name);
420
430
  expectValue(value);
421
431
  attrs[name] = value;
422
432
  }
423
-
424
- // Process custom elements before bailing out since they depend on JS, not the DOM.
425
- if (nodeName === 'BODY' && definedCustomElements.size) {
426
- const value = [...definedCustomElements].join(',');
433
+ if (nodeName === "BODY" && definedCustomElements.size) {
434
+ const value = [...definedCustomElements].join(",");
427
435
  expectValue(kCustomElementsAttribute);
428
436
  expectValue(value);
429
437
  attrs[kCustomElementsAttribute] = value;
430
438
  }
431
-
432
- // Process currentSrc before bailing out since it depends on JS, not the DOM.
433
- if (nodeName === 'IMG' || nodeName === 'PICTURE') {
434
- const value = nodeName === 'PICTURE' ? '' : this._sanitizeUrl(node.currentSrc);
439
+ if (nodeName === "IMG" || nodeName === "PICTURE") {
440
+ const value = nodeName === "PICTURE" ? "" : this._sanitizeUrl(node.currentSrc);
435
441
  expectValue(kCurrentSrcAttribute);
436
442
  expectValue(value);
437
443
  attrs[kCurrentSrcAttribute] = value;
438
444
  }
439
-
440
- // We can skip attributes comparison because nothing else has changed,
441
- // and mutation observer didn't tell us about the attributes.
442
- if (equals && data.attributesCached && !shadowDomNesting) return checkAndReturn(result);
445
+ if (equals && data.attributesCached && !shadowDomNesting)
446
+ return checkAndReturn(result2);
443
447
  if (nodeType === Node.ELEMENT_NODE) {
444
448
  const element = node;
445
449
  for (let i = 0; i < element.attributes.length; i++) {
446
450
  const name = element.attributes[i].name;
447
- if (nodeName === 'LINK' && name === 'integrity') continue;
448
- if (nodeName === 'IFRAME' && (name === 'src' || name === 'srcdoc' || name === 'sandbox')) continue;
449
- if (nodeName === 'FRAME' && name === 'src') continue;
451
+ if (nodeName === "LINK" && name === "integrity")
452
+ continue;
453
+ if (nodeName === "IFRAME" && (name === "src" || name === "srcdoc" || name === "sandbox"))
454
+ continue;
455
+ if (nodeName === "FRAME" && name === "src")
456
+ continue;
457
+ if (nodeName === "DIALOG" && name === "open")
458
+ continue;
450
459
  let value = element.attributes[i].value;
451
- if (nodeName === 'META') value = this.__sanitizeMetaAttribute(name, value, node.httpEquiv);else if (name === 'src' && nodeName === 'IMG') value = this._sanitizeUrl(value);else if (name === 'srcset' && nodeName === 'IMG') value = this._sanitizeSrcSet(value);else if (name === 'srcset' && nodeName === 'SOURCE') value = this._sanitizeSrcSet(value);else if (name === 'href' && nodeName === 'LINK') value = this._sanitizeUrl(value);else if (name.startsWith('on')) value = '';
460
+ if (nodeName === "META")
461
+ value = this.__sanitizeMetaAttribute(name, value, node.httpEquiv);
462
+ else if (name === "src" && nodeName === "IMG")
463
+ value = this._sanitizeUrl(value);
464
+ else if (name === "srcset" && nodeName === "IMG")
465
+ value = this._sanitizeSrcSet(value);
466
+ else if (name === "srcset" && nodeName === "SOURCE")
467
+ value = this._sanitizeSrcSet(value);
468
+ else if (name === "href" && nodeName === "LINK")
469
+ value = this._sanitizeUrl(value);
470
+ else if (name.startsWith("on"))
471
+ value = "";
452
472
  expectValue(name);
453
473
  expectValue(value);
454
474
  attrs[name] = value;
455
475
  }
456
476
  expectValue(kEndOfList);
457
477
  }
458
- if (result.length === 2 && !Object.keys(attrs).length) result.pop(); // Remove empty attrs when there are no children.
459
- return checkAndReturn(result);
478
+ if (result2.length === 2 && !Object.keys(attrs).length)
479
+ result2.pop();
480
+ return checkAndReturn(result2);
460
481
  };
461
- const visitStyleSheet = sheet => {
482
+ const visitStyleSheet = (sheet) => {
462
483
  const data = ensureCachedData(sheet);
463
484
  const oldCSSText = data.cssText;
464
- const cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet, true /* forceText */);
465
- if (cssText === oldCSSText) return {
466
- equals: true,
467
- n: [[snapshotNumber - data.ref[0], data.ref[1]]]
468
- };
485
+ const cssText = this._updateStyleElementStyleSheetTextIfNeeded(
486
+ sheet,
487
+ true
488
+ /* forceText */
489
+ );
490
+ if (cssText === oldCSSText)
491
+ return { equals: true, n: [[snapshotNumber - data.ref[0], data.ref[1]]] };
469
492
  data.ref = [snapshotNumber, nodeCounter++];
470
493
  return {
471
494
  equals: false,
472
- n: ['template', {
495
+ n: ["template", {
473
496
  [kStyleSheetAttribute]: cssText
474
497
  }]
475
498
  };
476
499
  };
477
500
  let html;
478
501
  if (document.documentElement) {
479
- const {
480
- n
481
- } = visitNode(document.documentElement);
502
+ const { n } = visitNode(document.documentElement);
482
503
  html = n;
483
504
  } else {
484
- html = ['html'];
505
+ html = ["html"];
485
506
  }
486
507
  const result = {
487
508
  html,
488
- doctype: document.doctype ? document.doctype.name : undefined,
509
+ doctype: document.doctype ? document.doctype.name : void 0,
489
510
  resourceOverrides: [],
490
511
  viewport: {
491
512
  width: window.innerWidth,
@@ -496,23 +517,23 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
496
517
  collectionTime: 0
497
518
  };
498
519
  for (const sheet of this._staleStyleSheets) {
499
- if (sheet.href === null) continue;
520
+ if (sheet.href === null)
521
+ continue;
500
522
  const content = this._updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber);
501
- if (content === undefined) {
502
- // Unable to capture stylesheet contents.
523
+ if (content === void 0) {
503
524
  continue;
504
525
  }
505
526
  const base = this._getSheetBase(sheet);
506
527
  const url = removeHash(this._resolveUrl(base, sheet.href));
507
- result.resourceOverrides.push({
508
- url,
509
- content,
510
- contentType: 'text/css'
511
- });
528
+ result.resourceOverrides.push({ url, content, contentType: "text/css" });
512
529
  }
513
530
  result.collectionTime = performance.now() - timestamp;
514
531
  return result;
515
532
  }
516
533
  }
517
534
  window[snapshotStreamer] = new Streamer();
518
- }
535
+ }
536
+ // Annotate the CommonJS export names for ESM import in node:
537
+ 0 && (module.exports = {
538
+ frameSnapshotStreamer
539
+ });