rebrowser-playwright-core 1.49.0 → 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/ThirdPartyNotices.txt +381 -55
  2. package/bin/reinstall_msedge_beta_linux.sh +6 -0
  3. package/bin/reinstall_msedge_dev_linux.sh +6 -0
  4. package/bin/reinstall_msedge_stable_linux.sh +6 -0
  5. package/browsers.json +28 -13
  6. package/index.js +0 -1
  7. package/lib/androidServerImpl.js +42 -48
  8. package/lib/browserServerImpl.js +60 -64
  9. package/lib/cli/driver.js +71 -69
  10. package/lib/cli/program.js +314 -354
  11. package/lib/cli/programWithTestStub.js +51 -44
  12. package/lib/client/accessibility.js +31 -32
  13. package/lib/client/android.js +146 -254
  14. package/lib/client/api.js +135 -283
  15. package/lib/client/artifact.js +39 -39
  16. package/lib/client/browser.js +59 -68
  17. package/lib/client/browserContext.js +302 -322
  18. package/lib/client/browserType.js +95 -143
  19. package/lib/client/cdpSession.js +29 -31
  20. package/lib/client/channelOwner.js +109 -139
  21. package/lib/client/clientHelper.js +49 -42
  22. package/lib/client/clientInstrumentation.js +40 -35
  23. package/lib/client/clientStackTrace.js +69 -0
  24. package/lib/client/clock.js +36 -36
  25. package/lib/client/connection.js +203 -218
  26. package/lib/client/consoleMessage.js +33 -33
  27. package/lib/client/coverage.js +25 -22
  28. package/lib/client/dialog.js +30 -31
  29. package/lib/client/download.js +25 -25
  30. package/lib/client/electron.js +74 -76
  31. package/lib/client/elementHandle.js +126 -163
  32. package/lib/client/errors.js +53 -53
  33. package/lib/client/eventEmitter.js +127 -127
  34. package/lib/client/events.js +72 -68
  35. package/lib/client/fetch.js +154 -178
  36. package/lib/client/fileChooser.js +25 -24
  37. package/lib/client/fileUtils.js +34 -0
  38. package/lib/client/frame.js +189 -307
  39. package/lib/client/harRouter.js +44 -56
  40. package/lib/client/input.js +40 -69
  41. package/lib/client/jsHandle.js +55 -71
  42. package/lib/client/jsonPipe.js +27 -23
  43. package/lib/client/localUtils.js +53 -28
  44. package/lib/client/locator.js +144 -230
  45. package/lib/client/network.js +285 -301
  46. package/lib/client/page.js +273 -312
  47. package/lib/client/platform.js +74 -0
  48. package/lib/client/playwright.js +62 -57
  49. package/lib/client/selectors.js +51 -43
  50. package/lib/client/stream.js +30 -45
  51. package/lib/client/timeoutSettings.js +75 -0
  52. package/lib/client/tracing.js +49 -82
  53. package/lib/client/types.js +26 -22
  54. package/lib/client/video.js +35 -27
  55. package/lib/client/waiter.js +71 -91
  56. package/lib/client/webError.js +25 -23
  57. package/lib/client/webSocket.js +111 -0
  58. package/lib/client/worker.js +48 -56
  59. package/lib/client/writableStream.js +28 -43
  60. package/lib/generated/clockSource.js +26 -5
  61. package/lib/generated/consoleApiSource.js +26 -5
  62. package/lib/generated/injectedScriptSource.js +26 -5
  63. package/lib/generated/pollingRecorderSource.js +26 -5
  64. package/lib/generated/utilityScriptSource.js +26 -5
  65. package/lib/generated/webSocketMockSource.js +375 -4
  66. package/lib/inProcessFactory.js +53 -48
  67. package/lib/inprocess.js +2 -19
  68. package/lib/outofprocess.js +53 -42
  69. package/lib/protocol/debug.js +209 -25
  70. package/lib/protocol/serializers.js +153 -134
  71. package/lib/protocol/validator.js +2712 -2667
  72. package/lib/protocol/validatorPrimitives.js +115 -75
  73. package/lib/remote/playwrightConnection.js +144 -152
  74. package/lib/remote/playwrightServer.js +106 -77
  75. package/lib/server/accessibility.js +44 -37
  76. package/lib/server/android/android.js +216 -206
  77. package/lib/server/android/backendAdb.js +89 -82
  78. package/lib/server/artifact.js +78 -55
  79. package/lib/server/bidi/bidiBrowser.js +227 -158
  80. package/lib/server/bidi/bidiChromium.js +106 -78
  81. package/lib/server/bidi/bidiConnection.js +66 -83
  82. package/lib/server/bidi/bidiExecutionContext.js +161 -97
  83. package/lib/server/bidi/bidiFirefox.js +76 -68
  84. package/lib/server/bidi/bidiInput.js +90 -102
  85. package/lib/server/bidi/bidiNetworkManager.js +141 -159
  86. package/lib/server/bidi/bidiOverCdp.js +57 -58
  87. package/lib/server/bidi/bidiPage.js +262 -261
  88. package/lib/server/bidi/bidiPdf.js +52 -86
  89. package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  90. package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
  91. package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
  92. package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
  93. package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
  94. package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
  95. package/lib/server/browser.js +76 -84
  96. package/lib/server/browserContext.js +343 -360
  97. package/lib/server/browserType.js +169 -181
  98. package/lib/server/callLog.js +82 -0
  99. package/lib/server/chromium/chromium.js +212 -190
  100. package/lib/server/chromium/chromiumSwitches.js +99 -44
  101. package/lib/server/chromium/crAccessibility.js +157 -131
  102. package/lib/server/chromium/crBrowser.js +262 -280
  103. package/lib/server/chromium/crConnection.js +121 -178
  104. package/lib/server/chromium/crCoverage.js +113 -127
  105. package/lib/server/chromium/crDevTools.js +64 -55
  106. package/lib/server/chromium/crDragDrop.js +62 -79
  107. package/lib/server/chromium/crExecutionContext.js +100 -91
  108. package/lib/server/chromium/crInput.js +101 -88
  109. package/lib/server/chromium/crNetworkManager.js +269 -370
  110. package/lib/server/chromium/crPage.js +509 -595
  111. package/lib/server/chromium/crPdf.js +54 -86
  112. package/lib/server/chromium/crProtocolHelper.js +92 -80
  113. package/lib/server/chromium/crServiceWorker.js +85 -69
  114. package/lib/server/chromium/defaultFontFamilies.js +152 -135
  115. package/lib/server/chromium/protocol.d.js +16 -0
  116. package/lib/server/chromium/videoRecorder.js +65 -99
  117. package/lib/server/clock.js +58 -46
  118. package/lib/server/codegen/csharp.js +191 -156
  119. package/lib/server/codegen/java.js +163 -125
  120. package/lib/server/codegen/javascript.js +166 -143
  121. package/lib/server/codegen/jsonl.js +33 -29
  122. package/lib/server/codegen/language.js +75 -52
  123. package/lib/server/codegen/languages.js +65 -27
  124. package/lib/server/codegen/python.js +141 -125
  125. package/lib/server/codegen/types.js +15 -4
  126. package/lib/server/console.js +28 -32
  127. package/lib/server/cookieStore.js +105 -86
  128. package/lib/server/debugController.js +102 -154
  129. package/lib/server/debugger.js +82 -78
  130. package/lib/server/deviceDescriptors.js +37 -24
  131. package/lib/server/deviceDescriptorsSource.json +131 -131
  132. package/lib/server/dialog.js +36 -35
  133. package/lib/server/dispatchers/androidDispatcher.js +196 -107
  134. package/lib/server/dispatchers/artifactDispatcher.js +62 -62
  135. package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
  136. package/lib/server/dispatchers/browserDispatcher.js +78 -97
  137. package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
  138. package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
  139. package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
  140. package/lib/server/dispatchers/dialogDispatcher.js +30 -27
  141. package/lib/server/dispatchers/dispatcher.js +180 -229
  142. package/lib/server/dispatchers/electronDispatcher.js +54 -57
  143. package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
  144. package/lib/server/dispatchers/frameDispatcher.js +93 -162
  145. package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
  146. package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
  147. package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
  148. package/lib/server/dispatchers/networkDispatchers.js +92 -109
  149. package/lib/server/dispatchers/pageDispatcher.js +130 -169
  150. package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
  151. package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
  152. package/lib/server/dispatchers/streamDispatcher.js +42 -44
  153. package/lib/server/dispatchers/tracingDispatcher.js +36 -41
  154. package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
  155. package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
  156. package/lib/server/dom.js +424 -443
  157. package/lib/server/download.js +45 -35
  158. package/lib/server/electron/electron.js +156 -175
  159. package/lib/server/electron/loader.js +8 -36
  160. package/lib/server/errors.js +47 -46
  161. package/lib/server/fetch.js +302 -331
  162. package/lib/server/fileChooser.js +25 -24
  163. package/lib/server/fileUploadUtils.js +66 -57
  164. package/lib/server/firefox/ffAccessibility.js +153 -131
  165. package/lib/server/firefox/ffBrowser.js +218 -274
  166. package/lib/server/firefox/ffConnection.js +63 -84
  167. package/lib/server/firefox/ffExecutionContext.js +103 -77
  168. package/lib/server/firefox/ffInput.js +72 -63
  169. package/lib/server/firefox/ffNetworkManager.js +131 -110
  170. package/lib/server/firefox/ffPage.js +244 -302
  171. package/lib/server/firefox/firefox.js +76 -69
  172. package/lib/server/firefox/protocol.d.js +16 -0
  173. package/lib/server/formData.js +107 -35
  174. package/lib/server/frameSelectors.js +77 -111
  175. package/lib/server/frames.js +719 -855
  176. package/lib/server/har/harRecorder.js +85 -77
  177. package/lib/server/har/harTracer.js +288 -224
  178. package/lib/server/harBackend.js +157 -0
  179. package/lib/server/helper.js +56 -59
  180. package/lib/server/index.js +59 -106
  181. package/lib/server/input.js +136 -166
  182. package/lib/server/instrumentation.js +49 -44
  183. package/lib/server/javascript.js +157 -151
  184. package/lib/server/launchApp.js +92 -73
  185. package/lib/server/localUtils.js +211 -0
  186. package/lib/server/macEditingCommands.js +141 -137
  187. package/lib/server/network.js +263 -297
  188. package/lib/server/page.js +353 -432
  189. package/lib/server/pageBinding.js +88 -0
  190. package/lib/server/pipeTransport.js +49 -45
  191. package/lib/server/playwright.js +60 -67
  192. package/lib/server/progress.js +56 -51
  193. package/lib/server/protocolError.js +34 -31
  194. package/lib/server/recorder/chat.js +161 -0
  195. package/lib/server/recorder/contextRecorder.js +135 -148
  196. package/lib/server/recorder/recorderApp.js +129 -132
  197. package/lib/server/recorder/recorderCollection.js +57 -57
  198. package/lib/server/recorder/recorderFrontend.js +15 -4
  199. package/lib/server/recorder/recorderRunner.js +80 -100
  200. package/lib/server/recorder/recorderUtils.js +59 -72
  201. package/lib/server/recorder/throttledFile.js +42 -31
  202. package/lib/server/recorder.js +186 -190
  203. package/lib/server/registry/browserFetcher.js +107 -100
  204. package/lib/server/registry/dependencies.js +247 -198
  205. package/lib/server/registry/index.js +928 -709
  206. package/lib/server/registry/nativeDeps.js +1073 -461
  207. package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
  208. package/lib/server/screenshotter.js +166 -182
  209. package/lib/server/selectors.js +85 -46
  210. package/lib/server/socksClientCertificatesInterceptor.js +166 -185
  211. package/lib/server/socksInterceptor.js +62 -67
  212. package/lib/server/storageScript.js +154 -0
  213. package/lib/server/timeoutSettings.js +89 -0
  214. package/lib/server/trace/recorder/snapshotter.js +70 -88
  215. package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
  216. package/lib/server/trace/recorder/tracing.js +324 -327
  217. package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
  218. package/lib/server/trace/viewer/traceViewer.js +172 -137
  219. package/lib/server/transport.js +125 -133
  220. package/lib/server/types.js +26 -22
  221. package/lib/server/usKeyboardLayout.js +135 -545
  222. package/lib/server/utils/ascii.js +44 -0
  223. package/lib/server/utils/comparators.js +161 -0
  224. package/lib/server/utils/crypto.js +216 -0
  225. package/lib/server/utils/debug.js +47 -0
  226. package/lib/server/utils/debugLogger.js +114 -0
  227. package/lib/server/utils/env.js +68 -0
  228. package/lib/server/utils/eventsHelper.js +39 -0
  229. package/lib/server/utils/expectUtils.js +38 -0
  230. package/lib/server/utils/fileUtils.js +191 -0
  231. package/lib/server/utils/happyEyeballs.js +207 -0
  232. package/lib/server/utils/hostPlatform.js +109 -0
  233. package/lib/server/utils/httpServer.js +218 -0
  234. package/lib/server/utils/image_tools/colorUtils.js +89 -0
  235. package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
  236. package/lib/server/utils/image_tools/imageChannel.js +78 -0
  237. package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
  238. package/lib/server/utils/linuxUtils.js +71 -0
  239. package/lib/server/utils/network.js +217 -0
  240. package/lib/server/utils/nodePlatform.js +148 -0
  241. package/lib/server/utils/pipeTransport.js +84 -0
  242. package/lib/server/utils/processLauncher.js +238 -0
  243. package/lib/server/utils/profiler.js +65 -0
  244. package/lib/server/utils/socksProxy.js +511 -0
  245. package/lib/server/utils/spawnAsync.js +41 -0
  246. package/lib/server/utils/task.js +51 -0
  247. package/lib/server/utils/userAgent.js +98 -0
  248. package/lib/server/utils/wsServer.js +132 -0
  249. package/lib/server/utils/zipFile.js +74 -0
  250. package/lib/server/utils/zones.js +57 -0
  251. package/lib/server/webkit/protocol.d.js +16 -0
  252. package/lib/server/webkit/webkit.js +76 -63
  253. package/lib/server/webkit/wkAccessibility.js +161 -118
  254. package/lib/server/webkit/wkBrowser.js +163 -180
  255. package/lib/server/webkit/wkConnection.js +59 -83
  256. package/lib/server/webkit/wkExecutionContext.js +96 -73
  257. package/lib/server/webkit/wkInput.js +87 -75
  258. package/lib/server/webkit/wkInterceptableRequest.js +102 -95
  259. package/lib/server/webkit/wkPage.js +536 -645
  260. package/lib/server/webkit/wkProvisionalPage.js +45 -56
  261. package/lib/server/webkit/wkWorkers.js +77 -77
  262. package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
  263. package/lib/utils/isomorphic/assert.js +31 -0
  264. package/lib/utils/isomorphic/builtins.js +90 -0
  265. package/lib/utils/isomorphic/colors.js +72 -0
  266. package/lib/utils/isomorphic/cssParser.js +123 -127
  267. package/lib/utils/isomorphic/cssTokenizer.js +436 -364
  268. package/lib/utils/isomorphic/headers.js +53 -0
  269. package/lib/utils/isomorphic/locatorGenerators.js +344 -349
  270. package/lib/utils/isomorphic/locatorParser.js +103 -106
  271. package/lib/utils/isomorphic/locatorUtils.js +63 -44
  272. package/lib/utils/isomorphic/manualPromise.js +115 -0
  273. package/lib/utils/isomorphic/mimeType.js +453 -22
  274. package/lib/utils/isomorphic/multimap.js +81 -0
  275. package/lib/utils/isomorphic/rtti.js +43 -0
  276. package/lib/utils/isomorphic/selectorParser.js +183 -193
  277. package/lib/utils/isomorphic/semaphore.js +54 -0
  278. package/lib/utils/isomorphic/stackTrace.js +158 -0
  279. package/lib/utils/isomorphic/stringUtils.js +113 -106
  280. package/lib/utils/isomorphic/time.js +44 -0
  281. package/lib/utils/isomorphic/timeoutRunner.js +67 -0
  282. package/lib/utils/isomorphic/traceUtils.js +52 -32
  283. package/lib/utils/isomorphic/types.js +16 -0
  284. package/lib/utils/isomorphic/urlMatch.js +114 -71
  285. package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
  286. package/lib/utils.js +101 -0
  287. package/lib/utilsBundle.js +101 -76
  288. package/lib/utilsBundleImpl/index.js +114 -116
  289. package/lib/vite/htmlReport/index.html +26 -20
  290. package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
  291. package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
  292. package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
  293. package/lib/vite/recorder/index.html +2 -2
  294. package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
  295. package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
  296. package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
  297. package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
  298. package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
  299. package/lib/vite/traceViewer/index.html +4 -7
  300. package/lib/vite/traceViewer/sw.bundle.js +3 -3
  301. package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
  302. package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
  303. package/lib/vite/traceViewer/uiMode.html +4 -7
  304. package/lib/zipBundle.js +32 -23
  305. package/lib/zipBundleImpl.js +4 -4
  306. package/package.json +7 -7
  307. package/types/protocol.d.ts +819 -127
  308. package/types/types.d.ts +196 -75
  309. package/bin/PrintDeps.exe +0 -0
  310. package/bin/README.md +0 -2
  311. package/lib/common/socksProxy.js +0 -569
  312. package/lib/common/timeoutSettings.js +0 -73
  313. package/lib/common/types.js +0 -5
  314. package/lib/image_tools/colorUtils.js +0 -98
  315. package/lib/image_tools/imageChannel.js +0 -70
  316. package/lib/protocol/transport.js +0 -82
  317. package/lib/server/ariaSnapshot.js +0 -33
  318. package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
  319. package/lib/server/recorder/recorderInTraceViewer.js +0 -144
  320. package/lib/utils/ascii.js +0 -31
  321. package/lib/utils/comparators.js +0 -153
  322. package/lib/utils/crypto.js +0 -171
  323. package/lib/utils/debug.js +0 -46
  324. package/lib/utils/debugLogger.js +0 -91
  325. package/lib/utils/env.js +0 -49
  326. package/lib/utils/eventsHelper.js +0 -38
  327. package/lib/utils/expectUtils.js +0 -33
  328. package/lib/utils/fileUtils.js +0 -205
  329. package/lib/utils/happy-eyeballs.js +0 -194
  330. package/lib/utils/headers.js +0 -52
  331. package/lib/utils/hostPlatform.js +0 -139
  332. package/lib/utils/httpServer.js +0 -237
  333. package/lib/utils/index.js +0 -368
  334. package/lib/utils/isomorphic/recorderUtils.js +0 -227
  335. package/lib/utils/linuxUtils.js +0 -78
  336. package/lib/utils/manualPromise.js +0 -109
  337. package/lib/utils/multimap.js +0 -75
  338. package/lib/utils/network.js +0 -160
  339. package/lib/utils/processLauncher.js +0 -248
  340. package/lib/utils/profiler.js +0 -53
  341. package/lib/utils/rtti.js +0 -44
  342. package/lib/utils/semaphore.js +0 -51
  343. package/lib/utils/sequence.js +0 -64
  344. package/lib/utils/spawnAsync.js +0 -45
  345. package/lib/utils/stackTrace.js +0 -134
  346. package/lib/utils/task.js +0 -58
  347. package/lib/utils/time.js +0 -37
  348. package/lib/utils/timeoutRunner.js +0 -66
  349. package/lib/utils/traceUtils.js +0 -44
  350. package/lib/utils/userAgent.js +0 -105
  351. package/lib/utils/wsServer.js +0 -127
  352. package/lib/utils/zipFile.js +0 -75
  353. package/lib/utils/zones.js +0 -71
  354. package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
  355. package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
  356. package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
  357. package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
  358. package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
  359. package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
  360. package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
  361. package/lib/vite/traceViewer/embedded.html +0 -18
  362. package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
  363. package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
  364. package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
  365. package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
  366. package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
  367. package/lib/vite/traceViewer/recorder.html +0 -17
  368. package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
  369. package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
  370. /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
  371. /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
  372. /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
  373. /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
