rebrowser-playwright-core 1.49.1 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/bin/reinstall_msedge_beta_linux.sh +6 -0
  3. package/bin/reinstall_msedge_dev_linux.sh +6 -0
  4. package/bin/reinstall_msedge_stable_linux.sh +6 -0
  5. package/browsers.json +28 -13
  6. package/index.js +0 -1
  7. package/lib/androidServerImpl.js +42 -48
  8. package/lib/browserServerImpl.js +60 -64
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +314 -354
  11. package/lib/cli/programWithTestStub.js +51 -44
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +146 -254
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -39
  16. package/lib/client/browser.js +59 -68
  17. package/lib/client/browserContext.js +302 -322
  18. package/lib/client/browserType.js +95 -143
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +109 -139
  21. package/lib/client/clientHelper.js +49 -42
  22. package/lib/client/clientInstrumentation.js +40 -35
  23. package/lib/client/clientStackTrace.js +69 -0
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +203 -218
  26. package/lib/client/consoleMessage.js +33 -33
  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 +74 -76
  31. package/lib/client/elementHandle.js +126 -163
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +127 -127
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +154 -178
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +34 -0
  38. package/lib/client/frame.js +189 -307
  39. package/lib/client/harRouter.js +44 -56
  40. package/lib/client/input.js +40 -69
  41. package/lib/client/jsHandle.js +55 -71
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +53 -28
  44. package/lib/client/locator.js +144 -230
  45. package/lib/client/network.js +285 -301
  46. package/lib/client/page.js +273 -312
  47. package/lib/client/platform.js +74 -0
  48. package/lib/client/playwright.js +62 -57
  49. package/lib/client/selectors.js +51 -43
  50. package/lib/client/stream.js +30 -45
  51. package/lib/client/timeoutSettings.js +75 -0
  52. package/lib/client/tracing.js +49 -82
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +71 -91
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +111 -0
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +28 -43
  60. package/lib/generated/clockSource.js +26 -5
  61. package/lib/generated/consoleApiSource.js +26 -5
  62. package/lib/generated/injectedScriptSource.js +26 -5
  63. package/lib/generated/pollingRecorderSource.js +26 -5
  64. package/lib/generated/utilityScriptSource.js +26 -5
  65. package/lib/generated/webSocketMockSource.js +375 -4
  66. package/lib/inProcessFactory.js +53 -48
  67. package/lib/inprocess.js +2 -19
  68. package/lib/outofprocess.js +53 -42
  69. package/lib/protocol/debug.js +209 -25
  70. package/lib/protocol/serializers.js +153 -134
  71. package/lib/protocol/validator.js +2712 -2667
  72. package/lib/protocol/validatorPrimitives.js +115 -75
  73. package/lib/remote/playwrightConnection.js +144 -152
  74. package/lib/remote/playwrightServer.js +106 -77
  75. package/lib/server/accessibility.js +44 -37
  76. package/lib/server/android/android.js +216 -206
  77. package/lib/server/android/backendAdb.js +89 -82
  78. package/lib/server/artifact.js +78 -55
  79. package/lib/server/bidi/bidiBrowser.js +227 -158
  80. package/lib/server/bidi/bidiChromium.js +106 -78
  81. package/lib/server/bidi/bidiConnection.js +66 -83
  82. package/lib/server/bidi/bidiExecutionContext.js +161 -97
  83. package/lib/server/bidi/bidiFirefox.js +76 -68
  84. package/lib/server/bidi/bidiInput.js +90 -102
  85. package/lib/server/bidi/bidiNetworkManager.js +141 -159
  86. package/lib/server/bidi/bidiOverCdp.js +57 -58
  87. package/lib/server/bidi/bidiPage.js +262 -261
  88. package/lib/server/bidi/bidiPdf.js +52 -86
  89. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  90. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  91. package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
  92. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  93. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  94. package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
  95. package/lib/server/browser.js +76 -84
  96. package/lib/server/browserContext.js +343 -360
  97. package/lib/server/browserType.js +169 -181
  98. package/lib/server/callLog.js +82 -0
  99. package/lib/server/chromium/chromium.js +212 -190
  100. package/lib/server/chromium/chromiumSwitches.js +99 -44
  101. package/lib/server/chromium/crAccessibility.js +157 -131
  102. package/lib/server/chromium/crBrowser.js +262 -280
  103. package/lib/server/chromium/crConnection.js +121 -178
  104. package/lib/server/chromium/crCoverage.js +113 -127
  105. package/lib/server/chromium/crDevTools.js +64 -55
  106. package/lib/server/chromium/crDragDrop.js +62 -79
  107. package/lib/server/chromium/crExecutionContext.js +100 -91
  108. package/lib/server/chromium/crInput.js +101 -88
  109. package/lib/server/chromium/crNetworkManager.js +269 -370
  110. package/lib/server/chromium/crPage.js +509 -597
  111. package/lib/server/chromium/crPdf.js +54 -86
  112. package/lib/server/chromium/crProtocolHelper.js +92 -80
  113. package/lib/server/chromium/crServiceWorker.js +85 -69
  114. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  115. package/lib/server/chromium/protocol.d.js +16 -0
  116. package/lib/server/chromium/videoRecorder.js +65 -99
  117. package/lib/server/clock.js +58 -46
  118. package/lib/server/codegen/csharp.js +191 -156
  119. package/lib/server/codegen/java.js +163 -125
  120. package/lib/server/codegen/javascript.js +166 -143
  121. package/lib/server/codegen/jsonl.js +33 -29
  122. package/lib/server/codegen/language.js +75 -52
  123. package/lib/server/codegen/languages.js +65 -27
  124. package/lib/server/codegen/python.js +141 -125
  125. package/lib/server/codegen/types.js +15 -4
  126. package/lib/server/console.js +28 -32
  127. package/lib/server/cookieStore.js +105 -86
  128. package/lib/server/debugController.js +102 -154
  129. package/lib/server/debugger.js +82 -78
  130. package/lib/server/deviceDescriptors.js +37 -24
  131. package/lib/server/deviceDescriptorsSource.json +131 -131
  132. package/lib/server/dialog.js +36 -35
  133. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  134. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  135. package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
  136. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  137. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  138. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  139. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
  140. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  141. package/lib/server/dispatchers/dispatcher.js +180 -229
  142. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  143. package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
  144. package/lib/server/dispatchers/frameDispatcher.js +93 -162
  145. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  146. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  147. package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
  148. package/lib/server/dispatchers/networkDispatchers.js +92 -109
  149. package/lib/server/dispatchers/pageDispatcher.js +130 -169
  150. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  151. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  152. package/lib/server/dispatchers/streamDispatcher.js +42 -44
  153. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  154. package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
  155. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
  156. package/lib/server/dom.js +424 -443
  157. package/lib/server/download.js +45 -35
  158. package/lib/server/electron/electron.js +156 -175
  159. package/lib/server/electron/loader.js +8 -36
  160. package/lib/server/errors.js +47 -46
  161. package/lib/server/fetch.js +302 -331
  162. package/lib/server/fileChooser.js +25 -24
  163. package/lib/server/fileUploadUtils.js +66 -57
  164. package/lib/server/firefox/ffAccessibility.js +153 -131
  165. package/lib/server/firefox/ffBrowser.js +218 -274
  166. package/lib/server/firefox/ffConnection.js +63 -84
  167. package/lib/server/firefox/ffExecutionContext.js +103 -77
  168. package/lib/server/firefox/ffInput.js +72 -63
  169. package/lib/server/firefox/ffNetworkManager.js +131 -110
  170. package/lib/server/firefox/ffPage.js +244 -302
  171. package/lib/server/firefox/firefox.js +76 -69
  172. package/lib/server/firefox/protocol.d.js +16 -0
  173. package/lib/server/formData.js +107 -35
  174. package/lib/server/frameSelectors.js +77 -111
  175. package/lib/server/frames.js +719 -855
  176. package/lib/server/har/harRecorder.js +85 -77
  177. package/lib/server/har/harTracer.js +288 -224
  178. package/lib/server/harBackend.js +157 -0
  179. package/lib/server/helper.js +56 -59
  180. package/lib/server/index.js +59 -106
  181. package/lib/server/input.js +136 -166
  182. package/lib/server/instrumentation.js +49 -44
  183. package/lib/server/javascript.js +157 -151
  184. package/lib/server/launchApp.js +92 -73
  185. package/lib/server/localUtils.js +211 -0
  186. package/lib/server/macEditingCommands.js +141 -137
  187. package/lib/server/network.js +263 -297
  188. package/lib/server/page.js +351 -434
  189. package/lib/server/pageBinding.js +88 -0
  190. package/lib/server/pipeTransport.js +49 -45
  191. package/lib/server/playwright.js +60 -67
  192. package/lib/server/progress.js +56 -51
  193. package/lib/server/protocolError.js +34 -31
  194. package/lib/server/recorder/chat.js +161 -0
  195. package/lib/server/recorder/contextRecorder.js +135 -148
  196. package/lib/server/recorder/recorderApp.js +129 -132
  197. package/lib/server/recorder/recorderCollection.js +57 -57
  198. package/lib/server/recorder/recorderFrontend.js +15 -4
  199. package/lib/server/recorder/recorderRunner.js +80 -100
  200. package/lib/server/recorder/recorderUtils.js +59 -72
  201. package/lib/server/recorder/throttledFile.js +42 -31
  202. package/lib/server/recorder.js +186 -190
  203. package/lib/server/registry/browserFetcher.js +107 -100
  204. package/lib/server/registry/dependencies.js +247 -198
  205. package/lib/server/registry/index.js +928 -709
  206. package/lib/server/registry/nativeDeps.js +1073 -461
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +166 -182
  209. package/lib/server/selectors.js +85 -46
  210. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  211. package/lib/server/socksInterceptor.js +62 -67
  212. package/lib/server/storageScript.js +154 -0
  213. package/lib/server/timeoutSettings.js +89 -0
  214. package/lib/server/trace/recorder/snapshotter.js +70 -88
  215. package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
  216. package/lib/server/trace/recorder/tracing.js +324 -327
  217. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  218. package/lib/server/trace/viewer/traceViewer.js +172 -137
  219. package/lib/server/transport.js +125 -133
  220. package/lib/server/types.js +26 -22
  221. package/lib/server/usKeyboardLayout.js +135 -545
  222. package/lib/server/utils/ascii.js +44 -0
  223. package/lib/server/utils/comparators.js +161 -0
  224. package/lib/server/utils/crypto.js +216 -0
  225. package/lib/server/utils/debug.js +47 -0
  226. package/lib/server/utils/debugLogger.js +114 -0
  227. package/lib/server/utils/env.js +68 -0
  228. package/lib/server/utils/eventsHelper.js +39 -0
  229. package/lib/server/utils/expectUtils.js +38 -0
  230. package/lib/server/utils/fileUtils.js +191 -0
  231. package/lib/server/utils/happyEyeballs.js +207 -0
  232. package/lib/server/utils/hostPlatform.js +109 -0
  233. package/lib/server/utils/httpServer.js +218 -0
  234. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  235. package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
  236. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  237. package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
  238. package/lib/server/utils/linuxUtils.js +71 -0
  239. package/lib/server/utils/network.js +217 -0
  240. package/lib/server/utils/nodePlatform.js +148 -0
  241. package/lib/server/utils/pipeTransport.js +84 -0
  242. package/lib/server/utils/processLauncher.js +238 -0
  243. package/lib/server/utils/profiler.js +65 -0
  244. package/lib/server/utils/socksProxy.js +511 -0
  245. package/lib/server/utils/spawnAsync.js +41 -0
  246. package/lib/server/utils/task.js +51 -0
  247. package/lib/server/utils/userAgent.js +98 -0
  248. package/lib/server/utils/wsServer.js +132 -0
  249. package/lib/server/utils/zipFile.js +74 -0
  250. package/lib/server/utils/zones.js +57 -0
  251. package/lib/server/webkit/protocol.d.js +16 -0
  252. package/lib/server/webkit/webkit.js +76 -63
  253. package/lib/server/webkit/wkAccessibility.js +161 -118
  254. package/lib/server/webkit/wkBrowser.js +163 -180
  255. package/lib/server/webkit/wkConnection.js +59 -83
  256. package/lib/server/webkit/wkExecutionContext.js +96 -73
  257. package/lib/server/webkit/wkInput.js +87 -75
  258. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  259. package/lib/server/webkit/wkPage.js +536 -647
  260. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  261. package/lib/server/webkit/wkWorkers.js +77 -77
  262. package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
  263. package/lib/utils/isomorphic/assert.js +31 -0
  264. package/lib/utils/isomorphic/builtins.js +90 -0
  265. package/lib/utils/isomorphic/colors.js +72 -0
  266. package/lib/utils/isomorphic/cssParser.js +123 -127
  267. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  268. package/lib/utils/isomorphic/headers.js +53 -0
  269. package/lib/utils/isomorphic/locatorGenerators.js +344 -349
  270. package/lib/utils/isomorphic/locatorParser.js +103 -106
  271. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  272. package/lib/utils/isomorphic/manualPromise.js +115 -0
  273. package/lib/utils/isomorphic/mimeType.js +453 -22
  274. package/lib/utils/isomorphic/multimap.js +81 -0
  275. package/lib/utils/isomorphic/rtti.js +43 -0
  276. package/lib/utils/isomorphic/selectorParser.js +183 -193
  277. package/lib/utils/isomorphic/semaphore.js +54 -0
  278. package/lib/utils/isomorphic/stackTrace.js +158 -0
  279. package/lib/utils/isomorphic/stringUtils.js +113 -106
  280. package/lib/utils/isomorphic/time.js +44 -0
  281. package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  282. package/lib/utils/isomorphic/traceUtils.js +52 -32
  283. package/lib/utils/isomorphic/types.js +16 -0
  284. package/lib/utils/isomorphic/urlMatch.js +114 -71
  285. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  286. package/lib/utils.js +101 -0
  287. package/lib/utilsBundle.js +101 -76
  288. package/lib/utilsBundleImpl/index.js +114 -116
  289. package/lib/vite/htmlReport/index.html +26 -20
  290. package/lib/vite/recorder/assets/{codeMirrorModule-C5j27SYZ.js → codeMirrorModule-DVQi6prl.js} +13 -13
  291. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  292. package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
  293. package/lib/vite/recorder/index.html +2 -2
  294. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
  295. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
  296. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  297. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
  298. package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
  299. package/lib/vite/traceViewer/index.html +4 -7
  300. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  301. package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
  302. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
  303. package/lib/vite/traceViewer/uiMode.html +4 -7
  304. package/lib/zipBundle.js +32 -23
  305. package/lib/zipBundleImpl.js +4 -4
  306. package/package.json +7 -7
  307. package/types/protocol.d.ts +819 -127
  308. package/types/types.d.ts +181 -69
  309. package/bin/PrintDeps.exe +0 -0
  310. package/bin/README.md +0 -2
  311. package/lib/common/socksProxy.js +0 -569
  312. package/lib/common/timeoutSettings.js +0 -73
  313. package/lib/common/types.js +0 -5
  314. package/lib/image_tools/colorUtils.js +0 -98
  315. package/lib/image_tools/imageChannel.js +0 -70
  316. package/lib/protocol/transport.js +0 -82
  317. package/lib/server/ariaSnapshot.js +0 -33
  318. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  319. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  320. package/lib/utils/ascii.js +0 -31
  321. package/lib/utils/comparators.js +0 -153
  322. package/lib/utils/crypto.js +0 -171
  323. package/lib/utils/debug.js +0 -46
  324. package/lib/utils/debugLogger.js +0 -91
  325. package/lib/utils/env.js +0 -49
  326. package/lib/utils/eventsHelper.js +0 -38
  327. package/lib/utils/expectUtils.js +0 -33
  328. package/lib/utils/fileUtils.js +0 -205
  329. package/lib/utils/happy-eyeballs.js +0 -194
  330. package/lib/utils/headers.js +0 -52
  331. package/lib/utils/hostPlatform.js +0 -139
  332. package/lib/utils/httpServer.js +0 -237
  333. package/lib/utils/index.js +0 -368
  334. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  335. package/lib/utils/linuxUtils.js +0 -78
  336. package/lib/utils/manualPromise.js +0 -109
  337. package/lib/utils/multimap.js +0 -75
  338. package/lib/utils/network.js +0 -160
  339. package/lib/utils/processLauncher.js +0 -248
  340. package/lib/utils/profiler.js +0 -53
  341. package/lib/utils/rtti.js +0 -44
  342. package/lib/utils/semaphore.js +0 -51
  343. package/lib/utils/sequence.js +0 -64
  344. package/lib/utils/spawnAsync.js +0 -45
  345. package/lib/utils/stackTrace.js +0 -134
  346. package/lib/utils/task.js +0 -58
  347. package/lib/utils/time.js +0 -37
  348. package/lib/utils/timeoutRunner.js +0 -66
  349. package/lib/utils/traceUtils.js +0 -44
  350. package/lib/utils/userAgent.js +0 -105
  351. package/lib/utils/wsServer.js +0 -127
  352. package/lib/utils/zipFile.js +0 -75
  353. package/lib/utils/zones.js +0 -71
  354. package/lib/vite/recorder/assets/index-m0XdVJHe.js +0 -184
  355. package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +0 -24
  356. package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +0 -68
  357. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  358. package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +0 -9
  359. package/lib/vite/traceViewer/embedded.CmarehFk.js +0 -2
  360. package/lib/vite/traceViewer/embedded.html +0 -18
  361. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  362. package/lib/vite/traceViewer/index.FBucu_gE.js +0 -2
  363. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  364. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  365. package/lib/vite/traceViewer/recorder.CW_rzcEp.js +0 -2
  366. package/lib/vite/traceViewer/recorder.html +0 -17
  367. package/lib/vite/traceViewer/uiMode.CDUVjusr.js +0 -5
  368. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  369. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  370. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  371. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  372. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -1,57 +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
