rebrowser-playwright-core 1.49.1 → 1.64.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/ThirdPartyNotices.txt +7 -1228
  2. package/bin/install_webkit_wsl.ps1 +33 -0
  3. package/bin/reinstall_chrome_beta_linux.sh +1 -1
  4. package/bin/reinstall_chrome_beta_mac.sh +1 -1
  5. package/bin/reinstall_chrome_stable_linux.sh +1 -1
  6. package/bin/reinstall_chrome_stable_mac.sh +1 -1
  7. package/bin/reinstall_msedge_beta_linux.sh +7 -1
  8. package/bin/reinstall_msedge_beta_mac.sh +1 -1
  9. package/bin/reinstall_msedge_dev_linux.sh +7 -1
  10. package/bin/reinstall_msedge_dev_mac.sh +1 -1
  11. package/bin/reinstall_msedge_stable_linux.sh +7 -1
  12. package/bin/reinstall_msedge_stable_mac.sh +1 -1
  13. package/browsers.json +21 -34
  14. package/cli.js +5 -1
  15. package/index.js +2 -18
  16. package/lib/bootstrap.js +149 -0
  17. package/lib/coreBundle.js +78218 -0
  18. package/lib/entry/cliDaemon.js +5 -0
  19. package/lib/entry/dashboardApp.js +3 -0
  20. package/lib/entry/mcp.js +10 -0
  21. package/lib/entry/oopBrowserDownload.js +3 -0
  22. package/lib/package.js +50 -0
  23. package/lib/server/electron/loader.js +109 -43
  24. package/lib/serverRegistry.js +1939 -0
  25. package/lib/serverRegistry.js.LICENSE +65 -0
  26. package/lib/tools/cli-client/channelSessions.js +141 -0
  27. package/lib/tools/cli-client/cli.js +7 -0
  28. package/lib/tools/cli-client/help.json +808 -0
  29. package/lib/tools/cli-client/minimist.js +128 -0
  30. package/lib/tools/cli-client/output.js +352 -0
  31. package/lib/tools/cli-client/program.js +422 -0
  32. package/lib/tools/cli-client/registry.js +180 -0
  33. package/lib/tools/cli-client/session.js +261 -0
  34. package/lib/tools/dashboard/appIcon.png +0 -0
  35. package/lib/tools/skills/playwright-cli/SKILL.md +493 -0
  36. package/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
  37. package/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
  38. package/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  39. package/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
  40. package/lib/tools/skills/playwright-cli/references/running-code.md +245 -0
  41. package/lib/tools/skills/playwright-cli/references/session-management.md +227 -0
  42. package/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
  43. package/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
  44. package/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
  45. package/lib/tools/skills/playwright-cli/references/video-recording.md +216 -0
  46. package/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
  47. package/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
  48. package/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
  49. package/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
  50. package/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  51. package/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
  52. package/lib/tools/skills/playwright-trace/SKILL.md +174 -0
  53. package/lib/tools/utils/extension.js +112 -0
  54. package/lib/tools/utils/socketConnection.js +108 -0
  55. package/lib/utilsBundle.js +86076 -79
  56. package/lib/utilsBundle.js.LICENSE +1890 -0
  57. package/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  58. package/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  59. package/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  60. package/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  61. package/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  62. package/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  63. package/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  64. package/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  65. package/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  66. package/lib/vite/dashboard/index.html +29 -0
  67. package/lib/vite/dashboard/playwright-logo.svg +24 -0
  68. package/lib/vite/htmlReport/index.html +3 -56
  69. package/lib/vite/htmlReport/report.css +2 -0
  70. package/lib/vite/htmlReport/report.js +32 -0
  71. package/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  72. package/lib/vite/recorder/assets/codeMirrorModule-DK72OMRi.js +32 -0
  73. package/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  74. package/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  75. package/lib/vite/recorder/index.html +3 -3
  76. package/lib/vite/traceViewer/assets/codeMirrorModule-BEB2e8M3.js +32 -0
  77. package/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  78. package/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  79. package/lib/vite/traceViewer/assets/xtermModule-B794rD2Z.js +7 -0
  80. package/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  81. package/lib/vite/traceViewer/defaultSettingsView.C8BeHuxd.css +1 -0
  82. package/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  83. package/lib/vite/traceViewer/index.html +9 -11
  84. package/lib/vite/traceViewer/index.oNry3Hjv.js +1 -0
  85. package/lib/vite/traceViewer/manifest.webmanifest +16 -0
  86. package/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  87. package/lib/vite/traceViewer/snapshot.html +4 -15
  88. package/lib/vite/traceViewer/sw.bundle.js +4 -3
  89. package/lib/vite/traceViewer/uiMode.CYwC_gH1.js +5 -0
  90. package/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  91. package/lib/vite/traceViewer/uiMode.html +6 -8
  92. package/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  93. package/lib/webp_codec.LICENSE +173 -0
  94. package/lib/webp_codec.wasm +0 -0
  95. package/lib/{utilsBundleImpl/xdg-open → xdg-open} +338 -137
  96. package/package.json +6 -16
  97. package/types/protocol.d.ts +9357 -6200
  98. package/types/structs.d.ts +8 -1
  99. package/types/types.d.ts +9490 -4947
  100. package/bin/PrintDeps.exe +0 -0
  101. package/bin/README.md +0 -2
  102. package/lib/androidServerImpl.js +0 -69
  103. package/lib/browserServerImpl.js +0 -92
  104. package/lib/cli/driver.js +0 -95
  105. package/lib/cli/program.js +0 -607
  106. package/lib/cli/programWithTestStub.js +0 -67
  107. package/lib/client/accessibility.js +0 -50
  108. package/lib/client/android.js +0 -473
  109. package/lib/client/api.js +0 -285
  110. package/lib/client/artifact.js +0 -79
  111. package/lib/client/browser.js +0 -145
  112. package/lib/client/browserContext.js +0 -559
  113. package/lib/client/browserType.js +0 -241
  114. package/lib/client/cdpSession.js +0 -53
  115. package/lib/client/channelOwner.js +0 -235
  116. package/lib/client/clientHelper.js +0 -57
  117. package/lib/client/clientInstrumentation.js +0 -50
  118. package/lib/client/clock.js +0 -68
  119. package/lib/client/connection.js +0 -333
  120. package/lib/client/consoleMessage.js +0 -55
  121. package/lib/client/coverage.js +0 -41
  122. package/lib/client/dialog.js +0 -57
  123. package/lib/client/download.js +0 -62
  124. package/lib/client/electron.js +0 -135
  125. package/lib/client/elementHandle.js +0 -321
  126. package/lib/client/errors.js +0 -77
  127. package/lib/client/eventEmitter.js +0 -314
  128. package/lib/client/events.js +0 -94
  129. package/lib/client/fetch.js +0 -391
  130. package/lib/client/fileChooser.js +0 -45
  131. package/lib/client/frame.js +0 -504
  132. package/lib/client/harRouter.js +0 -99
  133. package/lib/client/input.js +0 -111
  134. package/lib/client/jsHandle.js +0 -121
  135. package/lib/client/jsonPipe.js +0 -35
  136. package/lib/client/localUtils.js +0 -36
  137. package/lib/client/locator.js +0 -448
  138. package/lib/client/network.js +0 -767
  139. package/lib/client/page.js +0 -748
  140. package/lib/client/playwright.js +0 -80
  141. package/lib/client/selectors.js +0 -67
  142. package/lib/client/stream.js +0 -54
  143. package/lib/client/tracing.js +0 -147
  144. package/lib/client/types.js +0 -24
  145. package/lib/client/video.js +0 -51
  146. package/lib/client/waiter.js +0 -162
  147. package/lib/client/webError.js +0 -37
  148. package/lib/client/worker.js +0 -71
  149. package/lib/client/writableStream.js +0 -54
  150. package/lib/common/socksProxy.js +0 -569
  151. package/lib/common/timeoutSettings.js +0 -73
  152. package/lib/common/types.js +0 -5
  153. package/lib/generated/clockSource.js +0 -7
  154. package/lib/generated/consoleApiSource.js +0 -7
  155. package/lib/generated/injectedScriptSource.js +0 -7
  156. package/lib/generated/pollingRecorderSource.js +0 -7
  157. package/lib/generated/utilityScriptSource.js +0 -7
  158. package/lib/generated/webSocketMockSource.js +0 -7
  159. package/lib/image_tools/colorUtils.js +0 -98
  160. package/lib/image_tools/compare.js +0 -108
  161. package/lib/image_tools/imageChannel.js +0 -70
  162. package/lib/image_tools/stats.js +0 -102
  163. package/lib/inProcessFactory.js +0 -54
  164. package/lib/inprocess.js +0 -20
  165. package/lib/outofprocess.js +0 -67
  166. package/lib/protocol/debug.js +0 -27
  167. package/lib/protocol/serializers.js +0 -173
  168. package/lib/protocol/transport.js +0 -82
  169. package/lib/protocol/validator.js +0 -2780
  170. package/lib/protocol/validatorPrimitives.js +0 -139
  171. package/lib/remote/playwrightConnection.js +0 -274
  172. package/lib/remote/playwrightServer.js +0 -110
  173. package/lib/server/accessibility.js +0 -62
  174. package/lib/server/android/android.js +0 -441
  175. package/lib/server/android/backendAdb.js +0 -172
  176. package/lib/server/ariaSnapshot.js +0 -33
  177. package/lib/server/artifact.js +0 -104
  178. package/lib/server/bidi/bidiBrowser.js +0 -311
  179. package/lib/server/bidi/bidiChromium.js +0 -124
  180. package/lib/server/bidi/bidiConnection.js +0 -204
  181. package/lib/server/bidi/bidiExecutionContext.js +0 -156
  182. package/lib/server/bidi/bidiFirefox.js +0 -104
  183. package/lib/server/bidi/bidiInput.js +0 -158
  184. package/lib/server/bidi/bidiNetworkManager.js +0 -338
  185. package/lib/server/bidi/bidiOverCdp.js +0 -103
  186. package/lib/server/bidi/bidiPage.js +0 -529
  187. package/lib/server/bidi/bidiPdf.js +0 -140
  188. package/lib/server/bidi/third_party/bidiDeserializer.js +0 -93
  189. package/lib/server/bidi/third_party/bidiKeyboard.js +0 -238
  190. package/lib/server/bidi/third_party/bidiProtocol.js +0 -139
  191. package/lib/server/bidi/third_party/bidiSerializer.js +0 -144
  192. package/lib/server/bidi/third_party/firefoxPrefs.js +0 -221
  193. package/lib/server/browser.js +0 -148
  194. package/lib/server/browserContext.js +0 -667
  195. package/lib/server/browserType.js +0 -338
  196. package/lib/server/chromium/chromium.js +0 -354
  197. package/lib/server/chromium/chromiumSwitches.js +0 -46
  198. package/lib/server/chromium/crAccessibility.js +0 -237
  199. package/lib/server/chromium/crBrowser.js +0 -516
  200. package/lib/server/chromium/crConnection.js +0 -381
  201. package/lib/server/chromium/crCoverage.js +0 -246
  202. package/lib/server/chromium/crDevTools.js +0 -108
  203. package/lib/server/chromium/crDragDrop.js +0 -143
  204. package/lib/server/chromium/crExecutionContext.js +0 -136
  205. package/lib/server/chromium/crInput.js +0 -171
  206. package/lib/server/chromium/crNetworkManager.js +0 -767
  207. package/lib/server/chromium/crPage.js +0 -1143
  208. package/lib/server/chromium/crPdf.js +0 -153
  209. package/lib/server/chromium/crProtocolHelper.js +0 -133
  210. package/lib/server/chromium/crServiceWorker.js +0 -114
  211. package/lib/server/chromium/defaultFontFamilies.js +0 -145
  212. package/lib/server/chromium/videoRecorder.js +0 -155
  213. package/lib/server/clock.js +0 -125
  214. package/lib/server/codegen/csharp.js +0 -294
  215. package/lib/server/codegen/java.js +0 -232
  216. package/lib/server/codegen/javascript.js +0 -245
  217. package/lib/server/codegen/jsonl.js +0 -47
  218. package/lib/server/codegen/language.js +0 -88
  219. package/lib/server/codegen/languages.js +0 -30
  220. package/lib/server/codegen/python.js +0 -261
  221. package/lib/server/codegen/types.js +0 -5
  222. package/lib/server/console.js +0 -57
  223. package/lib/server/cookieStore.js +0 -185
  224. package/lib/server/debugController.js +0 -237
  225. package/lib/server/debugger.js +0 -132
  226. package/lib/server/deviceDescriptors.js +0 -26
  227. package/lib/server/deviceDescriptorsSource.json +0 -1669
  228. package/lib/server/dialog.js +0 -71
  229. package/lib/server/dispatchers/androidDispatcher.js +0 -204
  230. package/lib/server/dispatchers/artifactDispatcher.js +0 -118
  231. package/lib/server/dispatchers/browserContextDispatcher.js +0 -368
  232. package/lib/server/dispatchers/browserDispatcher.js +0 -170
  233. package/lib/server/dispatchers/browserTypeDispatcher.js +0 -55
  234. package/lib/server/dispatchers/cdpSessionDispatcher.js +0 -48
  235. package/lib/server/dispatchers/debugControllerDispatcher.js +0 -103
  236. package/lib/server/dispatchers/dialogDispatcher.js +0 -44
  237. package/lib/server/dispatchers/dispatcher.js +0 -395
  238. package/lib/server/dispatchers/electronDispatcher.js +0 -93
  239. package/lib/server/dispatchers/elementHandlerDispatcher.js +0 -228
  240. package/lib/server/dispatchers/frameDispatcher.js +0 -293
  241. package/lib/server/dispatchers/jsHandleDispatcher.js +0 -97
  242. package/lib/server/dispatchers/jsonPipeDispatcher.js +0 -59
  243. package/lib/server/dispatchers/localUtilsDispatcher.js +0 -413
  244. package/lib/server/dispatchers/networkDispatchers.js +0 -221
  245. package/lib/server/dispatchers/pageDispatcher.js +0 -367
  246. package/lib/server/dispatchers/playwrightDispatcher.js +0 -107
  247. package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
  248. package/lib/server/dispatchers/streamDispatcher.js +0 -62
  249. package/lib/server/dispatchers/tracingDispatcher.js +0 -64
  250. package/lib/server/dispatchers/webSocketRouteDispatcher.js +0 -189
  251. package/lib/server/dispatchers/writableStreamDispatcher.js +0 -58
  252. package/lib/server/dom.js +0 -888
  253. package/lib/server/download.js +0 -60
  254. package/lib/server/electron/electron.js +0 -296
  255. package/lib/server/errors.js +0 -68
  256. package/lib/server/fetch.js +0 -669
  257. package/lib/server/fileChooser.js +0 -42
  258. package/lib/server/fileUploadUtils.js +0 -75
  259. package/lib/server/firefox/ffAccessibility.js +0 -216
  260. package/lib/server/firefox/ffBrowser.js +0 -460
  261. package/lib/server/firefox/ffConnection.js +0 -168
  262. package/lib/server/firefox/ffExecutionContext.js +0 -123
  263. package/lib/server/firefox/ffInput.js +0 -150
  264. package/lib/server/firefox/ffNetworkManager.js +0 -233
  265. package/lib/server/firefox/ffPage.js +0 -559
  266. package/lib/server/firefox/firefox.js +0 -99
  267. package/lib/server/formData.js +0 -75
  268. package/lib/server/frameSelectors.js +0 -171
  269. package/lib/server/frames.js +0 -1691
  270. package/lib/server/har/harRecorder.js +0 -139
  271. package/lib/server/har/harTracer.js +0 -542
  272. package/lib/server/helper.js +0 -103
  273. package/lib/server/index.js +0 -108
  274. package/lib/server/input.js +0 -310
  275. package/lib/server/instrumentation.js +0 -70
  276. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  277. package/lib/server/javascript.js +0 -293
  278. package/lib/server/launchApp.js +0 -91
  279. package/lib/server/macEditingCommands.js +0 -139
  280. package/lib/server/network.js +0 -617
  281. package/lib/server/page.js +0 -873
  282. package/lib/server/pipeTransport.js +0 -85
  283. package/lib/server/playwright.js +0 -88
  284. package/lib/server/progress.js +0 -99
  285. package/lib/server/protocolError.js +0 -49
  286. package/lib/server/recorder/contextRecorder.js +0 -299
  287. package/lib/server/recorder/recorderApp.js +0 -187
  288. package/lib/server/recorder/recorderCollection.js +0 -116
  289. package/lib/server/recorder/recorderFrontend.js +0 -5
  290. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  291. package/lib/server/recorder/recorderRunner.js +0 -155
  292. package/lib/server/recorder/recorderUtils.js +0 -113
  293. package/lib/server/recorder/throttledFile.js +0 -46
  294. package/lib/server/recorder.js +0 -364
  295. package/lib/server/registry/browserFetcher.js +0 -168
  296. package/lib/server/registry/dependencies.js +0 -322
  297. package/lib/server/registry/index.js +0 -1052
  298. package/lib/server/registry/nativeDeps.js +0 -493
  299. package/lib/server/registry/oopDownloadBrowserMain.js +0 -138
  300. package/lib/server/screenshotter.js +0 -348
  301. package/lib/server/selectors.js +0 -73
  302. package/lib/server/socksClientCertificatesInterceptor.js +0 -340
  303. package/lib/server/socksInterceptor.js +0 -100
  304. package/lib/server/trace/recorder/snapshotter.js +0 -161
  305. package/lib/server/trace/recorder/snapshotterInjected.js +0 -511
  306. package/lib/server/trace/recorder/tracing.js +0 -596
  307. package/lib/server/trace/test/inMemorySnapshotter.js +0 -93
  308. package/lib/server/trace/viewer/traceViewer.js +0 -214
  309. package/lib/server/transport.js +0 -191
  310. package/lib/server/types.js +0 -24
  311. package/lib/server/usKeyboardLayout.js +0 -555
  312. package/lib/server/webkit/webkit.js +0 -87
  313. package/lib/server/webkit/wkAccessibility.js +0 -194
  314. package/lib/server/webkit/wkBrowser.js +0 -329
  315. package/lib/server/webkit/wkConnection.js +0 -173
  316. package/lib/server/webkit/wkExecutionContext.js +0 -130
  317. package/lib/server/webkit/wkInput.js +0 -169
  318. package/lib/server/webkit/wkInterceptableRequest.js +0 -162
  319. package/lib/server/webkit/wkPage.js +0 -1225
  320. package/lib/server/webkit/wkProvisionalPage.js +0 -94
  321. package/lib/server/webkit/wkWorkers.js +0 -104
  322. package/lib/third_party/pixelmatch.js +0 -255
  323. package/lib/utils/ascii.js +0 -31
  324. package/lib/utils/comparators.js +0 -153
  325. package/lib/utils/crypto.js +0 -171
  326. package/lib/utils/debug.js +0 -46
  327. package/lib/utils/debugLogger.js +0 -91
  328. package/lib/utils/env.js +0 -49
  329. package/lib/utils/eventsHelper.js +0 -38
  330. package/lib/utils/expectUtils.js +0 -33
  331. package/lib/utils/fileUtils.js +0 -205
  332. package/lib/utils/happy-eyeballs.js +0 -194
  333. package/lib/utils/headers.js +0 -52
  334. package/lib/utils/hostPlatform.js +0 -139
  335. package/lib/utils/httpServer.js +0 -237
  336. package/lib/utils/index.js +0 -368
  337. package/lib/utils/isomorphic/ariaSnapshot.js +0 -267
  338. package/lib/utils/isomorphic/cssParser.js +0 -250
  339. package/lib/utils/isomorphic/cssTokenizer.js +0 -979
  340. package/lib/utils/isomorphic/locatorGenerators.js +0 -660
  341. package/lib/utils/isomorphic/locatorParser.js +0 -179
  342. package/lib/utils/isomorphic/locatorUtils.js +0 -62
  343. package/lib/utils/isomorphic/mimeType.js +0 -29
  344. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  345. package/lib/utils/isomorphic/selectorParser.js +0 -397
  346. package/lib/utils/isomorphic/stringUtils.js +0 -169
  347. package/lib/utils/isomorphic/traceUtils.js +0 -39
  348. package/lib/utils/isomorphic/urlMatch.js +0 -124
  349. package/lib/utils/linuxUtils.js +0 -78
  350. package/lib/utils/manualPromise.js +0 -109
  351. package/lib/utils/multimap.js +0 -75
  352. package/lib/utils/network.js +0 -160
  353. package/lib/utils/processLauncher.js +0 -248
  354. package/lib/utils/profiler.js +0 -53
  355. package/lib/utils/rtti.js +0 -44
  356. package/lib/utils/semaphore.js +0 -51
  357. package/lib/utils/sequence.js +0 -64
  358. package/lib/utils/spawnAsync.js +0 -45
  359. package/lib/utils/stackTrace.js +0 -134
  360. package/lib/utils/task.js +0 -58
  361. package/lib/utils/time.js +0 -37
  362. package/lib/utils/timeoutRunner.js +0 -66
  363. package/lib/utils/traceUtils.js +0 -44
  364. package/lib/utils/userAgent.js +0 -105
  365. package/lib/utils/wsServer.js +0 -127
  366. package/lib/utils/zipFile.js +0 -75
  367. package/lib/utils/zones.js +0 -71
  368. package/lib/utilsBundleImpl/index.js +0 -210
  369. package/lib/vite/recorder/assets/codeMirrorModule-C5j27SYZ.js +0 -24
  370. package/lib/vite/recorder/assets/codeMirrorModule-ez37Vkbh.css +0 -1
  371. package/lib/vite/recorder/assets/index-iA1aAGZg.css +0 -1
  372. package/lib/vite/recorder/assets/index-m0XdVJHe.js +0 -184
  373. package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +0 -24
  374. package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +0 -68
  375. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  376. package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +0 -9
  377. package/lib/vite/traceViewer/assets/xtermModule-BeNbaIVa.js +0 -9
  378. package/lib/vite/traceViewer/codeMirrorModule.ez37Vkbh.css +0 -1
  379. package/lib/vite/traceViewer/embedded.CmarehFk.js +0 -2
  380. package/lib/vite/traceViewer/embedded.html +0 -18
  381. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  382. package/lib/vite/traceViewer/index.CrbWWHbf.css +0 -1
  383. package/lib/vite/traceViewer/index.FBucu_gE.js +0 -2
  384. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  385. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  386. package/lib/vite/traceViewer/recorder.CW_rzcEp.js +0 -2
  387. package/lib/vite/traceViewer/recorder.html +0 -17
  388. package/lib/vite/traceViewer/uiMode.CDUVjusr.js +0 -5
  389. package/lib/vite/traceViewer/uiMode.voC1ZiOQ.css +0 -1
  390. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  391. package/lib/vite/traceViewer/xtermModule.DSXBckUd.css +0 -32
  392. package/lib/zipBundle.js +0 -25
  393. package/lib/zipBundleImpl.js +0 -5