@@ -1,23 +1,46 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var firefoxPrefs_exports = {};
30
+ __export(firefoxPrefs_exports, {
31
+ createProfile: () => createProfile
5
32
  });
6
- exports.createProfile = createProfile;
7
- var _fs = _interopRequireDefault(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+ module.exports = __toCommonJS(firefoxPrefs_exports);
34
+ var import_fs = __toESM(require("fs"));
35
+ var import_path = __toESM(require("path"));
10
36
  /**
11
37
  * @license
12
38
  * Copyright 2023 Google Inc.
13
39
  * SPDX-License-Identifier: Apache-2.0
14
40
  */
15
-
16
- /* eslint-disable curly, indent */
17
-
18
41
  async function createProfile(options) {
19
- if (!_fs.default.existsSync(options.path)) {
20
- await _fs.default.promises.mkdir(options.path, {
42
+ if (!import_fs.default.existsSync(options.path)) {
43
+ await import_fs.default.promises.mkdir(options.path, {
21
44
  recursive: true
22
45
  });
23
46
  }
@@ -30,192 +53,207 @@ async function createProfile(options) {
30
53
  });
31
54
  }
32
55
  function defaultProfilePreferences(extraPrefs) {
33
- const server = 'dummy.test';
56
+ const server = "dummy.test";
34
57
  const defaultPrefs = {
35
58
  // Make sure Shield doesn't hit the network.
36
- 'app.normandy.api_url': '',
59
+ "app.normandy.api_url": "",
37
60
  // Disable Firefox old build background check
38
- 'app.update.checkInstallTime': false,
61
+ "app.update.checkInstallTime": false,
39
62
  // Disable automatically upgrading Firefox
40
- 'app.update.disabledForTesting': true,
63
+ "app.update.disabledForTesting": true,
41
64
  // Increase the APZ content response timeout to 1 minute
42
- 'apz.content_response_timeout': 60000,
65
+ "apz.content_response_timeout": 6e4,
43
66
  // Prevent various error message on the console
44
67
  // jest-puppeteer asserts that no error message is emitted by the console
45
- 'browser.contentblocking.features.standard': '-tp,tpPrivate,cookieBehavior0,-cm,-fp',
68
+ "browser.contentblocking.features.standard": "-tp,tpPrivate,cookieBehavior0,-cm,-fp",
46
69
  // Enable the dump function: which sends messages to the system
47
70
  // console
48
71
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
49
- 'browser.dom.window.dump.enabled': true,
72
+ "browser.dom.window.dump.enabled": true,
73
+ // Make sure newtab weather doesn't hit the network to retrieve weather data.
74
+ "browser.newtabpage.activity-stream.discoverystream.region-weather-config": "",
75
+ // Make sure newtab wallpapers don't hit the network to retrieve wallpaper data.
76
+ "browser.newtabpage.activity-stream.newtabWallpapers.enabled": false,
77
+ "browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled": false,
78
+ // Make sure Topsites doesn't hit the network to retrieve sponsored tiles.
79
+ "browser.newtabpage.activity-stream.showSponsoredTopSites": false,
50
80
  // Disable topstories
51
- 'browser.newtabpage.activity-stream.feeds.system.topstories': false,
81
+ "browser.newtabpage.activity-stream.feeds.system.topstories": false,
52
82
  // Always display a blank page
53
- 'browser.newtabpage.enabled': false,
83
+ "browser.newtabpage.enabled": false,
54
84
  // Background thumbnails in particular cause grief: and disabling
55
85
  // thumbnails in general cannot hurt
56
- 'browser.pagethumbnails.capturing_disabled': true,
86
+ "browser.pagethumbnails.capturing_disabled": true,
57
87
  // Disable safebrowsing components.
58
- 'browser.safebrowsing.blockedURIs.enabled': false,
59
- 'browser.safebrowsing.downloads.enabled': false,
60
- 'browser.safebrowsing.malware.enabled': false,
61
- 'browser.safebrowsing.phishing.enabled': false,
88
+ "browser.safebrowsing.blockedURIs.enabled": false,
89
+ "browser.safebrowsing.downloads.enabled": false,
90
+ "browser.safebrowsing.malware.enabled": false,
91
+ "browser.safebrowsing.phishing.enabled": false,
62
92
  // Disable updates to search engines.
63
- 'browser.search.update': false,
93
+ "browser.search.update": false,
64
94
  // Do not restore the last open set of tabs if the browser has crashed
65
- 'browser.sessionstore.resume_from_crash': false,
95
+ "browser.sessionstore.resume_from_crash": false,
66
96
  // Skip check for default browser on startup
67
- 'browser.shell.checkDefaultBrowser': false,
97
+ "browser.shell.checkDefaultBrowser": false,
68
98
  // Disable newtabpage
69
- 'browser.startup.homepage': 'about:blank',
99
+ "browser.startup.homepage": "about:blank",
70
100
  // Do not redirect user when a milstone upgrade of Firefox is detected
71
- 'browser.startup.homepage_override.mstone': 'ignore',
101
+ "browser.startup.homepage_override.mstone": "ignore",
72
102
  // Start with a blank page about:blank
73
- 'browser.startup.page': 0,
103
+ "browser.startup.page": 0,
74
104
  // Do not allow background tabs to be zombified on Android: otherwise for
75
105
  // tests that open additional tabs: the test harness tab itself might get
76
106
  // unloaded
77
- 'browser.tabs.disableBackgroundZombification': false,
107
+ "browser.tabs.disableBackgroundZombification": false,
78
108
  // Do not warn when closing all other open tabs
79
- 'browser.tabs.warnOnCloseOtherTabs': false,
109
+ "browser.tabs.warnOnCloseOtherTabs": false,
80
110
  // Do not warn when multiple tabs will be opened
81
- 'browser.tabs.warnOnOpen': false,
111
+ "browser.tabs.warnOnOpen": false,
82
112
  // Do not automatically offer translations, as tests do not expect this.
83
- 'browser.translations.automaticallyPopup': false,
113
+ "browser.translations.automaticallyPopup": false,
84
114
  // Disable the UI tour.
85
- 'browser.uitour.enabled': false,
115
+ "browser.uitour.enabled": false,
86
116
  // Turn off search suggestions in the location bar so as not to trigger
87
117
  // network connections.
88
- 'browser.urlbar.suggest.searches': false,
118
+ "browser.urlbar.suggest.searches": false,
89
119
  // Disable first run splash page on Windows 10
90
- 'browser.usedOnWindows10.introURL': '',
120
+ "browser.usedOnWindows10.introURL": "",
91
121
  // Do not warn on quitting Firefox
92
- 'browser.warnOnQuit': false,
122
+ "browser.warnOnQuit": false,
93
123
  // Defensively disable data reporting systems
94
- 'datareporting.healthreport.documentServerURI': `http://${server}/dummy/healthreport/`,
95
- 'datareporting.healthreport.logging.consoleEnabled': false,
96
- 'datareporting.healthreport.service.enabled': false,
97
- 'datareporting.healthreport.service.firstRun': false,
98
- 'datareporting.healthreport.uploadEnabled': false,
124
+ "datareporting.healthreport.documentServerURI": `http://${server}/dummy/healthreport/`,
125
+ "datareporting.healthreport.logging.consoleEnabled": false,
126
+ "datareporting.healthreport.service.enabled": false,
127
+ "datareporting.healthreport.service.firstRun": false,
128
+ "datareporting.healthreport.uploadEnabled": false,
99
129
  // Do not show datareporting policy notifications which can interfere with tests
100
- 'datareporting.policy.dataSubmissionEnabled': false,
101
- 'datareporting.policy.dataSubmissionPolicyBypassNotification': true,
130
+ "datareporting.policy.dataSubmissionEnabled": false,
131
+ "datareporting.policy.dataSubmissionPolicyBypassNotification": true,
102
132
  // DevTools JSONViewer sometimes fails to load dependencies with its require.js.
103
133
  // This doesn't affect Puppeteer but spams console (Bug 1424372)
104
- 'devtools.jsonview.enabled': false,
134
+ "devtools.jsonview.enabled": false,
105
135
  // Disable popup-blocker
106
- 'dom.disable_open_during_load': false,
136
+ "dom.disable_open_during_load": false,
107
137
  // Enable the support for File object creation in the content process
108
138
  // Required for |Page.setFileInputFiles| protocol method.
109
- 'dom.file.createInChild': true,
139
+ "dom.file.createInChild": true,
110
140
  // Disable the ProcessHangMonitor
111
- 'dom.ipc.reportProcessHangs': false,
141
+ "dom.ipc.reportProcessHangs": false,
112
142
  // Disable slow script dialogues
113
- 'dom.max_chrome_script_run_time': 0,
114
- 'dom.max_script_run_time': 0,
143
+ "dom.max_chrome_script_run_time": 0,
144
+ "dom.max_script_run_time": 0,
145
+ // Disable background timer throttling to allow tests to run in parallel
146
+ // without a decrease in performance.
147
+ "dom.min_background_timeout_value": 0,
148
+ "dom.min_background_timeout_value_without_budget_throttling": 0,
149
+ "dom.timeout.enable_budget_timer_throttling": false,
150
+ // Disable HTTPS-First upgrades
151
+ "dom.security.https_first": false,
115
152
  // Only load extensions from the application and user profile
116
153
  // AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
117
- 'extensions.autoDisableScopes': 0,
118
- 'extensions.enabledScopes': 5,
154
+ "extensions.autoDisableScopes": 0,
155
+ "extensions.enabledScopes": 5,
119
156
  // Disable metadata caching for installed add-ons by default
120
- 'extensions.getAddons.cache.enabled': false,
157
+ "extensions.getAddons.cache.enabled": false,
121
158
  // Disable installing any distribution extensions or add-ons.
122
- 'extensions.installDistroAddons': false,
159
+ "extensions.installDistroAddons": false,
123
160
  // Disabled screenshots extension
124
- 'extensions.screenshots.disabled': true,
161
+ "extensions.screenshots.disabled": true,
125
162
  // Turn off extension updates so they do not bother tests
126
- 'extensions.update.enabled': false,
163
+ "extensions.update.enabled": false,
127
164
  // Turn off extension updates so they do not bother tests
128
- 'extensions.update.notifyUser': false,
165
+ "extensions.update.notifyUser": false,
129
166
  // Make sure opening about:addons will not hit the network
130
- 'extensions.webservice.discoverURL': `http://${server}/dummy/discoveryURL`,
167
+ "extensions.webservice.discoverURL": `http://${server}/dummy/discoveryURL`,
131
168
  // Allow the application to have focus even it runs in the background
132
- 'focusmanager.testmode': true,
169
+ "focusmanager.testmode": true,
133
170
  // Disable useragent updates
134
- 'general.useragent.updates.enabled': false,
171
+ "general.useragent.updates.enabled": false,
135
172
  // Always use network provider for geolocation tests so we bypass the
136
173
  // macOS dialog raised by the corelocation provider
137
- 'geo.provider.testing': true,
174
+ "geo.provider.testing": true,
138
175
  // Do not scan Wifi
139
- 'geo.wifi.scan': false,
176
+ "geo.wifi.scan": false,
140
177
  // No hang monitor
141
- 'hangmonitor.timeout': 0,
178
+ "hangmonitor.timeout": 0,
142
179
  // Show chrome errors and warnings in the error console
143
- 'javascript.options.showInConsole': true,
180
+ "javascript.options.showInConsole": true,
181
+ // Do not throttle rendering (requestAnimationFrame) in background tabs
182
+ "layout.testing.top-level-always-active": true,
144
183
  // Disable download and usage of OpenH264: and Widevine plugins
145
- 'media.gmp-manager.updateEnabled': false,
184
+ "media.gmp-manager.updateEnabled": false,
146
185
  // Disable the GFX sanity window
147
- 'media.sanity-test.disabled': true,
186
+ "media.sanity-test.disabled": true,
187
+ // Disable connectivity service pings
188
+ "network.connectivity-service.enabled": false,
148
189
  // Disable experimental feature that is only available in Nightly
149
- 'network.cookie.sameSite.laxByDefault': false,
190
+ "network.cookie.sameSite.laxByDefault": false,
150
191
  // Do not prompt for temporary redirects
151
- 'network.http.prompt-temp-redirect': false,
192
+ "network.http.prompt-temp-redirect": false,
152
193
  // Disable speculative connections so they are not reported as leaking
153
194
  // when they are hanging around
154
- 'network.http.speculative-parallel-limit': 0,
195
+ "network.http.speculative-parallel-limit": 0,
155
196
  // Do not automatically switch between offline and online
156
- 'network.manage-offline-status': false,
197
+ "network.manage-offline-status": false,
157
198
  // Make sure SNTP requests do not hit the network
158
- 'network.sntp.pools': server,
199
+ "network.sntp.pools": server,
159
200
  // Disable Flash.
160
- 'plugin.state.flash': 0,
161
- 'privacy.trackingprotection.enabled': false,
201
+ "plugin.state.flash": 0,
202
+ "privacy.trackingprotection.enabled": false,
162
203
  // Can be removed once Firefox 89 is no longer supported
163
204
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1710839
164
- 'remote.enabled': true,
205
+ "remote.enabled": true,
165
206
  // Don't do network connections for mitm priming
166
- 'security.certerrors.mitm.priming.enabled': false,
207
+ "security.certerrors.mitm.priming.enabled": false,
167
208
  // Local documents have access to all other local documents,
168
209
  // including directory listings
169
- 'security.fileuri.strict_origin_policy': false,
210
+ "security.fileuri.strict_origin_policy": false,
170
211
  // Do not wait for the notification button security delay
171
- 'security.notification_enable_delay': 0,
172
- // Ensure blocklist updates do not hit the network
173
- 'services.settings.server': `http://${server}/dummy/blocklist/`,
212
+ "security.notification_enable_delay": 0,
174
213
  // Do not automatically fill sign-in forms with known usernames and
175
214
  // passwords
176
- 'signon.autofillForms': false,
215
+ "signon.autofillForms": false,
177
216
  // Disable password capture, so that tests that include forms are not
178
217
  // influenced by the presence of the persistent doorhanger notification
179
- 'signon.rememberSignons': false,
218
+ "signon.rememberSignons": false,
180
219
  // Disable first-run welcome page
181
- 'startup.homepage_welcome_url': 'about:blank',
220
+ "startup.homepage_welcome_url": "about:blank",
182
221
  // Disable first-run welcome page
183
- 'startup.homepage_welcome_url.additional': '',
222
+ "startup.homepage_welcome_url.additional": "",
184
223
  // Disable browser animations (tabs, fullscreen, sliding alerts)
185
- 'toolkit.cosmeticAnimations.enabled': false,
224
+ "toolkit.cosmeticAnimations.enabled": false,
186
225
  // Prevent starting into safe mode after application crashes
187
- 'toolkit.startup.max_resumed_crashes': -1
226
+ "toolkit.startup.max_resumed_crashes": -1
188
227
  };
189
228
  return Object.assign(defaultPrefs, extraPrefs);
190
229
  }
191
-
192
- /**
193
- * Populates the user.js file with custom preferences as needed to allow
194
- * Firefox's CDP support to properly function. These preferences will be
195
- * automatically copied over to prefs.js during startup of Firefox. To be
196
- * able to restore the original values of preferences a backup of prefs.js
197
- * will be created.
198
- *
199
- * @param prefs - List of preferences to add.
200
- * @param profilePath - Firefox profile to write the preferences to.
201
- */
202
230
  async function writePreferences(options) {
203
- const prefsPath = _path.default.join(options.path, 'prefs.js');
231
+ const prefsPath = import_path.default.join(options.path, "prefs.js");
204
232
  const lines = Object.entries(options.preferences).map(([key, value]) => {
205
233
  return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
206
234
  });
207
-
208
- // Use allSettled to prevent corruption
209
- const result = await Promise.allSettled([_fs.default.promises.writeFile(_path.default.join(options.path, 'user.js'), lines.join('\n')),
210
- // Create a backup of the preferences file if it already exitsts.
211
- _fs.default.promises.access(prefsPath, _fs.default.constants.F_OK).then(async () => {
212
- await _fs.default.promises.copyFile(prefsPath, _path.default.join(options.path, 'prefs.js.playwright'));
213
- },
214
- // Swallow only if file does not exist
215
- () => {})]);
235
+ const result = await Promise.allSettled([
236
+ import_fs.default.promises.writeFile(import_path.default.join(options.path, "user.js"), lines.join("\n")),
237
+ // Create a backup of the preferences file if it already exitsts.
238
+ import_fs.default.promises.access(prefsPath, import_fs.default.constants.F_OK).then(
239
+ async () => {
240
+ await import_fs.default.promises.copyFile(
241
+ prefsPath,
242
+ import_path.default.join(options.path, "prefs.js.playwright")
243
+ );
244
+ },
245
+ // Swallow only if file does not exist
246
+ () => {
247
+ }
248
+ )
249
+ ]);
216
250
  for (const command of result) {
217
- if (command.status === 'rejected') {
251
+ if (command.status === "rejected") {
218
252
  throw command.reason;
219
253
  }
220
254
  }
221
- }
255
+ }
256
+ // Annotate the CommonJS export names for ESM import in node:
257
+ 0 && (module.exports = {
258
+ createProfile
259
+ });
@@ -1,55 +1,55 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var browser_exports = {};
20
+ __export(browser_exports, {
21
+ Browser: () => Browser
5
22
  });
6
- exports.Browser = void 0;
7
- var _browserContext = require("./browserContext");
8
- var _page = require("./page");
9
- var _download = require("./download");
10
- var _instrumentation = require("./instrumentation");
11
- var _artifact = require("./artifact");
12
- var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
13
- /**
14
- * Copyright (c) Microsoft Corporation.
15
- *
16
- * Licensed under the Apache License, Version 2.0 (the "License");
17
- * you may not use this file except in compliance with the License.
18
- * You may obtain a copy of the License at
19
- *
20
- * http://www.apache.org/licenses/LICENSE-2.0
21
- *
22
- * Unless required by applicable law or agreed to in writing, software
23
- * distributed under the License is distributed on an "AS IS" BASIS,
24
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
- * See the License for the specific language governing permissions and
26
- * limitations under the License.
27
- */
28
-
29
- class Browser extends _instrumentation.SdkObject {
23
+ module.exports = __toCommonJS(browser_exports);
24
+ var import_artifact = require("./artifact");
25
+ var import_browserContext = require("./browserContext");
26
+ var import_download = require("./download");
27
+ var import_instrumentation = require("./instrumentation");
28
+ var import_page = require("./page");
29
+ var import_socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
30
+ class Browser extends import_instrumentation.SdkObject {
30
31
  constructor(parent, options) {
31
- super(parent, 'browser');
32
- this.options = void 0;
33
- this._downloads = new Map();
32
+ super(parent, "browser");
33
+ this._downloads = /* @__PURE__ */ new Map();
34
34
  this._defaultContext = null;
35
35
  this._startedClosing = false;
36
- this._idToVideo = new Map();
37
- this._contextForReuse = void 0;
38
- this._closeReason = void 0;
36
+ this._idToVideo = /* @__PURE__ */ new Map();
39
37
  this._isCollocatedWithServer = true;
40
38
  this.attribution.browser = this;
41
39
  this.options = options;
42
40
  this.instrumentation.onBrowserOpen(this);
43
41
  }
42
+ static {
43
+ this.Events = {
44
+ Disconnected: "disconnected"
45
+ };
46
+ }
44
47
  async newContext(metadata, options) {
45
- var _options$clientCertif;
46
- (0, _browserContext.validateBrowserContextOptions)(options, this.options);
48
+ (0, import_browserContext.validateBrowserContextOptions)(options, this.options);
47
49
  let clientCertificatesProxy;
48
- if ((_options$clientCertif = options.clientCertificates) !== null && _options$clientCertif !== void 0 && _options$clientCertif.length) {
49
- clientCertificatesProxy = new _socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
50
- options = {
51
- ...options
52
- };
50
+ if (options.clientCertificates?.length) {
51
+ clientCertificatesProxy = new import_socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
52
+ options = { ...options };
53
53
  options.proxyOverride = await clientCertificatesProxy.listen();
54
54
  options.internalIgnoreHTTPSErrors = true;
55
55
  }
@@ -57,92 +57,84 @@ class Browser extends _instrumentation.SdkObject {
57
57
  try {
58
58
  context = await this.doCreateNewContext(options);
59
59
  } catch (error) {
60
- var _clientCertificatesPr;
61
- await ((_clientCertificatesPr = clientCertificatesProxy) === null || _clientCertificatesPr === void 0 ? void 0 : _clientCertificatesPr.close());
60
+ await clientCertificatesProxy?.close();
62
61
  throw error;
63
62
  }
64
63
  context._clientCertificatesProxy = clientCertificatesProxy;
65
- if (options.storageState) await context.setStorageState(metadata, options.storageState);
64
+ if (options.storageState)
65
+ await context.setStorageState(metadata, options.storageState);
66
66
  return context;
67
67
  }
68
68
  async newContextForReuse(params, metadata) {
69
- const hash = _browserContext.BrowserContext.reusableContextHash(params);
69
+ const hash = import_browserContext.BrowserContext.reusableContextHash(params);
70
70
  if (!this._contextForReuse || hash !== this._contextForReuse.hash || !this._contextForReuse.context.canResetForReuse()) {
71
- if (this._contextForReuse) await this._contextForReuse.context.close({
72
- reason: 'Context reused'
73
- });
74
- this._contextForReuse = {
75
- context: await this.newContext(metadata, params),
76
- hash
77
- };
78
- return {
79
- context: this._contextForReuse.context,
80
- needsReset: false
81
- };
71
+ if (this._contextForReuse)
72
+ await this._contextForReuse.context.close({ reason: "Context reused" });
73
+ this._contextForReuse = { context: await this.newContext(metadata, params), hash };
74
+ return { context: this._contextForReuse.context, needsReset: false };
82
75
  }
83
- await this._contextForReuse.context.stopPendingOperations('Context recreated');
84
- return {
85
- context: this._contextForReuse.context,
86
- needsReset: true
87
- };
76
+ await this._contextForReuse.context.stopPendingOperations("Context recreated");
77
+ return { context: this._contextForReuse.context, needsReset: true };
88
78
  }
89
79
  async stopPendingOperations(reason) {
90
- var _this$_contextForReus;
91
- await ((_this$_contextForReus = this._contextForReuse) === null || _this$_contextForReus === void 0 || (_this$_contextForReus = _this$_contextForReus.context) === null || _this$_contextForReus === void 0 ? void 0 : _this$_contextForReus.stopPendingOperations(reason));
80
+ await this._contextForReuse?.context?.stopPendingOperations(reason);
92
81
  }
93
82
  _downloadCreated(page, uuid, url, suggestedFilename) {
94
- const download = new _download.Download(page, this.options.downloadsPath || '', uuid, url, suggestedFilename);
83
+ const download = new import_download.Download(page, this.options.downloadsPath || "", uuid, url, suggestedFilename);
95
84
  this._downloads.set(uuid, download);
96
85
  }
97
86
  _downloadFilenameSuggested(uuid, suggestedFilename) {
98
87
  const download = this._downloads.get(uuid);
99
- if (!download) return;
88
+ if (!download)
89
+ return;
100
90
  download._filenameSuggested(suggestedFilename);
101
91
  }
102
92
  _downloadFinished(uuid, error) {
103
93
  const download = this._downloads.get(uuid);
104
- if (!download) return;
105
- download.artifact.reportFinished(error ? new Error(error) : undefined);
94
+ if (!download)
95
+ return;
96
+ download.artifact.reportFinished(error ? new Error(error) : void 0);
106
97
  this._downloads.delete(uuid);
107
98
  }
108
99
  _videoStarted(context, videoId, path, pageOrError) {
109
- const artifact = new _artifact.Artifact(context, path);
110
- this._idToVideo.set(videoId, {
111
- context,
112
- artifact
113
- });
114
- pageOrError.then(page => {
115
- if (page instanceof _page.Page) {
100
+ const artifact = new import_artifact.Artifact(context, path);
101
+ this._idToVideo.set(videoId, { context, artifact });
102
+ pageOrError.then((page) => {
103
+ if (page instanceof import_page.Page) {
116
104
  page._video = artifact;
117
- page.emitOnContext(_browserContext.BrowserContext.Events.VideoStarted, artifact);
118
- page.emit(_page.Page.Events.Video, artifact);
105
+ page.emitOnContext(import_browserContext.BrowserContext.Events.VideoStarted, artifact);
106
+ page.emit(import_page.Page.Events.Video, artifact);
119
107
  }
120
108
  });
121
109
  }
122
110
  _takeVideo(videoId) {
123
111
  const video = this._idToVideo.get(videoId);
124
112
  this._idToVideo.delete(videoId);
125
- return video === null || video === void 0 ? void 0 : video.artifact;
113
+ return video?.artifact;
126
114
  }
127
115
  _didClose() {
128
- for (const context of this.contexts()) context._browserClosed();
129
- if (this._defaultContext) this._defaultContext._browserClosed();
116
+ for (const context of this.contexts())
117
+ context._browserClosed();
118
+ if (this._defaultContext)
119
+ this._defaultContext._browserClosed();
130
120
  this.emit(Browser.Events.Disconnected);
131
121
  this.instrumentation.onBrowserClose(this);
132
122
  }
133
123
  async close(options) {
134
124
  if (!this._startedClosing) {
135
- if (options.reason) this._closeReason = options.reason;
125
+ if (options.reason)
126
+ this._closeReason = options.reason;
136
127
  this._startedClosing = true;
137
128
  await this.options.browserProcess.close();
138
129
  }
139
- if (this.isConnected()) await new Promise(x => this.once(Browser.Events.Disconnected, x));
130
+ if (this.isConnected())
131
+ await new Promise((x) => this.once(Browser.Events.Disconnected, x));
140
132
  }
141
133
  async killForTests() {
142
134
  await this.options.browserProcess.kill();
143
135
  }
144
136
  }
145
- exports.Browser = Browser;
146
- Browser.Events = {
147
- Disconnected: 'disconnected'
148
- };
137
+ // Annotate the CommonJS export names for ESM import in node:
138
+ 0 && (module.exports = {
139
+ Browser
140
+ });