-
40
- // Symbols for our own info on Nodes/StyleSheets.
41
- const kSnapshotFrameId = Symbol('__playwright_snapshot_frameid_');
42
- const kCachedData = Symbol('__playwright_snapshot_cache_');
43
- 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_");
44
43
  function resetCachedData(obj) {
45
44
  delete obj[kCachedData];
46
45
  }
47
46
  function ensureCachedData(obj) {
48
- if (!obj[kCachedData]) obj[kCachedData] = {};
47
+ if (!obj[kCachedData])
48
+ obj[kCachedData] = {};
49
49
  return obj[kCachedData];
50
50
  }
51
51
  function removeHash(url) {
52
52
  try {
53
53
  const u = new URL(url);
54
- u.hash = '';
54
+ u.hash = "";
55
55
  return u.toString();
56
56
  } catch (e) {
57
57
  return url;
@@ -60,74 +60,68 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
60
60
  class Streamer {
61
61
  constructor() {
62
62
  this._lastSnapshotNumber = 0;
63
- this._staleStyleSheets = new Set();
63
+ this._staleStyleSheets = /* @__PURE__ */ new Set();
64
64
  this._readingStyleSheet = false;
65
- // To avoid invalidating due to our own reads.
66
- this._fakeBase = void 0;
67
- this._observer = void 0;
68
- const invalidateCSSGroupingRule = rule => {
69
- if (rule.parentStyleSheet) this._invalidateStyleSheet(rule.parentStyleSheet);
70
- };
71
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'insertRule', sheet => this._invalidateStyleSheet(sheet));
72
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'deleteRule', sheet => this._invalidateStyleSheet(sheet));
73
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'addRule', sheet => this._invalidateStyleSheet(sheet));
74
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'removeRule', sheet => this._invalidateStyleSheet(sheet));
75
- this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'rules', sheet => this._invalidateStyleSheet(sheet));
76
- this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'cssRules', sheet => this._invalidateStyleSheet(sheet));
77
- this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'replaceSync', sheet => this._invalidateStyleSheet(sheet));
78
- this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'insertRule', invalidateCSSGroupingRule);
79
- this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'deleteRule', invalidateCSSGroupingRule);
80
- this._interceptNativeGetter(window.CSSGroupingRule.prototype, 'cssRules', invalidateCSSGroupingRule);
81
- this._interceptNativeAsyncMethod(window.CSSStyleSheet.prototype, 'replace', sheet => this._invalidateStyleSheet(sheet));
82
- this._fakeBase = document.createElement('base');
83
- this._observer = new MutationObserver(list => this._handleMutations(list));
84
- const observerConfig = {
85
- attributes: true,
86
- subtree: true
65
+ const invalidateCSSGroupingRule = (rule) => {
66
+ if (rule.parentStyleSheet)
67
+ this._invalidateStyleSheet(rule.parentStyleSheet);
87
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 };
88
83
  this._observer.observe(document, observerConfig);
89
84
  this._refreshListenersWhenNeeded();
90
85
  }
