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