@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,371 @@
|
|
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 dependencies_exports = {};
|
30
|
+
__export(dependencies_exports, {
|
31
|
+
dockerVersion: () => dockerVersion,
|
32
|
+
installDependenciesLinux: () => installDependenciesLinux,
|
33
|
+
installDependenciesWindows: () => installDependenciesWindows,
|
34
|
+
readDockerVersionSync: () => readDockerVersionSync,
|
35
|
+
transformCommandsForRoot: () => transformCommandsForRoot,
|
36
|
+
validateDependenciesLinux: () => validateDependenciesLinux,
|
37
|
+
validateDependenciesWindows: () => validateDependenciesWindows,
|
38
|
+
writeDockerVersion: () => writeDockerVersion
|
39
|
+
});
|
40
|
+
module.exports = __toCommonJS(dependencies_exports);
|
41
|
+
var childProcess = __toESM(require("child_process"));
|
42
|
+
var import_fs = __toESM(require("fs"));
|
43
|
+
var import_os = __toESM(require("os"));
|
44
|
+
var import_path = __toESM(require("path"));
|
45
|
+
var import_nativeDeps = require("./nativeDeps");
|
46
|
+
var import_ascii = require("../utils/ascii");
|
47
|
+
var import_hostPlatform = require("../utils/hostPlatform");
|
48
|
+
var import_spawnAsync = require("../utils/spawnAsync");
|
49
|
+
var import_userAgent = require("../utils/userAgent");
|
50
|
+
var import__ = require(".");
|
51
|
+
const BIN_DIRECTORY = import_path.default.join(__dirname, "..", "..", "..", "bin");
|
52
|
+
const languageBindingVersion = process.env.PW_CLI_DISPLAY_VERSION || require("../../../package.json").version;
|
53
|
+
const dockerVersionFilePath = "/ms-playwright/.docker-info";
|
54
|
+
async function writeDockerVersion(dockerImageNameTemplate) {
|
55
|
+
await import_fs.default.promises.mkdir(import_path.default.dirname(dockerVersionFilePath), { recursive: true });
|
56
|
+
await import_fs.default.promises.writeFile(dockerVersionFilePath, JSON.stringify(dockerVersion(dockerImageNameTemplate), null, 2), "utf8");
|
57
|
+
await import_fs.default.promises.chmod(dockerVersionFilePath, 511);
|
58
|
+
}
|
59
|
+
function dockerVersion(dockerImageNameTemplate) {
|
60
|
+
return {
|
61
|
+
driverVersion: languageBindingVersion,
|
62
|
+
dockerImageName: dockerImageNameTemplate.replace("%version%", languageBindingVersion)
|
63
|
+
};
|
64
|
+
}
|
65
|
+
function readDockerVersionSync() {
|
66
|
+
try {
|
67
|
+
const data = JSON.parse(import_fs.default.readFileSync(dockerVersionFilePath, "utf8"));
|
68
|
+
return {
|
69
|
+
...data,
|
70
|
+
dockerImageNameTemplate: data.dockerImageName.replace(data.driverVersion, "%version%")
|
71
|
+
};
|
72
|
+
} catch (e) {
|
73
|
+
return null;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
const checkExecutable = (filePath) => {
|
77
|
+
if (process.platform === "win32")
|
78
|
+
return filePath.endsWith(".exe");
|
79
|
+
return import_fs.default.promises.access(filePath, import_fs.default.constants.X_OK).then(() => true).catch(() => false);
|
80
|
+
};
|
81
|
+
function isSupportedWindowsVersion() {
|
82
|
+
if (import_os.default.platform() !== "win32" || import_os.default.arch() !== "x64")
|
83
|
+
return false;
|
84
|
+
const [major, minor] = import_os.default.release().split(".").map((token) => parseInt(token, 10));
|
85
|
+
return major > 6 || major === 6 && minor > 1;
|
86
|
+
}
|
87
|
+
async function installDependenciesWindows(targets, dryRun) {
|
88
|
+
if (targets.has("chromium")) {
|
89
|
+
const command = "powershell.exe";
|
90
|
+
const args = ["-ExecutionPolicy", "Bypass", "-File", import_path.default.join(BIN_DIRECTORY, "install_media_pack.ps1")];
|
91
|
+
if (dryRun) {
|
92
|
+
console.log(`${command} ${quoteProcessArgs(args).join(" ")}`);
|
93
|
+
return;
|
94
|
+
}
|
95
|
+
const { code } = await (0, import_spawnAsync.spawnAsync)(command, args, { cwd: BIN_DIRECTORY, stdio: "inherit" });
|
96
|
+
if (code !== 0)
|
97
|
+
throw new Error("Failed to install windows dependencies!");
|
98
|
+
}
|
99
|
+
}
|
100
|
+
async function installDependenciesLinux(targets, dryRun) {
|
101
|
+
const libraries = [];
|
102
|
+
const platform = import_hostPlatform.hostPlatform;
|
103
|
+
if (!import_hostPlatform.isOfficiallySupportedPlatform)
|
104
|
+
console.warn(`BEWARE: your OS is not officially supported by Playwright; installing dependencies for ${platform} as a fallback.`);
|
105
|
+
for (const target of targets) {
|
106
|
+
const info = import_nativeDeps.deps[platform];
|
107
|
+
if (!info) {
|
108
|
+
console.warn(`Cannot install dependencies for ${platform} with Playwright ${(0, import_userAgent.getPlaywrightVersion)()}!`);
|
109
|
+
return;
|
110
|
+
}
|
111
|
+
libraries.push(...info[target]);
|
112
|
+
}
|
113
|
+
const uniqueLibraries = Array.from(new Set(libraries));
|
114
|
+
if (!dryRun)
|
115
|
+
console.log(`Installing dependencies...`);
|
116
|
+
const commands = [];
|
117
|
+
commands.push("apt-get update");
|
118
|
+
commands.push([
|
119
|
+
"apt-get",
|
120
|
+
"install",
|
121
|
+
"-y",
|
122
|
+
"--no-install-recommends",
|
123
|
+
...uniqueLibraries
|
124
|
+
].join(" "));
|
125
|
+
const { command, args, elevatedPermissions } = await transformCommandsForRoot(commands);
|
126
|
+
if (dryRun) {
|
127
|
+
console.log(`${command} ${quoteProcessArgs(args).join(" ")}`);
|
128
|
+
return;
|
129
|
+
}
|
130
|
+
if (elevatedPermissions)
|
131
|
+
console.log("Switching to root user to install dependencies...");
|
132
|
+
const child = childProcess.spawn(command, args, { stdio: "inherit" });
|
133
|
+
await new Promise((resolve, reject) => {
|
134
|
+
child.on("exit", (code) => code === 0 ? resolve() : reject(new Error(`Installation process exited with code: ${code}`)));
|
135
|
+
child.on("error", reject);
|
136
|
+
});
|
137
|
+
}
|
138
|
+
async function validateDependenciesWindows(sdkLanguage, windowsExeAndDllDirectories) {
|
139
|
+
const directoryPaths = windowsExeAndDllDirectories;
|
140
|
+
const lddPaths = [];
|
141
|
+
for (const directoryPath of directoryPaths)
|
142
|
+
lddPaths.push(...await executablesOrSharedLibraries(directoryPath));
|
143
|
+
const allMissingDeps = await Promise.all(lddPaths.map((lddPath) => missingFileDependenciesWindows(sdkLanguage, lddPath)));
|
144
|
+
const missingDeps = /* @__PURE__ */ new Set();
|
145
|
+
for (const deps2 of allMissingDeps) {
|
146
|
+
for (const dep of deps2)
|
147
|
+
missingDeps.add(dep);
|
148
|
+
}
|
149
|
+
if (!missingDeps.size)
|
150
|
+
return;
|
151
|
+
let isCrtMissing = false;
|
152
|
+
let isMediaFoundationMissing = false;
|
153
|
+
for (const dep of missingDeps) {
|
154
|
+
if (dep.startsWith("api-ms-win-crt") || dep === "vcruntime140.dll" || dep === "vcruntime140_1.dll" || dep === "msvcp140.dll")
|
155
|
+
isCrtMissing = true;
|
156
|
+
else if (dep === "mf.dll" || dep === "mfplat.dll" || dep === "msmpeg2vdec.dll" || dep === "evr.dll" || dep === "avrt.dll")
|
157
|
+
isMediaFoundationMissing = true;
|
158
|
+
}
|
159
|
+
const details = [];
|
160
|
+
if (isCrtMissing) {
|
161
|
+
details.push(
|
162
|
+
`Some of the Universal C Runtime files cannot be found on the system. You can fix`,
|
163
|
+
`that by installing Microsoft Visual C++ Redistributable for Visual Studio from:`,
|
164
|
+
`https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads`,
|
165
|
+
``
|
166
|
+
);
|
167
|
+
}
|
168
|
+
if (isMediaFoundationMissing) {
|
169
|
+
details.push(
|
170
|
+
`Some of the Media Foundation files cannot be found on the system. If you are`,
|
171
|
+
`on Windows Server try fixing this by running the following command in PowerShell`,
|
172
|
+
`as Administrator:`,
|
173
|
+
``,
|
174
|
+
` Install-WindowsFeature Server-Media-Foundation`,
|
175
|
+
``,
|
176
|
+
`For Windows N editions visit:`,
|
177
|
+
`https://support.microsoft.com/en-us/help/3145500/media-feature-pack-list-for-windows-n-editions`,
|
178
|
+
``
|
179
|
+
);
|
180
|
+
}
|
181
|
+
details.push(
|
182
|
+
`Full list of missing libraries:`,
|
183
|
+
` ${[...missingDeps].join("\n ")}`,
|
184
|
+
``
|
185
|
+
);
|
186
|
+
const message = `Host system is missing dependencies!
|
187
|
+
|
188
|
+
${details.join("\n")}`;
|
189
|
+
if (isSupportedWindowsVersion()) {
|
190
|
+
throw new Error(message);
|
191
|
+
} else {
|
192
|
+
console.warn(`WARNING: running on unsupported windows version!`);
|
193
|
+
console.warn(message);
|
194
|
+
}
|
195
|
+
}
|
196
|
+
async function validateDependenciesLinux(sdkLanguage, linuxLddDirectories, dlOpenLibraries) {
|
197
|
+
const directoryPaths = linuxLddDirectories;
|
198
|
+
const lddPaths = [];
|
199
|
+
for (const directoryPath of directoryPaths)
|
200
|
+
lddPaths.push(...await executablesOrSharedLibraries(directoryPath));
|
201
|
+
const missingDepsPerFile = await Promise.all(lddPaths.map((lddPath) => missingFileDependencies(lddPath, directoryPaths)));
|
202
|
+
const missingDeps = /* @__PURE__ */ new Set();
|
203
|
+
for (const deps2 of missingDepsPerFile) {
|
204
|
+
for (const dep of deps2)
|
205
|
+
missingDeps.add(dep);
|
206
|
+
}
|
207
|
+
for (const dep of await missingDLOPENLibraries(dlOpenLibraries))
|
208
|
+
missingDeps.add(dep);
|
209
|
+
if (!missingDeps.size)
|
210
|
+
return;
|
211
|
+
const allMissingDeps = new Set(missingDeps);
|
212
|
+
const missingPackages = /* @__PURE__ */ new Set();
|
213
|
+
const libraryToPackageNameMapping = import_nativeDeps.deps[import_hostPlatform.hostPlatform] ? {
|
214
|
+
...import_nativeDeps.deps[import_hostPlatform.hostPlatform]?.lib2package || {},
|
215
|
+
...MANUAL_LIBRARY_TO_PACKAGE_NAME_UBUNTU
|
216
|
+
} : {};
|
217
|
+
for (const missingDep of missingDeps) {
|
218
|
+
const packageName = libraryToPackageNameMapping[missingDep];
|
219
|
+
if (packageName) {
|
220
|
+
missingPackages.add(packageName);
|
221
|
+
missingDeps.delete(missingDep);
|
222
|
+
}
|
223
|
+
}
|
224
|
+
const maybeSudo = process.getuid?.() && import_os.default.platform() !== "win32" ? "sudo " : "";
|
225
|
+
const dockerInfo = readDockerVersionSync();
|
226
|
+
const errorLines = [
|
227
|
+
`Host system is missing dependencies to run browsers.`
|
228
|
+
];
|
229
|
+
if (dockerInfo && !dockerInfo.driverVersion.startsWith((0, import_userAgent.getPlaywrightVersion)(
|
230
|
+
true
|
231
|
+
/* majorMinorOnly */
|
232
|
+
) + ".")) {
|
233
|
+
const pwVersion = (0, import_userAgent.getPlaywrightVersion)();
|
234
|
+
const requiredDockerImage = dockerInfo.dockerImageName.replace(dockerInfo.driverVersion, pwVersion);
|
235
|
+
errorLines.push(...[
|
236
|
+
`This is most likely due to Docker image version not matching Playwright version:`,
|
237
|
+
`- Playwright : ${pwVersion}`,
|
238
|
+
`- Docker image: ${dockerInfo.driverVersion}`,
|
239
|
+
``,
|
240
|
+
`Either:`,
|
241
|
+
`- (recommended) use Docker image "${requiredDockerImage}"`,
|
242
|
+
`- (alternative 1) run the following command inside Docker to install missing dependencies:`,
|
243
|
+
``,
|
244
|
+
` ${maybeSudo}${(0, import__.buildPlaywrightCLICommand)(sdkLanguage, "install-deps")}`,
|
245
|
+
``,
|
246
|
+
`- (alternative 2) use apt inside Docker:`,
|
247
|
+
``,
|
248
|
+
` ${maybeSudo}apt-get install ${[...missingPackages].join("\\\n ")}`,
|
249
|
+
``,
|
250
|
+
`<3 Playwright Team`
|
251
|
+
]);
|
252
|
+
} else if (missingPackages.size && !missingDeps.size) {
|
253
|
+
errorLines.push(...[
|
254
|
+
`Please install them with the following command:`,
|
255
|
+
``,
|
256
|
+
` ${maybeSudo}${(0, import__.buildPlaywrightCLICommand)(sdkLanguage, "install-deps")}`,
|
257
|
+
``,
|
258
|
+
`Alternatively, use apt:`,
|
259
|
+
` ${maybeSudo}apt-get install ${[...missingPackages].join("\\\n ")}`,
|
260
|
+
``,
|
261
|
+
`<3 Playwright Team`
|
262
|
+
]);
|
263
|
+
} else {
|
264
|
+
errorLines.push(...[
|
265
|
+
`Missing libraries:`,
|
266
|
+
...[...allMissingDeps].map((dep) => " " + dep)
|
267
|
+
]);
|
268
|
+
}
|
269
|
+
throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)(errorLines.join("\n"), 1));
|
270
|
+
}
|
271
|
+
function isSharedLib(basename) {
|
272
|
+
switch (import_os.default.platform()) {
|
273
|
+
case "linux":
|
274
|
+
return basename.endsWith(".so") || basename.includes(".so.");
|
275
|
+
case "win32":
|
276
|
+
return basename.endsWith(".dll");
|
277
|
+
default:
|
278
|
+
return false;
|
279
|
+
}
|
280
|
+
}
|
281
|
+
async function executablesOrSharedLibraries(directoryPath) {
|
282
|
+
if (!import_fs.default.existsSync(directoryPath))
|
283
|
+
return [];
|
284
|
+
const allPaths = (await import_fs.default.promises.readdir(directoryPath)).map((file) => import_path.default.resolve(directoryPath, file));
|
285
|
+
const allStats = await Promise.all(allPaths.map((aPath) => import_fs.default.promises.stat(aPath)));
|
286
|
+
const filePaths = allPaths.filter((aPath, index) => allStats[index].isFile());
|
287
|
+
const executablersOrLibraries = (await Promise.all(filePaths.map(async (filePath) => {
|
288
|
+
const basename = import_path.default.basename(filePath).toLowerCase();
|
289
|
+
if (isSharedLib(basename))
|
290
|
+
return filePath;
|
291
|
+
if (await checkExecutable(filePath))
|
292
|
+
return filePath;
|
293
|
+
return false;
|
294
|
+
}))).filter(Boolean);
|
295
|
+
return executablersOrLibraries;
|
296
|
+
}
|
297
|
+
async function missingFileDependenciesWindows(sdkLanguage, filePath) {
|
298
|
+
const executable = import__.registry.findExecutable("winldd").executablePathOrDie(sdkLanguage);
|
299
|
+
const dirname = import_path.default.dirname(filePath);
|
300
|
+
const { stdout, code } = await (0, import_spawnAsync.spawnAsync)(executable, [filePath], {
|
301
|
+
cwd: dirname,
|
302
|
+
env: {
|
303
|
+
...process.env,
|
304
|
+
LD_LIBRARY_PATH: process.env.LD_LIBRARY_PATH ? `${process.env.LD_LIBRARY_PATH}:${dirname}` : dirname
|
305
|
+
}
|
306
|
+
});
|
307
|
+
if (code !== 0)
|
308
|
+
return [];
|
309
|
+
const missingDeps = stdout.split("\n").map((line) => line.trim()).filter((line) => line.endsWith("not found") && line.includes("=>")).map((line) => line.split("=>")[0].trim().toLowerCase());
|
310
|
+
return missingDeps;
|
311
|
+
}
|
312
|
+
async function missingFileDependencies(filePath, extraLDPaths) {
|
313
|
+
const dirname = import_path.default.dirname(filePath);
|
314
|
+
let LD_LIBRARY_PATH = extraLDPaths.join(":");
|
315
|
+
if (process.env.LD_LIBRARY_PATH)
|
316
|
+
LD_LIBRARY_PATH = `${process.env.LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}`;
|
317
|
+
const { stdout, code } = await (0, import_spawnAsync.spawnAsync)("ldd", [filePath], {
|
318
|
+
cwd: dirname,
|
319
|
+
env: {
|
320
|
+
...process.env,
|
321
|
+
LD_LIBRARY_PATH
|
322
|
+
}
|
323
|
+
});
|
324
|
+
if (code !== 0)
|
325
|
+
return [];
|
326
|
+
const missingDeps = stdout.split("\n").map((line) => line.trim()).filter((line) => line.endsWith("not found") && line.includes("=>")).map((line) => line.split("=>")[0].trim());
|
327
|
+
return missingDeps;
|
328
|
+
}
|
329
|
+
async function missingDLOPENLibraries(libraries) {
|
330
|
+
if (!libraries.length)
|
331
|
+
return [];
|
332
|
+
const { stdout, code, error } = await (0, import_spawnAsync.spawnAsync)("/sbin/ldconfig", ["-p"], {});
|
333
|
+
if (code !== 0 || error)
|
334
|
+
return [];
|
335
|
+
const isLibraryAvailable = (library) => stdout.toLowerCase().includes(library.toLowerCase());
|
336
|
+
return libraries.filter((library) => !isLibraryAvailable(library));
|
337
|
+
}
|
338
|
+
const MANUAL_LIBRARY_TO_PACKAGE_NAME_UBUNTU = {
|
339
|
+
// libgstlibav.so (the only actual library provided by gstreamer1.0-libav) is not
|
340
|
+
// in the ldconfig cache, so we detect the actual library required for playing h.264
|
341
|
+
// and if it's missing recommend installing missing gstreamer lib.
|
342
|
+
// gstreamer1.0-libav -> libavcodec57 -> libx264-152
|
343
|
+
"libx264.so": "gstreamer1.0-libav"
|
344
|
+
};
|
345
|
+
function quoteProcessArgs(args) {
|
346
|
+
return args.map((arg) => {
|
347
|
+
if (arg.includes(" "))
|
348
|
+
return `"${arg}"`;
|
349
|
+
return arg;
|
350
|
+
});
|
351
|
+
}
|
352
|
+
async function transformCommandsForRoot(commands) {
|
353
|
+
const isRoot = process.getuid?.() === 0;
|
354
|
+
if (isRoot)
|
355
|
+
return { command: "sh", args: ["-c", `${commands.join("&& ")}`], elevatedPermissions: false };
|
356
|
+
const sudoExists = await (0, import_spawnAsync.spawnAsync)("which", ["sudo"]);
|
357
|
+
if (sudoExists.code === 0)
|
358
|
+
return { command: "sudo", args: ["--", "sh", "-c", `${commands.join("&& ")}`], elevatedPermissions: true };
|
359
|
+
return { command: "su", args: ["root", "-c", `${commands.join("&& ")}`], elevatedPermissions: true };
|
360
|
+
}
|
361
|
+
// Annotate the CommonJS export names for ESM import in node:
|
362
|
+
0 && (module.exports = {
|
363
|
+
dockerVersion,
|
364
|
+
installDependenciesLinux,
|
365
|
+
installDependenciesWindows,
|
366
|
+
readDockerVersionSync,
|
367
|
+
transformCommandsForRoot,
|
368
|
+
validateDependenciesLinux,
|
369
|
+
validateDependenciesWindows,
|
370
|
+
writeDockerVersion
|
371
|
+
});
|