91
86
  _refreshListenersWhenNeeded() {
92
87
  this._refreshListeners();
93
- const customEventName = '__playwright_snapshotter_global_listeners_check__';
88
+ const customEventName = "__playwright_snapshotter_global_listeners_check__";
94
89
  let seenEvent = false;
95
90
  const handleCustomEvent = () => seenEvent = true;
96
91
  window.addEventListener(customEventName, handleCustomEvent);
97
- const observer = new MutationObserver(entries => {
98
- // Check for new documentElement in case we need to reinstall document listeners.
99
- 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));
100
94
  if (newDocumentElement) {
101
- // New documentElement - let's check whether listeners are still here.
102
95
  seenEvent = false;
103
96
  window.dispatchEvent(new CustomEvent(customEventName));
104
97
  if (!seenEvent) {
105
- // Listener did not fire. Reattach the listener and notify.
106
98
  window.addEventListener(customEventName, handleCustomEvent);
107
99
  this._refreshListeners();
108
100
  }
109
101
  }
110
102
  });
111
- observer.observe(document, {
112
- childList: true
113
- });
103
+ observer.observe(document, { childList: true });
114
104
  }
115
105
  _refreshListeners() {
116
- document.addEventListener('__playwright_mark_target__', event => {
117
- if (!event.detail) return;
106
+ document.addEventListener("__playwright_mark_target__", (event) => {
107
+ if (!event.detail)
108
+ return;
118
109
  const callId = event.detail;
119
110
  event.composedPath()[0].__playwright_target__ = callId;
120
111
  });
121
- document.addEventListener('__playwright_unmark_target__', event => {
122
- if (!event.detail) return;
112
+ document.addEventListener("__playwright_unmark_target__", (event) => {
113
+ if (!event.detail)
114
+ return;
123
115
  const callId = event.detail;
124
- 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__;
125
118
  });
126
119
  }
127
120
  _interceptNativeMethod(obj, method, cb) {
128
121
  const native = obj[method];
129
- if (!native) return;
130
- obj[method] = function (...args) {
122
+ if (!native)
123
+ return;
124
+ obj[method] = function(...args) {
131
125
  const result = native.call(this, ...args);
132
126
  cb(this, result);
133
127
  return result;
@@ -135,8 +129,9 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
135
129
  }
136
130
  _interceptNativeAsyncMethod(obj, method, cb) {
137
131
  const native = obj[method];
138
- if (!native) return;
139
- obj[method] = async function (...args) {
132
+ if (!native)
133
+ return;
134
+ obj[method] = async function(...args) {
140
135
  const result = await native.call(this, ...args);
141
136
  cb(this, result);
142
137
  return result;
@@ -146,7 +141,7 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
146
141
  const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
147
142
  Object.defineProperty(obj, prop, {
148
143
  ...descriptor,
149
- get: function () {
144
+ get: function() {
150
145
  const result = descriptor.get.call(this);
151
146
  cb(this, result);
152
147
  return result;
@@ -154,26 +149,26 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
154
149
  });
155
150
  }
156
151
  _handleMutations(list) {
157
- for (const mutation of list) ensureCachedData(mutation.target).attributesCached = undefined;
152
+ for (const mutation of list)
153
+ ensureCachedData(mutation.target).attributesCached = void 0;
158
154
  }
159
155
  _invalidateStyleSheet(sheet) {
160
- if (this._readingStyleSheet) return;
156
+ if (this._readingStyleSheet)
157
+ return;
161
158
  this._staleStyleSheets.add(sheet);
162
159
  }
163
160
  _updateStyleElementStyleSheetTextIfNeeded(sheet, forceText) {
164
161
  const data = ensureCachedData(sheet);
165
- if (this._staleStyleSheets.has(sheet) || forceText && data.cssText === undefined) {
162
+ if (this._staleStyleSheets.has(sheet) || forceText && data.cssText === void 0) {
166
163
  this._staleStyleSheets.delete(sheet);
167
164
  try {
168
165
  data.cssText = this._getSheetText(sheet);
169
166
  } catch (e) {
170
- // Sometimes we cannot access cross-origin stylesheets.
171
- data.cssText = '';
167
+ data.cssText = "";
172
168
  }
173
169
  }
174
170
  return data.cssText;
175
171
  }
176
-
177
172
  // Returns either content, ref, or no override.
178
173
  _updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber) {
179
174
  const data = ensureCachedData(sheet);
@@ -184,50 +179,58 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
184
179
  data.cssRef = snapshotNumber;
185
180
  return data.cssText;
186
181
  } catch (e) {
187
- // Sometimes we cannot access cross-origin stylesheets.
188
182
  }
189
183
  }
190
- return data.cssRef === undefined ? undefined : snapshotNumber - data.cssRef;
184
+ return data.cssRef === void 0 ? void 0 : snapshotNumber - data.cssRef;
191
185
  }
192
186
  markIframe(iframeElement, frameId) {
193
187
  iframeElement[kSnapshotFrameId] = frameId;
194
188
  }
195
189
  reset() {
196
190
  this._staleStyleSheets.clear();
197
- const visitNode = node => {
191
+ const visitNode = (node) => {
198
192
  resetCachedData(node);
199
193
  if (node.nodeType === Node.ELEMENT_NODE) {
200
194
  const element = node;
201
- if (element.shadowRoot) visitNode(element.shadowRoot);
195
+ if (element.shadowRoot)
196
+ visitNode(element.shadowRoot);
202
197
  }
203
- for (let child = node.firstChild; child; child = child.nextSibling) visitNode(child);
198
+ for (let child = node.firstChild; child; child = child.nextSibling)
199
+ visitNode(child);
204
200
  };
205
201
  visitNode(document.documentElement);
206
202
  visitNode(this._fakeBase);
207
203
  }
208
204
  __sanitizeMetaAttribute(name, value, httpEquiv) {
209
- if (name === 'charset') return 'utf-8';
210
- if (httpEquiv.toLowerCase() !== 'content-type' || name !== 'content') return value;
211
- const [type, ...params] = value.split(';');
212
- if (type !== 'text/html' || params.length <= 0) return value;
213
- const charsetParamIdx = params.findIndex(param => param.trim().startsWith('charset='));
214
- if (charsetParamIdx > -1) params[charsetParamIdx] = 'charset=utf-8';
215
- 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("; ")}`;
216
216
  }
217
217
  _sanitizeUrl(url) {
218
- if (url.startsWith('javascript:') || url.startsWith('vbscript:')) return '';
218
+ if (url.startsWith("javascript:") || url.startsWith("vbscript:"))
219
+ return "";
219
220
  return url;
220
221
  }
221
222
  _sanitizeSrcSet(srcset) {
222
- return srcset.split(',').map(src => {
223
+ return srcset.split(",").map((src) => {
223
224
  src = src.trim();
224
- const spaceIndex = src.lastIndexOf(' ');
225
- if (spaceIndex === -1) return this._sanitizeUrl(src);
225
+ const spaceIndex = src.lastIndexOf(" ");
226
+ if (spaceIndex === -1)
227
+ return this._sanitizeUrl(src);
226
228
  return this._sanitizeUrl(src.substring(0, spaceIndex).trim()) + src.substring(spaceIndex);
227
- }).join(', ');
229
+ }).join(", ");
228
230
  }
229
231
  _resolveUrl(base, url) {
230
- if (url === '') return '';
232
+ if (url === "")
233
+ return "";
231
234
  try {
232
235
  return new URL(url, base).href;
233
236
  } catch (e) {
@@ -236,16 +239,19 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
236
239
  }
237
240
  _getSheetBase(sheet) {
238
241
  let rootSheet = sheet;
239
- while (rootSheet.parentStyleSheet) rootSheet = rootSheet.parentStyleSheet;
240
- if (rootSheet.ownerNode) return rootSheet.ownerNode.baseURI;
242
+ while (rootSheet.parentStyleSheet)
243
+ rootSheet = rootSheet.parentStyleSheet;
244
+ if (rootSheet.ownerNode)
245
+ return rootSheet.ownerNode.baseURI;
241
246
  return document.baseURI;
242
247
  }
243
248
  _getSheetText(sheet) {
244
249
  this._readingStyleSheet = true;
245
250
  try {
246
251
  const rules = [];
247
- for (const rule of sheet.cssRules) rules.push(rule.cssText);
248
- return rules.join('\n');
252
+ for (const rule of sheet.cssRules)
253
+ rules.push(rule.cssText);
254
+ return rules.join("\n");
249
255
  } finally {
250
256
  this._readingStyleSheet = false;
251
257
  }
@@ -256,229 +262,251 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
256
262
  let nodeCounter = 0;
257
263
  let shadowDomNesting = 0;
258
264
  let headNesting = 0;
259
-
260
- // Ensure we are up to date.
261
265
  this._handleMutations(this._observer.takeRecords());
262
- const definedCustomElements = new Set();
263
- const visitNode = node => {
266
+ const definedCustomElements = /* @__PURE__ */ new Set();
267
+ const visitNode = (node) => {
264
268
  const nodeType = node.nodeType;
265
- const nodeName = nodeType === Node.DOCUMENT_FRAGMENT_NODE ? 'template' : node.nodeName;
266
- if (nodeType !== Node.ELEMENT_NODE && nodeType !== Node.DOCUMENT_FRAGMENT_NODE && nodeType !== Node.TEXT_NODE) return;
267
- if (nodeName === 'SCRIPT') return;
268
- // Don't preload resources.
269
- if (nodeName === 'LINK' && nodeType === Node.ELEMENT_NODE) {
270
- var _getAttribute;
271
- const rel = (_getAttribute = node.getAttribute('rel')) === null || _getAttribute === void 0 ? void 0 : _getAttribute.toLowerCase();
272
- 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;
273
278
  }
274
- if (removeNoScript && nodeName === 'NOSCRIPT') return;
275
- if (nodeName === 'META' && node.httpEquiv.toLowerCase() === 'content-security-policy') return;
276
- // Skip iframes which are inside document's head as they are not visible.
277
- // See https://github.com/microsoft/playwright/issues/12005.
278
- 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;
279
285
  const data = ensureCachedData(node);
280
286
  const values = [];
281
287
  let equals = !!data.cached;
282
288
  let extraNodes = 0;
283
- const expectValue = value => {
289
+ const expectValue = (value) => {
284
290
  equals = equals && data.cached[values.length] === value;
285
291
  values.push(value);
286
292
  };
287
- const checkAndReturn = n => {
293
+ const checkAndReturn = (n) => {
288
294
  data.attributesCached = true;
289
- if (equals) return {
290
- equals: true,
291
- n: [[snapshotNumber - data.ref[0], data.ref[1]]]
292
- };
295
+ if (equals)
296
+ return { equals: true, n: [[snapshotNumber - data.ref[0], data.ref[1]]] };
293
297
  nodeCounter += extraNodes;
294
298
  data.ref = [snapshotNumber, nodeCounter++];
295
299
  data.cached = values;
296
- return {
297
- equals: false,
298
- n
299
- };
300
+ return { equals: false, n };
300
301
  };
301
302
  if (nodeType === Node.TEXT_NODE) {
302
- const value = node.nodeValue || '';
303
+ const value = node.nodeValue || "";
303
304
  expectValue(value);
304
305
  return checkAndReturn(value);
305
306
  }
306
- if (nodeName === 'STYLE') {
307
+ if (nodeName === "STYLE") {
307
308
  const sheet = node.sheet;
308
309
  let cssText;
309
- if (sheet) cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet);
310
- cssText = cssText || node.textContent || '';
310
+ if (sheet)
311
+ cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet);
312
+ cssText = cssText || node.textContent || "";
311
313
  expectValue(cssText);
312
- // Compensate for the extra 'cssText' text node.
313
314
  extraNodes++;
314
315
  return checkAndReturn([nodeName, {}, cssText]);
315
316
  }
316
317
  const attrs = {};
317
- const result = [nodeName, attrs];
318
- const visitChild = child => {
318
+ const result2 = [nodeName, attrs];
319
+ const visitChild = (child) => {
319
320
  const snapshot = visitNode(child);
320
321
  if (snapshot) {
321
- result.push(snapshot.n);
322
+ result2.push(snapshot.n);
322
323
  expectValue(child);
323
324
  equals = equals && snapshot.equals;
324
325
  }
325
326
  };
326
- const visitChildStyleSheet = child => {
327
+ const visitChildStyleSheet = (child) => {
327
328
  const snapshot = visitStyleSheet(child);
328
329
  if (snapshot) {
329
- result.push(snapshot.n);
330
+ result2.push(snapshot.n);
330
331
  expectValue(child);
331
332
  equals = equals && snapshot.equals;
332
333
  }
333
334
  };
334
- if (nodeType === Node.DOCUMENT_FRAGMENT_NODE) attrs[kShadowAttribute] = 'open';
335
+ if (nodeType === Node.DOCUMENT_FRAGMENT_NODE)
336
+ attrs[kShadowAttribute] = "open";
335
337
  if (nodeType === Node.ELEMENT_NODE) {
336
- var _window$customElement;
337
338
  const element = node;
338
- if (element.localName.includes('-') && (_window$customElement = window.customElements) !== null && _window$customElement !== void 0 && _window$customElement.get(element.localName)) definedCustomElements.add(element.localName);
339
- 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") {
340
342
  const value = element.value;
341
343
  expectValue(kValueAttribute);
342
344
  expectValue(value);
343
345
  attrs[kValueAttribute] = value;
344
346
  }
345
- if (nodeName === 'INPUT' && ['checkbox', 'radio'].includes(element.type)) {
346
- const value = element.checked ? 'true' : 'false';
347
+ if (nodeName === "INPUT" && ["checkbox", "radio"].includes(element.type)) {
348
+ const value = element.checked ? "true" : "false";
347
349
  expectValue(kCheckedAttribute);
348
350
  expectValue(value);
349
351
  attrs[kCheckedAttribute] = value;
350
352
  }
351
- if (nodeName === 'OPTION') {
352
- const value = element.selected ? 'true' : 'false';
353
+ if (nodeName === "OPTION") {
354
+ const value = element.selected ? "true" : "false";
353
355
  expectValue(kSelectedAttribute);
354
356
  expectValue(value);
355
357
  attrs[kSelectedAttribute] = value;
356
358
  }
357
- if (nodeName === 'CANVAS') {
359
+ if (nodeName === "CANVAS" || nodeName === "IFRAME" || nodeName === "FRAME") {
358
360
  const boundingRect = element.getBoundingClientRect();
359
361
  const value = JSON.stringify({
360
- left: boundingRect.left / window.innerWidth,
361
- top: boundingRect.top / window.innerHeight,
362
- right: boundingRect.right / window.innerWidth,
363
- bottom: boundingRect.bottom / window.innerHeight
362
+ left: boundingRect.left,
363
+ top: boundingRect.top,
364
+ right: boundingRect.right,
365
+ bottom: boundingRect.bottom
364
366
  });
365
367
  expectValue(kBoundingRectAttribute);
366
368
  expectValue(value);
367
369
  attrs[kBoundingRectAttribute] = value;
368
370
  }
371
+ if (element.popover && element.matches && element.matches(":popover-open")) {
372
+ const value = "true";
373
+ expectValue(kPopoverOpenAttribute);
374
+ expectValue(value);
375
+ attrs[kPopoverOpenAttribute] = value;
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
+ }
369
383
  if (element.scrollTop) {
370
384
  expectValue(kScrollTopAttribute);
371
385
  expectValue(element.scrollTop);
372
- attrs[kScrollTopAttribute] = '' + element.scrollTop;
386
+ attrs[kScrollTopAttribute] = "" + element.scrollTop;
373
387
  }
374
388
  if (element.scrollLeft) {
375
389
  expectValue(kScrollLeftAttribute);
376
390
  expectValue(element.scrollLeft);
377
- attrs[kScrollLeftAttribute] = '' + element.scrollLeft;
391
+ attrs[kScrollLeftAttribute] = "" + element.scrollLeft;
378
392
  }
379
393
  if (element.shadowRoot) {
380
394
  ++shadowDomNesting;
381
395
  visitChild(element.shadowRoot);
382
396
  --shadowDomNesting;
383
397
  }
384
- if ('__playwright_target__' in element) {
398
+ if ("__playwright_target__" in element) {
385
399
  expectValue(kTargetAttribute);
386
- expectValue(element['__playwright_target__']);
387
- attrs[kTargetAttribute] = element['__playwright_target__'];
400
+ expectValue(element["__playwright_target__"]);
401
+ attrs[kTargetAttribute] = element["__playwright_target__"];
388
402
  }
389
403
  }
390
- if (nodeName === 'HEAD') {
404
+ if (nodeName === "HEAD") {
391
405
  ++headNesting;
392
- // Insert fake <base> first, to ensure all <link> elements use the proper base uri.
393
- this._fakeBase.setAttribute('href', document.baseURI);
406
+ this._fakeBase.setAttribute("href", document.baseURI);
394
407
  visitChild(this._fakeBase);
395
408
  }
396
- for (let child = node.firstChild; child; child = child.nextSibling) visitChild(child);
397
- if (nodeName === 'HEAD') --headNesting;
409
+ for (let child = node.firstChild; child; child = child.nextSibling)
410
+ visitChild(child);
411
+ if (nodeName === "HEAD")
412
+ --headNesting;
398
413
  expectValue(kEndOfList);
399
414
  let documentOrShadowRoot = null;
400
- 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;
401
419
  if (documentOrShadowRoot) {
402
- for (const sheet of documentOrShadowRoot.adoptedStyleSheets || []) visitChildStyleSheet(sheet);
420
+ for (const sheet of documentOrShadowRoot.adoptedStyleSheets || [])
421
+ visitChildStyleSheet(sheet);
403
422
  expectValue(kEndOfList);
404
423
  }
405
-
406
- // Process iframe src attribute before bailing out since it depends on a symbol, not the DOM.
407
- if (nodeName === 'IFRAME' || nodeName === 'FRAME') {
424
+ if (nodeName === "IFRAME" || nodeName === "FRAME") {
408
425
  const element = node;
409
426
  const frameId = element[kSnapshotFrameId];
410
- const name = 'src';
411
- const value = frameId ? `/snapshot/${frameId}` : '';
427
+ const name = "src";
428
+ const value = frameId ? `/snapshot/${frameId}` : "";
412
429
  expectValue(name);
413
430
  expectValue(value);
414
431
  attrs[name] = value;
415
432
  }
416
-
417
- // Process custom elements before bailing out since they depend on JS, not the DOM.
418
- if (nodeName === 'BODY' && definedCustomElements.size) {
419
- const value = [...definedCustomElements].join(',');
433
+ if (nodeName === "BODY" && definedCustomElements.size) {
434
+ const value = [...definedCustomElements].join(",");
420
435
  expectValue(kCustomElementsAttribute);
421
436
  expectValue(value);
422
437
  attrs[kCustomElementsAttribute] = value;
423
438
  }
424
-
425
- // Process currentSrc before bailing out since it depends on JS, not the DOM.
426
- if (nodeName === 'IMG' || nodeName === 'PICTURE') {
427
- const value = nodeName === 'PICTURE' ? '' : this._sanitizeUrl(node.currentSrc);
439
+ if (nodeName === "IMG" || nodeName === "PICTURE") {
440
+ const value = nodeName === "PICTURE" ? "" : this._sanitizeUrl(node.currentSrc);
428
441
  expectValue(kCurrentSrcAttribute);
429
442
  expectValue(value);
430
443
  attrs[kCurrentSrcAttribute] = value;
431
444
  }
432
-
433
- // We can skip attributes comparison because nothing else has changed,
434
- // and mutation observer didn't tell us about the attributes.
435
- if (equals && data.attributesCached && !shadowDomNesting) return checkAndReturn(result);
445
+ if (equals && data.attributesCached && !shadowDomNesting)
446
+ return checkAndReturn(result2);
436
447
  if (nodeType === Node.ELEMENT_NODE) {
437
448
  const element = node;
438
449
  for (let i = 0; i < element.attributes.length; i++) {
439
450
  const name = element.attributes[i].name;
440
- if (nodeName === 'LINK' && name === 'integrity') continue;
441
- if (nodeName === 'IFRAME' && (name === 'src' || name === 'srcdoc' || name === 'sandbox')) continue;
442
- 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;
443
459
  let value = element.attributes[i].value;
444
- 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 = "";
445
472
  expectValue(name);
446
473
  expectValue(value);
447
474
  attrs[name] = value;
448
475
  }
449
476
  expectValue(kEndOfList);
450
477
  }
451
- if (result.length === 2 && !Object.keys(attrs).length) result.pop(); // Remove empty attrs when there are no children.
452
- return checkAndReturn(result);
478
+ if (result2.length === 2 && !Object.keys(attrs).length)
479
+ result2.pop();
480
+ return checkAndReturn(result2);
453
481
  };
454
- const visitStyleSheet = sheet => {
482
+ const visitStyleSheet = (sheet) => {
455
483
  const data = ensureCachedData(sheet);
456
484
  const oldCSSText = data.cssText;
457
- const cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet, true /* forceText */);
458
- if (cssText === oldCSSText) return {
459
- equals: true,
460
- n: [[snapshotNumber - data.ref[0], data.ref[1]]]
461
- };
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]]] };
462
492
  data.ref = [snapshotNumber, nodeCounter++];
463
493
  return {
464
494
  equals: false,
465
- n: ['template', {
495
+ n: ["template", {
466
496
  [kStyleSheetAttribute]: cssText
467
497
  }]
468
498
  };
469
499
  };
470
500
  let html;
471
501
  if (document.documentElement) {
472
- const {
473
- n
474
- } = visitNode(document.documentElement);
502
+ const { n } = visitNode(document.documentElement);
475
503
  html = n;
476
504
  } else {
477
- html = ['html'];
505
+ html = ["html"];
478
506
  }
479
507
  const result = {
480
508
  html,
481
- doctype: document.doctype ? document.doctype.name : undefined,
509
+ doctype: document.doctype ? document.doctype.name : void 0,
482
510
  resourceOverrides: [],
483
511
  viewport: {
484
512
  width: window.innerWidth,
@@ -489,23 +517,23 @@ function frameSnapshotStreamer(snapshotStreamer, removeNoScript) {
489
517
  collectionTime: 0
490
518
  };
491
519
  for (const sheet of this._staleStyleSheets) {
492
- if (sheet.href === null) continue;
520
+ if (sheet.href === null)
521
+ continue;
493
522
  const content = this._updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber);
494
- if (content === undefined) {
495
- // Unable to capture stylesheet contents.
523
+ if (content === void 0) {
496
524
  continue;
497
525
  }
498
526
  const base = this._getSheetBase(sheet);
499
527
  const url = removeHash(this._resolveUrl(base, sheet.href));
500
- result.resourceOverrides.push({
501
- url,
502
- content,
503
- contentType: 'text/css'
504
- });
528
+ result.resourceOverrides.push({ url, content, contentType: "text/css" });
505
529
  }
506
530
  result.collectionTime = performance.now() - timestamp;
507
531
  return result;
508
532
  }
509
533
  }
510
534
  window[snapshotStreamer] = new Streamer();
511
- }
535
+ }
536
+ // Annotate the CommonJS export names for ESM import in node:
537
+ 0 && (module.exports = {
538
+ frameSnapshotStreamer
539
+ });