@checkly/playwright-core 1.51.17-beta.1 → 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.
- package/ThirdPartyNotices.txt +65 -123
- package/browsers.json +16 -14
- package/index.js +1 -1
- package/lib/androidServerImpl.js +47 -50
- package/lib/browserServerImpl.js +89 -69
- package/lib/checkly/escapeRegExp.js +23 -27
- package/lib/checkly/fetch.js +64 -46
- package/lib/checkly/secretsFilter.js +49 -36
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +400 -359
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +151 -242
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +96 -71
- package/lib/client/browserContext.js +314 -345
- package/lib/client/browserType.js +103 -127
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +90 -113
- package/lib/client/clientHelper.js +48 -39
- package/lib/client/clientInstrumentation.js +40 -37
- package/lib/client/clientStackTrace.js +41 -37
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +188 -214
- package/lib/client/consoleMessage.js +31 -28
- 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 +80 -77
- package/lib/client/elementHandle.js +120 -159
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +124 -121
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +166 -190
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +207 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +42 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -29
- package/lib/client/locator.js +145 -237
- package/lib/client/network.js +282 -307
- package/lib/client/page.js +269 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -76
- package/lib/client/selectors.js +45 -63
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +55 -41
- package/lib/client/tracing.js +49 -96
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +69 -88
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +43 -56
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +27 -23
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +26 -6
- package/lib/generated/consoleApiSource.js +26 -6
- package/lib/generated/injectedScriptSource.js +26 -6
- package/lib/generated/pollingRecorderSource.js +26 -6
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +26 -6
- package/lib/generated/webSocketMockSource.js +333 -5
- package/lib/inProcessFactory.js +51 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +51 -46
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2807 -2739
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +88 -242
- package/lib/remote/playwrightServer.js +305 -92
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +251 -241
- package/lib/server/android/backendAdb.js +87 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +297 -158
- package/lib/server/bidi/bidiChromium.js +119 -89
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +129 -113
- package/lib/server/bidi/bidiFirefox.js +86 -76
- package/lib/server/bidi/bidiInput.js +106 -117
- package/lib/server/bidi/bidiNetworkManager.js +142 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +260 -260
- 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 +236 -220
- package/lib/server/bidi/third_party/bidiProtocol.js +22 -137
- package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
- package/lib/server/browser.js +93 -95
- package/lib/server/browserContext.js +419 -429
- package/lib/server/browserType.js +186 -216
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +235 -203
- package/lib/server/chromium/chromiumSwitches.js +100 -67
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +310 -292
- package/lib/server/chromium/crConnection.js +95 -121
- package/lib/server/chromium/crCoverage.js +121 -131
- package/lib/server/chromium/crDevTools.js +60 -51
- package/lib/server/chromium/crDragDrop.js +68 -84
- package/lib/server/chromium/crExecutionContext.js +89 -83
- package/lib/server/chromium/crInput.js +118 -113
- package/lib/server/chromium/crNetworkManager.js +274 -375
- package/lib/server/chromium/crPage.js +536 -593
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +84 -73
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +66 -99
- package/lib/server/clock.js +107 -83
- package/lib/server/codegen/csharp.js +192 -162
- package/lib/server/codegen/java.js +156 -129
- package/lib/server/codegen/javascript.js +163 -148
- package/lib/server/codegen/jsonl.js +32 -28
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -126
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +108 -86
- package/lib/server/debugController.js +147 -151
- package/lib/server/debugger.js +86 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +238 -128
- package/lib/server/dialog.js +84 -39
- package/lib/server/dispatchers/androidDispatcher.js +257 -148
- package/lib/server/dispatchers/artifactDispatcher.js +79 -79
- package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
- package/lib/server/dispatchers/browserDispatcher.js +96 -148
- package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
- package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
- package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
- package/lib/server/dispatchers/dialogDispatcher.js +34 -31
- package/lib/server/dispatchers/dispatcher.js +208 -248
- package/lib/server/dispatchers/electronDispatcher.js +66 -70
- package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
- package/lib/server/dispatchers/frameDispatcher.js +211 -272
- package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
- package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
- package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
- package/lib/server/dispatchers/networkDispatchers.js +117 -128
- package/lib/server/dispatchers/pageDispatcher.js +256 -248
- package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
- package/lib/server/dispatchers/streamDispatcher.js +52 -48
- package/lib/server/dispatchers/tracingDispatcher.js +47 -52
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
- package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
- package/lib/server/dom.js +485 -582
- package/lib/server/download.js +47 -37
- package/lib/server/electron/electron.js +216 -243
- package/lib/server/electron/loader.js +9 -37
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +317 -360
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -60
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +268 -305
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +92 -73
- package/lib/server/firefox/ffInput.js +82 -84
- package/lib/server/firefox/ffNetworkManager.js +137 -114
- package/lib/server/firefox/ffPage.js +261 -293
- package/lib/server/firefox/firefox.js +80 -72
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +98 -114
- package/lib/server/frames.js +845 -1055
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +290 -223
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +55 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +151 -189
- package/lib/server/instrumentation.js +57 -44
- package/lib/server/javascript.js +133 -134
- package/lib/server/launchApp.js +113 -75
- package/lib/server/localUtils.js +150 -142
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +299 -303
- package/lib/server/page.js +513 -544
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +58 -67
- package/lib/server/progress.js +137 -68
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +70 -86
- package/lib/server/recorder/recorderApp.js +341 -176
- package/lib/server/recorder/recorderInTraceViewer.js +65 -94
- package/lib/server/recorder/recorderRunner.js +93 -116
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +104 -47
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +395 -275
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +930 -803
- package/lib/server/registry/nativeDeps.js +1073 -464
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +160 -191
- package/lib/server/selectors.js +90 -51
- package/lib/server/socksClientCertificatesInterceptor.js +171 -186
- package/lib/server/socksInterceptor.js +62 -70
- package/lib/server/trace/recorder/snapshotter.js +76 -102
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +354 -362
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +160 -147
- package/lib/server/transport.js +119 -134
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +39 -26
- package/lib/server/utils/comparators.js +105 -103
- package/lib/server/utils/crypto.js +157 -112
- package/lib/server/utils/debug.js +36 -32
- package/lib/server/utils/debugLogger.js +77 -48
- package/lib/server/utils/env.js +52 -37
- package/lib/server/utils/eventsHelper.js +29 -28
- package/lib/server/utils/expectUtils.js +31 -26
- package/lib/server/utils/fileUtils.js +123 -136
- package/lib/server/utils/happyEyeballs.js +141 -126
- package/lib/server/utils/hostPlatform.js +84 -120
- package/lib/server/utils/httpServer.js +106 -121
- package/lib/server/utils/image_tools/colorUtils.js +42 -51
- package/lib/server/utils/image_tools/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +38 -30
- package/lib/server/utils/image_tools/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +50 -37
- package/lib/server/utils/network.js +152 -96
- package/lib/server/utils/nodePlatform.js +87 -79
- package/lib/server/utils/pipeTransport.js +44 -42
- package/lib/server/utils/processLauncher.js +111 -121
- package/lib/server/utils/profiler.js +52 -39
- package/lib/server/utils/socksProxy.js +280 -339
- package/lib/server/utils/spawnAsync.js +37 -41
- package/lib/server/utils/task.js +31 -38
- package/lib/server/utils/userAgent.js +73 -66
- package/lib/server/utils/wsServer.js +68 -75
- package/lib/server/utils/zipFile.js +36 -37
- package/lib/server/utils/zones.js +37 -34
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +77 -61
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +193 -184
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +85 -70
- package/lib/server/webkit/wkInput.js +97 -95
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +568 -667
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +79 -79
- package/lib/utils/expectUtils.js +31 -26
- package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +120 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +358 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +46 -39
- package/lib/utils/isomorphic/mimeType.js +447 -25
- package/lib/utils/isomorphic/multimap.js +34 -27
- package/lib/utils/isomorphic/protocolFormatter.js +68 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
- package/lib/utils/isomorphic/recorderUtils.js +140 -181
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +182 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +98 -112
- package/lib/utils/isomorphic/time.js +46 -22
- package/lib/utils/isomorphic/timeoutRunner.js +53 -53
- package/lib/utils/isomorphic/traceUtils.js +37 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +113 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/utils.js +101 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/utilsBundleImpl/index.js +160 -150
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +1 -1
- package/types/protocol.d.ts +1267 -1057
- package/types/types.d.ts +131 -29
- 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/compare.js +0 -108
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/image_tools/stats.js +0 -102
- package/lib/protocol/debug.js +0 -27
- package/lib/protocol/transport.js +0 -82
- package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/server/recorder/contextRecorder.js +0 -290
- package/lib/server/recorder/recorderCollection.js +0 -104
- package/lib/server/recorder/recorderFrontend.js +0 -5
- package/lib/server/storageScript.js +0 -160
- package/lib/server/timeoutSettings.js +0 -74
- package/lib/third_party/diff_match_patch.js +0 -2222
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -171
- package/lib/utils/crypto.js +0 -174
- 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/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -210
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -133
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- 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/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -121
- 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 -62
- package/lib/vite/htmlReport/index.html +0 -69
- package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
- package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
- package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
- package/lib/vite/recorder/index.html +0 -29
- package/lib/vite/recorder/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
- package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
- package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
- package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
- package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
- package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
- package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
- package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
- package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
- package/lib/vite/traceViewer/index.html +0 -47
- package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
- package/lib/vite/traceViewer/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
- package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/snapshot.html +0 -21
- package/lib/vite/traceViewer/sw.bundle.js +0 -3
- package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
- package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
- package/lib/vite/traceViewer/uiMode.html +0 -21
- package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
- package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
|
@@ -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(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 (!
|
|
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,208 +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,
|
|
50
73
|
// Make sure newtab weather doesn't hit the network to retrieve weather data.
|
|
51
|
-
|
|
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
|
-
|
|
54
|
-
|
|
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
|
-
|
|
79
|
+
"browser.newtabpage.activity-stream.showSponsoredTopSites": false,
|
|
57
80
|
// Disable topstories
|
|
58
|
-
|
|
81
|
+
"browser.newtabpage.activity-stream.feeds.system.topstories": false,
|
|
59
82
|
// Always display a blank page
|
|
60
|
-
|
|
83
|
+
"browser.newtabpage.enabled": false,
|
|
61
84
|
// Background thumbnails in particular cause grief: and disabling
|
|
62
85
|
// thumbnails in general cannot hurt
|
|
63
|
-
|
|
86
|
+
"browser.pagethumbnails.capturing_disabled": true,
|
|
64
87
|
// Disable safebrowsing components.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
93
|
+
"browser.search.update": false,
|
|
71
94
|
// Do not restore the last open set of tabs if the browser has crashed
|
|
72
|
-
|
|
95
|
+
"browser.sessionstore.resume_from_crash": false,
|
|
73
96
|
// Skip check for default browser on startup
|
|
74
|
-
|
|
97
|
+
"browser.shell.checkDefaultBrowser": false,
|
|
75
98
|
// Disable newtabpage
|
|
76
|
-
|
|
99
|
+
"browser.startup.homepage": "about:blank",
|
|
77
100
|
// Do not redirect user when a milstone upgrade of Firefox is detected
|
|
78
|
-
|
|
101
|
+
"browser.startup.homepage_override.mstone": "ignore",
|
|
79
102
|
// Start with a blank page about:blank
|
|
80
|
-
|
|
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
|
-
|
|
107
|
+
"browser.tabs.disableBackgroundZombification": false,
|
|
85
108
|
// Do not warn when closing all other open tabs
|
|
86
|
-
|
|
109
|
+
"browser.tabs.warnOnCloseOtherTabs": false,
|
|
87
110
|
// Do not warn when multiple tabs will be opened
|
|
88
|
-
|
|
111
|
+
"browser.tabs.warnOnOpen": false,
|
|
89
112
|
// Do not automatically offer translations, as tests do not expect this.
|
|
90
|
-
|
|
113
|
+
"browser.translations.automaticallyPopup": false,
|
|
91
114
|
// Disable the UI tour.
|
|
92
|
-
|
|
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
|
-
|
|
118
|
+
"browser.urlbar.suggest.searches": false,
|
|
96
119
|
// Disable first run splash page on Windows 10
|
|
97
|
-
|
|
120
|
+
"browser.usedOnWindows10.introURL": "",
|
|
98
121
|
// Do not warn on quitting Firefox
|
|
99
|
-
|
|
122
|
+
"browser.warnOnQuit": false,
|
|
100
123
|
// Defensively disable data reporting systems
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
108
|
-
|
|
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
|
-
|
|
134
|
+
"devtools.jsonview.enabled": false,
|
|
112
135
|
// Disable popup-blocker
|
|
113
|
-
|
|
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
|
-
|
|
139
|
+
"dom.file.createInChild": true,
|
|
117
140
|
// Disable the ProcessHangMonitor
|
|
118
|
-
|
|
141
|
+
"dom.ipc.reportProcessHangs": false,
|
|
119
142
|
// Disable slow script dialogues
|
|
120
|
-
|
|
121
|
-
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
132
|
-
|
|
154
|
+
"extensions.autoDisableScopes": 0,
|
|
155
|
+
"extensions.enabledScopes": 5,
|
|
133
156
|
// Disable metadata caching for installed add-ons by default
|
|
134
|
-
|
|
157
|
+
"extensions.getAddons.cache.enabled": false,
|
|
135
158
|
// Disable installing any distribution extensions or add-ons.
|
|
136
|
-
|
|
159
|
+
"extensions.installDistroAddons": false,
|
|
137
160
|
// Disabled screenshots extension
|
|
138
|
-
|
|
161
|
+
"extensions.screenshots.disabled": true,
|
|
139
162
|
// Turn off extension updates so they do not bother tests
|
|
140
|
-
|
|
163
|
+
"extensions.update.enabled": false,
|
|
141
164
|
// Turn off extension updates so they do not bother tests
|
|
142
|
-
|
|
165
|
+
"extensions.update.notifyUser": false,
|
|
143
166
|
// Make sure opening about:addons will not hit the network
|
|
144
|
-
|
|
167
|
+
"extensions.webservice.discoverURL": `http://${server}/dummy/discoveryURL`,
|
|
145
168
|
// Allow the application to have focus even it runs in the background
|
|
146
|
-
|
|
169
|
+
"focusmanager.testmode": true,
|
|
147
170
|
// Disable useragent updates
|
|
148
|
-
|
|
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
|
-
|
|
174
|
+
"geo.provider.testing": true,
|
|
152
175
|
// Do not scan Wifi
|
|
153
|
-
|
|
176
|
+
"geo.wifi.scan": false,
|
|
154
177
|
// No hang monitor
|
|
155
|
-
|
|
178
|
+
"hangmonitor.timeout": 0,
|
|
156
179
|
// Show chrome errors and warnings in the error console
|
|
157
|
-
|
|
180
|
+
"javascript.options.showInConsole": true,
|
|
158
181
|
// Do not throttle rendering (requestAnimationFrame) in background tabs
|
|
159
|
-
|
|
182
|
+
"layout.testing.top-level-always-active": true,
|
|
160
183
|
// Disable download and usage of OpenH264: and Widevine plugins
|
|
161
|
-
|
|
184
|
+
"media.gmp-manager.updateEnabled": false,
|
|
162
185
|
// Disable the GFX sanity window
|
|
163
|
-
|
|
186
|
+
"media.sanity-test.disabled": true,
|
|
164
187
|
// Disable connectivity service pings
|
|
165
|
-
|
|
188
|
+
"network.connectivity-service.enabled": false,
|
|
166
189
|
// Disable experimental feature that is only available in Nightly
|
|
167
|
-
|
|
190
|
+
"network.cookie.sameSite.laxByDefault": false,
|
|
168
191
|
// Do not prompt for temporary redirects
|
|
169
|
-
|
|
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
|
-
|
|
195
|
+
"network.http.speculative-parallel-limit": 0,
|
|
173
196
|
// Do not automatically switch between offline and online
|
|
174
|
-
|
|
197
|
+
"network.manage-offline-status": false,
|
|
175
198
|
// Make sure SNTP requests do not hit the network
|
|
176
|
-
|
|
199
|
+
"network.sntp.pools": server,
|
|
177
200
|
// Disable Flash.
|
|
178
|
-
|
|
179
|
-
|
|
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
|
-
|
|
205
|
+
"remote.enabled": true,
|
|
183
206
|
// Don't do network connections for mitm priming
|
|
184
|
-
|
|
207
|
+
"security.certerrors.mitm.priming.enabled": false,
|
|
185
208
|
// Local documents have access to all other local documents,
|
|
186
209
|
// including directory listings
|
|
187
|
-
|
|
210
|
+
"security.fileuri.strict_origin_policy": false,
|
|
188
211
|
// Do not wait for the notification button security delay
|
|
189
|
-
|
|
212
|
+
"security.notification_enable_delay": 0,
|
|
190
213
|
// Do not automatically fill sign-in forms with known usernames and
|
|
191
214
|
// passwords
|
|
192
|
-
|
|
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
|
-
|
|
218
|
+
"signon.rememberSignons": false,
|
|
196
219
|
// Disable first-run welcome page
|
|
197
|
-
|
|
220
|
+
"startup.homepage_welcome_url": "about:blank",
|
|
198
221
|
// Disable first-run welcome page
|
|
199
|
-
|
|
222
|
+
"startup.homepage_welcome_url.additional": "",
|
|
200
223
|
// Disable browser animations (tabs, fullscreen, sliding alerts)
|
|
201
|
-
|
|
224
|
+
"toolkit.cosmeticAnimations.enabled": false,
|
|
202
225
|
// Prevent starting into safe mode after application crashes
|
|
203
|
-
|
|
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 =
|
|
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
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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 ===
|
|
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
|
+
});
|
package/lib/server/browser.js
CHANGED
|
@@ -1,148 +1,146 @@
|
|
|
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
|
-
|
|
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,
|
|
32
|
-
this.
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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 (
|
|
49
|
-
clientCertificatesProxy =
|
|
50
|
-
options = {
|
|
51
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
69
|
-
const hash =
|
|
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)
|
|
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
|
-
};
|
|
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.
|
|
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
|
-
|
|
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));
|
|
85
|
+
contextForReuse() {
|
|
86
|
+
return this._contextForReuse?.context;
|
|
92
87
|
}
|
|
93
88
|
_downloadCreated(page, uuid, url, suggestedFilename) {
|
|
94
|
-
const download = new
|
|
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)
|
|
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)
|
|
105
|
-
|
|
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
|
|
110
|
-
this._idToVideo.set(videoId, {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
|
119
|
+
return video?.artifact;
|
|
126
120
|
}
|
|
127
121
|
_didClose() {
|
|
128
|
-
for (const context of this.contexts())
|
|
129
|
-
|
|
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)
|
|
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())
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
};
|
|
143
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
144
|
+
0 && (module.exports = {
|
|
145
|
+
Browser
|
|
146
|
+
});
|