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