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.
- package/ThirdPartyNotices.txt +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -595
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +353 -432
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -645
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +196 -75
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -71
- package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
- package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
- package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -1,23 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
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
|
|
7
|
-
var
|
|
8
|
-
var
|
|
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 (!
|
|
20
|
-
await
|
|
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 =
|
|
56
|
+
const server = "dummy.test";
|
|
34
57
|
const defaultPrefs = {
|
|
35
58
|
// Make sure Shield doesn't hit the network.
|
|
36
|
-
|
|
59
|
+
"app.normandy.api_url": "",
|
|
37
60
|
// Disable Firefox old build background check
|
|
38
|
-
|
|
61
|
+
"app.update.checkInstallTime": false,
|
|
39
62
|
// Disable automatically upgrading Firefox
|
|
40
|
-
|
|
63
|
+
"app.update.disabledForTesting": true,
|
|
41
64
|
// Increase the APZ content response timeout to 1 minute
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
81
|
+
"browser.newtabpage.activity-stream.feeds.system.topstories": false,
|
|
52
82
|
// Always display a blank page
|
|
53
|
-
|
|
83
|
+
"browser.newtabpage.enabled": false,
|
|
54
84
|
// Background thumbnails in particular cause grief: and disabling
|
|
55
85
|
// thumbnails in general cannot hurt
|
|
56
|
-
|
|
86
|
+
"browser.pagethumbnails.capturing_disabled": true,
|
|
57
87
|
// Disable safebrowsing components.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
93
|
+
"browser.search.update": false,
|
|
64
94
|
// Do not restore the last open set of tabs if the browser has crashed
|
|
65
|
-
|
|
95
|
+
"browser.sessionstore.resume_from_crash": false,
|
|
66
96
|
// Skip check for default browser on startup
|
|
67
|
-
|
|
97
|
+
"browser.shell.checkDefaultBrowser": false,
|
|
68
98
|
// Disable newtabpage
|
|
69
|
-
|
|
99
|
+
"browser.startup.homepage": "about:blank",
|
|
70
100
|
// Do not redirect user when a milstone upgrade of Firefox is detected
|
|
71
|
-
|
|
101
|
+
"browser.startup.homepage_override.mstone": "ignore",
|
|
72
102
|
// Start with a blank page about:blank
|
|
73
|
-
|
|
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
|
-
|
|
107
|
+
"browser.tabs.disableBackgroundZombification": false,
|
|
78
108
|
// Do not warn when closing all other open tabs
|
|
79
|
-
|
|
109
|
+
"browser.tabs.warnOnCloseOtherTabs": false,
|
|
80
110
|
// Do not warn when multiple tabs will be opened
|
|
81
|
-
|
|
111
|
+
"browser.tabs.warnOnOpen": false,
|
|
82
112
|
// Do not automatically offer translations, as tests do not expect this.
|
|
83
|
-
|
|
113
|
+
"browser.translations.automaticallyPopup": false,
|
|
84
114
|
// Disable the UI tour.
|
|
85
|
-
|
|
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
|
-
|
|
118
|
+
"browser.urlbar.suggest.searches": false,
|
|
89
119
|
// Disable first run splash page on Windows 10
|
|
90
|
-
|
|
120
|
+
"browser.usedOnWindows10.introURL": "",
|
|
91
121
|
// Do not warn on quitting Firefox
|
|
92
|
-
|
|
122
|
+
"browser.warnOnQuit": false,
|
|
93
123
|
// Defensively disable data reporting systems
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
101
|
-
|
|
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
|
-
|
|
134
|
+
"devtools.jsonview.enabled": false,
|
|
105
135
|
// Disable popup-blocker
|
|
106
|
-
|
|
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
|
-
|
|
139
|
+
"dom.file.createInChild": true,
|
|
110
140
|
// Disable the ProcessHangMonitor
|
|
111
|
-
|
|
141
|
+
"dom.ipc.reportProcessHangs": false,
|
|
112
142
|
// Disable slow script dialogues
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
|
|
118
|
-
|
|
154
|
+
"extensions.autoDisableScopes": 0,
|
|
155
|
+
"extensions.enabledScopes": 5,
|
|
119
156
|
// Disable metadata caching for installed add-ons by default
|
|
120
|
-
|
|
157
|
+
"extensions.getAddons.cache.enabled": false,
|
|
121
158
|
// Disable installing any distribution extensions or add-ons.
|
|
122
|
-
|
|
159
|
+
"extensions.installDistroAddons": false,
|
|
123
160
|
// Disabled screenshots extension
|
|
124
|
-
|
|
161
|
+
"extensions.screenshots.disabled": true,
|
|
125
162
|
// Turn off extension updates so they do not bother tests
|
|
126
|
-
|
|
163
|
+
"extensions.update.enabled": false,
|
|
127
164
|
// Turn off extension updates so they do not bother tests
|
|
128
|
-
|
|
165
|
+
"extensions.update.notifyUser": false,
|
|
129
166
|
// Make sure opening about:addons will not hit the network
|
|
130
|
-
|
|
167
|
+
"extensions.webservice.discoverURL": `http://${server}/dummy/discoveryURL`,
|
|
131
168
|
// Allow the application to have focus even it runs in the background
|
|
132
|
-
|
|
169
|
+
"focusmanager.testmode": true,
|
|
133
170
|
// Disable useragent updates
|
|
134
|
-
|
|
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
|
-
|
|
174
|
+
"geo.provider.testing": true,
|
|
138
175
|
// Do not scan Wifi
|
|
139
|
-
|
|
176
|
+
"geo.wifi.scan": false,
|
|
140
177
|
// No hang monitor
|
|
141
|
-
|
|
178
|
+
"hangmonitor.timeout": 0,
|
|
142
179
|
// Show chrome errors and warnings in the error console
|
|
143
|
-
|
|
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
|
-
|
|
184
|
+
"media.gmp-manager.updateEnabled": false,
|
|
146
185
|
// Disable the GFX sanity window
|
|
147
|
-
|
|
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
|
-
|
|
190
|
+
"network.cookie.sameSite.laxByDefault": false,
|
|
150
191
|
// Do not prompt for temporary redirects
|
|
151
|
-
|
|
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
|
-
|
|
195
|
+
"network.http.speculative-parallel-limit": 0,
|
|
155
196
|
// Do not automatically switch between offline and online
|
|
156
|
-
|
|
197
|
+
"network.manage-offline-status": false,
|
|
157
198
|
// Make sure SNTP requests do not hit the network
|
|
158
|
-
|
|
199
|
+
"network.sntp.pools": server,
|
|
159
200
|
// Disable Flash.
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
205
|
+
"remote.enabled": true,
|
|
165
206
|
// Don't do network connections for mitm priming
|
|
166
|
-
|
|
207
|
+
"security.certerrors.mitm.priming.enabled": false,
|
|
167
208
|
// Local documents have access to all other local documents,
|
|
168
209
|
// including directory listings
|
|
169
|
-
|
|
210
|
+
"security.fileuri.strict_origin_policy": false,
|
|
170
211
|
// Do not wait for the notification button security delay
|
|
171
|
-
|
|
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
|
-
|
|
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
|
-
|
|
218
|
+
"signon.rememberSignons": false,
|
|
180
219
|
// Disable first-run welcome page
|
|
181
|
-
|
|
220
|
+
"startup.homepage_welcome_url": "about:blank",
|
|
182
221
|
// Disable first-run welcome page
|
|
183
|
-
|
|
222
|
+
"startup.homepage_welcome_url.additional": "",
|
|
184
223
|
// Disable browser animations (tabs, fullscreen, sliding alerts)
|
|
185
|
-
|
|
224
|
+
"toolkit.cosmeticAnimations.enabled": false,
|
|
186
225
|
// Prevent starting into safe mode after application crashes
|
|
187
|
-
|
|
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 =
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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 ===
|
|
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
|
+
});
|
package/lib/server/browser.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
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
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
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,
|
|
32
|
-
this.
|
|
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
|
-
|
|
46
|
-
(0, _browserContext.validateBrowserContextOptions)(options, this.options);
|
|
48
|
+
(0, import_browserContext.validateBrowserContextOptions)(options, this.options);
|
|
47
49
|
let clientCertificatesProxy;
|
|
48
|
-
if (
|
|
49
|
-
clientCertificatesProxy = new
|
|
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
|
-
|
|
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)
|
|
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 =
|
|
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)
|
|
72
|
-
reason:
|
|
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(
|
|
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
|
-
|
|
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
|
|
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)
|
|
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)
|
|
105
|
-
|
|
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
|
|
110
|
-
this._idToVideo.set(videoId, {
|
|
111
|
-
|
|
112
|
-
|
|
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(
|
|
118
|
-
page.emit(
|
|
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
|
|
113
|
+
return video?.artifact;
|
|
126
114
|
}
|
|
127
115
|
_didClose() {
|
|
128
|
-
for (const context of this.contexts())
|
|
129
|
-
|
|
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)
|
|
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())
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
};
|
|
137
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
138
|
+
0 && (module.exports = {
|
|
139
|
+
Browser
|
|
140
|
+
});
|