patchright 1.48.0__py3-none-win32.whl

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 (406) hide show
  1. patchright/__init__.py +5 -0
  2. patchright/__main__.py +18 -0
  3. patchright/_impl/__init__.py +0 -0
  4. patchright/_impl/__pyinstaller/__init__.py +20 -0
  5. patchright/_impl/__pyinstaller/hook-playwright.async_api.py +17 -0
  6. patchright/_impl/__pyinstaller/hook-playwright.sync_api.py +17 -0
  7. patchright/_impl/_accessibility.py +50 -0
  8. patchright/_impl/_api_structures.py +271 -0
  9. patchright/_impl/_artifact.py +45 -0
  10. patchright/_impl/_assertions.py +779 -0
  11. patchright/_impl/_async_base.py +92 -0
  12. patchright/_impl/_browser.py +243 -0
  13. patchright/_impl/_browser_context.py +724 -0
  14. patchright/_impl/_browser_type.py +264 -0
  15. patchright/_impl/_cdp_session.py +21 -0
  16. patchright/_impl/_clock.py +57 -0
  17. patchright/_impl/_connection.py +554 -0
  18. patchright/_impl/_console_message.py +45 -0
  19. patchright/_impl/_dialog.py +40 -0
  20. patchright/_impl/_download.py +50 -0
  21. patchright/_impl/_driver.py +26 -0
  22. patchright/_impl/_element_handle.py +376 -0
  23. patchright/_impl/_errors.py +44 -0
  24. patchright/_impl/_event_context_manager.py +20 -0
  25. patchright/_impl/_fetch.py +511 -0
  26. patchright/_impl/_file_chooser.py +43 -0
  27. patchright/_impl/_frame.py +755 -0
  28. patchright/_impl/_glob.py +51 -0
  29. patchright/_impl/_greenlets.py +39 -0
  30. patchright/_impl/_har_router.py +99 -0
  31. patchright/_impl/_helper.py +421 -0
  32. patchright/_impl/_impl_to_api_mapping.py +123 -0
  33. patchright/_impl/_input.py +71 -0
  34. patchright/_impl/_js_handle.py +234 -0
  35. patchright/_impl/_json_pipe.py +56 -0
  36. patchright/_impl/_local_utils.py +73 -0
  37. patchright/_impl/_locator.py +784 -0
  38. patchright/_impl/_map.py +19 -0
  39. patchright/_impl/_network.py +934 -0
  40. patchright/_impl/_object_factory.py +91 -0
  41. patchright/_impl/_page.py +1446 -0
  42. patchright/_impl/_path_utils.py +11 -0
  43. patchright/_impl/_playwright.py +51 -0
  44. patchright/_impl/_selectors.py +62 -0
  45. patchright/_impl/_set_input_files_helpers.py +135 -0
  46. patchright/_impl/_str_utils.py +57 -0
  47. patchright/_impl/_stream.py +32 -0
  48. patchright/_impl/_sync_base.py +134 -0
  49. patchright/_impl/_tracing.py +103 -0
  50. patchright/_impl/_transport.py +150 -0
  51. patchright/_impl/_video.py +57 -0
  52. patchright/_impl/_waiter.py +142 -0
  53. patchright/_impl/_web_error.py +22 -0
  54. patchright/_impl/_writable_stream.py +27 -0
  55. patchright/_repo_version.py +12 -0
  56. patchright/async_api/__init__.py +177 -0
  57. patchright/async_api/_context_manager.py +39 -0
  58. patchright/async_api/_generated.py +19960 -0
  59. patchright/driver/LICENSE +2174 -0
  60. patchright/driver/README.md +1 -0
  61. patchright/driver/node.exe +0 -0
  62. patchright/driver/package/README.md +3 -0
  63. patchright/driver/package/ThirdPartyNotices.txt +1548 -0
  64. patchright/driver/package/api.json +1 -0
  65. patchright/driver/package/bin/PrintDeps.exe +0 -0
  66. patchright/driver/package/bin/README.md +2 -0
  67. patchright/driver/package/bin/install_media_pack.ps1 +5 -0
  68. patchright/driver/package/bin/reinstall_chrome_beta_linux.sh +40 -0
  69. patchright/driver/package/bin/reinstall_chrome_beta_mac.sh +13 -0
  70. patchright/driver/package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  71. patchright/driver/package/bin/reinstall_chrome_stable_linux.sh +40 -0
  72. patchright/driver/package/bin/reinstall_chrome_stable_mac.sh +12 -0
  73. patchright/driver/package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  74. patchright/driver/package/bin/reinstall_msedge_beta_linux.sh +40 -0
  75. patchright/driver/package/bin/reinstall_msedge_beta_mac.sh +11 -0
  76. patchright/driver/package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  77. patchright/driver/package/bin/reinstall_msedge_dev_linux.sh +40 -0
  78. patchright/driver/package/bin/reinstall_msedge_dev_mac.sh +11 -0
  79. patchright/driver/package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  80. patchright/driver/package/bin/reinstall_msedge_stable_linux.sh +40 -0
  81. patchright/driver/package/bin/reinstall_msedge_stable_mac.sh +11 -0
  82. patchright/driver/package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  83. patchright/driver/package/browsers.json +57 -0
  84. patchright/driver/package/cli.js +18 -0
  85. patchright/driver/package/index.d.ts +17 -0
  86. patchright/driver/package/index.js +33 -0
  87. patchright/driver/package/index.mjs +28 -0
  88. patchright/driver/package/lib/androidServerImpl.js +69 -0
  89. patchright/driver/package/lib/browserServerImpl.js +92 -0
  90. patchright/driver/package/lib/cli/driver.js +95 -0
  91. patchright/driver/package/lib/cli/program.js +587 -0
  92. patchright/driver/package/lib/cli/programWithTestStub.js +67 -0
  93. patchright/driver/package/lib/client/accessibility.js +50 -0
  94. patchright/driver/package/lib/client/android.js +473 -0
  95. patchright/driver/package/lib/client/api.js +285 -0
  96. patchright/driver/package/lib/client/artifact.js +79 -0
  97. patchright/driver/package/lib/client/browser.js +145 -0
  98. patchright/driver/package/lib/client/browserContext.js +559 -0
  99. patchright/driver/package/lib/client/browserType.js +241 -0
  100. patchright/driver/package/lib/client/cdpSession.js +53 -0
  101. patchright/driver/package/lib/client/channelOwner.js +235 -0
  102. patchright/driver/package/lib/client/clientHelper.js +57 -0
  103. patchright/driver/package/lib/client/clientInstrumentation.js +50 -0
  104. patchright/driver/package/lib/client/clock.js +68 -0
  105. patchright/driver/package/lib/client/connection.js +333 -0
  106. patchright/driver/package/lib/client/consoleMessage.js +55 -0
  107. patchright/driver/package/lib/client/coverage.js +41 -0
  108. patchright/driver/package/lib/client/dialog.js +57 -0
  109. patchright/driver/package/lib/client/download.js +62 -0
  110. patchright/driver/package/lib/client/electron.js +135 -0
  111. patchright/driver/package/lib/client/elementHandle.js +321 -0
  112. patchright/driver/package/lib/client/errors.js +77 -0
  113. patchright/driver/package/lib/client/eventEmitter.js +314 -0
  114. patchright/driver/package/lib/client/events.js +94 -0
  115. patchright/driver/package/lib/client/fetch.js +391 -0
  116. patchright/driver/package/lib/client/fileChooser.js +45 -0
  117. patchright/driver/package/lib/client/frame.js +504 -0
  118. patchright/driver/package/lib/client/harRouter.js +99 -0
  119. patchright/driver/package/lib/client/input.js +111 -0
  120. patchright/driver/package/lib/client/jsHandle.js +121 -0
  121. patchright/driver/package/lib/client/jsonPipe.js +35 -0
  122. patchright/driver/package/lib/client/localUtils.js +36 -0
  123. patchright/driver/package/lib/client/locator.js +441 -0
  124. patchright/driver/package/lib/client/network.js +762 -0
  125. patchright/driver/package/lib/client/page.js +746 -0
  126. patchright/driver/package/lib/client/playwright.js +80 -0
  127. patchright/driver/package/lib/client/selectors.js +67 -0
  128. patchright/driver/package/lib/client/stream.js +54 -0
  129. patchright/driver/package/lib/client/tracing.js +134 -0
  130. patchright/driver/package/lib/client/types.js +24 -0
  131. patchright/driver/package/lib/client/video.js +51 -0
  132. patchright/driver/package/lib/client/waiter.js +158 -0
  133. patchright/driver/package/lib/client/webError.js +37 -0
  134. patchright/driver/package/lib/client/worker.js +71 -0
  135. patchright/driver/package/lib/client/writableStream.js +54 -0
  136. patchright/driver/package/lib/common/socksProxy.js +569 -0
  137. patchright/driver/package/lib/common/timeoutSettings.js +73 -0
  138. patchright/driver/package/lib/common/types.js +5 -0
  139. patchright/driver/package/lib/generated/clockSource.js +7 -0
  140. patchright/driver/package/lib/generated/consoleApiSource.js +7 -0
  141. patchright/driver/package/lib/generated/injectedScriptSource.js +7 -0
  142. patchright/driver/package/lib/generated/pollingRecorderSource.js +7 -0
  143. patchright/driver/package/lib/generated/utilityScriptSource.js +7 -0
  144. patchright/driver/package/lib/generated/webSocketMockSource.js +7 -0
  145. patchright/driver/package/lib/image_tools/colorUtils.js +98 -0
  146. patchright/driver/package/lib/image_tools/compare.js +108 -0
  147. patchright/driver/package/lib/image_tools/imageChannel.js +70 -0
  148. patchright/driver/package/lib/image_tools/stats.js +102 -0
  149. patchright/driver/package/lib/inProcessFactory.js +54 -0
  150. patchright/driver/package/lib/inprocess.js +20 -0
  151. patchright/driver/package/lib/outofprocess.js +67 -0
  152. patchright/driver/package/lib/protocol/debug.js +27 -0
  153. patchright/driver/package/lib/protocol/serializers.js +173 -0
  154. patchright/driver/package/lib/protocol/transport.js +82 -0
  155. patchright/driver/package/lib/protocol/validator.js +2759 -0
  156. patchright/driver/package/lib/protocol/validatorPrimitives.js +139 -0
  157. patchright/driver/package/lib/remote/playwrightConnection.js +274 -0
  158. patchright/driver/package/lib/remote/playwrightServer.js +110 -0
  159. patchright/driver/package/lib/server/accessibility.js +62 -0
  160. patchright/driver/package/lib/server/android/android.js +441 -0
  161. patchright/driver/package/lib/server/android/backendAdb.js +172 -0
  162. patchright/driver/package/lib/server/artifact.js +104 -0
  163. patchright/driver/package/lib/server/bidi/bidiBrowser.js +311 -0
  164. patchright/driver/package/lib/server/bidi/bidiChromium.js +124 -0
  165. patchright/driver/package/lib/server/bidi/bidiConnection.js +206 -0
  166. patchright/driver/package/lib/server/bidi/bidiExecutionContext.js +159 -0
  167. patchright/driver/package/lib/server/bidi/bidiFirefox.js +104 -0
  168. patchright/driver/package/lib/server/bidi/bidiInput.js +158 -0
  169. patchright/driver/package/lib/server/bidi/bidiNetworkManager.js +338 -0
  170. patchright/driver/package/lib/server/bidi/bidiOverCdp.js +103 -0
  171. patchright/driver/package/lib/server/bidi/bidiPage.js +529 -0
  172. patchright/driver/package/lib/server/bidi/bidiPdf.js +140 -0
  173. patchright/driver/package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  174. patchright/driver/package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
  175. patchright/driver/package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  176. patchright/driver/package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  177. patchright/driver/package/lib/server/bidi/third_party/firefoxPrefs.js +221 -0
  178. patchright/driver/package/lib/server/browser.js +148 -0
  179. patchright/driver/package/lib/server/browserContext.js +666 -0
  180. patchright/driver/package/lib/server/browserType.js +335 -0
  181. patchright/driver/package/lib/server/chromium/appIcon.png +0 -0
  182. patchright/driver/package/lib/server/chromium/chromium.js +350 -0
  183. patchright/driver/package/lib/server/chromium/chromiumSwitches.js +36 -0
  184. patchright/driver/package/lib/server/chromium/crAccessibility.js +237 -0
  185. patchright/driver/package/lib/server/chromium/crBrowser.js +522 -0
  186. patchright/driver/package/lib/server/chromium/crConnection.js +228 -0
  187. patchright/driver/package/lib/server/chromium/crCoverage.js +246 -0
  188. patchright/driver/package/lib/server/chromium/crDevTools.js +104 -0
  189. patchright/driver/package/lib/server/chromium/crDragDrop.js +143 -0
  190. patchright/driver/package/lib/server/chromium/crExecutionContext.js +149 -0
  191. patchright/driver/package/lib/server/chromium/crInput.js +171 -0
  192. patchright/driver/package/lib/server/chromium/crNetworkManager.js +809 -0
  193. patchright/driver/package/lib/server/chromium/crPage.js +1235 -0
  194. patchright/driver/package/lib/server/chromium/crPdf.js +153 -0
  195. patchright/driver/package/lib/server/chromium/crProtocolHelper.js +133 -0
  196. patchright/driver/package/lib/server/chromium/crServiceWorker.js +111 -0
  197. patchright/driver/package/lib/server/chromium/defaultFontFamilies.js +145 -0
  198. patchright/driver/package/lib/server/chromium/videoRecorder.js +155 -0
  199. patchright/driver/package/lib/server/clock.js +133 -0
  200. patchright/driver/package/lib/server/codegen/csharp.js +299 -0
  201. patchright/driver/package/lib/server/codegen/java.js +235 -0
  202. patchright/driver/package/lib/server/codegen/javascript.js +223 -0
  203. patchright/driver/package/lib/server/codegen/jsonl.js +47 -0
  204. patchright/driver/package/lib/server/codegen/language.js +88 -0
  205. patchright/driver/package/lib/server/codegen/languages.js +30 -0
  206. patchright/driver/package/lib/server/codegen/python.js +265 -0
  207. patchright/driver/package/lib/server/codegen/types.js +5 -0
  208. patchright/driver/package/lib/server/console.js +57 -0
  209. patchright/driver/package/lib/server/cookieStore.js +185 -0
  210. patchright/driver/package/lib/server/debugController.js +234 -0
  211. patchright/driver/package/lib/server/debugger.js +132 -0
  212. patchright/driver/package/lib/server/deviceDescriptors.js +26 -0
  213. patchright/driver/package/lib/server/deviceDescriptorsSource.json +1669 -0
  214. patchright/driver/package/lib/server/dialog.js +71 -0
  215. patchright/driver/package/lib/server/dispatchers/androidDispatcher.js +193 -0
  216. patchright/driver/package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  217. patchright/driver/package/lib/server/dispatchers/browserContextDispatcher.js +368 -0
  218. patchright/driver/package/lib/server/dispatchers/browserDispatcher.js +170 -0
  219. patchright/driver/package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  220. patchright/driver/package/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
  221. patchright/driver/package/lib/server/dispatchers/debugControllerDispatcher.js +103 -0
  222. patchright/driver/package/lib/server/dispatchers/dialogDispatcher.js +44 -0
  223. patchright/driver/package/lib/server/dispatchers/dispatcher.js +395 -0
  224. patchright/driver/package/lib/server/dispatchers/electronDispatcher.js +93 -0
  225. patchright/driver/package/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
  226. patchright/driver/package/lib/server/dispatchers/frameDispatcher.js +286 -0
  227. patchright/driver/package/lib/server/dispatchers/jsHandleDispatcher.js +97 -0
  228. patchright/driver/package/lib/server/dispatchers/jsonPipeDispatcher.js +59 -0
  229. patchright/driver/package/lib/server/dispatchers/localUtilsDispatcher.js +413 -0
  230. patchright/driver/package/lib/server/dispatchers/networkDispatchers.js +221 -0
  231. patchright/driver/package/lib/server/dispatchers/pageDispatcher.js +367 -0
  232. patchright/driver/package/lib/server/dispatchers/playwrightDispatcher.js +107 -0
  233. patchright/driver/package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  234. patchright/driver/package/lib/server/dispatchers/streamDispatcher.js +62 -0
  235. patchright/driver/package/lib/server/dispatchers/tracingDispatcher.js +54 -0
  236. patchright/driver/package/lib/server/dispatchers/webSocketRouteDispatcher.js +189 -0
  237. patchright/driver/package/lib/server/dispatchers/writableStreamDispatcher.js +58 -0
  238. patchright/driver/package/lib/server/dom.js +845 -0
  239. patchright/driver/package/lib/server/download.js +60 -0
  240. patchright/driver/package/lib/server/electron/electron.js +296 -0
  241. patchright/driver/package/lib/server/electron/loader.js +57 -0
  242. patchright/driver/package/lib/server/errors.js +68 -0
  243. patchright/driver/package/lib/server/fetch.js +656 -0
  244. patchright/driver/package/lib/server/fileChooser.js +42 -0
  245. patchright/driver/package/lib/server/fileUploadUtils.js +75 -0
  246. patchright/driver/package/lib/server/firefox/ffAccessibility.js +216 -0
  247. patchright/driver/package/lib/server/firefox/ffBrowser.js +460 -0
  248. patchright/driver/package/lib/server/firefox/ffConnection.js +168 -0
  249. patchright/driver/package/lib/server/firefox/ffExecutionContext.js +135 -0
  250. patchright/driver/package/lib/server/firefox/ffInput.js +150 -0
  251. patchright/driver/package/lib/server/firefox/ffNetworkManager.js +233 -0
  252. patchright/driver/package/lib/server/firefox/ffPage.js +559 -0
  253. patchright/driver/package/lib/server/firefox/firefox.js +99 -0
  254. patchright/driver/package/lib/server/formData.js +75 -0
  255. patchright/driver/package/lib/server/frameSelectors.js +171 -0
  256. patchright/driver/package/lib/server/frames.js +1808 -0
  257. patchright/driver/package/lib/server/har/harRecorder.js +139 -0
  258. patchright/driver/package/lib/server/har/harTracer.js +542 -0
  259. patchright/driver/package/lib/server/helper.js +103 -0
  260. patchright/driver/package/lib/server/index.js +114 -0
  261. patchright/driver/package/lib/server/input.js +310 -0
  262. patchright/driver/package/lib/server/instrumentation.js +70 -0
  263. patchright/driver/package/lib/server/isomorphic/utilityScriptSerializers.js +226 -0
  264. patchright/driver/package/lib/server/javascript.js +299 -0
  265. patchright/driver/package/lib/server/launchApp.js +91 -0
  266. patchright/driver/package/lib/server/macEditingCommands.js +139 -0
  267. patchright/driver/package/lib/server/network.js +617 -0
  268. patchright/driver/package/lib/server/page.js +819 -0
  269. patchright/driver/package/lib/server/pipeTransport.js +85 -0
  270. patchright/driver/package/lib/server/playwright.js +88 -0
  271. patchright/driver/package/lib/server/progress.js +102 -0
  272. patchright/driver/package/lib/server/protocolError.js +49 -0
  273. patchright/driver/package/lib/server/recorder/contextRecorder.js +299 -0
  274. patchright/driver/package/lib/server/recorder/recorderApp.js +196 -0
  275. patchright/driver/package/lib/server/recorder/recorderCollection.js +116 -0
  276. patchright/driver/package/lib/server/recorder/recorderFrontend.js +5 -0
  277. patchright/driver/package/lib/server/recorder/recorderInTraceViewer.js +144 -0
  278. patchright/driver/package/lib/server/recorder/recorderRunner.js +155 -0
  279. patchright/driver/package/lib/server/recorder/recorderUtils.js +112 -0
  280. patchright/driver/package/lib/server/recorder/throttledFile.js +46 -0
  281. patchright/driver/package/lib/server/recorder.js +327 -0
  282. patchright/driver/package/lib/server/registry/browserFetcher.js +168 -0
  283. patchright/driver/package/lib/server/registry/dependencies.js +322 -0
  284. patchright/driver/package/lib/server/registry/index.js +1005 -0
  285. patchright/driver/package/lib/server/registry/nativeDeps.js +490 -0
  286. patchright/driver/package/lib/server/registry/oopDownloadBrowserMain.js +138 -0
  287. patchright/driver/package/lib/server/screenshotter.js +348 -0
  288. patchright/driver/package/lib/server/selectors.js +73 -0
  289. patchright/driver/package/lib/server/socksClientCertificatesInterceptor.js +340 -0
  290. patchright/driver/package/lib/server/socksInterceptor.js +100 -0
  291. patchright/driver/package/lib/server/trace/recorder/snapshotter.js +172 -0
  292. patchright/driver/package/lib/server/trace/recorder/snapshotterInjected.js +493 -0
  293. patchright/driver/package/lib/server/trace/recorder/tracing.js +542 -0
  294. patchright/driver/package/lib/server/trace/test/inMemorySnapshotter.js +93 -0
  295. patchright/driver/package/lib/server/trace/viewer/traceViewer.js +213 -0
  296. patchright/driver/package/lib/server/transport.js +191 -0
  297. patchright/driver/package/lib/server/types.js +24 -0
  298. patchright/driver/package/lib/server/usKeyboardLayout.js +555 -0
  299. patchright/driver/package/lib/server/webkit/webkit.js +87 -0
  300. patchright/driver/package/lib/server/webkit/wkAccessibility.js +194 -0
  301. patchright/driver/package/lib/server/webkit/wkBrowser.js +329 -0
  302. patchright/driver/package/lib/server/webkit/wkConnection.js +173 -0
  303. patchright/driver/package/lib/server/webkit/wkExecutionContext.js +143 -0
  304. patchright/driver/package/lib/server/webkit/wkInput.js +169 -0
  305. patchright/driver/package/lib/server/webkit/wkInterceptableRequest.js +162 -0
  306. patchright/driver/package/lib/server/webkit/wkPage.js +1219 -0
  307. patchright/driver/package/lib/server/webkit/wkProvisionalPage.js +94 -0
  308. patchright/driver/package/lib/server/webkit/wkWorkers.js +104 -0
  309. patchright/driver/package/lib/third_party/diff_match_patch.js +2222 -0
  310. patchright/driver/package/lib/third_party/pixelmatch.js +255 -0
  311. patchright/driver/package/lib/utils/ascii.js +31 -0
  312. patchright/driver/package/lib/utils/comparators.js +171 -0
  313. patchright/driver/package/lib/utils/crypto.js +174 -0
  314. patchright/driver/package/lib/utils/debug.js +46 -0
  315. patchright/driver/package/lib/utils/debugLogger.js +91 -0
  316. patchright/driver/package/lib/utils/env.js +49 -0
  317. patchright/driver/package/lib/utils/eventsHelper.js +38 -0
  318. patchright/driver/package/lib/utils/expectUtils.js +33 -0
  319. patchright/driver/package/lib/utils/fileUtils.js +205 -0
  320. patchright/driver/package/lib/utils/happy-eyeballs.js +194 -0
  321. patchright/driver/package/lib/utils/headers.js +52 -0
  322. patchright/driver/package/lib/utils/hostPlatform.js +133 -0
  323. patchright/driver/package/lib/utils/httpServer.js +237 -0
  324. patchright/driver/package/lib/utils/index.js +368 -0
  325. patchright/driver/package/lib/utils/isomorphic/cssParser.js +250 -0
  326. patchright/driver/package/lib/utils/isomorphic/cssTokenizer.js +979 -0
  327. patchright/driver/package/lib/utils/isomorphic/locatorGenerators.js +642 -0
  328. patchright/driver/package/lib/utils/isomorphic/locatorParser.js +179 -0
  329. patchright/driver/package/lib/utils/isomorphic/locatorUtils.js +62 -0
  330. patchright/driver/package/lib/utils/isomorphic/mimeType.js +29 -0
  331. patchright/driver/package/lib/utils/isomorphic/recorderUtils.js +195 -0
  332. patchright/driver/package/lib/utils/isomorphic/selectorParser.js +397 -0
  333. patchright/driver/package/lib/utils/isomorphic/stringUtils.js +139 -0
  334. patchright/driver/package/lib/utils/isomorphic/traceUtils.js +39 -0
  335. patchright/driver/package/lib/utils/isomorphic/urlMatch.js +120 -0
  336. patchright/driver/package/lib/utils/linuxUtils.js +78 -0
  337. patchright/driver/package/lib/utils/manualPromise.js +109 -0
  338. patchright/driver/package/lib/utils/multimap.js +75 -0
  339. patchright/driver/package/lib/utils/network.js +160 -0
  340. patchright/driver/package/lib/utils/processLauncher.js +248 -0
  341. patchright/driver/package/lib/utils/profiler.js +53 -0
  342. patchright/driver/package/lib/utils/rtti.js +44 -0
  343. patchright/driver/package/lib/utils/semaphore.js +51 -0
  344. patchright/driver/package/lib/utils/spawnAsync.js +45 -0
  345. patchright/driver/package/lib/utils/stackTrace.js +121 -0
  346. patchright/driver/package/lib/utils/task.js +58 -0
  347. patchright/driver/package/lib/utils/time.js +37 -0
  348. patchright/driver/package/lib/utils/timeoutRunner.js +66 -0
  349. patchright/driver/package/lib/utils/traceUtils.js +44 -0
  350. patchright/driver/package/lib/utils/userAgent.js +105 -0
  351. patchright/driver/package/lib/utils/wsServer.js +127 -0
  352. patchright/driver/package/lib/utils/zipFile.js +75 -0
  353. patchright/driver/package/lib/utils/zones.js +62 -0
  354. patchright/driver/package/lib/utilsBundle.js +82 -0
  355. patchright/driver/package/lib/utilsBundleImpl/index.js +53 -0
  356. patchright/driver/package/lib/utilsBundleImpl/xdg-open +1066 -0
  357. patchright/driver/package/lib/vite/htmlReport/index.html +66 -0
  358. patchright/driver/package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +24 -0
  359. patchright/driver/package/lib/vite/recorder/assets/codeMirrorModule-ez37Vkbh.css +1 -0
  360. patchright/driver/package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  361. patchright/driver/package/lib/vite/recorder/assets/index-BW-aOBcL.css +1 -0
  362. patchright/driver/package/lib/vite/recorder/assets/index-Bxxcmxlu.js +42 -0
  363. patchright/driver/package/lib/vite/recorder/index.html +29 -0
  364. patchright/driver/package/lib/vite/recorder/playwright-logo.svg +9 -0
  365. patchright/driver/package/lib/vite/traceViewer/assets/codeMirrorModule-CZTtn9l8.js +24 -0
  366. patchright/driver/package/lib/vite/traceViewer/assets/inspectorTab-DTusvprx.js +64 -0
  367. patchright/driver/package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
  368. patchright/driver/package/lib/vite/traceViewer/assets/workbench-DIEjrm3Z.js +9 -0
  369. patchright/driver/package/lib/vite/traceViewer/assets/xtermModule-BeNbaIVa.js +9 -0
  370. patchright/driver/package/lib/vite/traceViewer/codeMirrorModule.ez37Vkbh.css +1 -0
  371. patchright/driver/package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  372. patchright/driver/package/lib/vite/traceViewer/embedded.Do_J5Hgs.js +2 -0
  373. patchright/driver/package/lib/vite/traceViewer/embedded.html +18 -0
  374. patchright/driver/package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
  375. patchright/driver/package/lib/vite/traceViewer/index.B21BXreT.js +2 -0
  376. patchright/driver/package/lib/vite/traceViewer/index.CrbWWHbf.css +1 -0
  377. patchright/driver/package/lib/vite/traceViewer/index.html +29 -0
  378. patchright/driver/package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +1 -0
  379. patchright/driver/package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  380. patchright/driver/package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  381. patchright/driver/package/lib/vite/traceViewer/recorder.Bfh_9UGt.js +2 -0
  382. patchright/driver/package/lib/vite/traceViewer/recorder.html +17 -0
  383. patchright/driver/package/lib/vite/traceViewer/snapshot.html +21 -0
  384. patchright/driver/package/lib/vite/traceViewer/sw.bundle.js +3 -0
  385. patchright/driver/package/lib/vite/traceViewer/uiMode.CAYqod-m.css +1 -0
  386. patchright/driver/package/lib/vite/traceViewer/uiMode.DloKQa-h.js +5 -0
  387. patchright/driver/package/lib/vite/traceViewer/uiMode.html +20 -0
  388. patchright/driver/package/lib/vite/traceViewer/workbench.D3JVcA9K.css +1 -0
  389. patchright/driver/package/lib/vite/traceViewer/xtermModule.DSXBckUd.css +32 -0
  390. patchright/driver/package/lib/zipBundle.js +25 -0
  391. patchright/driver/package/lib/zipBundleImpl.js +5 -0
  392. patchright/driver/package/package.json +44 -0
  393. patchright/driver/package/protocol.yml +3720 -0
  394. patchright/driver/package/types/protocol.d.ts +21571 -0
  395. patchright/driver/package/types/structs.d.ts +45 -0
  396. patchright/driver/package/types/types.d.ts +22519 -0
  397. patchright/py.typed +0 -0
  398. patchright/sync_api/__init__.py +177 -0
  399. patchright/sync_api/_context_manager.py +74 -0
  400. patchright/sync_api/_generated.py +20155 -0
  401. patchright-1.48.0.dist-info/LICENSE +202 -0
  402. patchright-1.48.0.dist-info/METADATA +83 -0
  403. patchright-1.48.0.dist-info/RECORD +406 -0
  404. patchright-1.48.0.dist-info/WHEEL +5 -0
  405. patchright-1.48.0.dist-info/entry_points.txt +5 -0
  406. patchright-1.48.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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
