@stablyai/internal-playwright-core 0.1.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/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +3 -0
- package/ThirdPartyNotices.txt +1134 -0
- package/bin/install_media_pack.ps1 +5 -0
- package/bin/install_webkit_wsl.ps1 +35 -0
- package/bin/reinstall_chrome_beta_linux.sh +42 -0
- package/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/bin/reinstall_chrome_beta_win.ps1 +24 -0
- package/bin/reinstall_chrome_stable_linux.sh +42 -0
- package/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/bin/reinstall_chrome_stable_win.ps1 +24 -0
- package/bin/reinstall_msedge_beta_linux.sh +48 -0
- package/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/bin/reinstall_msedge_beta_win.ps1 +23 -0
- package/bin/reinstall_msedge_dev_linux.sh +48 -0
- package/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/bin/reinstall_msedge_dev_win.ps1 +23 -0
- package/bin/reinstall_msedge_stable_linux.sh +48 -0
- package/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/bin/reinstall_msedge_stable_win.ps1 +24 -0
- package/browsers.json +80 -0
- package/cli.js +18 -0
- package/index.d.ts +17 -0
- package/index.js +32 -0
- package/index.mjs +28 -0
- package/lib/androidServerImpl.js +65 -0
- package/lib/browserServerImpl.js +120 -0
- package/lib/cli/cli.js +58 -0
- package/lib/cli/driver.js +97 -0
- package/lib/cli/program.js +634 -0
- package/lib/cli/programWithTestStub.js +74 -0
- package/lib/client/accessibility.js +49 -0
- package/lib/client/android.js +361 -0
- package/lib/client/api.js +137 -0
- package/lib/client/artifact.js +79 -0
- package/lib/client/browser.js +163 -0
- package/lib/client/browserContext.js +529 -0
- package/lib/client/browserType.js +184 -0
- package/lib/client/cdpSession.js +51 -0
- package/lib/client/channelOwner.js +194 -0
- package/lib/client/clientHelper.js +64 -0
- package/lib/client/clientInstrumentation.js +55 -0
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +68 -0
- package/lib/client/connection.js +314 -0
- package/lib/client/consoleMessage.js +54 -0
- package/lib/client/coverage.js +44 -0
- package/lib/client/dialog.js +56 -0
- package/lib/client/download.js +62 -0
- package/lib/client/electron.js +138 -0
- package/lib/client/elementHandle.js +281 -0
- package/lib/client/errors.js +77 -0
- package/lib/client/eventEmitter.js +314 -0
- package/lib/client/events.js +99 -0
- package/lib/client/fetch.js +369 -0
- package/lib/client/fileChooser.js +46 -0
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +408 -0
- package/lib/client/harRouter.js +87 -0
- package/lib/client/input.js +84 -0
- package/lib/client/jsHandle.js +109 -0
- package/lib/client/jsonPipe.js +39 -0
- package/lib/client/localUtils.js +60 -0
- package/lib/client/locator.js +368 -0
- package/lib/client/network.js +747 -0
- package/lib/client/page.js +721 -0
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +71 -0
- package/lib/client/selectors.js +55 -0
- package/lib/client/stream.js +39 -0
- package/lib/client/timeoutSettings.js +79 -0
- package/lib/client/tracing.js +117 -0
- package/lib/client/types.js +28 -0
- package/lib/client/video.js +59 -0
- package/lib/client/waiter.js +142 -0
- package/lib/client/webError.js +39 -0
- package/lib/client/webSocket.js +93 -0
- package/lib/client/worker.js +63 -0
- package/lib/client/writableStream.js +39 -0
- package/lib/common/debugLogger.js +90 -0
- package/lib/common/socksProxy.js +569 -0
- package/lib/common/timeoutSettings.js +73 -0
- package/lib/common/types.js +5 -0
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +28 -0
- package/lib/generated/consoleApiSource.js +28 -0
- package/lib/generated/injectedScriptSource.js +28 -0
- package/lib/generated/pollingRecorderSource.js +28 -0
- package/lib/generated/recorderSource.js +28 -0
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +28 -0
- package/lib/generated/webSocketMockSource.js +336 -0
- package/lib/image_tools/colorUtils.js +98 -0
- package/lib/image_tools/compare.js +108 -0
- package/lib/image_tools/imageChannel.js +70 -0
- package/lib/image_tools/stats.js +102 -0
- package/lib/inProcessFactory.js +60 -0
- package/lib/index.js +19 -0
- package/lib/inprocess.js +3 -0
- package/lib/outofprocess.js +76 -0
- package/lib/protocol/debug.js +27 -0
- package/lib/protocol/serializers.js +192 -0
- package/lib/protocol/transport.js +82 -0
- package/lib/protocol/validator.js +2919 -0
- package/lib/protocol/validatorPrimitives.js +193 -0
- package/lib/remote/playwrightConnection.js +129 -0
- package/lib/remote/playwrightServer.js +335 -0
- package/lib/server/accessibility.js +69 -0
- package/lib/server/android/android.js +465 -0
- package/lib/server/android/backendAdb.js +177 -0
- package/lib/server/artifact.js +127 -0
- package/lib/server/bidi/bidiBrowser.js +490 -0
- package/lib/server/bidi/bidiChromium.js +153 -0
- package/lib/server/bidi/bidiConnection.js +212 -0
- package/lib/server/bidi/bidiExecutionContext.js +221 -0
- package/lib/server/bidi/bidiFirefox.js +130 -0
- package/lib/server/bidi/bidiInput.js +146 -0
- package/lib/server/bidi/bidiNetworkManager.js +383 -0
- package/lib/server/bidi/bidiOverCdp.js +102 -0
- package/lib/server/bidi/bidiPage.js +552 -0
- package/lib/server/bidi/bidiPdf.js +106 -0
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +98 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +24 -0
- package/lib/server/bidi/third_party/bidiProtocolCore.js +179 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +148 -0
- package/lib/server/bidi/third_party/firefoxPrefs.js +259 -0
- package/lib/server/browser.js +149 -0
- package/lib/server/browserContext.js +695 -0
- package/lib/server/browserType.js +328 -0
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/appIcon.png +0 -0
- package/lib/server/chromium/chromium.js +402 -0
- package/lib/server/chromium/chromiumSwitches.js +95 -0
- package/lib/server/chromium/crAccessibility.js +263 -0
- package/lib/server/chromium/crBrowser.js +501 -0
- package/lib/server/chromium/crConnection.js +202 -0
- package/lib/server/chromium/crCoverage.js +235 -0
- package/lib/server/chromium/crDevTools.js +113 -0
- package/lib/server/chromium/crDragDrop.js +131 -0
- package/lib/server/chromium/crExecutionContext.js +146 -0
- package/lib/server/chromium/crInput.js +187 -0
- package/lib/server/chromium/crNetworkManager.js +666 -0
- package/lib/server/chromium/crPage.js +1069 -0
- package/lib/server/chromium/crPdf.js +121 -0
- package/lib/server/chromium/crProtocolHelper.js +145 -0
- package/lib/server/chromium/crServiceWorker.js +123 -0
- package/lib/server/chromium/defaultFontFamilies.js +162 -0
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +113 -0
- package/lib/server/clock.js +149 -0
- package/lib/server/codegen/csharp.js +327 -0
- package/lib/server/codegen/java.js +274 -0
- package/lib/server/codegen/javascript.js +270 -0
- package/lib/server/codegen/jsonl.js +52 -0
- package/lib/server/codegen/language.js +132 -0
- package/lib/server/codegen/languages.js +68 -0
- package/lib/server/codegen/python.js +279 -0
- package/lib/server/codegen/types.js +16 -0
- package/lib/server/console.js +53 -0
- package/lib/server/cookieStore.js +206 -0
- package/lib/server/debugController.js +191 -0
- package/lib/server/debugger.js +119 -0
- package/lib/server/deviceDescriptors.js +39 -0
- package/lib/server/deviceDescriptorsSource.json +1779 -0
- package/lib/server/dialog.js +116 -0
- package/lib/server/dispatchers/androidDispatcher.js +325 -0
- package/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +364 -0
- package/lib/server/dispatchers/browserDispatcher.js +118 -0
- package/lib/server/dispatchers/browserTypeDispatcher.js +64 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -0
- package/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
- package/lib/server/dispatchers/dialogDispatcher.js +47 -0
- package/lib/server/dispatchers/dispatcher.js +371 -0
- package/lib/server/dispatchers/electronDispatcher.js +89 -0
- package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
- package/lib/server/dispatchers/frameDispatcher.js +227 -0
- package/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
- package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
- package/lib/server/dispatchers/localUtilsDispatcher.js +149 -0
- package/lib/server/dispatchers/networkDispatchers.js +213 -0
- package/lib/server/dispatchers/pageDispatcher.js +401 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +108 -0
- package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
- package/lib/server/dispatchers/streamDispatcher.js +67 -0
- package/lib/server/dispatchers/tracingDispatcher.js +68 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
- package/lib/server/dom.js +806 -0
- package/lib/server/download.js +70 -0
- package/lib/server/electron/electron.js +270 -0
- package/lib/server/electron/loader.js +29 -0
- package/lib/server/errors.js +69 -0
- package/lib/server/fetch.js +621 -0
- package/lib/server/fileChooser.js +43 -0
- package/lib/server/fileUploadUtils.js +84 -0
- package/lib/server/firefox/ffAccessibility.js +238 -0
- package/lib/server/firefox/ffBrowser.js +428 -0
- package/lib/server/firefox/ffConnection.js +147 -0
- package/lib/server/firefox/ffExecutionContext.js +150 -0
- package/lib/server/firefox/ffInput.js +159 -0
- package/lib/server/firefox/ffNetworkManager.js +256 -0
- package/lib/server/firefox/ffPage.js +503 -0
- package/lib/server/firefox/firefox.js +116 -0
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +147 -0
- package/lib/server/frameSelectors.js +156 -0
- package/lib/server/frames.js +1502 -0
- package/lib/server/har/harRecorder.js +147 -0
- package/lib/server/har/harTracer.js +607 -0
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +96 -0
- package/lib/server/index.js +58 -0
- package/lib/server/input.js +273 -0
- package/lib/server/instrumentation.js +69 -0
- package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
- package/lib/server/javascript.js +291 -0
- package/lib/server/launchApp.js +128 -0
- package/lib/server/localUtils.js +218 -0
- package/lib/server/macEditingCommands.js +143 -0
- package/lib/server/network.js +629 -0
- package/lib/server/page.js +871 -0
- package/lib/server/pipeTransport.js +89 -0
- package/lib/server/playwright.js +69 -0
- package/lib/server/progress.js +112 -0
- package/lib/server/protocolError.js +52 -0
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/codeGenerator.js +153 -0
- package/lib/server/recorder/csharp.js +310 -0
- package/lib/server/recorder/java.js +248 -0
- package/lib/server/recorder/javascript.js +229 -0
- package/lib/server/recorder/jsonl.js +47 -0
- package/lib/server/recorder/language.js +44 -0
- package/lib/server/recorder/python.js +276 -0
- package/lib/server/recorder/recorderActions.js +5 -0
- package/lib/server/recorder/recorderApp.js +387 -0
- package/lib/server/recorder/recorderRunner.js +138 -0
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +157 -0
- package/lib/server/recorder/throttledFile.js +57 -0
- package/lib/server/recorder/utils.js +45 -0
- package/lib/server/recorder.js +499 -0
- package/lib/server/registry/browserFetcher.js +175 -0
- package/lib/server/registry/dependencies.js +371 -0
- package/lib/server/registry/index.js +1331 -0
- package/lib/server/registry/nativeDeps.js +1280 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +120 -0
- package/lib/server/screenshotter.js +333 -0
- package/lib/server/selectors.js +112 -0
- package/lib/server/socksClientCertificatesInterceptor.js +383 -0
- package/lib/server/socksInterceptor.js +95 -0
- package/lib/server/stably/ai-tools/http-request.js +70 -0
- package/lib/server/stably/ai-tools/stablyApiCaller.js +137 -0
- package/lib/server/stably/autohealing/elementHandleFromCoordinates.js +64 -0
- package/lib/server/stably/autohealing/healingService.js +228 -0
- package/lib/server/stably/autohealing/screenshotFrame.js +41 -0
- package/lib/server/stably/constants.js +31 -0
- package/lib/server/trace/recorder/snapshotter.js +147 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +541 -0
- package/lib/server/trace/recorder/tracing.js +602 -0
- package/lib/server/trace/test/inMemorySnapshotter.js +87 -0
- package/lib/server/trace/viewer/traceViewer.js +240 -0
- package/lib/server/transport.js +181 -0
- package/lib/server/types.js +28 -0
- package/lib/server/usKeyboardLayout.js +145 -0
- 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 +42 -0
- package/lib/server/utils/debugLogger.js +122 -0
- package/lib/server/utils/env.js +73 -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 +111 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/server/utils/image_tools/compare.js +109 -0
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +233 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +241 -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 +121 -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 +119 -0
- package/lib/server/webkit/wkAccessibility.js +237 -0
- package/lib/server/webkit/wkBrowser.js +339 -0
- package/lib/server/webkit/wkConnection.js +149 -0
- package/lib/server/webkit/wkExecutionContext.js +154 -0
- package/lib/server/webkit/wkInput.js +181 -0
- package/lib/server/webkit/wkInterceptableRequest.js +169 -0
- package/lib/server/webkit/wkPage.js +1134 -0
- package/lib/server/webkit/wkProvisionalPage.js +83 -0
- package/lib/server/webkit/wkWorkers.js +104 -0
- package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +74 -0
- package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +113 -0
- package/lib/third_party/diff_match_patch.js +2222 -0
- package/lib/third_party/pixelmatch.js +255 -0
- package/lib/utils/ascii.js +31 -0
- package/lib/utils/comparators.js +171 -0
- package/lib/utils/crypto.js +33 -0
- package/lib/utils/debug.js +46 -0
- package/lib/utils/debugLogger.js +89 -0
- package/lib/utils/env.js +49 -0
- package/lib/utils/eventsHelper.js +38 -0
- package/lib/utils/fileUtils.js +205 -0
- package/lib/utils/glob.js +83 -0
- package/lib/utils/happy-eyeballs.js +160 -0
- package/lib/utils/headers.js +52 -0
- package/lib/utils/hostPlatform.js +128 -0
- package/lib/utils/httpServer.js +236 -0
- package/lib/utils/index.js +346 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +245 -0
- package/lib/utils/isomorphic/cssTokenizer.js +1051 -0
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +673 -0
- package/lib/utils/isomorphic/locatorParser.js +176 -0
- package/lib/utils/isomorphic/locatorUtils.js +81 -0
- package/lib/utils/isomorphic/manualPromise.js +114 -0
- package/lib/utils/isomorphic/mimeType.js +459 -0
- package/lib/utils/isomorphic/multimap.js +80 -0
- package/lib/utils/isomorphic/protocolFormatter.js +78 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +386 -0
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +155 -0
- package/lib/utils/isomorphic/time.js +49 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/traceUtils.js +58 -0
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +176 -0
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/utils/linuxUtils.js +78 -0
- package/lib/utils/manualPromise.js +109 -0
- package/lib/utils/mimeType.js +29 -0
- package/lib/utils/multimap.js +75 -0
- package/lib/utils/network.js +188 -0
- package/lib/utils/processLauncher.js +248 -0
- package/lib/utils/profiler.js +53 -0
- package/lib/utils/rtti.js +44 -0
- package/lib/utils/semaphore.js +51 -0
- package/lib/utils/spawnAsync.js +45 -0
- package/lib/utils/stackTrace.js +121 -0
- package/lib/utils/task.js +58 -0
- package/lib/utils/time.js +37 -0
- package/lib/utils/timeoutRunner.js +66 -0
- package/lib/utils/traceUtils.js +44 -0
- package/lib/utils/userAgent.js +105 -0
- package/lib/utils/wsServer.js +127 -0
- package/lib/utils/zipFile.js +75 -0
- package/lib/utils/zones.js +62 -0
- package/lib/utils.js +107 -0
- package/lib/utilsBundle.js +109 -0
- package/lib/utilsBundleImpl/index.js +218 -0
- package/lib/utilsBundleImpl/xdg-open +1066 -0
- package/lib/vite/htmlReport/index.html +84 -0
- package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
- package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +24 -0
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-Ri0uHF7I.css +1 -0
- package/lib/vite/recorder/assets/index-Y-X2TGJv.js +193 -0
- package/lib/vite/recorder/index.html +29 -0
- package/lib/vite/recorder/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Bhnc5o2x.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-ClwvkA2N.js +265 -0
- package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +1 -0
- package/lib/vite/traceViewer/index.DFO9NNF5.js +2 -0
- package/lib/vite/traceViewer/index.I8N9v4jT.css +1 -0
- package/lib/vite/traceViewer/index.html +43 -0
- package/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/snapshot.html +21 -0
- package/lib/vite/traceViewer/sw.bundle.js +3 -0
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
- package/lib/vite/traceViewer/uiMode.Shu3QS-1.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +17 -0
- package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
- package/lib/zipBundle.js +34 -0
- package/lib/zipBundleImpl.js +5 -0
- package/package.json +43 -0
- package/types/protocol.d.ts +23130 -0
- package/types/structs.d.ts +45 -0
- package/types/types.d.ts +22857 -0
@@ -0,0 +1,402 @@
|
|
1
|
+
"use strict";
|
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 chromium_exports = {};
|
30
|
+
__export(chromium_exports, {
|
31
|
+
Chromium: () => Chromium,
|
32
|
+
waitForReadyState: () => waitForReadyState
|
33
|
+
});
|
34
|
+
module.exports = __toCommonJS(chromium_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_chromiumSwitches = require("./chromiumSwitches");
|
39
|
+
var import_crBrowser = require("./crBrowser");
|
40
|
+
var import_crConnection = require("./crConnection");
|
41
|
+
var import_utils = require("../../utils");
|
42
|
+
var import_ascii = require("../utils/ascii");
|
43
|
+
var import_debugLogger = require("../utils/debugLogger");
|
44
|
+
var import_manualPromise = require("../../utils/isomorphic/manualPromise");
|
45
|
+
var import_network = require("../utils/network");
|
46
|
+
var import_userAgent = require("../utils/userAgent");
|
47
|
+
var import_browserContext = require("../browserContext");
|
48
|
+
var import_browserType = require("../browserType");
|
49
|
+
var import_helper = require("../helper");
|
50
|
+
var import_registry = require("../registry");
|
51
|
+
var import_transport = require("../transport");
|
52
|
+
var import_crDevTools = require("./crDevTools");
|
53
|
+
var import_browser = require("../browser");
|
54
|
+
var import_fileUtils = require("../utils/fileUtils");
|
55
|
+
var import_processLauncher = require("../utils/processLauncher");
|
56
|
+
const ARTIFACTS_FOLDER = import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-");
|
57
|
+
class Chromium extends import_browserType.BrowserType {
|
58
|
+
constructor(parent, bidiChromium) {
|
59
|
+
super(parent, "chromium");
|
60
|
+
this._bidiChromium = bidiChromium;
|
61
|
+
if ((0, import_utils.debugMode)() === "inspector")
|
62
|
+
this._devtools = this._createDevTools();
|
63
|
+
}
|
64
|
+
launch(progress, options, protocolLogger) {
|
65
|
+
if (options.channel?.startsWith("bidi-"))
|
66
|
+
return this._bidiChromium.launch(progress, options, protocolLogger);
|
67
|
+
return super.launch(progress, options, protocolLogger);
|
68
|
+
}
|
69
|
+
async launchPersistentContext(progress, userDataDir, options) {
|
70
|
+
if (options.channel?.startsWith("bidi-"))
|
71
|
+
return this._bidiChromium.launchPersistentContext(progress, userDataDir, options);
|
72
|
+
return super.launchPersistentContext(progress, userDataDir, options);
|
73
|
+
}
|
74
|
+
async connectOverCDP(progress, endpointURL, options) {
|
75
|
+
return await this._connectOverCDPInternal(progress, endpointURL, options);
|
76
|
+
}
|
77
|
+
async _connectOverCDPInternal(progress, endpointURL, options, onClose) {
|
78
|
+
let headersMap;
|
79
|
+
if (options.headers)
|
80
|
+
headersMap = (0, import_utils.headersArrayToObject)(options.headers, false);
|
81
|
+
if (!headersMap)
|
82
|
+
headersMap = { "User-Agent": (0, import_userAgent.getUserAgent)() };
|
83
|
+
else if (headersMap && !Object.keys(headersMap).some((key) => key.toLowerCase() === "user-agent"))
|
84
|
+
headersMap["User-Agent"] = (0, import_userAgent.getUserAgent)();
|
85
|
+
const artifactsDir = await progress.race(import_fs.default.promises.mkdtemp(ARTIFACTS_FOLDER));
|
86
|
+
const doCleanup = async () => {
|
87
|
+
await (0, import_fileUtils.removeFolders)([artifactsDir]);
|
88
|
+
const cb = onClose;
|
89
|
+
onClose = void 0;
|
90
|
+
await cb?.();
|
91
|
+
};
|
92
|
+
let chromeTransport;
|
93
|
+
const doClose = async () => {
|
94
|
+
await chromeTransport?.closeAndWait();
|
95
|
+
await doCleanup();
|
96
|
+
};
|
97
|
+
try {
|
98
|
+
const wsEndpoint = await urlToWSEndpoint(progress, endpointURL, headersMap);
|
99
|
+
chromeTransport = await import_transport.WebSocketTransport.connect(progress, wsEndpoint, { headers: headersMap });
|
100
|
+
const browserProcess = { close: doClose, kill: doClose };
|
101
|
+
const persistent = { noDefaultViewport: true };
|
102
|
+
const browserOptions = {
|
103
|
+
slowMo: options.slowMo,
|
104
|
+
name: "chromium",
|
105
|
+
isChromium: true,
|
106
|
+
persistent,
|
107
|
+
browserProcess,
|
108
|
+
protocolLogger: import_helper.helper.debugProtocolLogger(),
|
109
|
+
browserLogsCollector: new import_debugLogger.RecentLogsCollector(),
|
110
|
+
artifactsDir,
|
111
|
+
downloadsPath: options.downloadsPath || artifactsDir,
|
112
|
+
tracesDir: options.tracesDir || artifactsDir,
|
113
|
+
originalLaunchOptions: {}
|
114
|
+
};
|
115
|
+
(0, import_browserContext.validateBrowserContextOptions)(persistent, browserOptions);
|
116
|
+
const browser = await progress.race(import_crBrowser.CRBrowser.connect(this.attribution.playwright, chromeTransport, browserOptions));
|
117
|
+
browser._isCollocatedWithServer = false;
|
118
|
+
browser.on(import_browser.Browser.Events.Disconnected, doCleanup);
|
119
|
+
return browser;
|
120
|
+
} catch (error) {
|
121
|
+
await doClose().catch(() => {
|
122
|
+
});
|
123
|
+
throw error;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
_createDevTools() {
|
127
|
+
const directory = import_registry.registry.findExecutable("chromium").directory;
|
128
|
+
return directory ? new import_crDevTools.CRDevTools(import_path.default.join(directory, "devtools-preferences.json")) : void 0;
|
129
|
+
}
|
130
|
+
async connectToTransport(transport, options, browserLogsCollector) {
|
131
|
+
let devtools = this._devtools;
|
132
|
+
if (options.__testHookForDevTools) {
|
133
|
+
devtools = this._createDevTools();
|
134
|
+
await options.__testHookForDevTools(devtools);
|
135
|
+
}
|
136
|
+
try {
|
137
|
+
return await import_crBrowser.CRBrowser.connect(this.attribution.playwright, transport, options, devtools);
|
138
|
+
} catch (e) {
|
139
|
+
if (browserLogsCollector.recentLogs().some((log) => log.includes("Failed to create a ProcessSingleton for your profile directory."))) {
|
140
|
+
throw new Error(
|
141
|
+
"Failed to create a ProcessSingleton for your profile directory. This usually means that the profile is already in use by another instance of Chromium."
|
142
|
+
);
|
143
|
+
}
|
144
|
+
throw e;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
doRewriteStartupLog(error) {
|
148
|
+
if (!error.logs)
|
149
|
+
return error;
|
150
|
+
if (error.logs.includes("Missing X server"))
|
151
|
+
error.logs = "\n" + (0, import_ascii.wrapInASCIIBox)(import_browserType.kNoXServerRunningError, 1);
|
152
|
+
if (!error.logs.includes("crbug.com/357670") && !error.logs.includes("No usable sandbox!") && !error.logs.includes("crbug.com/638180"))
|
153
|
+
return error;
|
154
|
+
error.logs = [
|
155
|
+
`Chromium sandboxing failed!`,
|
156
|
+
`================================`,
|
157
|
+
`To avoid the sandboxing issue, do either of the following:`,
|
158
|
+
` - (preferred): Configure your environment to support sandboxing`,
|
159
|
+
` - (alternative): Launch Chromium without sandbox using 'chromiumSandbox: false' option`,
|
160
|
+
`================================`,
|
161
|
+
``
|
162
|
+
].join("\n");
|
163
|
+
return error;
|
164
|
+
}
|
165
|
+
amendEnvironment(env) {
|
166
|
+
return env;
|
167
|
+
}
|
168
|
+
attemptToGracefullyCloseBrowser(transport) {
|
169
|
+
const message = { method: "Browser.close", id: import_crConnection.kBrowserCloseMessageId, params: {} };
|
170
|
+
transport.send(message);
|
171
|
+
}
|
172
|
+
async _launchWithSeleniumHub(progress, hubUrl, options) {
|
173
|
+
await progress.race(this._createArtifactDirs(options));
|
174
|
+
if (!hubUrl.endsWith("/"))
|
175
|
+
hubUrl = hubUrl + "/";
|
176
|
+
const args = this._innerDefaultArgs(options);
|
177
|
+
args.push("--remote-debugging-port=0");
|
178
|
+
const isEdge = options.channel && options.channel.startsWith("msedge");
|
179
|
+
let desiredCapabilities = {
|
180
|
+
"browserName": isEdge ? "MicrosoftEdge" : "chrome",
|
181
|
+
[isEdge ? "ms:edgeOptions" : "goog:chromeOptions"]: { args }
|
182
|
+
};
|
183
|
+
if (process.env.SELENIUM_REMOTE_CAPABILITIES) {
|
184
|
+
const remoteCapabilities = parseSeleniumRemoteParams({ name: "capabilities", value: process.env.SELENIUM_REMOTE_CAPABILITIES }, progress);
|
185
|
+
if (remoteCapabilities)
|
186
|
+
desiredCapabilities = { ...desiredCapabilities, ...remoteCapabilities };
|
187
|
+
}
|
188
|
+
let headers = {};
|
189
|
+
if (process.env.SELENIUM_REMOTE_HEADERS) {
|
190
|
+
const remoteHeaders = parseSeleniumRemoteParams({ name: "headers", value: process.env.SELENIUM_REMOTE_HEADERS }, progress);
|
191
|
+
if (remoteHeaders)
|
192
|
+
headers = remoteHeaders;
|
193
|
+
}
|
194
|
+
progress.log(`<selenium> connecting to ${hubUrl}`);
|
195
|
+
const response = await (0, import_network.fetchData)(progress, {
|
196
|
+
url: hubUrl + "session",
|
197
|
+
method: "POST",
|
198
|
+
headers: {
|
199
|
+
"Content-Type": "application/json; charset=utf-8",
|
200
|
+
...headers
|
201
|
+
},
|
202
|
+
data: JSON.stringify({
|
203
|
+
capabilities: { alwaysMatch: desiredCapabilities }
|
204
|
+
})
|
205
|
+
}, seleniumErrorHandler);
|
206
|
+
const value = JSON.parse(response).value;
|
207
|
+
const sessionId = value.sessionId;
|
208
|
+
progress.log(`<selenium> connected to sessionId=${sessionId}`);
|
209
|
+
const disconnectFromSelenium = async () => {
|
210
|
+
progress.log(`<selenium> disconnecting from sessionId=${sessionId}`);
|
211
|
+
await (0, import_network.fetchData)(void 0, {
|
212
|
+
url: hubUrl + "session/" + sessionId,
|
213
|
+
method: "DELETE",
|
214
|
+
headers
|
215
|
+
}).catch((error) => progress.log(`<error disconnecting from selenium>: ${error}`));
|
216
|
+
progress.log(`<selenium> disconnected from sessionId=${sessionId}`);
|
217
|
+
import_processLauncher.gracefullyCloseSet.delete(disconnectFromSelenium);
|
218
|
+
};
|
219
|
+
import_processLauncher.gracefullyCloseSet.add(disconnectFromSelenium);
|
220
|
+
try {
|
221
|
+
const capabilities = value.capabilities;
|
222
|
+
let endpointURL;
|
223
|
+
if (capabilities["se:cdp"]) {
|
224
|
+
progress.log(`<selenium> using selenium v4`);
|
225
|
+
const endpointURLString = addProtocol(capabilities["se:cdp"]);
|
226
|
+
endpointURL = new URL(endpointURLString);
|
227
|
+
if (endpointURL.hostname === "localhost" || endpointURL.hostname === "127.0.0.1")
|
228
|
+
endpointURL.hostname = new URL(hubUrl).hostname;
|
229
|
+
progress.log(`<selenium> retrieved endpoint ${endpointURL.toString()} for sessionId=${sessionId}`);
|
230
|
+
} else {
|
231
|
+
progress.log(`<selenium> using selenium v3`);
|
232
|
+
const maybeChromeOptions = capabilities["goog:chromeOptions"];
|
233
|
+
const chromeOptions = maybeChromeOptions && typeof maybeChromeOptions === "object" ? maybeChromeOptions : void 0;
|
234
|
+
const debuggerAddress = chromeOptions && typeof chromeOptions.debuggerAddress === "string" ? chromeOptions.debuggerAddress : void 0;
|
235
|
+
const chromeOptionsURL = typeof maybeChromeOptions === "string" ? maybeChromeOptions : void 0;
|
236
|
+
const endpointURLString = addProtocol(debuggerAddress || chromeOptionsURL).replace("localhost", "127.0.0.1");
|
237
|
+
progress.log(`<selenium> retrieved endpoint ${endpointURLString} for sessionId=${sessionId}`);
|
238
|
+
endpointURL = new URL(endpointURLString);
|
239
|
+
if (endpointURL.hostname === "localhost" || endpointURL.hostname === "127.0.0.1") {
|
240
|
+
const sessionInfoUrl = new URL(hubUrl).origin + "/grid/api/testsession?session=" + sessionId;
|
241
|
+
try {
|
242
|
+
const sessionResponse = await (0, import_network.fetchData)(progress, {
|
243
|
+
url: sessionInfoUrl,
|
244
|
+
method: "GET",
|
245
|
+
headers
|
246
|
+
}, seleniumErrorHandler);
|
247
|
+
const proxyId = JSON.parse(sessionResponse).proxyId;
|
248
|
+
endpointURL.hostname = new URL(proxyId).hostname;
|
249
|
+
progress.log(`<selenium> resolved endpoint ip ${endpointURL.toString()} for sessionId=${sessionId}`);
|
250
|
+
} catch (e) {
|
251
|
+
progress.log(`<selenium> unable to resolve endpoint ip for sessionId=${sessionId}, running in standalone?`);
|
252
|
+
}
|
253
|
+
}
|
254
|
+
}
|
255
|
+
return await this._connectOverCDPInternal(progress, endpointURL.toString(), {
|
256
|
+
...options,
|
257
|
+
headers: (0, import_utils.headersObjectToArray)(headers)
|
258
|
+
}, disconnectFromSelenium);
|
259
|
+
} catch (e) {
|
260
|
+
await disconnectFromSelenium();
|
261
|
+
throw e;
|
262
|
+
}
|
263
|
+
}
|
264
|
+
async defaultArgs(options, isPersistent, userDataDir) {
|
265
|
+
const chromeArguments = this._innerDefaultArgs(options);
|
266
|
+
chromeArguments.push(`--user-data-dir=${userDataDir}`);
|
267
|
+
if (options.cdpPort !== void 0)
|
268
|
+
chromeArguments.push(`--remote-debugging-port=${options.cdpPort}`);
|
269
|
+
else
|
270
|
+
chromeArguments.push("--remote-debugging-pipe");
|
271
|
+
if (isPersistent)
|
272
|
+
chromeArguments.push("about:blank");
|
273
|
+
else
|
274
|
+
chromeArguments.push("--no-startup-window");
|
275
|
+
return chromeArguments;
|
276
|
+
}
|
277
|
+
_innerDefaultArgs(options) {
|
278
|
+
const { args = [] } = options;
|
279
|
+
const userDataDirArg = args.find((arg) => arg.startsWith("--user-data-dir"));
|
280
|
+
if (userDataDirArg)
|
281
|
+
throw this._createUserDataDirArgMisuseError("--user-data-dir");
|
282
|
+
if (args.find((arg) => arg.startsWith("--remote-debugging-pipe")))
|
283
|
+
throw new Error("Playwright manages remote debugging connection itself.");
|
284
|
+
if (args.find((arg) => !arg.startsWith("-")))
|
285
|
+
throw new Error("Arguments can not specify page to be opened");
|
286
|
+
const chromeArguments = [...(0, import_chromiumSwitches.chromiumSwitches)(options.assistantMode, options.channel)];
|
287
|
+
if (import_os.default.platform() === "darwin") {
|
288
|
+
chromeArguments.push("--enable-unsafe-swiftshader");
|
289
|
+
}
|
290
|
+
if (options.devtools)
|
291
|
+
chromeArguments.push("--auto-open-devtools-for-tabs");
|
292
|
+
if (options.headless) {
|
293
|
+
chromeArguments.push("--headless");
|
294
|
+
chromeArguments.push(
|
295
|
+
"--hide-scrollbars",
|
296
|
+
"--mute-audio",
|
297
|
+
"--blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4"
|
298
|
+
);
|
299
|
+
}
|
300
|
+
if (options.chromiumSandbox !== true)
|
301
|
+
chromeArguments.push("--no-sandbox");
|
302
|
+
const proxy = options.proxyOverride || options.proxy;
|
303
|
+
if (proxy) {
|
304
|
+
const proxyURL = new URL(proxy.server);
|
305
|
+
const isSocks = proxyURL.protocol === "socks5:";
|
306
|
+
if (isSocks && !options.socksProxyPort) {
|
307
|
+
chromeArguments.push(`--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE ${proxyURL.hostname}"`);
|
308
|
+
}
|
309
|
+
chromeArguments.push(`--proxy-server=${proxy.server}`);
|
310
|
+
const proxyBypassRules = [];
|
311
|
+
if (options.socksProxyPort)
|
312
|
+
proxyBypassRules.push("<-loopback>");
|
313
|
+
if (proxy.bypass)
|
314
|
+
proxyBypassRules.push(...proxy.bypass.split(",").map((t) => t.trim()).map((t) => t.startsWith(".") ? "*" + t : t));
|
315
|
+
if (!process.env.PLAYWRIGHT_DISABLE_FORCED_CHROMIUM_PROXIED_LOOPBACK && !proxyBypassRules.includes("<-loopback>"))
|
316
|
+
proxyBypassRules.push("<-loopback>");
|
317
|
+
if (proxyBypassRules.length > 0)
|
318
|
+
chromeArguments.push(`--proxy-bypass-list=${proxyBypassRules.join(";")}`);
|
319
|
+
}
|
320
|
+
chromeArguments.push(...args);
|
321
|
+
return chromeArguments;
|
322
|
+
}
|
323
|
+
async waitForReadyState(options, browserLogsCollector) {
|
324
|
+
return waitForReadyState(options, browserLogsCollector);
|
325
|
+
}
|
326
|
+
getExecutableName(options) {
|
327
|
+
if (options.channel)
|
328
|
+
return options.channel;
|
329
|
+
return options.headless ? "chromium-headless-shell" : "chromium";
|
330
|
+
}
|
331
|
+
}
|
332
|
+
async function waitForReadyState(options, browserLogsCollector) {
|
333
|
+
if (options.cdpPort === void 0 && !options.args?.some((a) => a.startsWith("--remote-debugging-port")))
|
334
|
+
return {};
|
335
|
+
const result = new import_manualPromise.ManualPromise();
|
336
|
+
browserLogsCollector.onMessage((message) => {
|
337
|
+
if (message.includes("Failed to create a ProcessSingleton for your profile directory.")) {
|
338
|
+
result.reject(new Error("Failed to create a ProcessSingleton for your profile directory. This usually means that the profile is already in use by another instance of Chromium."));
|
339
|
+
}
|
340
|
+
const match = message.match(/DevTools listening on (.*)/);
|
341
|
+
if (match)
|
342
|
+
result.resolve({ wsEndpoint: match[1] });
|
343
|
+
});
|
344
|
+
return result;
|
345
|
+
}
|
346
|
+
async function urlToWSEndpoint(progress, endpointURL, headers) {
|
347
|
+
if (endpointURL.startsWith("ws"))
|
348
|
+
return endpointURL;
|
349
|
+
progress.log(`<ws preparing> retrieving websocket url from ${endpointURL}`);
|
350
|
+
const url = new URL(endpointURL);
|
351
|
+
if (!url.pathname.endsWith("/"))
|
352
|
+
url.pathname += "/";
|
353
|
+
url.pathname += "json/version/";
|
354
|
+
const httpURL = url.toString();
|
355
|
+
const json = await (0, import_network.fetchData)(
|
356
|
+
progress,
|
357
|
+
{
|
358
|
+
url: httpURL,
|
359
|
+
headers
|
360
|
+
},
|
361
|
+
async (_, resp) => new Error(`Unexpected status ${resp.statusCode} when connecting to ${httpURL}.
|
362
|
+
This does not look like a DevTools server, try connecting via ws://.`)
|
363
|
+
);
|
364
|
+
return JSON.parse(json).webSocketDebuggerUrl;
|
365
|
+
}
|
366
|
+
async function seleniumErrorHandler(params, response) {
|
367
|
+
const body = await streamToString(response);
|
368
|
+
let message = body;
|
369
|
+
try {
|
370
|
+
const json = JSON.parse(body);
|
371
|
+
message = json.value.localizedMessage || json.value.message;
|
372
|
+
} catch (e) {
|
373
|
+
}
|
374
|
+
return new Error(`Error connecting to Selenium at ${params.url}: ${message}`);
|
375
|
+
}
|
376
|
+
function addProtocol(url) {
|
377
|
+
if (!["ws://", "wss://", "http://", "https://"].some((protocol) => url.startsWith(protocol)))
|
378
|
+
return "http://" + url;
|
379
|
+
return url;
|
380
|
+
}
|
381
|
+
function streamToString(stream) {
|
382
|
+
return new Promise((resolve, reject) => {
|
383
|
+
const chunks = [];
|
384
|
+
stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
|
385
|
+
stream.on("error", reject);
|
386
|
+
stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
|
387
|
+
});
|
388
|
+
}
|
389
|
+
function parseSeleniumRemoteParams(env, progress) {
|
390
|
+
try {
|
391
|
+
const parsed = JSON.parse(env.value);
|
392
|
+
progress.log(`<selenium> using additional ${env.name} "${env.value}"`);
|
393
|
+
return parsed;
|
394
|
+
} catch (e) {
|
395
|
+
progress.log(`<selenium> ignoring additional ${env.name} "${env.value}": ${e}`);
|
396
|
+
}
|
397
|
+
}
|
398
|
+
// Annotate the CommonJS export names for ESM import in node:
|
399
|
+
0 && (module.exports = {
|
400
|
+
Chromium,
|
401
|
+
waitForReadyState
|
402
|
+
});
|
@@ -0,0 +1,95 @@
|
|
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 chromiumSwitches_exports = {};
|
20
|
+
__export(chromiumSwitches_exports, {
|
21
|
+
chromiumSwitches: () => chromiumSwitches
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(chromiumSwitches_exports);
|
24
|
+
const disabledFeatures = (assistantMode) => [
|
25
|
+
// See https://github.com/microsoft/playwright/pull/10380
|
26
|
+
"AcceptCHFrame",
|
27
|
+
// See https://github.com/microsoft/playwright/issues/14047
|
28
|
+
"AvoidUnnecessaryBeforeUnloadCheckSync",
|
29
|
+
"DestroyProfileOnBrowserClose",
|
30
|
+
// See https://github.com/microsoft/playwright/pull/13854
|
31
|
+
"DialMediaRouteProvider",
|
32
|
+
"GlobalMediaControls",
|
33
|
+
// See https://github.com/microsoft/playwright/pull/27605
|
34
|
+
"HttpsUpgrades",
|
35
|
+
// Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
|
36
|
+
"LensOverlay",
|
37
|
+
// See https://github.com/microsoft/playwright/pull/8162
|
38
|
+
"MediaRouter",
|
39
|
+
// See https://github.com/microsoft/playwright/issues/28023
|
40
|
+
"PaintHolding",
|
41
|
+
// See https://github.com/microsoft/playwright/issues/32230
|
42
|
+
"ThirdPartyStoragePartitioning",
|
43
|
+
// See https://github.com/microsoft/playwright/issues/16126
|
44
|
+
"Translate",
|
45
|
+
// See https://issues.chromium.org/u/1/issues/435410220
|
46
|
+
"AutoDeElevate",
|
47
|
+
// See https://github.com/microsoft/playwright/issues/37714
|
48
|
+
"RenderDocument",
|
49
|
+
assistantMode ? "AutomationControlled" : ""
|
50
|
+
].filter(Boolean);
|
51
|
+
const chromiumSwitches = (assistantMode, channel) => [
|
52
|
+
"--disable-field-trial-config",
|
53
|
+
// https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
|
54
|
+
"--disable-background-networking",
|
55
|
+
"--disable-background-timer-throttling",
|
56
|
+
"--disable-backgrounding-occluded-windows",
|
57
|
+
"--disable-back-forward-cache",
|
58
|
+
// Avoids surprises like main request not being intercepted during page.goBack().
|
59
|
+
"--disable-breakpad",
|
60
|
+
"--disable-client-side-phishing-detection",
|
61
|
+
"--disable-component-extensions-with-background-pages",
|
62
|
+
"--disable-component-update",
|
63
|
+
// Avoids unneeded network activity after startup.
|
64
|
+
"--no-default-browser-check",
|
65
|
+
"--disable-default-apps",
|
66
|
+
"--disable-dev-shm-usage",
|
67
|
+
"--disable-extensions",
|
68
|
+
"--disable-features=" + disabledFeatures(assistantMode).join(","),
|
69
|
+
process.env.PLAYWRIGHT_LEGACY_SCREENSHOT ? "" : "--enable-features=CDPScreenshotNewSurface",
|
70
|
+
"--allow-pre-commit-input",
|
71
|
+
"--disable-hang-monitor",
|
72
|
+
"--disable-ipc-flooding-protection",
|
73
|
+
"--disable-popup-blocking",
|
74
|
+
"--disable-prompt-on-repost",
|
75
|
+
"--disable-renderer-backgrounding",
|
76
|
+
"--force-color-profile=srgb",
|
77
|
+
"--metrics-recording-only",
|
78
|
+
"--no-first-run",
|
79
|
+
"--password-store=basic",
|
80
|
+
"--use-mock-keychain",
|
81
|
+
// See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
|
82
|
+
"--no-service-autorun",
|
83
|
+
"--export-tagged-pdf",
|
84
|
+
// https://chromium-review.googlesource.com/c/chromium/src/+/4853540
|
85
|
+
"--disable-search-engine-choice-screen",
|
86
|
+
// https://issues.chromium.org/41491762
|
87
|
+
"--unsafely-disable-devtools-self-xss-warnings",
|
88
|
+
// Edge can potentially restart on Windows (msRelaunchNoCompatLayer) which looses its file descriptors (stdout/stderr) and CDP (3/4). Disable until fixed upstream.
|
89
|
+
"--edge-skip-compat-layer-relaunch",
|
90
|
+
assistantMode ? "" : "--enable-automation"
|
91
|
+
].filter(Boolean);
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
93
|
+
0 && (module.exports = {
|
94
|
+
chromiumSwitches
|
95
|
+
});
|