@checkly/playwright-core 1.48.22 → 1.51.11-beta.1
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 +60 -48
- package/bin/reinstall_chrome_beta_linux.sh +10 -8
- package/bin/reinstall_chrome_stable_linux.sh +10 -8
- package/bin/reinstall_msedge_beta_linux.sh +17 -9
- package/bin/reinstall_msedge_dev_linux.sh +17 -9
- package/bin/reinstall_msedge_stable_linux.sh +17 -9
- package/browsers.json +33 -12
- package/index.js +0 -1
- package/lib/androidServerImpl.js +5 -5
- package/lib/browserServerImpl.js +18 -9
- package/lib/checkly/secretsFilter.js +1 -1
- package/lib/cli/driver.js +6 -6
- package/lib/cli/program.js +38 -43
- package/lib/cli/programWithTestStub.js +2 -1
- package/lib/client/android.js +37 -58
- package/lib/client/artifact.js +4 -7
- package/lib/client/browser.js +10 -15
- package/lib/client/browserContext.js +69 -62
- package/lib/client/browserType.js +30 -64
- package/lib/client/channelOwner.js +53 -68
- package/lib/client/clientHelper.js +4 -6
- package/lib/client/clientInstrumentation.js +2 -0
- package/lib/client/clientStackTrace.js +65 -0
- package/lib/client/connection.js +48 -41
- package/lib/client/consoleMessage.js +4 -7
- package/lib/client/electron.js +10 -10
- package/lib/client/elementHandle.js +32 -33
- package/lib/client/errors.js +2 -2
- package/lib/client/eventEmitter.js +5 -8
- package/lib/client/fetch.js +61 -62
- package/lib/client/fileUtils.js +31 -0
- package/lib/client/frame.js +22 -23
- package/lib/client/harRouter.js +7 -9
- package/lib/client/jsHandle.js +3 -4
- package/lib/client/localUtils.js +24 -0
- package/lib/client/locator.js +27 -13
- package/lib/client/network.js +44 -37
- package/lib/client/page.js +50 -41
- package/lib/client/platform.js +71 -0
- package/lib/client/playwright.js +21 -1
- package/lib/client/selectors.js +8 -2
- package/lib/client/stream.js +2 -21
- package/lib/client/timeoutSettings.js +65 -0
- package/lib/client/tracing.js +29 -7
- package/lib/client/video.js +2 -2
- package/lib/client/waiter.js +19 -16
- package/lib/client/webSocket.js +106 -0
- package/lib/client/worker.js +4 -4
- package/lib/client/writableStream.js +2 -21
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/recorderSource.js +7 -0
- package/lib/generated/webSocketMockSource.js +1 -1
- package/lib/inProcessFactory.js +8 -3
- package/lib/outofprocess.js +12 -8
- package/lib/protocol/debug.js +1 -1
- package/lib/protocol/validator.js +77 -11
- package/lib/protocol/validatorPrimitives.js +1 -2
- package/lib/remote/playwrightConnection.js +21 -12
- package/lib/remote/playwrightServer.js +22 -8
- package/lib/server/android/android.js +17 -14
- package/lib/server/android/backendAdb.js +14 -14
- package/lib/server/artifact.js +3 -3
- package/lib/server/bidi/bidiBrowser.js +11 -8
- package/lib/server/bidi/bidiChromium.js +5 -4
- package/lib/server/bidi/bidiConnection.js +1 -3
- package/lib/server/bidi/bidiExecutionContext.js +71 -25
- package/lib/server/bidi/bidiFirefox.js +4 -3
- package/lib/server/bidi/bidiInput.js +11 -12
- package/lib/server/bidi/bidiNetworkManager.js +11 -12
- package/lib/server/bidi/bidiOverCdp.js +2 -2
- package/lib/server/bidi/bidiPage.js +39 -66
- package/lib/server/bidi/third_party/bidiKeyboard.js +9 -7
- package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +60 -55
- package/lib/server/browserType.js +22 -18
- package/lib/server/callLog.js +79 -0
- package/lib/server/chromium/chromium.js +20 -16
- package/lib/server/chromium/chromiumSwitches.js +32 -9
- package/lib/server/chromium/crBrowser.js +25 -24
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crCoverage.js +1 -1
- package/lib/server/chromium/crDevTools.js +1 -1
- package/lib/server/chromium/crDragDrop.js +1 -1
- package/lib/server/chromium/crExecutionContext.js +26 -35
- package/lib/server/chromium/crInput.js +17 -6
- package/lib/server/chromium/crNetworkManager.js +3 -3
- package/lib/server/chromium/crPage.js +43 -55
- package/lib/server/chromium/crPdf.js +1 -1
- package/lib/server/chromium/crProtocolHelper.js +3 -3
- package/lib/server/chromium/crServiceWorker.js +2 -2
- package/lib/server/chromium/videoRecorder.js +2 -2
- package/lib/server/clock.js +1 -1
- package/lib/server/codegen/csharp.js +21 -16
- package/lib/server/codegen/java.js +17 -9
- package/lib/server/codegen/javascript.js +37 -7
- package/lib/server/codegen/jsonl.js +1 -1
- package/lib/server/codegen/languages.js +2 -2
- package/lib/server/codegen/python.js +14 -17
- package/lib/server/debugController.js +23 -45
- package/lib/server/debugger.js +1 -1
- package/lib/server/deviceDescriptors.js +1 -1
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dispatchers/androidDispatcher.js +14 -3
- package/lib/server/dispatchers/artifactDispatcher.js +3 -3
- package/lib/server/dispatchers/browserContextDispatcher.js +21 -32
- package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
- package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
- package/lib/server/dispatchers/debugControllerDispatcher.js +5 -3
- package/lib/server/dispatchers/dispatcher.js +27 -25
- package/lib/server/dispatchers/electronDispatcher.js +3 -3
- package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
- package/lib/server/dispatchers/frameDispatcher.js +9 -3
- package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
- package/lib/server/dispatchers/localUtilsDispatcher.js +25 -291
- package/lib/server/dispatchers/networkDispatchers.js +3 -3
- package/lib/server/dispatchers/pageDispatcher.js +10 -8
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/streamDispatcher.js +4 -3
- package/lib/server/dispatchers/tracingDispatcher.js +10 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +18 -18
- package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
- package/lib/server/dom.js +102 -48
- package/lib/server/download.js +1 -1
- package/lib/server/electron/electron.js +17 -16
- package/lib/server/errors.js +1 -1
- package/lib/server/fetch.js +49 -33
- package/lib/server/fileUploadUtils.js +7 -4
- package/lib/server/firefox/ffBrowser.js +17 -9
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +25 -29
- package/lib/server/firefox/ffInput.js +15 -4
- package/lib/server/firefox/ffNetworkManager.js +3 -3
- package/lib/server/firefox/ffPage.js +29 -50
- package/lib/server/firefox/firefox.js +7 -9
- package/lib/server/frameSelectors.js +1 -1
- package/lib/server/frames.js +65 -55
- package/lib/server/har/harRecorder.js +4 -4
- package/lib/server/har/harTracer.js +8 -9
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +2 -2
- package/lib/server/index.js +1 -14
- package/lib/server/input.js +3 -4
- package/lib/server/instrumentation.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
- package/lib/server/javascript.js +26 -33
- package/lib/server/launchApp.js +7 -7
- package/lib/server/localUtils.js +203 -0
- package/lib/server/network.js +5 -5
- package/lib/server/page.js +76 -37
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +5 -5
- package/lib/server/progress.js +1 -4
- package/lib/server/protocolError.js +1 -1
- package/lib/server/recorder/chat.js +177 -0
- package/lib/server/recorder/codeGenerator.js +154 -0
- package/lib/server/recorder/contextRecorder.js +9 -18
- package/lib/server/recorder/csharp.js +311 -0
- package/lib/server/recorder/java.js +249 -0
- package/lib/server/recorder/javascript.js +230 -0
- package/lib/server/recorder/jsonl.js +48 -0
- package/lib/server/recorder/language.js +45 -0
- package/lib/server/recorder/python.js +276 -0
- package/lib/server/recorder/recorderActions.js +6 -0
- package/lib/server/recorder/recorderApp.js +25 -28
- package/lib/server/recorder/recorderCollection.js +9 -21
- package/lib/server/recorder/recorderInTraceViewer.js +1 -1
- package/lib/server/recorder/recorderRunner.js +7 -3
- package/lib/server/recorder/recorderUtils.js +5 -28
- package/lib/server/recorder/throttledFile.js +3 -4
- package/lib/server/recorder/utils.js +46 -0
- package/lib/server/recorder.js +83 -43
- package/lib/server/registry/browserFetcher.js +10 -8
- package/lib/server/registry/dependencies.js +20 -20
- package/lib/server/registry/index.js +215 -61
- package/lib/server/registry/nativeDeps.js +10 -4
- package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
- package/lib/server/screenshotter.js +1 -1
- package/lib/server/selectors.js +3 -3
- package/lib/server/socksClientCertificatesInterceptor.js +8 -8
- package/lib/server/socksInterceptor.js +8 -5
- package/lib/server/storageScript.js +160 -0
- package/lib/server/timeoutSettings.js +74 -0
- package/lib/server/trace/recorder/snapshotter.js +10 -20
- package/lib/server/trace/recorder/snapshotterInjected.js +26 -1
- package/lib/server/trace/recorder/tracing.js +108 -45
- package/lib/server/trace/test/inMemorySnapshotter.js +6 -6
- package/lib/server/trace/viewer/traceViewer.js +21 -7
- package/lib/server/transport.js +3 -2
- package/lib/server/utils/ascii.js +31 -0
- package/lib/server/utils/comparators.js +159 -0
- package/lib/server/utils/crypto.js +171 -0
- package/lib/server/utils/debug.js +38 -0
- package/lib/server/utils/debugLogger.js +93 -0
- package/lib/server/utils/env.js +53 -0
- package/lib/server/utils/eventsHelper.js +38 -0
- package/lib/server/utils/expectUtils.js +33 -0
- package/lib/server/utils/fileUtils.js +204 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +145 -0
- package/lib/server/utils/httpServer.js +233 -0
- package/lib/server/utils/image_tools/colorUtils.js +98 -0
- package/lib/server/utils/image_tools/compare.js +108 -0
- package/lib/server/utils/image_tools/imageChannel.js +70 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +58 -0
- package/lib/server/utils/network.js +160 -0
- package/lib/server/utils/nodePlatform.js +140 -0
- package/lib/server/utils/pipeTransport.js +82 -0
- package/lib/server/utils/processLauncher.js +248 -0
- package/lib/server/utils/profiler.js +52 -0
- package/lib/server/utils/socksProxy.js +570 -0
- package/lib/server/utils/spawnAsync.js +45 -0
- package/lib/server/utils/task.js +58 -0
- package/lib/server/utils/userAgent.js +91 -0
- package/lib/server/utils/wsServer.js +128 -0
- package/lib/server/utils/zipFile.js +75 -0
- package/lib/server/utils/zones.js +54 -0
- package/lib/server/webkit/webkit.js +4 -4
- package/lib/server/webkit/wkBrowser.js +10 -10
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +26 -30
- package/lib/server/webkit/wkInput.js +17 -7
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +80 -66
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +2 -2
- package/lib/utils/fileUtils.js +1 -1
- package/lib/utils/glob.js +84 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
- package/lib/utils/isomorphic/assert.js +25 -0
- package/lib/utils/isomorphic/colors.js +65 -0
- package/lib/utils/isomorphic/cssParser.js +5 -5
- package/lib/utils/isomorphic/headers.js +52 -0
- package/lib/utils/isomorphic/locatorGenerators.js +38 -8
- package/lib/utils/isomorphic/locatorParser.js +19 -13
- package/lib/utils/isomorphic/manualPromise.js +107 -0
- package/lib/utils/isomorphic/mimeType.js +11 -3
- package/lib/utils/isomorphic/multimap.js +73 -0
- package/lib/utils/isomorphic/rtti.js +41 -0
- package/lib/utils/isomorphic/semaphore.js +51 -0
- package/lib/utils/isomorphic/stackTrace.js +169 -0
- package/lib/utils/isomorphic/stringUtils.js +31 -1
- package/lib/utils/isomorphic/time.js +25 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/traceUtils.js +23 -0
- package/lib/utils/isomorphic/types.js +5 -0
- package/lib/utils/isomorphic/urlMatch.js +7 -5
- package/lib/utils/mimeType.js +30 -0
- package/lib/utils/stackTrace.js +1 -1
- package/lib/utils.js +447 -0
- package/lib/utilsBundle.js +4 -29
- package/lib/utilsBundleImpl/index.js +188 -33
- package/lib/vite/htmlReport/index.html +20 -17
- package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
- package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +1 -0
- package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +235 -0
- package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +25 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +1 -0
- package/lib/vite/traceViewer/{embedded.BkvOrz5Z.js → embedded.DpNPH6mk.js} +2 -2
- package/lib/vite/traceViewer/embedded.html +6 -6
- package/lib/vite/traceViewer/index.CuE3SYGw.js +2 -0
- package/lib/vite/traceViewer/index.html +27 -9
- package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +1 -0
- package/lib/vite/traceViewer/{recorder.DNMfnSiu.js → recorder.BD-uZJs7.js} +2 -2
- package/lib/vite/traceViewer/recorder.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.DHrNgddz.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +8 -7
- package/lib/vite/traceViewer/workbench.B9vIAzH9.css +1 -0
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +820 -153
- package/types/types.d.ts +285 -82
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +0 -24
- package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
- package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-BuJ3wAX_.js +0 -64
- package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +0 -64
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-DdmJ9AJV.js +0 -9
- package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +0 -9
- package/lib/vite/traceViewer/embedded.DInvAijy.js +0 -2
- package/lib/vite/traceViewer/index.Dha3cgqs.js +0 -2
- package/lib/vite/traceViewer/index._Iolt-uE.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +0 -1
- package/lib/vite/traceViewer/recorder.DTSaNaly.js +0 -2
- package/lib/vite/traceViewer/uiMode.BM7yhjzl.js +0 -5
- package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +0 -5
- package/lib/vite/traceViewer/workbench.DlsCx8k5.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{embedded.w7WN2u1R.css → embedded.mLhjB5IF.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{recorder.B_SY1GJM.css → recorder.tn0RQdqM.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -8,7 +8,6 @@ exports.browserDirectoryToMarkerFilePath = browserDirectoryToMarkerFilePath;
|
|
|
8
8
|
exports.buildPlaywrightCLICommand = buildPlaywrightCLICommand;
|
|
9
9
|
exports.findChromiumChannel = findChromiumChannel;
|
|
10
10
|
exports.installBrowsersForNpmInstall = installBrowsersForNpmInstall;
|
|
11
|
-
exports.installDefaultBrowsersForNpmInstall = installDefaultBrowsersForNpmInstall;
|
|
12
11
|
exports.registryDirectory = exports.registry = void 0;
|
|
13
12
|
Object.defineProperty(exports, "writeDockerVersion", {
|
|
14
13
|
enumerable: true,
|
|
@@ -16,23 +15,24 @@ Object.defineProperty(exports, "writeDockerVersion", {
|
|
|
16
15
|
return _dependencies.writeDockerVersion;
|
|
17
16
|
}
|
|
18
17
|
});
|
|
19
|
-
var
|
|
18
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
19
|
+
var _os = _interopRequireDefault(require("os"));
|
|
20
20
|
var _path = _interopRequireDefault(require("path"));
|
|
21
21
|
var util = _interopRequireWildcard(require("util"));
|
|
22
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
23
|
-
var _utilsBundle = require("../../utilsBundle");
|
|
24
|
-
var _network = require("../../utils/network");
|
|
25
|
-
var _userAgent = require("../../utils/userAgent");
|
|
26
|
-
var _utils = require("../../utils");
|
|
27
|
-
var _fileUtils = require("../../utils/fileUtils");
|
|
28
|
-
var _hostPlatform = require("../../utils/hostPlatform");
|
|
29
|
-
var _spawnAsync = require("../../utils/spawnAsync");
|
|
30
|
-
var _dependencies = require("./dependencies");
|
|
31
22
|
var _browserFetcher = require("./browserFetcher");
|
|
32
|
-
var
|
|
33
|
-
|
|
23
|
+
var _dependencies = require("./dependencies");
|
|
24
|
+
var _utils = require("../../utils");
|
|
25
|
+
var _ascii = require("../utils/ascii");
|
|
26
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
27
|
+
var _hostPlatform = require("../utils/hostPlatform");
|
|
28
|
+
var _network = require("../utils/network");
|
|
29
|
+
var _spawnAsync = require("../utils/spawnAsync");
|
|
30
|
+
var _userAgent = require("../utils/userAgent");
|
|
31
|
+
var _utilsBundle = require("../../utilsBundle");
|
|
32
|
+
var _fileUtils = require("../utils/fileUtils");
|
|
34
33
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
35
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
34
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
35
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
36
36
|
/**
|
|
37
37
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
38
38
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -52,11 +52,20 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
52
52
|
|
|
53
53
|
const PACKAGE_PATH = _path.default.join(__dirname, '..', '..', '..');
|
|
54
54
|
const BIN_PATH = _path.default.join(__dirname, '..', '..', '..', 'bin');
|
|
55
|
-
const PLAYWRIGHT_CDN_MIRRORS = ['https://playwright.
|
|
55
|
+
const PLAYWRIGHT_CDN_MIRRORS = ['https://cdn.playwright.dev/dbazure/download/playwright',
|
|
56
|
+
// ESRP CDN
|
|
57
|
+
'https://playwright.download.prss.microsoft.com/dbazure/download/playwright',
|
|
58
|
+
// Directly hit ESRP CDN
|
|
59
|
+
'https://cdn.playwright.dev' // Hit the Storage Bucket directly
|
|
60
|
+
];
|
|
56
61
|
if (process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
|
|
57
62
|
for (let i = 0; i < PLAYWRIGHT_CDN_MIRRORS.length; i++) {
|
|
58
63
|
const cdn = PLAYWRIGHT_CDN_MIRRORS[i];
|
|
59
|
-
if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK)
|
|
64
|
+
if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
|
|
65
|
+
const parsedCDN = new URL(cdn);
|
|
66
|
+
parsedCDN.hostname = parsedCDN.hostname + '.does-not-resolve.playwright.dev';
|
|
67
|
+
PLAYWRIGHT_CDN_MIRRORS[i] = parsedCDN.toString();
|
|
68
|
+
}
|
|
60
69
|
}
|
|
61
70
|
}
|
|
62
71
|
const EXECUTABLE_PATHS = {
|
|
@@ -65,6 +74,11 @@ const EXECUTABLE_PATHS = {
|
|
|
65
74
|
'mac': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
|
|
66
75
|
'win': ['chrome-win', 'chrome.exe']
|
|
67
76
|
},
|
|
77
|
+
'chromium-headless-shell': {
|
|
78
|
+
'linux': ['chrome-linux', 'headless_shell'],
|
|
79
|
+
'mac': ['chrome-mac', 'headless_shell'],
|
|
80
|
+
'win': ['chrome-win', 'headless_shell.exe']
|
|
81
|
+
},
|
|
68
82
|
'firefox': {
|
|
69
83
|
'linux': ['firefox', 'firefox'],
|
|
70
84
|
'mac': ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox'],
|
|
@@ -79,6 +93,11 @@ const EXECUTABLE_PATHS = {
|
|
|
79
93
|
'linux': ['ffmpeg-linux'],
|
|
80
94
|
'mac': ['ffmpeg-mac'],
|
|
81
95
|
'win': ['ffmpeg-win64.exe']
|
|
96
|
+
},
|
|
97
|
+
'winldd': {
|
|
98
|
+
'linux': undefined,
|
|
99
|
+
'mac': undefined,
|
|
100
|
+
'win': ['PrintDeps.exe']
|
|
82
101
|
}
|
|
83
102
|
};
|
|
84
103
|
const DOWNLOAD_PATHS = {
|
|
@@ -111,6 +130,35 @@ const DOWNLOAD_PATHS = {
|
|
|
111
130
|
'mac15-arm64': 'builds/chromium/%s/chromium-mac-arm64.zip',
|
|
112
131
|
'win64': 'builds/chromium/%s/chromium-win64.zip'
|
|
113
132
|
},
|
|
133
|
+
'chromium-headless-shell': {
|
|
134
|
+
'<unknown>': undefined,
|
|
135
|
+
'ubuntu18.04-x64': undefined,
|
|
136
|
+
'ubuntu20.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
|
|
137
|
+
'ubuntu22.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
|
|
138
|
+
'ubuntu24.04-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
|
|
139
|
+
'ubuntu18.04-arm64': undefined,
|
|
140
|
+
'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
|
|
141
|
+
'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
|
|
142
|
+
'ubuntu24.04-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
|
|
143
|
+
'debian11-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
|
|
144
|
+
'debian11-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
|
|
145
|
+
'debian12-x64': 'builds/chromium/%s/chromium-headless-shell-linux.zip',
|
|
146
|
+
'debian12-arm64': 'builds/chromium/%s/chromium-headless-shell-linux-arm64.zip',
|
|
147
|
+
'mac10.13': undefined,
|
|
148
|
+
'mac10.14': undefined,
|
|
149
|
+
'mac10.15': undefined,
|
|
150
|
+
'mac11': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
|
|
151
|
+
'mac11-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
|
|
152
|
+
'mac12': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
|
|
153
|
+
'mac12-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
|
|
154
|
+
'mac13': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
|
|
155
|
+
'mac13-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
|
|
156
|
+
'mac14': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
|
|
157
|
+
'mac14-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
|
|
158
|
+
'mac15': 'builds/chromium/%s/chromium-headless-shell-mac.zip',
|
|
159
|
+
'mac15-arm64': 'builds/chromium/%s/chromium-headless-shell-mac-arm64.zip',
|
|
160
|
+
'win64': 'builds/chromium/%s/chromium-headless-shell-win64.zip'
|
|
161
|
+
},
|
|
114
162
|
'chromium-tip-of-tree': {
|
|
115
163
|
'<unknown>': undefined,
|
|
116
164
|
'ubuntu18.04-x64': undefined,
|
|
@@ -140,6 +188,35 @@ const DOWNLOAD_PATHS = {
|
|
|
140
188
|
'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac-arm64.zip',
|
|
141
189
|
'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-win64.zip'
|
|
142
190
|
},
|
|
191
|
+
'chromium-tip-of-tree-headless-shell': {
|
|
192
|
+
'<unknown>': undefined,
|
|
193
|
+
'ubuntu18.04-x64': undefined,
|
|
194
|
+
'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
|
|
195
|
+
'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
|
|
196
|
+
'ubuntu24.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
|
|
197
|
+
'ubuntu18.04-arm64': undefined,
|
|
198
|
+
'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
|
|
199
|
+
'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
|
|
200
|
+
'ubuntu24.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
|
|
201
|
+
'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
|
|
202
|
+
'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
|
|
203
|
+
'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux.zip',
|
|
204
|
+
'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-linux-arm64.zip',
|
|
205
|
+
'mac10.13': undefined,
|
|
206
|
+
'mac10.14': undefined,
|
|
207
|
+
'mac10.15': undefined,
|
|
208
|
+
'mac11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
|
|
209
|
+
'mac11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
|
|
210
|
+
'mac12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
|
|
211
|
+
'mac12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
|
|
212
|
+
'mac13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
|
|
213
|
+
'mac13-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
|
|
214
|
+
'mac14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
|
|
215
|
+
'mac14-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
|
|
216
|
+
'mac15': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac.zip',
|
|
217
|
+
'mac15-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-mac-arm64.zip',
|
|
218
|
+
'win64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-headless-shell-win64.zip'
|
|
219
|
+
},
|
|
143
220
|
'firefox': {
|
|
144
221
|
'<unknown>': undefined,
|
|
145
222
|
'ubuntu18.04-x64': undefined,
|
|
@@ -256,6 +333,35 @@ const DOWNLOAD_PATHS = {
|
|
|
256
333
|
'mac15-arm64': 'builds/ffmpeg/%s/ffmpeg-mac-arm64.zip',
|
|
257
334
|
'win64': 'builds/ffmpeg/%s/ffmpeg-win64.zip'
|
|
258
335
|
},
|
|
336
|
+
'winldd': {
|
|
337
|
+
'<unknown>': undefined,
|
|
338
|
+
'ubuntu18.04-x64': undefined,
|
|
339
|
+
'ubuntu20.04-x64': undefined,
|
|
340
|
+
'ubuntu22.04-x64': undefined,
|
|
341
|
+
'ubuntu24.04-x64': undefined,
|
|
342
|
+
'ubuntu18.04-arm64': undefined,
|
|
343
|
+
'ubuntu20.04-arm64': undefined,
|
|
344
|
+
'ubuntu22.04-arm64': undefined,
|
|
345
|
+
'ubuntu24.04-arm64': undefined,
|
|
346
|
+
'debian11-x64': undefined,
|
|
347
|
+
'debian11-arm64': undefined,
|
|
348
|
+
'debian12-x64': undefined,
|
|
349
|
+
'debian12-arm64': undefined,
|
|
350
|
+
'mac10.13': undefined,
|
|
351
|
+
'mac10.14': undefined,
|
|
352
|
+
'mac10.15': undefined,
|
|
353
|
+
'mac11': undefined,
|
|
354
|
+
'mac11-arm64': undefined,
|
|
355
|
+
'mac12': undefined,
|
|
356
|
+
'mac12-arm64': undefined,
|
|
357
|
+
'mac13': undefined,
|
|
358
|
+
'mac13-arm64': undefined,
|
|
359
|
+
'mac14': undefined,
|
|
360
|
+
'mac14-arm64': undefined,
|
|
361
|
+
'mac15': undefined,
|
|
362
|
+
'mac15-arm64': undefined,
|
|
363
|
+
'win64': 'builds/winldd/%s/winldd-win64.zip'
|
|
364
|
+
},
|
|
259
365
|
'android': {
|
|
260
366
|
'<unknown>': 'builds/android/%s/android.zip',
|
|
261
367
|
'ubuntu18.04-x64': undefined,
|
|
@@ -297,7 +403,7 @@ const registryDirectory = exports.registryDirectory = (() => {
|
|
|
297
403
|
result = envDefined;
|
|
298
404
|
} else {
|
|
299
405
|
let cacheDirectory;
|
|
300
|
-
if (process.platform === 'linux') cacheDirectory = process.env.XDG_CACHE_HOME || _path.default.join(
|
|
406
|
+
if (process.platform === 'linux') cacheDirectory = process.env.XDG_CACHE_HOME || _path.default.join(_os.default.homedir(), '.cache');else if (process.platform === 'darwin') cacheDirectory = _path.default.join(_os.default.homedir(), 'Library', 'Caches');else if (process.platform === 'win32') cacheDirectory = process.env.LOCALAPPDATA || _path.default.join(_os.default.homedir(), 'AppData', 'Local');else throw new Error('Unsupported platform: ' + process.platform);
|
|
301
407
|
result = _path.default.join(cacheDirectory, 'ms-playwright');
|
|
302
408
|
}
|
|
303
409
|
if (!_path.default.isAbsolute(result)) {
|
|
@@ -313,7 +419,7 @@ const registryDirectory = exports.registryDirectory = (() => {
|
|
|
313
419
|
function isBrowserDirectory(browserDirectory) {
|
|
314
420
|
const baseName = _path.default.basename(browserDirectory);
|
|
315
421
|
for (const browserName of allDownloadable) {
|
|
316
|
-
if (baseName.startsWith(browserName + '-')) return true;
|
|
422
|
+
if (baseName.startsWith(browserName.replace(/-/g, '_') + '-')) return true;
|
|
317
423
|
}
|
|
318
424
|
return false;
|
|
319
425
|
}
|
|
@@ -326,6 +432,7 @@ function readDescriptors(browsersJSON) {
|
|
|
326
432
|
const descriptor = {
|
|
327
433
|
name,
|
|
328
434
|
revision,
|
|
435
|
+
hasRevisionOverride: !!revisionOverride,
|
|
329
436
|
// We only put browser version for the supported operating systems.
|
|
330
437
|
browserVersion: revisionOverride ? undefined : obj.browserVersion,
|
|
331
438
|
installByDefault: !!obj.installByDefault,
|
|
@@ -339,7 +446,7 @@ function readDescriptors(browsersJSON) {
|
|
|
339
446
|
return descriptor;
|
|
340
447
|
});
|
|
341
448
|
}
|
|
342
|
-
const allDownloadable = ['chromium', 'firefox', 'webkit', 'ffmpeg', 'firefox-beta', 'chromium-tip-of-tree'];
|
|
449
|
+
const allDownloadable = ['android', 'chromium', 'firefox', 'webkit', 'ffmpeg', 'firefox-beta', 'chromium-tip-of-tree', 'chromium-headless-shell', 'chromium-tip-of-tree-headless-shell'];
|
|
343
450
|
class Registry {
|
|
344
451
|
constructor(browsersJSON) {
|
|
345
452
|
this._executables = void 0;
|
|
@@ -357,7 +464,7 @@ class Registry {
|
|
|
357
464
|
const preferredDockerVersion = currentDockerVersion ? (0, _dependencies.dockerVersion)(currentDockerVersion.dockerImageNameTemplate) : null;
|
|
358
465
|
const isOutdatedDockerImage = currentDockerVersion && preferredDockerVersion && currentDockerVersion.dockerImageName !== preferredDockerVersion.dockerImageName;
|
|
359
466
|
const prettyMessage = isOutdatedDockerImage ? [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just updated to ${preferredDockerVersion.driverVersion}.`, `Please update docker image as well.`, `- current: ${currentDockerVersion.dockerImageName}`, `- required: ${preferredDockerVersion.dockerImageName}`, ``, `<3 Playwright Team`].join('\n') : [`Looks like ${sdkLanguage === 'javascript' ? 'Playwright Test or ' : ''}Playwright was just installed or updated.`, `Please run the following command to download new browser${installByDefault ? 's' : ''}:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
|
|
360
|
-
throw new Error(`Executable doesn't exist at ${e}\n${(0,
|
|
467
|
+
throw new Error(`Executable doesn't exist at ${e}\n${(0, _ascii.wrapInASCIIBox)(prettyMessage, 1)}`);
|
|
361
468
|
}
|
|
362
469
|
return e;
|
|
363
470
|
};
|
|
@@ -372,13 +479,47 @@ class Registry {
|
|
|
372
479
|
executablePath: () => chromiumExecutable,
|
|
373
480
|
executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumExecutable, chromium.installByDefault, sdkLanguage),
|
|
374
481
|
installType: chromium.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
375
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
482
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromium.dir, ['chrome-linux'], [], ['chrome-win']),
|
|
376
483
|
downloadURLs: this._downloadURLs(chromium),
|
|
377
484
|
browserVersion: chromium.browserVersion,
|
|
378
485
|
_install: () => this._downloadExecutable(chromium, chromiumExecutable),
|
|
379
486
|
_dependencyGroup: 'chromium',
|
|
380
487
|
_isHermeticInstallation: true
|
|
381
488
|
});
|
|
489
|
+
const chromiumHeadlessShell = descriptors.find(d => d.name === 'chromium-headless-shell');
|
|
490
|
+
const chromiumHeadlessShellExecutable = findExecutablePath(chromiumHeadlessShell.dir, 'chromium-headless-shell');
|
|
491
|
+
this._executables.push({
|
|
492
|
+
type: 'channel',
|
|
493
|
+
name: 'chromium-headless-shell',
|
|
494
|
+
browserName: 'chromium',
|
|
495
|
+
directory: chromiumHeadlessShell.dir,
|
|
496
|
+
executablePath: () => chromiumHeadlessShellExecutable,
|
|
497
|
+
executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumHeadlessShellExecutable, chromiumHeadlessShell.installByDefault, sdkLanguage),
|
|
498
|
+
installType: chromiumHeadlessShell.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
499
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumHeadlessShell.dir, ['chrome-linux'], [], ['chrome-win']),
|
|
500
|
+
downloadURLs: this._downloadURLs(chromiumHeadlessShell),
|
|
501
|
+
browserVersion: chromium.browserVersion,
|
|
502
|
+
_install: () => this._downloadExecutable(chromiumHeadlessShell, chromiumHeadlessShellExecutable),
|
|
503
|
+
_dependencyGroup: 'chromium',
|
|
504
|
+
_isHermeticInstallation: true
|
|
505
|
+
});
|
|
506
|
+
const chromiumTipOfTreeHeadlessShell = descriptors.find(d => d.name === 'chromium-tip-of-tree-headless-shell');
|
|
507
|
+
const chromiumTipOfTreeHeadlessShellExecutable = findExecutablePath(chromiumTipOfTreeHeadlessShell.dir, 'chromium-headless-shell');
|
|
508
|
+
this._executables.push({
|
|
509
|
+
type: 'channel',
|
|
510
|
+
name: 'chromium-tip-of-tree-headless-shell',
|
|
511
|
+
browserName: 'chromium',
|
|
512
|
+
directory: chromiumTipOfTreeHeadlessShell.dir,
|
|
513
|
+
executablePath: () => chromiumTipOfTreeHeadlessShellExecutable,
|
|
514
|
+
executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumTipOfTreeHeadlessShellExecutable, chromiumTipOfTreeHeadlessShell.installByDefault, sdkLanguage),
|
|
515
|
+
installType: chromiumTipOfTreeHeadlessShell.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
516
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumTipOfTreeHeadlessShell.dir, ['chrome-linux'], [], ['chrome-win']),
|
|
517
|
+
downloadURLs: this._downloadURLs(chromiumTipOfTreeHeadlessShell),
|
|
518
|
+
browserVersion: chromium.browserVersion,
|
|
519
|
+
_install: () => this._downloadExecutable(chromiumTipOfTreeHeadlessShell, chromiumTipOfTreeHeadlessShellExecutable),
|
|
520
|
+
_dependencyGroup: 'chromium',
|
|
521
|
+
_isHermeticInstallation: true
|
|
522
|
+
});
|
|
382
523
|
const chromiumTipOfTree = descriptors.find(d => d.name === 'chromium-tip-of-tree');
|
|
383
524
|
const chromiumTipOfTreeExecutable = findExecutablePath(chromiumTipOfTree.dir, 'chromium');
|
|
384
525
|
this._executables.push({
|
|
@@ -389,7 +530,7 @@ class Registry {
|
|
|
389
530
|
executablePath: () => chromiumTipOfTreeExecutable,
|
|
390
531
|
executablePathOrDie: sdkLanguage => executablePathOrDie('chromium-tip-of-tree', chromiumTipOfTreeExecutable, chromiumTipOfTree.installByDefault, sdkLanguage),
|
|
391
532
|
installType: chromiumTipOfTree.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
392
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
533
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromiumTipOfTree.dir, ['chrome-linux'], [], ['chrome-win']),
|
|
393
534
|
downloadURLs: this._downloadURLs(chromiumTipOfTree),
|
|
394
535
|
browserVersion: chromiumTipOfTree.browserVersion,
|
|
395
536
|
_install: () => this._downloadExecutable(chromiumTipOfTree, chromiumTipOfTreeExecutable),
|
|
@@ -489,7 +630,7 @@ class Registry {
|
|
|
489
630
|
executablePath: () => chromiumExecutable,
|
|
490
631
|
executablePathOrDie: sdkLanguage => executablePathOrDie('chromium', chromiumExecutable, chromium.installByDefault, sdkLanguage),
|
|
491
632
|
installType: 'download-on-demand',
|
|
492
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
633
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, chromium.dir, ['chrome-linux'], [], ['chrome-win']),
|
|
493
634
|
downloadURLs: this._downloadURLs(chromium),
|
|
494
635
|
browserVersion: chromium.browserVersion,
|
|
495
636
|
_install: () => this._downloadExecutable(chromium, chromiumExecutable),
|
|
@@ -506,7 +647,7 @@ class Registry {
|
|
|
506
647
|
executablePath: () => firefoxExecutable,
|
|
507
648
|
executablePathOrDie: sdkLanguage => executablePathOrDie('firefox', firefoxExecutable, firefox.installByDefault, sdkLanguage),
|
|
508
649
|
installType: firefox.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
509
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
650
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, firefox.dir, ['firefox'], [], ['firefox']),
|
|
510
651
|
downloadURLs: this._downloadURLs(firefox),
|
|
511
652
|
browserVersion: firefox.browserVersion,
|
|
512
653
|
_install: () => this._downloadExecutable(firefox, firefoxExecutable),
|
|
@@ -523,7 +664,7 @@ class Registry {
|
|
|
523
664
|
executablePath: () => firefoxBetaExecutable,
|
|
524
665
|
executablePathOrDie: sdkLanguage => executablePathOrDie('firefox-beta', firefoxBetaExecutable, firefoxBeta.installByDefault, sdkLanguage),
|
|
525
666
|
installType: firefoxBeta.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
526
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
667
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, firefoxBeta.dir, ['firefox'], [], ['firefox']),
|
|
527
668
|
downloadURLs: this._downloadURLs(firefoxBeta),
|
|
528
669
|
browserVersion: firefoxBeta.browserVersion,
|
|
529
670
|
_install: () => this._downloadExecutable(firefoxBeta, firefoxBetaExecutable),
|
|
@@ -541,7 +682,7 @@ class Registry {
|
|
|
541
682
|
executablePath: () => webkitExecutable,
|
|
542
683
|
executablePathOrDie: sdkLanguage => executablePathOrDie('webkit', webkitExecutable, webkit.installByDefault, sdkLanguage),
|
|
543
684
|
installType: webkit.installByDefault ? 'download-by-default' : 'download-on-demand',
|
|
544
|
-
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage,
|
|
685
|
+
_validateHostRequirements: sdkLanguage => this._validateHostRequirements(sdkLanguage, webkit.dir, webkitLinuxLddDirectories, ['libGLESv2.so.2', 'libx264.so'], ['']),
|
|
545
686
|
downloadURLs: this._downloadURLs(webkit),
|
|
546
687
|
browserVersion: webkit.browserVersion,
|
|
547
688
|
_install: () => this._downloadExecutable(webkit, webkitExecutable),
|
|
@@ -564,6 +705,22 @@ class Registry {
|
|
|
564
705
|
_dependencyGroup: 'tools',
|
|
565
706
|
_isHermeticInstallation: true
|
|
566
707
|
});
|
|
708
|
+
const winldd = descriptors.find(d => d.name === 'winldd');
|
|
709
|
+
const winlddExecutable = findExecutablePath(winldd.dir, 'winldd');
|
|
710
|
+
this._executables.push({
|
|
711
|
+
type: 'tool',
|
|
712
|
+
name: 'winldd',
|
|
713
|
+
browserName: undefined,
|
|
714
|
+
directory: winldd.dir,
|
|
715
|
+
executablePath: () => winlddExecutable,
|
|
716
|
+
executablePathOrDie: sdkLanguage => executablePathOrDie('winldd', winlddExecutable, winldd.installByDefault, sdkLanguage),
|
|
717
|
+
installType: process.platform === 'win32' ? 'download-by-default' : 'none',
|
|
718
|
+
_validateHostRequirements: () => Promise.resolve(),
|
|
719
|
+
downloadURLs: this._downloadURLs(winldd),
|
|
720
|
+
_install: () => this._downloadExecutable(winldd, winlddExecutable),
|
|
721
|
+
_dependencyGroup: 'tools',
|
|
722
|
+
_isHermeticInstallation: true
|
|
723
|
+
});
|
|
567
724
|
const android = descriptors.find(d => d.name === 'android');
|
|
568
725
|
this._executables.push({
|
|
569
726
|
type: 'tool',
|
|
@@ -634,7 +791,7 @@ class Registry {
|
|
|
634
791
|
const folder = _path.default.resolve('firefox');
|
|
635
792
|
let channelName = 'stable';
|
|
636
793
|
if (name.includes('beta')) channelName = 'beta';else if (name.includes('nightly')) channelName = 'nightly';
|
|
637
|
-
const installedVersions =
|
|
794
|
+
const installedVersions = _fs.default.readdirSync(folder);
|
|
638
795
|
const found = installedVersions.filter(e => e.includes(channelName));
|
|
639
796
|
if (found.length === 1) return _path.default.join(folder, found[0], suffix);
|
|
640
797
|
if (found.length > 1) {
|
|
@@ -695,31 +852,26 @@ class Registry {
|
|
|
695
852
|
defaultExecutables() {
|
|
696
853
|
return this._executables.filter(e => e.installType === 'download-by-default');
|
|
697
854
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
for (const executable of executables) {
|
|
701
|
-
set.add(executable);
|
|
702
|
-
if (executable.browserName === 'chromium') set.add(this.findExecutable('ffmpeg'));
|
|
703
|
-
}
|
|
704
|
-
return Array.from(set);
|
|
855
|
+
_dedupe(executables) {
|
|
856
|
+
return Array.from(new Set(executables));
|
|
705
857
|
}
|
|
706
|
-
async _validateHostRequirements(sdkLanguage,
|
|
707
|
-
if (
|
|
708
|
-
if (
|
|
858
|
+
async _validateHostRequirements(sdkLanguage, browserDirectory, linuxLddDirectories, dlOpenLibraries, windowsExeAndDllDirectories) {
|
|
859
|
+
if (_os.default.platform() === 'linux') return await (0, _dependencies.validateDependenciesLinux)(sdkLanguage, linuxLddDirectories.map(d => _path.default.join(browserDirectory, d)), dlOpenLibraries);
|
|
860
|
+
if (_os.default.platform() === 'win32' && _os.default.arch() === 'x64') return await (0, _dependencies.validateDependenciesWindows)(sdkLanguage, windowsExeAndDllDirectories.map(d => _path.default.join(browserDirectory, d)));
|
|
709
861
|
}
|
|
710
862
|
async installDeps(executablesToInstallDeps, dryRun) {
|
|
711
|
-
const executables = this.
|
|
863
|
+
const executables = this._dedupe(executablesToInstallDeps);
|
|
712
864
|
const targets = new Set();
|
|
713
865
|
for (const executable of executables) {
|
|
714
866
|
if (executable._dependencyGroup) targets.add(executable._dependencyGroup);
|
|
715
867
|
}
|
|
716
868
|
targets.add('tools');
|
|
717
|
-
if (
|
|
718
|
-
if (
|
|
869
|
+
if (_os.default.platform() === 'win32') return await (0, _dependencies.installDependenciesWindows)(targets, dryRun);
|
|
870
|
+
if (_os.default.platform() === 'linux') return await (0, _dependencies.installDependenciesLinux)(targets, dryRun);
|
|
719
871
|
}
|
|
720
872
|
async install(executablesToInstall, forceReinstall) {
|
|
721
|
-
const executables = this.
|
|
722
|
-
await
|
|
873
|
+
const executables = this._dedupe(executablesToInstall);
|
|
874
|
+
await _fs.default.promises.mkdir(registryDirectory, {
|
|
723
875
|
recursive: true
|
|
724
876
|
});
|
|
725
877
|
const lockfilePath = _path.default.join(registryDirectory, '__dirlock');
|
|
@@ -740,10 +892,10 @@ class Registry {
|
|
|
740
892
|
lockfilePath
|
|
741
893
|
});
|
|
742
894
|
// Create a link first, so that cache validation does not remove our own browsers.
|
|
743
|
-
await
|
|
895
|
+
await _fs.default.promises.mkdir(linksDir, {
|
|
744
896
|
recursive: true
|
|
745
897
|
});
|
|
746
|
-
await
|
|
898
|
+
await _fs.default.promises.writeFile(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH)), PACKAGE_PATH);
|
|
747
899
|
|
|
748
900
|
// Remove stale browsers.
|
|
749
901
|
await this._validateInstallationCache(linksDir);
|
|
@@ -756,14 +908,14 @@ class Registry {
|
|
|
756
908
|
} = (0, _userAgent.getEmbedderName)();
|
|
757
909
|
if (!(0, _utils.getAsBooleanFromENV)('CI') && !executable._isHermeticInstallation && !forceReinstall && executable.executablePath(embedderName)) {
|
|
758
910
|
const command = buildPlaywrightCLICommand(embedderName, 'install --force ' + executable.name);
|
|
759
|
-
throw new Error('\n' + (0,
|
|
911
|
+
throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`ATTENTION: "${executable.name}" is already installed on the system!`, ``, `"${executable.name}" installation is not hermetic; installing newer version`, `requires *removal* of a current installation first.`, ``, `To *uninstall* current version and re-install latest "${executable.name}":`, ``, `- Close all running instances of "${executable.name}", if any`, `- Use "--force" to install browser:`, ``, ` ${command}`, ``, `<3 Playwright Team`].join('\n'), 1));
|
|
760
912
|
}
|
|
761
913
|
await executable._install();
|
|
762
914
|
}
|
|
763
915
|
} catch (e) {
|
|
764
916
|
if (e.code === 'ELOCKED') {
|
|
765
917
|
const rmCommand = process.platform === 'win32' ? 'rm -R' : 'rm -rf';
|
|
766
|
-
throw new Error('\n' + (0,
|
|
918
|
+
throw new Error('\n' + (0, _ascii.wrapInASCIIBox)([`An active lockfile is found at:`, ``, ` ${lockfilePath}`, ``, `Either:`, `- wait a few minutes if other Playwright is installing browsers in parallel`, `- remove lock manually with:`, ``, ` ${rmCommand} ${lockfilePath}`, ``, `<3 Playwright Team`].join('\n'), 1));
|
|
767
919
|
} else {
|
|
768
920
|
throw e;
|
|
769
921
|
}
|
|
@@ -774,16 +926,16 @@ class Registry {
|
|
|
774
926
|
async uninstall(all) {
|
|
775
927
|
const linksDir = _path.default.join(registryDirectory, '.links');
|
|
776
928
|
if (all) {
|
|
777
|
-
const links = await
|
|
778
|
-
for (const link of links) await
|
|
929
|
+
const links = await _fs.default.promises.readdir(linksDir).catch(() => []);
|
|
930
|
+
for (const link of links) await _fs.default.promises.unlink(_path.default.join(linksDir, link));
|
|
779
931
|
} else {
|
|
780
|
-
await
|
|
932
|
+
await _fs.default.promises.unlink(_path.default.join(linksDir, (0, _utils.calculateSha1)(PACKAGE_PATH))).catch(() => {});
|
|
781
933
|
}
|
|
782
934
|
|
|
783
935
|
// Remove stale browsers.
|
|
784
936
|
await this._validateInstallationCache(linksDir);
|
|
785
937
|
return {
|
|
786
|
-
numberOfBrowsersLeft: (await
|
|
938
|
+
numberOfBrowsersLeft: (await _fs.default.promises.readdir(registryDirectory).catch(() => [])).filter(browserDirectory => isBrowserDirectory(browserDirectory)).length
|
|
787
939
|
};
|
|
788
940
|
}
|
|
789
941
|
async validateHostRequirementsForExecutablesIfNeeded(executables, sdkLanguage) {
|
|
@@ -799,7 +951,7 @@ class Registry {
|
|
|
799
951
|
if (!executable.directory) return;
|
|
800
952
|
const markerFile = _path.default.join(executable.directory, 'DEPENDENCIES_VALIDATED');
|
|
801
953
|
// Executable is already validated.
|
|
802
|
-
if (await
|
|
954
|
+
if (await _fs.default.promises.stat(markerFile).then(stat => Date.now() - stat.mtime.getTime() < kMaximumReValidationPeriod).catch(() => false)) return;
|
|
803
955
|
_debugLogger.debugLogger.log('install', `validating host requirements for "${executable.name}"`);
|
|
804
956
|
try {
|
|
805
957
|
await executable._validateHostRequirements(sdkLanguage);
|
|
@@ -808,7 +960,7 @@ class Registry {
|
|
|
808
960
|
_debugLogger.debugLogger.log('install', `validation failed for ${executable.name}`);
|
|
809
961
|
throw error;
|
|
810
962
|
}
|
|
811
|
-
await
|
|
963
|
+
await _fs.default.promises.writeFile(markerFile, '').catch(() => {});
|
|
812
964
|
}
|
|
813
965
|
_downloadURLs(descriptor) {
|
|
814
966
|
const paths = DOWNLOAD_PATHS[descriptor.name];
|
|
@@ -826,6 +978,11 @@ class Registry {
|
|
|
826
978
|
const downloadURLs = this._downloadURLs(descriptor);
|
|
827
979
|
if (!downloadURLs.length) throw new Error(`ERROR: Playwright does not support ${descriptor.name} on ${_hostPlatform.hostPlatform}`);
|
|
828
980
|
if (!_hostPlatform.isOfficiallySupportedPlatform) (0, _browserFetcher.logPolitely)(`BEWARE: your OS is not officially supported by Playwright; downloading fallback build for ${_hostPlatform.hostPlatform}.`);
|
|
981
|
+
if (descriptor.hasRevisionOverride) {
|
|
982
|
+
const message = `You are using a frozen ${descriptor.name} browser which does not receive updates anymore on ${_hostPlatform.hostPlatform}. Please update to the latest version of your operating system to test up-to-date browsers.`;
|
|
983
|
+
if (process.env.GITHUB_ACTIONS) console.log(`::warning title=Playwright::${message}`); // eslint-disable-line no-console
|
|
984
|
+
else (0, _browserFetcher.logPolitely)(message);
|
|
985
|
+
}
|
|
829
986
|
const displayName = descriptor.name.split('-').map(word => {
|
|
830
987
|
return word === 'ffmpeg' ? 'FFMPEG' : word.charAt(0).toUpperCase() + word.slice(1);
|
|
831
988
|
}).join(' ');
|
|
@@ -900,11 +1057,11 @@ class Registry {
|
|
|
900
1057
|
async _validateInstallationCache(linksDir) {
|
|
901
1058
|
// 1. Collect used downloads and package descriptors.
|
|
902
1059
|
const usedBrowserPaths = new Set();
|
|
903
|
-
for (const fileName of await
|
|
1060
|
+
for (const fileName of await _fs.default.promises.readdir(linksDir)) {
|
|
904
1061
|
const linkPath = _path.default.join(linksDir, fileName);
|
|
905
1062
|
let linkTarget = '';
|
|
906
1063
|
try {
|
|
907
|
-
linkTarget = (await
|
|
1064
|
+
linkTarget = (await _fs.default.promises.readFile(linkPath)).toString();
|
|
908
1065
|
const browsersJSON = require(_path.default.join(linkTarget, 'browsers.json'));
|
|
909
1066
|
const descriptors = readDescriptors(browsersJSON);
|
|
910
1067
|
for (const browserName of allDownloadable) {
|
|
@@ -925,13 +1082,13 @@ class Registry {
|
|
|
925
1082
|
if (!shouldHaveMarkerFile || (await (0, _fileUtils.existsAsync)(browserDirectoryToMarkerFilePath(usedBrowserPath)))) usedBrowserPaths.add(usedBrowserPath);
|
|
926
1083
|
}
|
|
927
1084
|
} catch (e) {
|
|
928
|
-
await
|
|
1085
|
+
await _fs.default.promises.unlink(linkPath).catch(e => {});
|
|
929
1086
|
}
|
|
930
1087
|
}
|
|
931
1088
|
|
|
932
1089
|
// 2. Delete all unused browsers.
|
|
933
1090
|
if (!(0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_BROWSER_GC')) {
|
|
934
|
-
let downloadedBrowsers = (await
|
|
1091
|
+
let downloadedBrowsers = (await _fs.default.promises.readdir(registryDirectory)).map(file => _path.default.join(registryDirectory, file));
|
|
935
1092
|
downloadedBrowsers = downloadedBrowsers.filter(file => isBrowserDirectory(file));
|
|
936
1093
|
const directories = new Set(downloadedBrowsers);
|
|
937
1094
|
for (const browserDirectory of usedBrowserPaths) directories.delete(browserDirectory);
|
|
@@ -959,10 +1116,6 @@ function buildPlaywrightCLICommand(sdkLanguage, parameters) {
|
|
|
959
1116
|
}
|
|
960
1117
|
}
|
|
961
1118
|
}
|
|
962
|
-
async function installDefaultBrowsersForNpmInstall() {
|
|
963
|
-
const defaultBrowserNames = registry.defaultExecutables().map(e => e.name);
|
|
964
|
-
return installBrowsersForNpmInstall(defaultBrowserNames);
|
|
965
|
-
}
|
|
966
1119
|
async function installBrowsersForNpmInstall(browsers) {
|
|
967
1120
|
// PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD should have a value of 0 or 1
|
|
968
1121
|
if ((0, _utils.getAsBooleanFromENV)('PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD')) {
|
|
@@ -970,6 +1123,7 @@ async function installBrowsersForNpmInstall(browsers) {
|
|
|
970
1123
|
return false;
|
|
971
1124
|
}
|
|
972
1125
|
const executables = [];
|
|
1126
|
+
if (process.platform === 'win32') executables.push(registry.findExecutable('winldd'));
|
|
973
1127
|
for (const browserName of browsers) {
|
|
974
1128
|
const executable = registry.findExecutable(browserName);
|
|
975
1129
|
if (!executable || executable.installType === 'none') throw new Error(`Cannot install ${browserName}`);
|
|
@@ -991,7 +1145,7 @@ function findChromiumChannel(sdkLanguage) {
|
|
|
991
1145
|
if (channel === null) {
|
|
992
1146
|
const installCommand = buildPlaywrightCLICommand(sdkLanguage, `install chromium`);
|
|
993
1147
|
const prettyMessage = [`No chromium-based browser found on the system.`, `Please run the following command to download one:`, ``, ` ${installCommand}`, ``, `<3 Playwright Team`].join('\n');
|
|
994
|
-
throw new Error('\n' + (0,
|
|
1148
|
+
throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(prettyMessage, 1));
|
|
995
1149
|
}
|
|
996
1150
|
return channel;
|
|
997
1151
|
}
|
|
@@ -129,8 +129,9 @@ const deps = exports.deps = {
|
|
|
129
129
|
tools: ['xvfb', 'fonts-noto-color-emoji', 'fonts-unifont', 'libfontconfig1', 'libfreetype6', 'xfonts-cyrillic', 'xfonts-scalable', 'fonts-liberation', 'fonts-ipafont-gothic', 'fonts-wqy-zenhei', 'fonts-tlwg-loma-otf', 'fonts-freefont-ttf'],
|
|
130
130
|
chromium: ['libasound2', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libatspi2.0-0', 'libcairo2', 'libcups2', 'libdbus-1-3', 'libdrm2', 'libgbm1', 'libglib2.0-0', 'libnspr4', 'libnss3', 'libpango-1.0-0', 'libwayland-client0', 'libx11-6', 'libxcb1', 'libxcomposite1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxkbcommon0', 'libxrandr2'],
|
|
131
131
|
firefox: ['ffmpeg', 'libasound2', 'libatk1.0-0', 'libcairo-gobject2', 'libcairo2', 'libdbus-1-3', 'libdbus-glib-1-2', 'libfontconfig1', 'libfreetype6', 'libgdk-pixbuf-2.0-0', 'libglib2.0-0', 'libgtk-3-0', 'libpango-1.0-0', 'libpangocairo-1.0-0', 'libx11-6', 'libx11-xcb1', 'libxcb-shm0', 'libxcb1', 'libxcomposite1', 'libxcursor1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxi6', 'libxrandr2', 'libxrender1', 'libxtst6'],
|
|
132
|
-
webkit: ['libsoup-3.0-0', 'libenchant-2-2', 'gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libicu70', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libegl1', 'libepoxy0', 'libevdev2', 'libffi7', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0', 'libglx0', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-
|
|
132
|
+
webkit: ['libsoup-3.0-0', 'libenchant-2-2', 'gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libicu70', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libegl1', 'libepoxy0', 'libevdev2', 'libffi7', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0', 'libglx0', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-4-1', 'libgudev-1.0-0', 'libharfbuzz-icu0', 'libharfbuzz0b', 'libhyphen0', 'libjpeg-turbo8', 'liblcms2-2', 'libmanette-0.2-0', 'libnotify4', 'libopengl0', 'libopenjp2-7', 'libopus0', 'libpango-1.0-0', 'libpng16-16', 'libproxy1v5', 'libsecret-1-0', 'libwayland-client0', 'libwayland-egl1', 'libwayland-server0', 'libwebpdemux2', 'libwoff1', 'libx11-6', 'libxcomposite1', 'libxdamage1', 'libxkbcommon0', 'libxml2', 'libxslt1.1', 'libx264-163', 'libatomic1', 'libevent-2.1-7', 'libavif13'],
|
|
133
133
|
lib2package: {
|
|
134
|
+
'libavif.so.13': 'libavif13',
|
|
134
135
|
'libsoup-3.0.so.0': 'libsoup-3.0-0',
|
|
135
136
|
'libasound.so.2': 'libasound2',
|
|
136
137
|
'libatk-1.0.so.0': 'libatk1.0-0',
|
|
@@ -168,6 +169,7 @@ const deps = exports.deps = {
|
|
|
168
169
|
'libgsttag-1.0.so.0': 'libgstreamer-plugins-base1.0-0',
|
|
169
170
|
'libgstvideo-1.0.so.0': 'libgstreamer-plugins-base1.0-0',
|
|
170
171
|
'libgtk-3.so.0': 'libgtk-3-0',
|
|
172
|
+
'libgtk-4.so.1': 'libgtk-4-1',
|
|
171
173
|
'libgudev-1.0.so.0': 'libgudev-1.0-0',
|
|
172
174
|
'libharfbuzz-icu.so.0': 'libharfbuzz-icu0',
|
|
173
175
|
'libharfbuzz.so.0': 'libharfbuzz0b',
|
|
@@ -224,8 +226,9 @@ const deps = exports.deps = {
|
|
|
224
226
|
tools: ['xvfb', 'fonts-noto-color-emoji', 'fonts-unifont', 'libfontconfig1', 'libfreetype6', 'xfonts-cyrillic', 'xfonts-scalable', 'fonts-liberation', 'fonts-ipafont-gothic', 'fonts-wqy-zenhei', 'fonts-tlwg-loma-otf', 'fonts-freefont-ttf'],
|
|
225
227
|
chromium: ['libasound2t64', 'libatk-bridge2.0-0t64', 'libatk1.0-0t64', 'libatspi2.0-0t64', 'libcairo2', 'libcups2t64', 'libdbus-1-3', 'libdrm2', 'libgbm1', 'libglib2.0-0t64', 'libnspr4', 'libnss3', 'libpango-1.0-0', 'libx11-6', 'libxcb1', 'libxcomposite1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxkbcommon0', 'libxrandr2'],
|
|
226
228
|
firefox: ['libasound2t64', 'libatk1.0-0t64', 'libcairo-gobject2', 'libcairo2', 'libdbus-1-3', 'libfontconfig1', 'libfreetype6', 'libgdk-pixbuf-2.0-0', 'libglib2.0-0t64', 'libgtk-3-0t64', 'libpango-1.0-0', 'libpangocairo-1.0-0', 'libx11-6', 'libx11-xcb1', 'libxcb-shm0', 'libxcb1', 'libxcomposite1', 'libxcursor1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxi6', 'libxrandr2', 'libxrender1'],
|
|
227
|
-
webkit: ['gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libicu74', 'libatomic1', 'libatk-bridge2.0-0t64', 'libatk1.0-0t64', 'libcairo-gobject2', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libenchant-2-2', 'libepoxy0', 'libevent-2.1-7t64', 'libflite1', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0t64', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-bad1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-
|
|
229
|
+
webkit: ['gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libicu74', 'libatomic1', 'libatk-bridge2.0-0t64', 'libatk1.0-0t64', 'libcairo-gobject2', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libenchant-2-2', 'libepoxy0', 'libevent-2.1-7t64', 'libflite1', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0t64', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-bad1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-4-1', 'libharfbuzz-icu0', 'libharfbuzz0b', 'libhyphen0', 'libicu74', 'libjpeg-turbo8', 'liblcms2-2', 'libmanette-0.2-0', 'libopus0', 'libpango-1.0-0', 'libpangocairo-1.0-0', 'libpng16-16t64', 'libsecret-1-0', 'libvpx9', 'libwayland-client0', 'libwayland-egl1', 'libwayland-server0', 'libwebp7', 'libwebpdemux2', 'libwoff1', 'libx11-6', 'libxkbcommon0', 'libxml2', 'libxslt1.1', 'libx264-164', 'libavif16'],
|
|
228
230
|
lib2package: {
|
|
231
|
+
'libavif.so.16': 'libavif16',
|
|
229
232
|
'libasound.so.2': 'libasound2t64',
|
|
230
233
|
'libatk-1.0.so.0': 'libatk1.0-0t64',
|
|
231
234
|
'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0t64',
|
|
@@ -274,6 +277,7 @@ const deps = exports.deps = {
|
|
|
274
277
|
'libgsttag-1.0.so.0': 'libgstreamer-plugins-base1.0-0',
|
|
275
278
|
'libgstvideo-1.0.so.0': 'libgstreamer-plugins-base1.0-0',
|
|
276
279
|
'libgtk-3.so.0': 'libgtk-3-0t64',
|
|
280
|
+
'libgtk-4.so.1': 'libgtk-4-1',
|
|
277
281
|
'libharfbuzz-icu.so.0': 'libharfbuzz-icu0',
|
|
278
282
|
'libharfbuzz.so.0': 'libharfbuzz0b',
|
|
279
283
|
'libhyphen.so.0': 'libhyphen0',
|
|
@@ -412,8 +416,9 @@ const deps = exports.deps = {
|
|
|
412
416
|
tools: ['xvfb', 'fonts-noto-color-emoji', 'fonts-unifont', 'libfontconfig1', 'libfreetype6', 'xfonts-scalable', 'fonts-liberation', 'fonts-ipafont-gothic', 'fonts-wqy-zenhei', 'fonts-tlwg-loma-otf', 'fonts-freefont-ttf'],
|
|
413
417
|
chromium: ['libasound2', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libatspi2.0-0', 'libcairo2', 'libcups2', 'libdbus-1-3', 'libdrm2', 'libgbm1', 'libglib2.0-0', 'libnspr4', 'libnss3', 'libpango-1.0-0', 'libx11-6', 'libxcb1', 'libxcomposite1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxkbcommon0', 'libxrandr2'],
|
|
414
418
|
firefox: ['libasound2', 'libatk1.0-0', 'libcairo-gobject2', 'libcairo2', 'libdbus-1-3', 'libdbus-glib-1-2', 'libfontconfig1', 'libfreetype6', 'libgdk-pixbuf-2.0-0', 'libglib2.0-0', 'libgtk-3-0', 'libharfbuzz0b', 'libpango-1.0-0', 'libpangocairo-1.0-0', 'libx11-6', 'libx11-xcb1', 'libxcb-shm0', 'libxcb1', 'libxcomposite1', 'libxcursor1', 'libxdamage1', 'libxext6', 'libxfixes3', 'libxi6', 'libxrandr2', 'libxrender1', 'libxtst6'],
|
|
415
|
-
webkit: ['libsoup-3.0-0', 'gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libegl1', 'libenchant-2-2', 'libepoxy0', 'libevdev2', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0', 'libglx0', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-
|
|
419
|
+
webkit: ['libsoup-3.0-0', 'gstreamer1.0-libav', 'gstreamer1.0-plugins-bad', 'gstreamer1.0-plugins-base', 'gstreamer1.0-plugins-good', 'libatk-bridge2.0-0', 'libatk1.0-0', 'libcairo2', 'libdbus-1-3', 'libdrm2', 'libegl1', 'libenchant-2-2', 'libepoxy0', 'libevdev2', 'libfontconfig1', 'libfreetype6', 'libgbm1', 'libgdk-pixbuf-2.0-0', 'libgles2', 'libglib2.0-0', 'libglx0', 'libgstreamer-gl1.0-0', 'libgstreamer-plugins-base1.0-0', 'libgstreamer1.0-0', 'libgtk-4-1', 'libgudev-1.0-0', 'libharfbuzz-icu0', 'libharfbuzz0b', 'libhyphen0', 'libicu72', 'libjpeg62-turbo', 'liblcms2-2', 'libmanette-0.2-0', 'libnotify4', 'libopengl0', 'libopenjp2-7', 'libopus0', 'libpango-1.0-0', 'libpng16-16', 'libproxy1v5', 'libsecret-1-0', 'libwayland-client0', 'libwayland-egl1', 'libwayland-server0', 'libwebp7', 'libwebpdemux2', 'libwoff1', 'libx11-6', 'libxcomposite1', 'libxdamage1', 'libxkbcommon0', 'libxml2', 'libxslt1.1', 'libatomic1', 'libevent-2.1-7', 'libavif15'],
|
|
416
420
|
lib2package: {
|
|
421
|
+
'libavif.so.15': 'libavif15',
|
|
417
422
|
'libsoup-3.0.so.0': 'libsoup-3.0-0',
|
|
418
423
|
'libasound.so.2': 'libasound2',
|
|
419
424
|
'libatk-1.0.so.0': 'libatk1.0-0',
|
|
@@ -439,7 +444,8 @@ const deps = exports.deps = {
|
|
|
439
444
|
'libXext.so.6': 'libxext6',
|
|
440
445
|
'libXfixes.so.3': 'libxfixes3',
|
|
441
446
|
'libxkbcommon.so.0': 'libxkbcommon0',
|
|
442
|
-
'libXrandr.so.2': 'libxrandr2'
|
|
447
|
+
'libXrandr.so.2': 'libxrandr2',
|
|
448
|
+
'libgtk-4.so.1': 'libgtk-4-1'
|
|
443
449
|
}
|
|
444
450
|
}
|
|
445
451
|
};
|