+ 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
+
39
+ // Symbols for our own info on Nodes/StyleSheets.
40
+ const kSnapshotFrameId = Symbol('__playwright_snapshot_frameid_');
41
+ const kCachedData = Symbol('__playwright_snapshot_cache_');
42
+ const kEndOfList = Symbol('__playwright_end_of_list_');
43
+ function resetCachedData(obj) {
44
+ delete obj[kCachedData];
45
+ }
46
+ function ensureCachedData(obj) {
47
+ if (!obj[kCachedData]) obj[kCachedData] = {};
48
+ return obj[kCachedData];
49
+ }
50
+ function removeHash(url) {
51
+ try {
52
+ const u = new URL(url);
53
+ u.hash = '';
54
+ return u.toString();
55
+ } catch (e) {
56
+ return url;
57
+ }
58
+ }
59
+ class Streamer {
60
+ constructor() {
61
+ this._lastSnapshotNumber = 0;
62
+ this._staleStyleSheets = new Set();
63
+ this._readingStyleSheet = false;
64
+ // To avoid invalidating due to our own reads.
65
+ this._fakeBase = void 0;
66
+ this._observer = void 0;
67
+ const invalidateCSSGroupingRule = rule => {
68
+ if (rule.parentStyleSheet) this._invalidateStyleSheet(rule.parentStyleSheet);
69
+ };
70
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'insertRule', sheet => this._invalidateStyleSheet(sheet));
71
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'deleteRule', sheet => this._invalidateStyleSheet(sheet));
72
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'addRule', sheet => this._invalidateStyleSheet(sheet));
73
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'removeRule', sheet => this._invalidateStyleSheet(sheet));
74
+ this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'rules', sheet => this._invalidateStyleSheet(sheet));
75
+ this._interceptNativeGetter(window.CSSStyleSheet.prototype, 'cssRules', sheet => this._invalidateStyleSheet(sheet));
76
+ this._interceptNativeMethod(window.CSSStyleSheet.prototype, 'replaceSync', sheet => this._invalidateStyleSheet(sheet));
77
+ this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'insertRule', invalidateCSSGroupingRule);
78
+ this._interceptNativeMethod(window.CSSGroupingRule.prototype, 'deleteRule', invalidateCSSGroupingRule);
79
+ this._interceptNativeGetter(window.CSSGroupingRule.prototype, 'cssRules', invalidateCSSGroupingRule);
80
+ this._interceptNativeAsyncMethod(window.CSSStyleSheet.prototype, 'replace', sheet => this._invalidateStyleSheet(sheet));
81
+ this._fakeBase = document.createElement('base');
82
+ this._observer = new MutationObserver(list => this._handleMutations(list));
83
+ const observerConfig = {
84
+ attributes: true,
85
+ subtree: true
86
+ };
87
+ this._observer.observe(document, observerConfig);
88
+ this._refreshListenersWhenNeeded();
89
+ }
90
+ _refreshListenersWhenNeeded() {
91
+ this._refreshListeners();
92
+ const customEventName = '__playwright_snapshotter_global_listeners_check__';
93
+ let seenEvent = false;
94
+ const handleCustomEvent = () => seenEvent = true;
95
+ window.addEventListener(customEventName, handleCustomEvent);
96
+ const observer = new MutationObserver(entries => {
97
+ // Check for new documentElement in case we need to reinstall document listeners.
98
+ const newDocumentElement = entries.some(entry => Array.from(entry.addedNodes).includes(document.documentElement));
99
+ if (newDocumentElement) {
100
+ // New documentElement - let's check whether listeners are still here.
101
+ seenEvent = false;
102
+ window.dispatchEvent(new CustomEvent(customEventName));
103
+ if (!seenEvent) {
104
+ // Listener did not fire. Reattach the listener and notify.
105
+ window.addEventListener(customEventName, handleCustomEvent);
106
+ this._refreshListeners();
107
+ }
108
+ }
109
+ });
110
+ observer.observe(document, {
111
+ childList: true
112
+ });
113
+ }
114
+ _refreshListeners() {
115
+ document.addEventListener('__playwright_target__', event => {
116
+ if (!event.detail) return;
117
+ const callId = event.detail;
118
+ event.composedPath()[0].__playwright_target__ = callId;
119
+ });
120
+ }
121
+ _interceptNativeMethod(obj, method, cb) {
122
+ const native = obj[method];
123
+ if (!native) return;
124
+ obj[method] = function (...args) {
125
+ const result = native.call(this, ...args);
126
+ cb(this, result);
127
+ return result;
128
+ };
129
+ }
130
+ _interceptNativeAsyncMethod(obj, method, cb) {
131
+ const native = obj[method];
132
+ if (!native) return;
133
+ obj[method] = async function (...args) {
134
+ const result = await native.call(this, ...args);
135
+ cb(this, result);
136
+ return result;
137
+ };
138
+ }
139
+ _interceptNativeGetter(obj, prop, cb) {
140
+ const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
141
+ Object.defineProperty(obj, prop, {
142
+ ...descriptor,
143
+ get: function () {
144
+ const result = descriptor.get.call(this);
145
+ cb(this, result);
146
+ return result;
147
+ }
148
+ });
149
+ }
150
+ _handleMutations(list) {
151
+ for (const mutation of list) ensureCachedData(mutation.target).attributesCached = undefined;
152
+ }
153
+ _invalidateStyleSheet(sheet) {
154
+ if (this._readingStyleSheet) return;
155
+ this._staleStyleSheets.add(sheet);
156
+ }
157
+ _updateStyleElementStyleSheetTextIfNeeded(sheet, forceText) {
158
+ const data = ensureCachedData(sheet);
159
+ if (this._staleStyleSheets.has(sheet) || forceText && data.cssText === undefined) {
160
+ this._staleStyleSheets.delete(sheet);
161
+ try {
162
+ data.cssText = this._getSheetText(sheet);
163
+ } catch (e) {
164
+ // Sometimes we cannot access cross-origin stylesheets.
165
+ data.cssText = '';
166
+ }
167
+ }
168
+ return data.cssText;
169
+ }
170
+
171
+ // Returns either content, ref, or no override.
172
+ _updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber) {
173
+ const data = ensureCachedData(sheet);
174
+ if (this._staleStyleSheets.has(sheet)) {
175
+ this._staleStyleSheets.delete(sheet);
176
+ try {
177
+ data.cssText = this._getSheetText(sheet);
178
+ data.cssRef = snapshotNumber;
179
+ return data.cssText;
180
+ } catch (e) {
181
+ // Sometimes we cannot access cross-origin stylesheets.
182
+ }
183
+ }
184
+ return data.cssRef === undefined ? undefined : snapshotNumber - data.cssRef;
185
+ }
186
+ markIframe(iframeElement, frameId) {
187
+ iframeElement[kSnapshotFrameId] = frameId;
188
+ }
189
+ reset() {
190
+ this._staleStyleSheets.clear();
191
+ const visitNode = node => {
192
+ resetCachedData(node);
193
+ if (node.nodeType === Node.ELEMENT_NODE) {
194
+ const element = node;
195
+ if (element.shadowRoot) visitNode(element.shadowRoot);
196
+ }
197
+ for (let child = node.firstChild; child; child = child.nextSibling) visitNode(child);
198
+ };
199
+ visitNode(document.documentElement);
200
+ visitNode(this._fakeBase);
201
+ }
202
+ __sanitizeMetaAttribute(name, value, httpEquiv) {
203
+ if (name === 'charset') return 'utf-8';
204
+ if (httpEquiv.toLowerCase() !== 'content-type' || name !== 'content') return value;
205
+ const [type, ...params] = value.split(';');
206
+ if (type !== 'text/html' || params.length <= 0) return value;
207
+ const charsetParamIdx = params.findIndex(param => param.trim().startsWith('charset='));
208
+ if (charsetParamIdx > -1) params[charsetParamIdx] = 'charset=utf-8';
209
+ return `${type}; ${params.join('; ')}`;
210
+ }
211
+ _sanitizeUrl(url) {
212
+ if (url.startsWith('javascript:') || url.startsWith('vbscript:')) return '';
213
+ return url;
214
+ }
215
+ _sanitizeSrcSet(srcset) {
216
+ return srcset.split(',').map(src => {
217
+ src = src.trim();
218
+ const spaceIndex = src.lastIndexOf(' ');
219
+ if (spaceIndex === -1) return this._sanitizeUrl(src);
220
+ return this._sanitizeUrl(src.substring(0, spaceIndex).trim()) + src.substring(spaceIndex);
221
+ }).join(', ');
222
+ }
223
+ _resolveUrl(base, url) {
224
+ if (url === '') return '';
225
+ try {
226
+ return new URL(url, base).href;
227
+ } catch (e) {
228
+ return url;
229
+ }
230
+ }
231
+ _getSheetBase(sheet) {
232
+ let rootSheet = sheet;
233
+ while (rootSheet.parentStyleSheet) rootSheet = rootSheet.parentStyleSheet;
234
+ if (rootSheet.ownerNode) return rootSheet.ownerNode.baseURI;
235
+ return document.baseURI;
236
+ }
237
+ _getSheetText(sheet) {
238
+ this._readingStyleSheet = true;
239
+ try {
240
+ const rules = [];
241
+ for (const rule of sheet.cssRules) rules.push(rule.cssText);
242
+ return rules.join('\n');
243
+ } finally {
244
+ this._readingStyleSheet = false;
245
+ }
246
+ }
247
+ captureSnapshot() {
248
+ const timestamp = performance.now();
249
+ const snapshotNumber = ++this._lastSnapshotNumber;
250
+ let nodeCounter = 0;
251
+ let shadowDomNesting = 0;
252
+ let headNesting = 0;
253
+
254
+ // Ensure we are up to date.
255
+ this._handleMutations(this._observer.takeRecords());
256
+ const definedCustomElements = new Set();
257
+ const visitNode = node => {
258
+ const nodeType = node.nodeType;
259
+ const nodeName = nodeType === Node.DOCUMENT_FRAGMENT_NODE ? 'template' : node.nodeName;
260
+ if (nodeType !== Node.ELEMENT_NODE && nodeType !== Node.DOCUMENT_FRAGMENT_NODE && nodeType !== Node.TEXT_NODE) return;
261
+ if (nodeName === 'SCRIPT') return;
262
+ // Don't preload resources.
263
+ if (nodeName === 'LINK' && nodeType === Node.ELEMENT_NODE) {
264
+ var _getAttribute;
265
+ const rel = (_getAttribute = node.getAttribute('rel')) === null || _getAttribute === void 0 ? void 0 : _getAttribute.toLowerCase();
266
+ if (rel === 'preload' || rel === 'prefetch') return;
267
+ }
268
+ if (removeNoScript && nodeName === 'NOSCRIPT') return;
269
+ if (nodeName === 'META' && node.httpEquiv.toLowerCase() === 'content-security-policy') return;
270
+ // Skip iframes which are inside document's head as they are not visible.
271
+ // See https://github.com/microsoft/playwright/issues/12005.
272
+ if ((nodeName === 'IFRAME' || nodeName === 'FRAME') && headNesting) return;
273
+ const data = ensureCachedData(node);
274
+ const values = [];
275
+ let equals = !!data.cached;
276
+ let extraNodes = 0;
277
+ const expectValue = value => {
278
+ equals = equals && data.cached[values.length] === value;
279
+ values.push(value);
280
+ };
281
+ const checkAndReturn = n => {
282
+ data.attributesCached = true;
283
+ if (equals) return {
284
+ equals: true,
285
+ n: [[snapshotNumber - data.ref[0], data.ref[1]]]
286
+ };
287
+ nodeCounter += extraNodes;
288
+ data.ref = [snapshotNumber, nodeCounter++];
289
+ data.cached = values;
290
+ return {
291
+ equals: false,
292
+ n
293
+ };
294
+ };
295
+ if (nodeType === Node.TEXT_NODE) {
296
+ const value = node.nodeValue || '';
297
+ expectValue(value);
298
+ return checkAndReturn(value);
299
+ }
300
+ if (nodeName === 'STYLE') {
301
+ const sheet = node.sheet;
302
+ let cssText;
303
+ if (sheet) cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet);
304
+ cssText = cssText || node.textContent || '';
305
+ expectValue(cssText);
306
+ // Compensate for the extra 'cssText' text node.
307
+ extraNodes++;
308
+ return checkAndReturn([nodeName, {}, cssText]);
309
+ }
310
+ const attrs = {};
311
+ const result = [nodeName, attrs];
312
+ const visitChild = child => {
313
+ const snapshot = visitNode(child);
314
+ if (snapshot) {
315
+ result.push(snapshot.n);
316
+ expectValue(child);
317
+ equals = equals && snapshot.equals;
318
+ }
319
+ };
320
+ const visitChildStyleSheet = child => {
321
+ const snapshot = visitStyleSheet(child);
322
+ if (snapshot) {
323
+ result.push(snapshot.n);
324
+ expectValue(child);
325
+ equals = equals && snapshot.equals;
326
+ }
327
+ };
328
+ if (nodeType === Node.DOCUMENT_FRAGMENT_NODE) attrs[kShadowAttribute] = 'open';
329
+ if (nodeType === Node.ELEMENT_NODE) {
330
+ var _window$customElement;
331
+ const element = node;
332
+ if (element.localName.includes('-') && (_window$customElement = window.customElements) !== null && _window$customElement !== void 0 && _window$customElement.get(element.localName)) definedCustomElements.add(element.localName);
333
+ if (nodeName === 'INPUT' || nodeName === 'TEXTAREA') {
334
+ const value = element.value;
335
+ expectValue(kValueAttribute);
336
+ expectValue(value);
337
+ attrs[kValueAttribute] = value;
338
+ }
339
+ if (nodeName === 'INPUT' && ['checkbox', 'radio'].includes(element.type)) {
340
+ const value = element.checked ? 'true' : 'false';
341
+ expectValue(kCheckedAttribute);
342
+ expectValue(value);
343
+ attrs[kCheckedAttribute] = value;
344
+ }
345
+ if (nodeName === 'OPTION') {
346
+ const value = element.selected ? 'true' : 'false';
347
+ expectValue(kSelectedAttribute);
348
+ expectValue(value);
349
+ attrs[kSelectedAttribute] = value;
350
+ }
351
+ if (element.scrollTop) {
352
+ expectValue(kScrollTopAttribute);
353
+ expectValue(element.scrollTop);
354
+ attrs[kScrollTopAttribute] = '' + element.scrollTop;
355
+ }
356
+ if (element.scrollLeft) {
357
+ expectValue(kScrollLeftAttribute);
358
+ expectValue(element.scrollLeft);
359
+ attrs[kScrollLeftAttribute] = '' + element.scrollLeft;
360
+ }
361
+ if (element.shadowRoot) {
362
+ ++shadowDomNesting;
363
+ visitChild(element.shadowRoot);
364
+ --shadowDomNesting;
365
+ }
366
+ if ('__playwright_target__' in element) {
367
+ expectValue(kTargetAttribute);
368
+ expectValue(element['__playwright_target__']);
369
+ attrs[kTargetAttribute] = element['__playwright_target__'];
370
+ }
371
+ }
372
+ if (nodeName === 'HEAD') {
373
+ ++headNesting;
374
+ // Insert fake <base> first, to ensure all <link> elements use the proper base uri.
375
+ this._fakeBase.setAttribute('href', document.baseURI);
376
+ visitChild(this._fakeBase);
377
+ }
378
+ for (let child = node.firstChild; child; child = child.nextSibling) visitChild(child);
379
+ if (nodeName === 'HEAD') --headNesting;
380
+ expectValue(kEndOfList);
381
+ let documentOrShadowRoot = null;
382
+ if (node.ownerDocument.documentElement === node) documentOrShadowRoot = node.ownerDocument;else if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) documentOrShadowRoot = node;
383
+ if (documentOrShadowRoot) {
384
+ for (const sheet of documentOrShadowRoot.adoptedStyleSheets || []) visitChildStyleSheet(sheet);
385
+ expectValue(kEndOfList);
386
+ }
387
+
388
+ // Process iframe src attribute before bailing out since it depends on a symbol, not the DOM.
389
+ if (nodeName === 'IFRAME' || nodeName === 'FRAME') {
390
+ const element = node;
391
+ const frameId = element[kSnapshotFrameId];
392
+ const name = 'src';
393
+ const value = frameId ? `/snapshot/${frameId}` : '';
394
+ expectValue(name);
395
+ expectValue(value);
396
+ attrs[name] = value;
397
+ }
398
+
399
+ // Process custom elements before bailing out since they depend on JS, not the DOM.
400
+ if (nodeName === 'BODY' && definedCustomElements.size) {
401
+ const value = [...definedCustomElements].join(',');
402
+ expectValue(kCustomElementsAttribute);
403
+ expectValue(value);
404
+ attrs[kCustomElementsAttribute] = value;
405
+ }
406
+
407
+ // Process currentSrc before bailing out since it depends on JS, not the DOM.
408
+ if (nodeName === 'IMG' || nodeName === 'PICTURE') {
409
+ const value = nodeName === 'PICTURE' ? '' : this._sanitizeUrl(node.currentSrc);
410
+ expectValue(kCurrentSrcAttribute);
411
+ expectValue(value);
412
+ attrs[kCurrentSrcAttribute] = value;
413
+ }
414
+
415
+ // We can skip attributes comparison because nothing else has changed,
416
+ // and mutation observer didn't tell us about the attributes.
417
+ if (equals && data.attributesCached && !shadowDomNesting) return checkAndReturn(result);
418
+ if (nodeType === Node.ELEMENT_NODE) {
419
+ const element = node;
420
+ for (let i = 0; i < element.attributes.length; i++) {
421
+ const name = element.attributes[i].name;
422
+ if (nodeName === 'LINK' && name === 'integrity') continue;
423
+ if (nodeName === 'IFRAME' && (name === 'src' || name === 'srcdoc' || name === 'sandbox')) continue;
424
+ if (nodeName === 'FRAME' && name === 'src') continue;
425
+ let value = element.attributes[i].value;
426
+ 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 = '';
427
+ expectValue(name);
428
+ expectValue(value);
429
+ attrs[name] = value;
430
+ }
431
+ expectValue(kEndOfList);
432
+ }
433
+ if (result.length === 2 && !Object.keys(attrs).length) result.pop(); // Remove empty attrs when there are no children.
434
+ return checkAndReturn(result);
435
+ };
436
+ const visitStyleSheet = sheet => {
437
+ const data = ensureCachedData(sheet);
438
+ const oldCSSText = data.cssText;
439
+ const cssText = this._updateStyleElementStyleSheetTextIfNeeded(sheet, true /* forceText */);
440
+ if (cssText === oldCSSText) return {
441
+ equals: true,
442
+ n: [[snapshotNumber - data.ref[0], data.ref[1]]]
443
+ };
444
+ data.ref = [snapshotNumber, nodeCounter++];
445
+ return {
446
+ equals: false,
447
+ n: ['template', {
448
+ [kStyleSheetAttribute]: cssText
449
+ }]
450
+ };
451
+ };
452
+ let html;
453
+ if (document.documentElement) {
454
+ const {
455
+ n
456
+ } = visitNode(document.documentElement);
457
+ html = n;
458
+ } else {
459
+ html = ['html'];
460
+ }
461
+ const result = {
462
+ html,
463
+ doctype: document.doctype ? document.doctype.name : undefined,
464
+ resourceOverrides: [],
465
+ viewport: {
466
+ width: window.innerWidth,
467
+ height: window.innerHeight
468
+ },
469
+ url: location.href,
470
+ wallTime: Date.now(),
471
+ collectionTime: 0
472
+ };
473
+ for (const sheet of this._staleStyleSheets) {
474
+ if (sheet.href === null) continue;
475
+ const content = this._updateLinkStyleSheetTextIfNeeded(sheet, snapshotNumber);
476
+ if (content === undefined) {
477
+ // Unable to capture stylesheet contents.
478
+ continue;
479
+ }
480
+ const base = this._getSheetBase(sheet);
481
+ const url = removeHash(this._resolveUrl(base, sheet.href));
482
+ result.resourceOverrides.push({
483
+ url,
484
+ content,
485
+ contentType: 'text/css'
486
+ });
487
+ }
488
+ result.collectionTime = performance.now() - timestamp;
489
+ return result;
490
+ }
491
+ }
492
+ window[snapshotStreamer] = new Streamer();
493
+ }