@@ -1,667 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.BrowserContext = void 0;
7
- exports.assertBrowserContextIsNotOwned = assertBrowserContextIsNotOwned;
8
- exports.normalizeProxySettings = normalizeProxySettings;
9
- exports.validateBrowserContextOptions = validateBrowserContextOptions;
10
- exports.verifyClientCertificates = verifyClientCertificates;
11
- exports.verifyGeolocation = verifyGeolocation;
12
- var _timeoutSettings = require("../common/timeoutSettings");
13
- var _utils = require("../utils");
14
- var _fileUtils = require("../utils/fileUtils");
15
- var _helper = require("./helper");
16
- var network = _interopRequireWildcard(require("./network"));
17
- var _page6 = require("./page");
18
- var _path = _interopRequireDefault(require("path"));
19
- var _fs = _interopRequireDefault(require("fs"));
20
- var _instrumentation = require("./instrumentation");
21
- var _debugger = require("./debugger");
22
- var _tracing = require("./trace/recorder/tracing");
23
- var _harRecorder = require("./har/harRecorder");
24
- var _recorder = require("./recorder");
25
- var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
26
- var _fetch = require("./fetch");
27
- var _clock = require("./clock");
28
- var _recorderApp = require("./recorder/recorderApp");
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
31
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
32
- /**
33
- * Copyright 2017 Google Inc. All rights reserved.
34
- * Modifications copyright (c) Microsoft Corporation.
35
- *
36
- * Licensed under the Apache License, Version 2.0 (the "License");
37
- * you may not use this file except in compliance with the License.
38
- * You may obtain a copy of the License at
39
- *
40
- * http://www.apache.org/licenses/LICENSE-2.0
41
- *
42
- * Unless required by applicable law or agreed to in writing, software
43
- * distributed under the License is distributed on an "AS IS" BASIS,
44
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
- * See the License for the specific language governing permissions and
46
- * limitations under the License.
47
- */
48
-
49
- class BrowserContext extends _instrumentation.SdkObject {
50
- constructor(browser, options, browserContextId) {
51
- super(browser, 'browser-context');
52
- this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
53
- this._pageBindings = new Map();
54
- this._activeProgressControllers = new Set();
55
- this._options = void 0;
56
- this._requestInterceptor = void 0;
57
- this._isPersistentContext = void 0;
58
- this._closedStatus = 'open';
59
- this._closePromise = void 0;
60
- this._closePromiseFulfill = void 0;
61
- this._permissions = new Map();
62
- this._downloads = new Set();
63
- this._browser = void 0;
64
- this._browserContextId = void 0;
65
- this._selectors = void 0;
66
- this._origins = new Set();
67
- this._harRecorders = new Map();
68
- this.tracing = void 0;
69
- this.fetchRequest = void 0;
70
- this._customCloseHandler = void 0;
71
- this._tempDirs = [];
72
- this._settingStorageState = false;
73
- this.initScripts = [];
74
- this._routesInFlight = new Set();
75
- this._debugger = void 0;
76
- this._closeReason = void 0;
77
- this.clock = void 0;
78
- this._clientCertificatesProxy = void 0;
79
- this.attribution.context = this;
80
- this._browser = browser;
81
- this._options = options;
82
- this._browserContextId = browserContextId;
83
- this._isPersistentContext = !browserContextId;
84
- this._closePromise = new Promise(fulfill => this._closePromiseFulfill = fulfill);
85
- this.fetchRequest = new _fetch.BrowserContextAPIRequestContext(this);
86
- if (this._options.recordHar) this._harRecorders.set('', new _harRecorder.HarRecorder(this, null, this._options.recordHar));
87
- this.tracing = new _tracing.Tracing(this, browser.options.tracesDir);
88
- this.clock = new _clock.Clock(this);
89
- }
90
- isPersistentContext() {
91
- return this._isPersistentContext;
92
- }
93
- setSelectors(selectors) {
94
- this._selectors = selectors;
95
- }
96
- selectors() {
97
- return this._selectors || this.attribution.playwright.selectors;
98
- }
99
- async _initialize() {
100
- if (this.attribution.playwright.options.isInternalPlaywright) return;
101
- // Debugger will pause execution upon page.pause in headed mode.
102
- this._debugger = new _debugger.Debugger(this);
103
-
104
- // When PWDEBUG=1, show inspector for each context.
105
- if ((0, _utils.debugMode)() === 'inspector') await _recorder.Recorder.show('actions', this, _recorderApp.RecorderApp.factory(this), {
106
- pauseOnNextStatement: true
107
- });
108
-
109
- // When paused, show inspector.
110
- if (this._debugger.isPaused()) _recorder.Recorder.showInspectorNoReply(this, _recorderApp.RecorderApp.factory(this));
111
- this._debugger.on(_debugger.Debugger.Events.PausedStateChanged, () => {
112
- if (this._debugger.isPaused()) _recorder.Recorder.showInspectorNoReply(this, _recorderApp.RecorderApp.factory(this));
113
- });
114
- if ((0, _utils.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
115
- if (this._options.serviceWorkers === 'block') await this.addInitScript(`\nif (navigator.serviceWorker) navigator.serviceWorker.register = async () => { console.warn('Service Worker registration blocked by Playwright'); };\n`);
116
- if (this._options.permissions) await this.grantPermissions(this._options.permissions);
117
- }
118
- debugger() {
119
- return this._debugger;
120
- }
121
- async _ensureVideosPath() {
122
- if (this._options.recordVideo) await (0, _fileUtils.mkdirIfNeeded)(_path.default.join(this._options.recordVideo.dir, 'dummy'));
123
- }
124
- canResetForReuse() {
125
- if (this._closedStatus !== 'open') return false;
126
- return true;
127
- }
128
- async stopPendingOperations(reason) {
129
- // When using context reuse, stop pending operations to gracefully terminate all the actions
130
- // with a user-friendly error message containing operation log.
131
- for (const controller of this._activeProgressControllers) controller.abort(new Error(reason));
132
- // Let rejections in microtask generate events before returning.
133
- await new Promise(f => setTimeout(f, 0));
134
- }
135
- static reusableContextHash(params) {
136
- const paramsCopy = {
137
- ...params
138
- };
139
- for (const k of Object.keys(paramsCopy)) {
140
- const key = k;
141
- if (paramsCopy[key] === defaultNewContextParamValues[key]) delete paramsCopy[key];
142
- }
143
- for (const key of paramsThatAllowContextReuse) delete paramsCopy[key];
144
- return JSON.stringify(paramsCopy);
145
- }
146
- async resetForReuse(metadata, params) {
147
- var _page, _page2, _page3, _page4, _page5;
148
- this.setDefaultNavigationTimeout(undefined);
149
- this.setDefaultTimeout(undefined);
150
- this.tracing.resetForReuse();
151
- if (params) {
152
- for (const key of paramsThatAllowContextReuse) this._options[key] = params[key];
153
- }
154
- await this._cancelAllRoutesInFlight();
155
-
156
- // Close extra pages early.
157
- let page = this.pages()[0];
158
- const [, ...otherPages] = this.pages();
159
- for (const p of otherPages) await p.close(metadata);
160
- if (page && page.hasCrashed()) {
161
- await page.close(metadata);
162
- page = undefined;
163
- }
164
-
165
- // Unless dialogs are dismissed, setting extra http headers below does not respond.
166
- (_page = page) === null || _page === void 0 || _page._frameManager.setCloseAllOpeningDialogs(true);
167
- await ((_page2 = page) === null || _page2 === void 0 ? void 0 : _page2._frameManager.closeOpenDialogs());
168
- // Navigate to about:blank first to ensure no page scripts are running after this point.
169
- await ((_page3 = page) === null || _page3 === void 0 ? void 0 : _page3.mainFrame().goto(metadata, 'about:blank', {
170
- timeout: 0
171
- }));
172
- (_page4 = page) === null || _page4 === void 0 || _page4._frameManager.setCloseAllOpeningDialogs(false);
173
- await this._resetStorage();
174
- await this._removeExposedBindings();
175
- await this._removeInitScripts();
176
- this.clock.markAsUninstalled();
177
- // TODO: following can be optimized to not perform noops.
178
- if (this._options.permissions) await this.grantPermissions(this._options.permissions);else await this.clearPermissions();
179
- await this.setExtraHTTPHeaders(this._options.extraHTTPHeaders || []);
180
- await this.setGeolocation(this._options.geolocation);
181
- await this.setOffline(!!this._options.offline);
182
- await this.setUserAgent(this._options.userAgent);
183
- await this.clearCache();
184
- await this._resetCookies();
185
- await ((_page5 = page) === null || _page5 === void 0 ? void 0 : _page5.resetForReuse(metadata));
186
- }
187
- _browserClosed() {
188
- for (const page of this.pages()) page._didClose();
189
- this._didCloseInternal();
190
- }
191
- _didCloseInternal() {
192
- var _this$_clientCertific;
193
- if (this._closedStatus === 'closed') {
194
- // We can come here twice if we close browser context and browser
195
- // at the same time.
196
- return;
197
- }
198
- (_this$_clientCertific = this._clientCertificatesProxy) === null || _this$_clientCertific === void 0 || _this$_clientCertific.close().catch(() => {});
199
- this.tracing.abort();
200
- if (this._isPersistentContext) this.onClosePersistent();
201
- this._closePromiseFulfill(new Error('Context closed'));
202
- this.emit(BrowserContext.Events.Close);
203
- }
204
-
205
- // BrowserContext methods.
206
-
207
- async cookies(urls = []) {
208
- if (urls && !Array.isArray(urls)) urls = [urls];
209
- return await this.doGetCookies(urls);
210
- }
211
- async clearCookies(options) {
212
- const currentCookies = await this.cookies();
213
- await this.doClearCookies();
214
- const matches = (cookie, prop, value) => {
215
- if (!value) return true;
216
- if (value instanceof RegExp) {
217
- value.lastIndex = 0;
218
- return value.test(cookie[prop]);
219
- }
220
- return cookie[prop] === value;
221
- };
222
- const cookiesToReadd = currentCookies.filter(cookie => {
223
- return !matches(cookie, 'name', options.name) || !matches(cookie, 'domain', options.domain) || !matches(cookie, 'path', options.path);
224
- });
225
- await this.addCookies(cookiesToReadd);
226
- }
227
- setHTTPCredentials(httpCredentials) {
228
- return this.doSetHTTPCredentials(httpCredentials);
229
- }
230
- async exposeBinding(name, needsHandle, playwrightBinding) {
231
- if (this._pageBindings.has(name)) throw new Error(`Function "${name}" has been already registered`);
232
- for (const page of this.pages()) {
233
- if (page.getBinding(name)) throw new Error(`Function "${name}" has been already registered in one of the pages`);
234
- }
235
- const binding = new _page6.PageBinding(name, playwrightBinding, needsHandle);
236
- this._pageBindings.set(name, binding);
237
- await this.doAddInitScript(binding.initScript);
238
- const frames = this.pages().map(page => page.frames()).flat();
239
- await Promise.all(frames.map(frame => frame.evaluateExpression(binding.initScript.source).catch(e => {})));
240
- }
241
- async _removeExposedBindings() {
242
- for (const [key, binding] of this._pageBindings) {
243
- if (!binding.internal) this._pageBindings.delete(key);
244
- }
245
- }
246
- async grantPermissions(permissions, origin) {
247
- let resolvedOrigin = '*';
248
- if (origin) {
249
- const url = new URL(origin);
250
- resolvedOrigin = url.origin;
251
- }
252
- const existing = new Set(this._permissions.get(resolvedOrigin) || []);
253
- permissions.forEach(p => existing.add(p));
254
- const list = [...existing.values()];
255
- this._permissions.set(resolvedOrigin, list);
256
- await this.doGrantPermissions(resolvedOrigin, list);
257
- }
258
- async clearPermissions() {
259
- this._permissions.clear();
260
- await this.doClearPermissions();
261
- }
262
- setDefaultNavigationTimeout(timeout) {
263
- this._timeoutSettings.setDefaultNavigationTimeout(timeout);
264
- }
265
- setDefaultTimeout(timeout) {
266
- this._timeoutSettings.setDefaultTimeout(timeout);
267
- }
268
- async _loadDefaultContextAsIs(progress) {
269
- if (!this.pages().length) {
270
- const waitForEvent = _helper.helper.waitForEvent(progress, this, BrowserContext.Events.Page);
271
- progress.cleanupWhenAborted(() => waitForEvent.dispose);
272
- const page = await waitForEvent.promise;
273
- if (page._pageIsError) throw page._pageIsError;
274
- }
275
- const pages = this.pages();
276
- if (pages[0]._pageIsError) throw pages[0]._pageIsError;
277
- await pages[0].mainFrame()._waitForLoadState(progress, 'load');
278
- return pages;
279
- }
280
- async _loadDefaultContext(progress) {
281
- const pages = await this._loadDefaultContextAsIs(progress);
282
- const browserName = this._browser.options.name;
283
- if (this._options.isMobile && browserName === 'chromium' || this._options.locale && browserName === 'webkit') {
284
- // Workaround for:
285
- // - chromium fails to change isMobile for existing page;
286
- // - webkit fails to change locale for existing page.
287
- const oldPage = pages[0];
288
- await this.newPage(progress.metadata);
289
- await oldPage.close(progress.metadata);
290
- }
291
- }
292
- _authenticateProxyViaHeader() {
293
- const proxy = this._options.proxy || this._browser.options.proxy || {
294
- username: undefined,
295
- password: undefined
296
- };
297
- const {
298
- username,
299
- password
300
- } = proxy;
301
- if (username) {
302
- this._options.httpCredentials = {
303
- username,
304
- password: password
305
- };
306
- const token = Buffer.from(`${username}:${password}`).toString('base64');
307
- this._options.extraHTTPHeaders = network.mergeHeaders([this._options.extraHTTPHeaders, network.singleHeader('Proxy-Authorization', `Basic ${token}`)]);
308
- }
309
- }
310
- _authenticateProxyViaCredentials() {
311
- const proxy = this._options.proxy || this._browser.options.proxy;
312
- if (!proxy) return;
313
- const {
314
- username,
315
- password
316
- } = proxy;
317
- if (username) this._options.httpCredentials = {
318
- username,
319
- password: password || ''
320
- };
321
- }
322
- async addInitScript(source) {
323
- const initScript = new _page6.InitScript(source);
324
- this.initScripts.push(initScript);
325
- await this.doAddInitScript(initScript);
326
- }
327
- async _removeInitScripts() {
328
- this.initScripts = this.initScripts.filter(script => script.internal);
329
- await this.doRemoveNonInternalInitScripts();
330
- }
331
- async setRequestInterceptor(handler) {
332
- this._requestInterceptor = handler;
333
- await this.doUpdateRequestInterception();
334
- }
335
- isClosingOrClosed() {
336
- return this._closedStatus !== 'open';
337
- }
338
- async _deleteAllDownloads() {
339
- await Promise.all(Array.from(this._downloads).map(download => download.artifact.deleteOnContextClose()));
340
- }
341
- async _deleteAllTempDirs() {
342
- await Promise.all(this._tempDirs.map(async dir => await _fs.default.promises.unlink(dir).catch(e => {})));
343
- }
344
- setCustomCloseHandler(handler) {
345
- this._customCloseHandler = handler;
346
- }
347
- async close(options) {
348
- if (this._closedStatus === 'open') {
349
- if (options.reason) this._closeReason = options.reason;
350
- this.emit(BrowserContext.Events.BeforeClose);
351
- this._closedStatus = 'closing';
352
- for (const harRecorder of this._harRecorders.values()) await harRecorder.flush();
353
- await this.tracing.flush();
354
-
355
- // Cleanup.
356
- const promises = [];
357
- for (const {
358
- context,
359
- artifact
360
- } of this._browser._idToVideo.values()) {
361
- // Wait for the videos to finish.
362
- if (context === this) promises.push(artifact.finishedPromise());
363
- }
364
- if (this._customCloseHandler) {
365
- await this._customCloseHandler();
366
- } else {
367
- // Close the context.
368
- await this.doClose(options.reason);
369
- }
370
-
371
- // We delete downloads after context closure
372
- // so that browser does not write to the download file anymore.
373
- promises.push(this._deleteAllDownloads());
374
- promises.push(this._deleteAllTempDirs());
375
- await Promise.all(promises);
376
-
377
- // Custom handler should trigger didCloseInternal itself.
378
- if (!this._customCloseHandler) this._didCloseInternal();
379
- }
380
- await this._closePromise;
381
- }
382
- async newPage(metadata) {
383
- const pageDelegate = await this.newPageDelegate();
384
- if (metadata.isServerSide) pageDelegate.potentiallyUninitializedPage().markAsServerSideOnly();
385
- const pageOrError = await pageDelegate.pageOrError();
386
- if (pageOrError instanceof _page6.Page) {
387
- if (pageOrError.isClosed()) throw new Error('Page has been closed.');
388
- return pageOrError;
389
- }
390
- throw pageOrError;
391
- }
392
- addVisitedOrigin(origin) {
393
- this._origins.add(origin);
394
- }
395
- async storageState() {
396
- const result = {
397
- cookies: await this.cookies(),
398
- origins: []
399
- };
400
- const originsToSave = new Set(this._origins);
401
-
402
- // First try collecting storage stage from existing pages.
403
- for (const page of this.pages()) {
404
- const origin = page.mainFrame().origin();
405
- if (!origin || !originsToSave.has(origin)) continue;
406
- try {
407
- const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`({
408
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
409
- })`, 'utility');
410
- if (storage.localStorage.length) result.origins.push({
411
- origin,
412
- localStorage: storage.localStorage
413
- });
414
- originsToSave.delete(origin);
415
- } catch {
416
- // When failed on the live page, we'll retry on the blank page below.
417
- }
418
- }
419
-
420
- // If there are still origins to save, create a blank page to iterate over origins.
421
- if (originsToSave.size) {
422
- const internalMetadata = (0, _instrumentation.serverSideCallMetadata)();
423
- const page = await this.newPage(internalMetadata);
424
- await page._setServerRequestInterceptor(handler => {
425
- handler.fulfill({
426
- body: '<html></html>'
427
- }).catch(() => {});
428
- return true;
429
- });
430
- for (const origin of originsToSave) {
431
- const originStorage = {
432
- origin,
433
- localStorage: []
434
- };
435
- const frame = page.mainFrame();
436
- await frame.goto(internalMetadata, origin);
437
- const storage = await frame.evaluateExpression(`({
438
- localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
439
- })`, {
440
- world: 'utility'
441
- });
442
- originStorage.localStorage = storage.localStorage;
443
- if (storage.localStorage.length) result.origins.push(originStorage);
444
- }
445
- await page.close(internalMetadata);
446
- }
447
- return result;
448
- }
449
- async _resetStorage() {
450
- var _this$_options$storag;
451
- const oldOrigins = this._origins;
452
- const newOrigins = new Map(((_this$_options$storag = this._options.storageState) === null || _this$_options$storag === void 0 || (_this$_options$storag = _this$_options$storag.origins) === null || _this$_options$storag === void 0 ? void 0 : _this$_options$storag.map(p => [p.origin, p])) || []);
453
- if (!oldOrigins.size && !newOrigins.size) return;
454
- let page = this.pages()[0];
455
- const internalMetadata = (0, _instrumentation.serverSideCallMetadata)();
456
- page = page || (await this.newPage({
457
- ...internalMetadata,
458
- // Do not mark this page as internal, because we will leave it for later reuse
459
- // as a user-visible page.
460
- isServerSide: false
461
- }));
462
- await page._setServerRequestInterceptor(handler => {
463
- handler.fulfill({
464
- body: '<html></html>'
465
- }).catch(() => {});
466
- return true;
467
- });
468
- for (const origin of new Set([...oldOrigins, ...newOrigins.keys()])) {
469
- const frame = page.mainFrame();
470
- await frame.goto(internalMetadata, origin);
471
- await frame.resetStorageForCurrentOriginBestEffort(newOrigins.get(origin));
472
- }
473
- await page._setServerRequestInterceptor(undefined);
474
- this._origins = new Set([...newOrigins.keys()]);
475
- // It is safe to not restore the URL to about:blank since we are doing it in Page::resetForReuse.
476
- }
477
- async _resetCookies() {
478
- var _this$_options$storag2, _this$_options$storag3;
479
- await this.doClearCookies();
480
- if ((_this$_options$storag2 = this._options.storageState) !== null && _this$_options$storag2 !== void 0 && _this$_options$storag2.cookies) await this.addCookies((_this$_options$storag3 = this._options.storageState) === null || _this$_options$storag3 === void 0 ? void 0 : _this$_options$storag3.cookies);
481
- }
482
- isSettingStorageState() {
483
- return this._settingStorageState;
484
- }
485
- async setStorageState(metadata, state) {
486
- this._settingStorageState = true;
487
- try {
488
- if (state.cookies) await this.addCookies(state.cookies);
489
- if (state.origins && state.origins.length) {
490
- const internalMetadata = (0, _instrumentation.serverSideCallMetadata)();
491
- const page = await this.newPage(internalMetadata);
492
- await page._setServerRequestInterceptor(handler => {
493
- handler.fulfill({
494
- body: '<html></html>'
495
- }).catch(() => {});
496
- return true;
497
- });
498
- for (const originState of state.origins) {
499
- const frame = page.mainFrame();
500
- await frame.goto(metadata, originState.origin);
501
- await frame.evaluateExpression(`
502
- originState => {
503
- for (const { name, value } of (originState.localStorage || []))
504
- localStorage.setItem(name, value);
505
- }`, {
506
- isFunction: true,
507
- world: 'utility'
508
- }, originState);
509
- }
510
- await page.close(internalMetadata);
511
- }
512
- } finally {
513
- this._settingStorageState = false;
514
- }
515
- }
516
- async extendInjectedScript(source, arg) {
517
- const installInFrame = frame => frame.extendInjectedScript(source, arg).catch(() => {});
518
- const installInPage = page => {
519
- page.on(_page6.Page.Events.InternalFrameNavigatedToNewDocument, installInFrame);
520
- return Promise.all(page.frames().map(installInFrame));
521
- };
522
- this.on(BrowserContext.Events.Page, installInPage);
523
- return Promise.all(this.pages().map(installInPage));
524
- }
525
- async safeNonStallingEvaluateInAllFrames(expression, world, options = {}) {
526
- await Promise.all(this.pages().map(page => page.safeNonStallingEvaluateInAllFrames(expression, world, options)));
527
- }
528
- async _harStart(page, options) {
529
- const harId = (0, _utils.createGuid)();
530
- this._harRecorders.set(harId, new _harRecorder.HarRecorder(this, page, options));
531
- return harId;
532
- }
533
- async _harExport(harId) {
534
- const recorder = this._harRecorders.get(harId || '');
535
- return recorder.export();
536
- }
537
- addRouteInFlight(route) {
538
- this._routesInFlight.add(route);
539
- }
540
- removeRouteInFlight(route) {
541
- this._routesInFlight.delete(route);
542
- }
543
- async _cancelAllRoutesInFlight() {
544
- await Promise.all([...this._routesInFlight].map(r => r.abort())).catch(() => {});
545
- this._routesInFlight.clear();
546
- }
547
- }
548
- exports.BrowserContext = BrowserContext;
549
- BrowserContext.Events = {
550
- Console: 'console',
551
- Close: 'close',
552
- Dialog: 'dialog',
553
- Page: 'page',
554
- // Can't use just 'error' due to node.js special treatment of error events.
555
- // @see https://nodejs.org/api/events.html#events_error_events
556
- PageError: 'pageerror',
557
- Request: 'request',
558
- Response: 'response',
559
- RequestFailed: 'requestfailed',
560
- RequestFinished: 'requestfinished',
561
- RequestAborted: 'requestaborted',
562
- RequestFulfilled: 'requestfulfilled',
563
- RequestContinued: 'requestcontinued',
564
- BeforeClose: 'beforeclose',
565
- VideoStarted: 'videostarted'
566
- };
567
- function assertBrowserContextIsNotOwned(context) {
568
- for (const page of context.pages()) {
569
- if (page._ownedContext) throw new Error('Please use browser.newContext() for multi-page scripts that share the context.');
570
- }
571
- }
572
- function validateBrowserContextOptions(options, browserOptions) {
573
- if (options.noDefaultViewport && options.deviceScaleFactor !== undefined) throw new Error(`"deviceScaleFactor" option is not supported with null "viewport"`);
574
- if (options.noDefaultViewport && !!options.isMobile) throw new Error(`"isMobile" option is not supported with null "viewport"`);
575
- if (options.acceptDownloads === undefined && browserOptions.name !== 'electron') options.acceptDownloads = 'accept';
576
- // Electron requires explicit acceptDownloads: true since we wait for
577
- // https://github.com/electron/electron/pull/41718 to be widely shipped.
578
- // In 6-12 months, we can remove this check.
579
- else if (options.acceptDownloads === undefined && browserOptions.name === 'electron') options.acceptDownloads = 'internal-browser-default';
580
- if (!options.viewport && !options.noDefaultViewport) options.viewport = {
581
- width: 1280,
582
- height: 720
583
- };
584
- if (options.recordVideo) {
585
- if (!options.recordVideo.size) {
586
- if (options.noDefaultViewport) {
587
- options.recordVideo.size = {
588
- width: 800,
589
- height: 600
590
- };
591
- } else {
592
- const size = options.viewport;
593
- const scale = Math.min(1, 800 / Math.max(size.width, size.height));
594
- options.recordVideo.size = {
595
- width: Math.floor(size.width * scale),
596
- height: Math.floor(size.height * scale)
597
- };
598
- }
599
- }
600
- // Make sure both dimensions are odd, this is required for vp8
601
- options.recordVideo.size.width &= ~1;
602
- options.recordVideo.size.height &= ~1;
603
- }
604
- if (options.proxy) options.proxy = normalizeProxySettings(options.proxy);
605
- verifyGeolocation(options.geolocation);
606
- }
607
- function verifyGeolocation(geolocation) {
608
- if (!geolocation) return;
609
- geolocation.accuracy = geolocation.accuracy || 0;
610
- const {
611
- longitude,
612
- latitude,
613
- accuracy
614
- } = geolocation;
615
- if (longitude < -180 || longitude > 180) throw new Error(`geolocation.longitude: precondition -180 <= LONGITUDE <= 180 failed.`);
616
- if (latitude < -90 || latitude > 90) throw new Error(`geolocation.latitude: precondition -90 <= LATITUDE <= 90 failed.`);
617
- if (accuracy < 0) throw new Error(`geolocation.accuracy: precondition 0 <= ACCURACY failed.`);
618
- }
619
- function verifyClientCertificates(clientCertificates) {
620
- if (!clientCertificates) return;
621
- for (const cert of clientCertificates) {
622
- if (!cert.origin) throw new Error(`clientCertificates.origin is required`);
623
- if (!cert.cert && !cert.key && !cert.passphrase && !cert.pfx) throw new Error('None of cert, key, passphrase or pfx is specified');
624
- if (cert.cert && !cert.key) throw new Error('cert is specified without key');
625
- if (!cert.cert && cert.key) throw new Error('key is specified without cert');
626
- if (cert.pfx && (cert.cert || cert.key)) throw new Error('pfx is specified together with cert, key or passphrase');
627
- }
628
- }
629
- function normalizeProxySettings(proxy) {
630
- let {
631
- server,
632
- bypass
633
- } = proxy;
634
- let url;
635
- try {
636
- // new URL('127.0.0.1:8080') throws
637
- // new URL('localhost:8080') fails to parse host or protocol
638
- // In both of these cases, we need to try re-parse URL with `http://` prefix.
639
- url = new URL(server);
640
- if (!url.host || !url.protocol) url = new URL('http://' + server);
641
- } catch (e) {
642
- url = new URL('http://' + server);
643
- }
644
- if (url.protocol === 'socks4:' && (proxy.username || proxy.password)) throw new Error(`Socks4 proxy protocol does not support authentication`);
645
- if (url.protocol === 'socks5:' && (proxy.username || proxy.password)) throw new Error(`Browser does not support socks5 proxy authentication`);
646
- server = url.protocol + '//' + url.host;
647
- if (bypass) bypass = bypass.split(',').map(t => t.trim()).join(',');
648
- return {
649
- ...proxy,
650
- server,
651
- bypass
652
- };
653
- }
654
- const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'screen', 'userAgent', 'viewport'];
655
- const defaultNewContextParamValues = {
656
- noDefaultViewport: false,
657
- ignoreHTTPSErrors: false,
658
- javaScriptEnabled: true,
659
- bypassCSP: false,
660
- offline: false,
661
- isMobile: false,
662
- hasTouch: false,
663
- acceptDownloads: 'accept',
664
- strictSelectors: false,
665
- serviceWorkers: 'allow',
666
- locale: 'en-US'
667
- };