rebrowser-playwright-core 1.49.1 → 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 -597
- 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 +351 -434
- 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 -647
- 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-C5j27SYZ.js → codeMirrorModule-DVQi6prl.js} +13 -13
- 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 +181 -69
- 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/index-m0XdVJHe.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-BBCX0spr.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-B4Iw34Ow.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-DFlGYqou.js +0 -9
- package/lib/vite/traceViewer/embedded.CmarehFk.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.FBucu_gE.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.CW_rzcEp.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.CDUVjusr.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,127 +1,128 @@
|
|
|
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 browserType_exports = {};
|
|
30
|
+
__export(browserType_exports, {
|
|
31
|
+
BrowserReadyState: () => BrowserReadyState,
|
|
32
|
+
BrowserType: () => BrowserType,
|
|
33
|
+
kNoXServerRunningError: () => kNoXServerRunningError
|
|
5
34
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Copyright (c) Microsoft Corporation.
|
|
29
|
-
*
|
|
30
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31
|
-
* you may not use this file except in compliance with the License.
|
|
32
|
-
* You may obtain a copy of the License at
|
|
33
|
-
*
|
|
34
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
35
|
-
*
|
|
36
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
37
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
38
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
39
|
-
* See the License for the specific language governing permissions and
|
|
40
|
-
* limitations under the License.
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
const kNoXServerRunningError = exports.kNoXServerRunningError = 'Looks like you launched a headed browser without having a XServer running.\n' + 'Set either \'headless: true\' or use \'xvfb-run <your-playwright-app>\' before running Playwright.\n\n<3 Playwright Team';
|
|
35
|
+
module.exports = __toCommonJS(browserType_exports);
|
|
36
|
+
var import_fs = __toESM(require("fs"));
|
|
37
|
+
var import_os = __toESM(require("os"));
|
|
38
|
+
var import_path = __toESM(require("path"));
|
|
39
|
+
var import_browserContext = require("./browserContext");
|
|
40
|
+
var import_timeoutSettings = require("./timeoutSettings");
|
|
41
|
+
var import_debug = require("./utils/debug");
|
|
42
|
+
var import_assert = require("../utils/isomorphic/assert");
|
|
43
|
+
var import_manualPromise = require("../utils/isomorphic/manualPromise");
|
|
44
|
+
var import_fileUtils = require("./utils/fileUtils");
|
|
45
|
+
var import_helper = require("./helper");
|
|
46
|
+
var import_instrumentation = require("./instrumentation");
|
|
47
|
+
var import_pipeTransport = require("./pipeTransport");
|
|
48
|
+
var import_processLauncher = require("./utils/processLauncher");
|
|
49
|
+
var import_progress = require("./progress");
|
|
50
|
+
var import_protocolError = require("./protocolError");
|
|
51
|
+
var import_registry = require("./registry");
|
|
52
|
+
var import_socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
|
|
53
|
+
var import_transport = require("./transport");
|
|
54
|
+
var import_debugLogger = require("./utils/debugLogger");
|
|
55
|
+
const kNoXServerRunningError = "Looks like you launched a headed browser without having a XServer running.\nSet either 'headless: true' or use 'xvfb-run <your-playwright-app>' before running Playwright.\n\n<3 Playwright Team";
|
|
44
56
|
class BrowserReadyState {
|
|
45
57
|
constructor() {
|
|
46
|
-
this._wsEndpoint = new
|
|
58
|
+
this._wsEndpoint = new import_manualPromise.ManualPromise();
|
|
47
59
|
}
|
|
48
60
|
onBrowserExit() {
|
|
49
|
-
|
|
50
|
-
this._wsEndpoint.resolve(undefined);
|
|
61
|
+
this._wsEndpoint.resolve(void 0);
|
|
51
62
|
}
|
|
52
63
|
async waitUntilReady() {
|
|
53
64
|
const wsEndpoint = await this._wsEndpoint;
|
|
54
|
-
return {
|
|
55
|
-
wsEndpoint
|
|
56
|
-
};
|
|
65
|
+
return { wsEndpoint };
|
|
57
66
|
}
|
|
58
67
|
}
|
|
59
|
-
|
|
60
|
-
class BrowserType extends _instrumentation.SdkObject {
|
|
68
|
+
class BrowserType extends import_instrumentation.SdkObject {
|
|
61
69
|
constructor(parent, browserName) {
|
|
62
|
-
super(parent,
|
|
63
|
-
this._name = void 0;
|
|
70
|
+
super(parent, "browser-type");
|
|
64
71
|
this._useBidi = false;
|
|
65
72
|
this.attribution.browserType = this;
|
|
66
73
|
this._name = browserName;
|
|
67
74
|
}
|
|
68
75
|
executablePath() {
|
|
69
|
-
return
|
|
76
|
+
return import_registry.registry.findExecutable(this._name).executablePath(this.attribution.playwright.options.sdkLanguage) || "";
|
|
70
77
|
}
|
|
71
78
|
name() {
|
|
72
79
|
return this._name;
|
|
73
80
|
}
|
|
74
81
|
async launch(metadata, options, protocolLogger) {
|
|
75
82
|
options = this._validateLaunchOptions(options);
|
|
76
|
-
if (this._useBidi)
|
|
77
|
-
|
|
78
|
-
controller.
|
|
79
|
-
|
|
83
|
+
if (this._useBidi)
|
|
84
|
+
options.useWebSocket = true;
|
|
85
|
+
const controller = new import_progress.ProgressController(metadata, this);
|
|
86
|
+
controller.setLogName("browser");
|
|
87
|
+
const browser = await controller.run((progress) => {
|
|
80
88
|
const seleniumHubUrl = options.__testHookSeleniumRemoteURL || process.env.SELENIUM_REMOTE_URL;
|
|
81
|
-
if (seleniumHubUrl)
|
|
82
|
-
|
|
89
|
+
if (seleniumHubUrl)
|
|
90
|
+
return this._launchWithSeleniumHub(progress, seleniumHubUrl, options);
|
|
91
|
+
return this._innerLaunchWithRetries(progress, options, void 0, import_helper.helper.debugProtocolLogger(protocolLogger)).catch((e) => {
|
|
83
92
|
throw this._rewriteStartupLog(e);
|
|
84
93
|
});
|
|
85
|
-
},
|
|
94
|
+
}, import_timeoutSettings.TimeoutSettings.launchTimeout(options));
|
|
86
95
|
return browser;
|
|
87
96
|
}
|
|
88
97
|
async launchPersistentContext(metadata, userDataDir, options) {
|
|
89
98
|
const launchOptions = this._validateLaunchOptions(options);
|
|
90
|
-
if (this._useBidi)
|
|
91
|
-
|
|
92
|
-
controller.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// Note: Any initial TLS requests will fail since we rely on the Page/Frames initialize which sets ignoreHTTPSErrors.
|
|
99
|
+
if (this._useBidi)
|
|
100
|
+
launchOptions.useWebSocket = true;
|
|
101
|
+
const controller = new import_progress.ProgressController(metadata, this);
|
|
102
|
+
controller.setLogName("browser");
|
|
103
|
+
const browser = await controller.run(async (progress) => {
|
|
96
104
|
let clientCertificatesProxy;
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
options = {
|
|
102
|
-
...options
|
|
103
|
-
};
|
|
105
|
+
if (options.clientCertificates?.length) {
|
|
106
|
+
clientCertificatesProxy = new import_socksClientCertificatesInterceptor.ClientCertificatesProxy(options);
|
|
107
|
+
launchOptions.proxyOverride = await clientCertificatesProxy?.listen();
|
|
108
|
+
options = { ...options };
|
|
104
109
|
options.internalIgnoreHTTPSErrors = true;
|
|
105
110
|
}
|
|
106
|
-
progress.cleanupWhenAborted(() =>
|
|
107
|
-
|
|
108
|
-
return (_clientCertificatesPr2 = clientCertificatesProxy) === null || _clientCertificatesPr2 === void 0 ? void 0 : _clientCertificatesPr2.close();
|
|
109
|
-
});
|
|
110
|
-
const browser = await this._innerLaunchWithRetries(progress, launchOptions, options, _helper.helper.debugProtocolLogger(), userDataDir).catch(e => {
|
|
111
|
+
progress.cleanupWhenAborted(() => clientCertificatesProxy?.close());
|
|
112
|
+
const browser2 = await this._innerLaunchWithRetries(progress, launchOptions, options, import_helper.helper.debugProtocolLogger(), userDataDir).catch((e) => {
|
|
111
113
|
throw this._rewriteStartupLog(e);
|
|
112
114
|
});
|
|
113
|
-
|
|
114
|
-
return
|
|
115
|
-
},
|
|
115
|
+
browser2._defaultContext._clientCertificatesProxy = clientCertificatesProxy;
|
|
116
|
+
return browser2;
|
|
117
|
+
}, import_timeoutSettings.TimeoutSettings.launchTimeout(launchOptions));
|
|
116
118
|
return browser._defaultContext;
|
|
117
119
|
}
|
|
118
120
|
async _innerLaunchWithRetries(progress, options, persistent, protocolLogger, userDataDir) {
|
|
119
121
|
try {
|
|
120
122
|
return await this._innerLaunch(progress, options, persistent, protocolLogger, userDataDir);
|
|
121
123
|
} catch (error) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (errorMessage.includes('Inconsistency detected by ld.so')) {
|
|
124
|
+
const errorMessage = typeof error === "object" && typeof error.message === "string" ? error.message : "";
|
|
125
|
+
if (errorMessage.includes("Inconsistency detected by ld.so")) {
|
|
125
126
|
progress.log(`<restarting browser due to hitting race condition in glibc>`);
|
|
126
127
|
return this._innerLaunch(progress, options, persistent, protocolLogger, userDataDir);
|
|
127
128
|
}
|
|
@@ -129,18 +130,14 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
async _innerLaunch(progress, options, persistent, protocolLogger, maybeUserDataDir) {
|
|
132
|
-
options.proxy = options.proxy ? (0,
|
|
133
|
-
const browserLogsCollector = new
|
|
134
|
-
const {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
artifactsDir,
|
|
138
|
-
transport
|
|
139
|
-
} = await this._launchProcess(progress, options, !!persistent, browserLogsCollector, maybeUserDataDir);
|
|
140
|
-
if (options.__testHookBeforeCreateBrowser) await options.__testHookBeforeCreateBrowser();
|
|
133
|
+
options.proxy = options.proxy ? (0, import_browserContext.normalizeProxySettings)(options.proxy) : void 0;
|
|
134
|
+
const browserLogsCollector = new import_debugLogger.RecentLogsCollector();
|
|
135
|
+
const { browserProcess, userDataDir, artifactsDir, transport } = await this._launchProcess(progress, options, !!persistent, browserLogsCollector, maybeUserDataDir);
|
|
136
|
+
if (options.__testHookBeforeCreateBrowser)
|
|
137
|
+
await options.__testHookBeforeCreateBrowser();
|
|
141
138
|
const browserOptions = {
|
|
142
139
|
name: this._name,
|
|
143
|
-
isChromium: this._name ===
|
|
140
|
+
isChromium: this._name === "chromium",
|
|
144
141
|
channel: options.channel,
|
|
145
142
|
slowMo: options.slowMo,
|
|
146
143
|
persistent,
|
|
@@ -153,19 +150,19 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
153
150
|
proxy: options.proxy,
|
|
154
151
|
protocolLogger,
|
|
155
152
|
browserLogsCollector,
|
|
156
|
-
wsEndpoint: options.useWebSocket ? transport.wsEndpoint :
|
|
153
|
+
wsEndpoint: options.useWebSocket ? transport.wsEndpoint : void 0,
|
|
157
154
|
originalLaunchOptions: options
|
|
158
155
|
};
|
|
159
|
-
if (persistent)
|
|
156
|
+
if (persistent)
|
|
157
|
+
(0, import_browserContext.validateBrowserContextOptions)(persistent, browserOptions);
|
|
160
158
|
copyTestHooks(options, browserOptions);
|
|
161
159
|
const browser = await this.connectToTransport(transport, browserOptions);
|
|
162
160
|
browser._userDataDirForTest = userDataDir;
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
if (persistent && !options.ignoreAllDefaultArgs)
|
|
162
|
+
await browser._defaultContext._loadDefaultContext(progress);
|
|
165
163
|
return browser;
|
|
166
164
|
}
|
|
167
165
|
async _launchProcess(progress, options, isPersistent, browserLogsCollector, userDataDir) {
|
|
168
|
-
var _await$readyState$wai;
|
|
169
166
|
const {
|
|
170
167
|
ignoreDefaultArgs,
|
|
171
168
|
ignoreAllDefaultArgs,
|
|
@@ -175,164 +172,155 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
175
172
|
handleSIGTERM = true,
|
|
176
173
|
handleSIGHUP = true
|
|
177
174
|
} = options;
|
|
178
|
-
const env = options.env ? (0,
|
|
175
|
+
const env = options.env ? (0, import_processLauncher.envArrayToObject)(options.env) : process.env;
|
|
179
176
|
await this._createArtifactDirs(options);
|
|
180
177
|
const tempDirectories = [];
|
|
181
|
-
const artifactsDir = await
|
|
178
|
+
const artifactsDir = await import_fs.default.promises.mkdtemp(import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-"));
|
|
182
179
|
tempDirectories.push(artifactsDir);
|
|
183
180
|
if (userDataDir) {
|
|
184
|
-
|
|
185
|
-
if (!
|
|
186
|
-
recursive: true,
|
|
187
|
-
mode: 0o700
|
|
188
|
-
});
|
|
181
|
+
(0, import_assert.assert)(import_path.default.isAbsolute(userDataDir), "userDataDir must be an absolute path");
|
|
182
|
+
if (!await (0, import_fileUtils.existsAsync)(userDataDir))
|
|
183
|
+
await import_fs.default.promises.mkdir(userDataDir, { recursive: true, mode: 448 });
|
|
189
184
|
} else {
|
|
190
|
-
userDataDir = await
|
|
185
|
+
userDataDir = await import_fs.default.promises.mkdtemp(import_path.default.join(import_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
|
|
191
186
|
tempDirectories.push(userDataDir);
|
|
192
187
|
}
|
|
193
188
|
await this.prepareUserDataDir(options, userDataDir);
|
|
194
189
|
const browserArguments = [];
|
|
195
|
-
if (ignoreAllDefaultArgs)
|
|
190
|
+
if (ignoreAllDefaultArgs)
|
|
191
|
+
browserArguments.push(...args);
|
|
192
|
+
else if (ignoreDefaultArgs)
|
|
193
|
+
browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir).filter((arg) => ignoreDefaultArgs.indexOf(arg) === -1));
|
|
194
|
+
else
|
|
195
|
+
browserArguments.push(...this.defaultArgs(options, isPersistent, userDataDir));
|
|
196
196
|
let executable;
|
|
197
197
|
if (executablePath) {
|
|
198
|
-
if (!
|
|
198
|
+
if (!await (0, import_fileUtils.existsAsync)(executablePath))
|
|
199
|
+
throw new Error(`Failed to launch ${this._name} because executable doesn't exist at ${executablePath}`);
|
|
199
200
|
executable = executablePath;
|
|
200
201
|
} else {
|
|
201
|
-
const registryExecutable =
|
|
202
|
-
if (!registryExecutable || registryExecutable.browserName !== this._name)
|
|
202
|
+
const registryExecutable = import_registry.registry.findExecutable(this.getExecutableName(options));
|
|
203
|
+
if (!registryExecutable || registryExecutable.browserName !== this._name)
|
|
204
|
+
throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
|
|
203
205
|
executable = registryExecutable.executablePathOrDie(this.attribution.playwright.options.sdkLanguage);
|
|
204
|
-
await
|
|
206
|
+
await import_registry.registry.validateHostRequirementsForExecutablesIfNeeded([registryExecutable], this.attribution.playwright.options.sdkLanguage);
|
|
205
207
|
}
|
|
206
208
|
const readyState = this.readyState(options);
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
let browserProcess = undefined;
|
|
211
|
-
const {
|
|
212
|
-
launchedProcess,
|
|
213
|
-
gracefullyClose,
|
|
214
|
-
kill
|
|
215
|
-
} = await (0, _processLauncher.launchProcess)({
|
|
209
|
+
let transport = void 0;
|
|
210
|
+
let browserProcess = void 0;
|
|
211
|
+
const { launchedProcess, gracefullyClose, kill } = await (0, import_processLauncher.launchProcess)({
|
|
216
212
|
command: executable,
|
|
217
213
|
args: browserArguments,
|
|
218
214
|
env: this.amendEnvironment(env, userDataDir, executable, browserArguments),
|
|
219
215
|
handleSIGINT,
|
|
220
216
|
handleSIGTERM,
|
|
221
217
|
handleSIGHUP,
|
|
222
|
-
log: message => {
|
|
223
|
-
readyState
|
|
218
|
+
log: (message) => {
|
|
219
|
+
readyState?.onBrowserOutput(message);
|
|
224
220
|
progress.log(message);
|
|
225
221
|
browserLogsCollector.log(message);
|
|
226
222
|
},
|
|
227
|
-
stdio:
|
|
223
|
+
stdio: "pipe",
|
|
228
224
|
tempDirectories,
|
|
229
225
|
attemptToGracefullyClose: async () => {
|
|
230
|
-
if (options.__testHookGracefullyClose)
|
|
231
|
-
|
|
232
|
-
// Note that it's fine to reuse the pipe transport, since
|
|
233
|
-
// our connection ignores kBrowserCloseMessageId.
|
|
226
|
+
if (options.__testHookGracefullyClose)
|
|
227
|
+
await options.__testHookGracefullyClose();
|
|
234
228
|
this.attemptToGracefullyCloseBrowser(transport);
|
|
235
229
|
},
|
|
236
230
|
onExit: (exitCode, signal) => {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
231
|
+
readyState?.onBrowserExit();
|
|
232
|
+
if (browserProcess && browserProcess.onclose)
|
|
233
|
+
browserProcess.onclose(exitCode, signal);
|
|
240
234
|
}
|
|
241
235
|
});
|
|
242
236
|
async function closeOrKill(timeout) {
|
|
243
237
|
let timer;
|
|
244
238
|
try {
|
|
245
|
-
await Promise.race([
|
|
239
|
+
await Promise.race([
|
|
240
|
+
gracefullyClose(),
|
|
241
|
+
new Promise((resolve, reject) => timer = setTimeout(reject, timeout))
|
|
242
|
+
]);
|
|
246
243
|
} catch (ignored) {
|
|
247
|
-
await kill().catch(
|
|
244
|
+
await kill().catch((ignored2) => {
|
|
245
|
+
});
|
|
248
246
|
} finally {
|
|
249
247
|
clearTimeout(timer);
|
|
250
248
|
}
|
|
251
249
|
}
|
|
252
250
|
browserProcess = {
|
|
253
|
-
onclose:
|
|
251
|
+
onclose: void 0,
|
|
254
252
|
process: launchedProcess,
|
|
255
|
-
close: () => closeOrKill(options.__testHookBrowserCloseTimeout ||
|
|
253
|
+
close: () => closeOrKill(options.__testHookBrowserCloseTimeout || import_timeoutSettings.DEFAULT_TIMEOUT),
|
|
256
254
|
kill
|
|
257
255
|
};
|
|
258
256
|
progress.cleanupWhenAborted(() => closeOrKill(progress.timeUntilDeadline()));
|
|
259
|
-
const wsEndpoint = (
|
|
257
|
+
const wsEndpoint = (await readyState?.waitUntilReady())?.wsEndpoint;
|
|
260
258
|
if (options.useWebSocket) {
|
|
261
|
-
transport = await
|
|
259
|
+
transport = await import_transport.WebSocketTransport.connect(progress, wsEndpoint);
|
|
262
260
|
} else {
|
|
263
261
|
const stdio = launchedProcess.stdio;
|
|
264
|
-
transport = new
|
|
262
|
+
transport = new import_pipeTransport.PipeTransport(stdio[3], stdio[4]);
|
|
265
263
|
}
|
|
266
|
-
return {
|
|
267
|
-
browserProcess,
|
|
268
|
-
artifactsDir,
|
|
269
|
-
userDataDir,
|
|
270
|
-
transport
|
|
271
|
-
};
|
|
264
|
+
return { browserProcess, artifactsDir, userDataDir, transport };
|
|
272
265
|
}
|
|
273
266
|
async _createArtifactDirs(options) {
|
|
274
|
-
if (options.downloadsPath)
|
|
275
|
-
recursive: true
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
recursive: true
|
|
279
|
-
});
|
|
267
|
+
if (options.downloadsPath)
|
|
268
|
+
await import_fs.default.promises.mkdir(options.downloadsPath, { recursive: true });
|
|
269
|
+
if (options.tracesDir)
|
|
270
|
+
await import_fs.default.promises.mkdir(options.tracesDir, { recursive: true });
|
|
280
271
|
}
|
|
281
|
-
async connectOverCDP(metadata, endpointURL, options
|
|
282
|
-
throw new Error(
|
|
272
|
+
async connectOverCDP(metadata, endpointURL, options) {
|
|
273
|
+
throw new Error("CDP connections are only supported by Chromium");
|
|
283
274
|
}
|
|
284
275
|
async _launchWithSeleniumHub(progress, hubUrl, options) {
|
|
285
|
-
throw new Error(
|
|
276
|
+
throw new Error("Connecting to SELENIUM_REMOTE_URL is only supported by Chromium");
|
|
286
277
|
}
|
|
287
278
|
_validateLaunchOptions(options) {
|
|
288
|
-
const {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
downloadsPath,
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
if (downloadsPath && !_path.default.isAbsolute(downloadsPath)) downloadsPath = _path.default.join(process.cwd(), downloadsPath);
|
|
298
|
-
if (this.attribution.playwright.options.socksProxyPort) proxy = {
|
|
299
|
-
server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}`
|
|
300
|
-
};
|
|
301
|
-
return {
|
|
302
|
-
...options,
|
|
303
|
-
devtools,
|
|
304
|
-
headless,
|
|
305
|
-
downloadsPath,
|
|
306
|
-
proxy
|
|
307
|
-
};
|
|
279
|
+
const { devtools = false } = options;
|
|
280
|
+
let { headless = !devtools, downloadsPath, proxy } = options;
|
|
281
|
+
if ((0, import_debug.debugMode)())
|
|
282
|
+
headless = false;
|
|
283
|
+
if (downloadsPath && !import_path.default.isAbsolute(downloadsPath))
|
|
284
|
+
downloadsPath = import_path.default.join(process.cwd(), downloadsPath);
|
|
285
|
+
if (this.attribution.playwright.options.socksProxyPort)
|
|
286
|
+
proxy = { server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}` };
|
|
287
|
+
return { ...options, devtools, headless, downloadsPath, proxy };
|
|
308
288
|
}
|
|
309
289
|
_createUserDataDirArgMisuseError(userDataDirArg) {
|
|
310
290
|
switch (this.attribution.playwright.options.sdkLanguage) {
|
|
311
|
-
case
|
|
291
|
+
case "java":
|
|
312
292
|
return new Error(`Pass userDataDir parameter to 'BrowserType.launchPersistentContext(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
|
|
313
|
-
case
|
|
293
|
+
case "python":
|
|
314
294
|
return new Error(`Pass user_data_dir parameter to 'browser_type.launch_persistent_context(user_data_dir, **kwargs)' instead of specifying '${userDataDirArg}' argument`);
|
|
315
|
-
case
|
|
295
|
+
case "csharp":
|
|
316
296
|
return new Error(`Pass userDataDir parameter to 'BrowserType.LaunchPersistentContextAsync(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
|
|
317
297
|
default:
|
|
318
298
|
return new Error(`Pass userDataDir parameter to 'browserType.launchPersistentContext(userDataDir, options)' instead of specifying '${userDataDirArg}' argument`);
|
|
319
299
|
}
|
|
320
300
|
}
|
|
321
301
|
_rewriteStartupLog(error) {
|
|
322
|
-
if (!(0,
|
|
302
|
+
if (!(0, import_protocolError.isProtocolError)(error))
|
|
303
|
+
return error;
|
|
323
304
|
return this.doRewriteStartupLog(error);
|
|
324
305
|
}
|
|
325
306
|
readyState(options) {
|
|
326
|
-
return
|
|
307
|
+
return void 0;
|
|
308
|
+
}
|
|
309
|
+
async prepareUserDataDir(options, userDataDir) {
|
|
327
310
|
}
|
|
328
|
-
async prepareUserDataDir(options, userDataDir) {}
|
|
329
311
|
getExecutableName(options) {
|
|
330
312
|
return options.channel || this._name;
|
|
331
313
|
}
|
|
332
314
|
}
|
|
333
|
-
exports.BrowserType = BrowserType;
|
|
334
315
|
function copyTestHooks(from, to) {
|
|
335
316
|
for (const [key, value] of Object.entries(from)) {
|
|
336
|
-
if (key.startsWith(
|
|
317
|
+
if (key.startsWith("__testHook"))
|
|
318
|
+
to[key] = value;
|
|
337
319
|
}
|
|
338
|
-
}
|
|
320
|
+
}
|
|
321
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
322
|
+
0 && (module.exports = {
|
|
323
|
+
BrowserReadyState,
|
|
324
|
+
BrowserType,
|
|
325
|
+
kNoXServerRunningError
|
|
326
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
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 callLog_exports = {};
|
|
20
|
+
__export(callLog_exports, {
|
|
21
|
+
compressCallLog: () => compressCallLog,
|
|
22
|
+
findRepeatedSubsequencesForTest: () => findRepeatedSubsequencesForTest
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(callLog_exports);
|
|
25
|
+
function compressCallLog(log) {
|
|
26
|
+
const lines = [];
|
|
27
|
+
for (const block of findRepeatedSubsequences(log)) {
|
|
28
|
+
for (let i = 0; i < block.sequence.length; i++) {
|
|
29
|
+
const line = block.sequence[i];
|
|
30
|
+
const leadingWhitespace = line.match(/^\s*/);
|
|
31
|
+
const whitespacePrefix = " " + leadingWhitespace?.[0] || "";
|
|
32
|
+
const countPrefix = `${block.count} \xD7 `;
|
|
33
|
+
if (block.count > 1 && i === 0)
|
|
34
|
+
lines.push(whitespacePrefix + countPrefix + line.trim());
|
|
35
|
+
else if (block.count > 1)
|
|
36
|
+
lines.push(whitespacePrefix + " ".repeat(countPrefix.length - 2) + "- " + line.trim());
|
|
37
|
+
else
|
|
38
|
+
lines.push(whitespacePrefix + "- " + line.trim());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return lines;
|
|
42
|
+
}
|
|
43
|
+
function findRepeatedSubsequences(s) {
|
|
44
|
+
const n = s.length;
|
|
45
|
+
const result = [];
|
|
46
|
+
let i = 0;
|
|
47
|
+
const arraysEqual = (a1, a2) => {
|
|
48
|
+
if (a1.length !== a2.length)
|
|
49
|
+
return false;
|
|
50
|
+
for (let j = 0; j < a1.length; j++) {
|
|
51
|
+
if (a1[j] !== a2[j])
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
};
|
|
56
|
+
while (i < n) {
|
|
57
|
+
let maxRepeatCount = 1;
|
|
58
|
+
let maxRepeatSubstr = [s[i]];
|
|
59
|
+
let maxRepeatLength = 1;
|
|
60
|
+
for (let p = 1; p <= n - i; p++) {
|
|
61
|
+
const substr = s.slice(i, i + p);
|
|
62
|
+
let k = 1;
|
|
63
|
+
while (i + p * k <= n && arraysEqual(s.slice(i + p * (k - 1), i + p * k), substr))
|
|
64
|
+
k += 1;
|
|
65
|
+
k -= 1;
|
|
66
|
+
if (k > 1 && k * p > maxRepeatCount * maxRepeatLength) {
|
|
67
|
+
maxRepeatCount = k;
|
|
68
|
+
maxRepeatSubstr = substr;
|
|
69
|
+
maxRepeatLength = p;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
result.push({ sequence: maxRepeatSubstr, count: maxRepeatCount });
|
|
73
|
+
i += maxRepeatLength * maxRepeatCount;
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
const findRepeatedSubsequencesForTest = findRepeatedSubsequences;
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
compressCallLog,
|
|
81
|
+
findRepeatedSubsequencesForTest
|
|
82
|
+
});
|