@checkly/playwright-core 1.48.22 → 1.51.11-beta.2
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 +7888 -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
package/lib/cli/program.js
CHANGED
|
@@ -12,17 +12,16 @@ Object.defineProperty(exports, "program", {
|
|
|
12
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
13
|
var _os = _interopRequireDefault(require("os"));
|
|
14
14
|
var _path = _interopRequireDefault(require("path"));
|
|
15
|
-
var _utilsBundle = require("../utilsBundle");
|
|
16
|
-
var _driver = require("./driver");
|
|
17
|
-
var _traceViewer = require("../server/trace/viewer/traceViewer");
|
|
18
15
|
var playwright = _interopRequireWildcard(require("../.."));
|
|
19
|
-
var
|
|
20
|
-
var _utils = require("../utils");
|
|
16
|
+
var _driver = require("./driver");
|
|
21
17
|
var _server = require("../server");
|
|
22
|
-
var
|
|
18
|
+
var _utils = require("../utils");
|
|
19
|
+
var _traceViewer = require("../server/trace/viewer/traceViewer");
|
|
20
|
+
var _ascii = require("../server/utils/ascii");
|
|
21
|
+
var _utilsBundle = require("../utilsBundle");
|
|
23
22
|
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); }
|
|
24
|
-
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 &&
|
|
25
|
-
function _interopRequireDefault(
|
|
23
|
+
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; }
|
|
24
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
25
|
/**
|
|
27
26
|
* Copyright (c) Microsoft Corporation.
|
|
28
27
|
*
|
|
@@ -56,7 +55,7 @@ Examples:
|
|
|
56
55
|
|
|
57
56
|
$ open
|
|
58
57
|
$ open -b webkit https://example.com`);
|
|
59
|
-
commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions', [['-o, --output <file name>', 'saves the generated script to a file'], ['--target <language>', `language to generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit`, codegenId()], ['--
|
|
58
|
+
commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions', [['-o, --output <file name>', 'saves the generated script to a file'], ['--target <language>', `language to generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit`, codegenId()], ['--test-id-attribute <attributeName>', 'use the specified attribute to generate data test ID selectors']]).action(function (url, options) {
|
|
60
59
|
codegen(options, url).catch(logErrorAndExit);
|
|
61
60
|
}).addHelpText('afterAll', `
|
|
62
61
|
Examples:
|
|
@@ -64,41 +63,45 @@ Examples:
|
|
|
64
63
|
$ codegen
|
|
65
64
|
$ codegen --target=python
|
|
66
65
|
$ codegen -b webkit https://example.com`);
|
|
67
|
-
_utilsBundle.program.command('debug <app> [args...]', {
|
|
68
|
-
hidden: true
|
|
69
|
-
}).description('run command in debug mode: disable timeout, open inspector').allowUnknownOption(true).action(function (app, options) {
|
|
70
|
-
(0, _child_process.spawn)(app, options, {
|
|
71
|
-
env: {
|
|
72
|
-
...process.env,
|
|
73
|
-
PWDEBUG: '1'
|
|
74
|
-
},
|
|
75
|
-
stdio: 'inherit'
|
|
76
|
-
});
|
|
77
|
-
}).addHelpText('afterAll', `
|
|
78
|
-
Examples:
|
|
79
|
-
|
|
80
|
-
$ debug node test.js
|
|
81
|
-
$ debug npm run test`);
|
|
82
66
|
function suggestedBrowsersToInstall() {
|
|
83
67
|
return _server.registry.executables().filter(e => e.installType !== 'none' && e.type !== 'tool').map(e => e.name).join(', ');
|
|
84
68
|
}
|
|
85
|
-
function
|
|
69
|
+
function defaultBrowsersToInstall(options) {
|
|
70
|
+
let executables = _server.registry.defaultExecutables();
|
|
71
|
+
if (options.noShell) executables = executables.filter(e => e.name !== 'chromium-headless-shell');
|
|
72
|
+
if (options.onlyShell) executables = executables.filter(e => e.name !== 'chromium');
|
|
73
|
+
return executables;
|
|
74
|
+
}
|
|
75
|
+
function checkBrowsersToInstall(args, options) {
|
|
76
|
+
if (options.noShell && options.onlyShell) throw new Error(`Only one of --no-shell and --only-shell can be specified`);
|
|
86
77
|
const faultyArguments = [];
|
|
87
78
|
const executables = [];
|
|
88
|
-
|
|
79
|
+
const handleArgument = arg => {
|
|
89
80
|
const executable = _server.registry.findExecutable(arg);
|
|
90
81
|
if (!executable || executable.installType === 'none') faultyArguments.push(arg);else executables.push(executable);
|
|
82
|
+
if ((executable === null || executable === void 0 ? void 0 : executable.browserName) === 'chromium') executables.push(_server.registry.findExecutable('ffmpeg'));
|
|
83
|
+
};
|
|
84
|
+
for (const arg of args) {
|
|
85
|
+
if (arg === 'chromium') {
|
|
86
|
+
if (!options.onlyShell) handleArgument('chromium');
|
|
87
|
+
if (!options.noShell) handleArgument('chromium-headless-shell');
|
|
88
|
+
} else {
|
|
89
|
+
handleArgument(arg);
|
|
90
|
+
}
|
|
91
91
|
}
|
|
92
|
+
if (process.platform === 'win32') executables.push(_server.registry.findExecutable('winldd'));
|
|
92
93
|
if (faultyArguments.length) throw new Error(`Invalid installation targets: ${faultyArguments.map(name => `'${name}'`).join(', ')}. Expecting one of: ${suggestedBrowsersToInstall()}`);
|
|
93
94
|
return executables;
|
|
94
95
|
}
|
|
95
|
-
_utilsBundle.program.command('install [browser...]').description('ensure browsers necessary for this version of Playwright are installed').option('--with-deps', 'install system dependencies for browsers').option('--dry-run', 'do not execute installation, only print information').option('--force', 'force reinstall of stable browser channels').action(async function (args, options) {
|
|
96
|
+
_utilsBundle.program.command('install [browser...]').description('ensure browsers necessary for this version of Playwright are installed').option('--with-deps', 'install system dependencies for browsers').option('--dry-run', 'do not execute installation, only print information').option('--force', 'force reinstall of stable browser channels').option('--only-shell', 'only install headless shell when installing chromium').option('--no-shell', 'do not install chromium headless shell').action(async function (args, options) {
|
|
97
|
+
// For '--no-shell' option, commander sets `shell: false` instead.
|
|
98
|
+
if (options.shell === false) options.noShell = true;
|
|
96
99
|
if ((0, _utils.isLikelyNpxGlobal)()) {
|
|
97
|
-
console.error((0,
|
|
100
|
+
console.error((0, _ascii.wrapInASCIIBox)([`WARNING: It looks like you are running 'npx playwright install' without first`, `installing your project's dependencies.`, ``, `To avoid unexpected behavior, please install your dependencies first, and`, `then run Playwright's install command:`, ``, ` npm install`, ` npx playwright install`, ``, `If your project does not yet depend on Playwright, first install the`, `applicable npm package (most commonly @playwright/test), and`, `then run Playwright's install command to download the browsers:`, ``, ` npm install @playwright/test`, ` npx playwright install`, ``].join('\n'), 1));
|
|
98
101
|
}
|
|
99
102
|
try {
|
|
100
103
|
const hasNoArguments = !args.length;
|
|
101
|
-
const executables = hasNoArguments ?
|
|
104
|
+
const executables = hasNoArguments ? defaultBrowsersToInstall(options) : checkBrowsersToInstall(args, options);
|
|
102
105
|
if (options.withDeps) await _server.registry.installDeps(executables, !!options.dryRun);
|
|
103
106
|
if (options.dryRun) {
|
|
104
107
|
for (const executable of executables) {
|
|
@@ -146,7 +149,7 @@ _utilsBundle.program.command('uninstall').description('Removes browsers used by
|
|
|
146
149
|
});
|
|
147
150
|
_utilsBundle.program.command('install-deps [browser...]').description('install dependencies necessary to run browsers (will ask for sudo permissions)').option('--dry-run', 'Do not execute installation commands, only print them').action(async function (args, options) {
|
|
148
151
|
try {
|
|
149
|
-
if (!args.length) await _server.registry.installDeps(
|
|
152
|
+
if (!args.length) await _server.registry.installDeps(defaultBrowsersToInstall({}), !!options.dryRun);else await _server.registry.installDeps(checkBrowsersToInstall(args, {}), !!options.dryRun);
|
|
150
153
|
} catch (e) {
|
|
151
154
|
console.log(`Failed to install browser dependencies\n${e}`);
|
|
152
155
|
(0, _utils.gracefullyProcessExitDoNotHang)(1);
|
|
@@ -203,9 +206,7 @@ _utilsBundle.program.command('run-driver', {
|
|
|
203
206
|
}).action(function (options) {
|
|
204
207
|
(0, _driver.runDriver)();
|
|
205
208
|
});
|
|
206
|
-
_utilsBundle.program.command('run-server', {
|
|
207
|
-
hidden: true
|
|
208
|
-
}).option('--port <port>', 'Server port').option('--host <host>', 'Server host').option('--path <path>', 'Endpoint Path', '/').option('--max-clients <maxClients>', 'Maximum clients').option('--mode <mode>', 'Server mode, either "default" or "extension"').action(function (options) {
|
|
209
|
+
_utilsBundle.program.command('run-server').option('--port <port>', 'Server port').option('--host <host>', 'Server host').option('--path <path>', 'Endpoint Path', '/').option('--max-clients <maxClients>', 'Maximum clients').option('--mode <mode>', 'Server mode, either "default" or "extension"').action(function (options) {
|
|
209
210
|
(0, _driver.runServer)({
|
|
210
211
|
port: options.port ? +options.port : undefined,
|
|
211
212
|
host: options.host,
|
|
@@ -299,13 +300,14 @@ async function launchContext(options, extraOptions) {
|
|
|
299
300
|
// Viewport size
|
|
300
301
|
if (options.viewportSize) {
|
|
301
302
|
try {
|
|
302
|
-
const [width, height] = options.viewportSize.split(',').map(n =>
|
|
303
|
+
const [width, height] = options.viewportSize.split(',').map(n => +n);
|
|
304
|
+
if (isNaN(width) || isNaN(height)) throw new Error('bad values');
|
|
303
305
|
contextOptions.viewport = {
|
|
304
306
|
width,
|
|
305
307
|
height
|
|
306
308
|
};
|
|
307
309
|
} catch (e) {
|
|
308
|
-
throw new Error('Invalid viewport size format: use "width,
|
|
310
|
+
throw new Error('Invalid viewport size format: use "width,height", for example --viewport-size="800,600"');
|
|
309
311
|
}
|
|
310
312
|
}
|
|
311
313
|
|
|
@@ -365,9 +367,6 @@ async function launchContext(options, extraOptions) {
|
|
|
365
367
|
// a temporary page and we call closeBrowser again when that page closes.
|
|
366
368
|
if (closingBrowser) return;
|
|
367
369
|
closingBrowser = true;
|
|
368
|
-
if (options.saveTrace) await context.tracing.stop({
|
|
369
|
-
path: options.saveTrace
|
|
370
|
-
});
|
|
371
370
|
if (options.saveStorage) await context.storageState({
|
|
372
371
|
path: options.saveStorage
|
|
373
372
|
}).catch(e => null);
|
|
@@ -390,10 +389,6 @@ async function launchContext(options, extraOptions) {
|
|
|
390
389
|
const timeout = options.timeout ? parseInt(options.timeout, 10) : 0;
|
|
391
390
|
context.setDefaultTimeout(timeout);
|
|
392
391
|
context.setDefaultNavigationTimeout(timeout);
|
|
393
|
-
if (options.saveTrace) await context.tracing.start({
|
|
394
|
-
screenshots: true,
|
|
395
|
-
snapshots: true
|
|
396
|
-
});
|
|
397
392
|
|
|
398
393
|
// Omit options that we add automatically for presentation purpose.
|
|
399
394
|
delete launchOptions.headless;
|
|
@@ -413,7 +408,7 @@ async function openPage(context, url) {
|
|
|
413
408
|
if (url) {
|
|
414
409
|
if (_fs.default.existsSync(url)) url = 'file://' + _path.default.resolve(url);else if (!url.startsWith('http') && !url.startsWith('file://') && !url.startsWith('about:') && !url.startsWith('data:')) url = 'http://' + url;
|
|
415
410
|
await page.goto(url).catch(error => {
|
|
416
|
-
if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN
|
|
411
|
+
if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN) {
|
|
417
412
|
// Tests with PWTEST_CLI_AUTO_EXIT_WHEN might close page too fast, resulting
|
|
418
413
|
// in a stray navigation aborted error. We should ignore it.
|
|
419
414
|
} else {
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "program", {
|
|
|
9
9
|
return _program.program;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
var _processLauncher = require("../server/utils/processLauncher");
|
|
12
13
|
var _utils = require("../utils");
|
|
13
14
|
var _program = require("./program");
|
|
14
15
|
/**
|
|
@@ -60,7 +61,7 @@ function addExternalPlaywrightTestCommands() {
|
|
|
60
61
|
playwrightTest.description(`${description} Available in @playwright/test package.`);
|
|
61
62
|
playwrightTest.action(async () => {
|
|
62
63
|
printPlaywrightTestError(command);
|
|
63
|
-
(0,
|
|
64
|
+
(0, _processLauncher.gracefullyProcessExitDoNotHang)(1);
|
|
64
65
|
});
|
|
65
66
|
}
|
|
66
67
|
}
|
package/lib/client/android.js
CHANGED
|
@@ -4,18 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AndroidWebView = exports.AndroidSocket = exports.AndroidInput = exports.AndroidDevice = exports.Android = void 0;
|
|
7
|
-
var
|
|
8
|
-
var _utils = require("../utils");
|
|
9
|
-
var _events = require("./events");
|
|
7
|
+
var _eventEmitter = require("./eventEmitter");
|
|
10
8
|
var _browserContext = require("./browserContext");
|
|
11
9
|
var _channelOwner = require("./channelOwner");
|
|
12
|
-
var _timeoutSettings = require("../common/timeoutSettings");
|
|
13
|
-
var _waiter = require("./waiter");
|
|
14
|
-
var _events2 = require("events");
|
|
15
|
-
var _connection = require("./connection");
|
|
16
10
|
var _errors = require("./errors");
|
|
17
|
-
var
|
|
18
|
-
|
|
11
|
+
var _events = require("./events");
|
|
12
|
+
var _waiter = require("./waiter");
|
|
13
|
+
var _timeoutSettings = require("./timeoutSettings");
|
|
14
|
+
var _rtti = require("../utils/isomorphic/rtti");
|
|
15
|
+
var _time = require("../utils/isomorphic/time");
|
|
16
|
+
var _timeoutRunner = require("../utils/isomorphic/timeoutRunner");
|
|
17
|
+
var _webSocket = require("./webSocket");
|
|
19
18
|
/**
|
|
20
19
|
* Copyright (c) Microsoft Corporation.
|
|
21
20
|
*
|
|
@@ -31,7 +30,7 @@ let _Symbol$asyncDispose;
|
|
|
31
30
|
* See the License for the specific language governing permissions and
|
|
32
31
|
* limitations under the License.
|
|
33
32
|
*/
|
|
34
|
-
|
|
33
|
+
|
|
35
34
|
class Android extends _channelOwner.ChannelOwner {
|
|
36
35
|
static from(android) {
|
|
37
36
|
return android._object;
|
|
@@ -40,13 +39,15 @@ class Android extends _channelOwner.ChannelOwner {
|
|
|
40
39
|
super(parent, type, guid, initializer);
|
|
41
40
|
this._timeoutSettings = void 0;
|
|
42
41
|
this._serverLauncher = void 0;
|
|
43
|
-
this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
|
|
42
|
+
this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform);
|
|
44
43
|
}
|
|
45
44
|
setDefaultTimeout(timeout) {
|
|
46
45
|
this._timeoutSettings.setDefaultTimeout(timeout);
|
|
47
|
-
this.
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
this._wrapApiCall(async () => {
|
|
47
|
+
await this._channel.setDefaultTimeoutNoReply({
|
|
48
|
+
timeout
|
|
49
|
+
});
|
|
50
|
+
}, true).catch(() => {});
|
|
50
51
|
}
|
|
51
52
|
async devices(options = {}) {
|
|
52
53
|
const {
|
|
@@ -60,68 +61,44 @@ class Android extends _channelOwner.ChannelOwner {
|
|
|
60
61
|
}
|
|
61
62
|
async connect(wsEndpoint, options = {}) {
|
|
62
63
|
return await this._wrapApiCall(async () => {
|
|
63
|
-
const deadline = options.timeout ? (0,
|
|
64
|
+
const deadline = options.timeout ? (0, _time.monotonicTime)() + options.timeout : 0;
|
|
64
65
|
const headers = {
|
|
65
66
|
'x-playwright-browser': 'android',
|
|
66
67
|
...options.headers
|
|
67
68
|
};
|
|
68
|
-
const localUtils = this._connection.localUtils();
|
|
69
69
|
const connectParams = {
|
|
70
70
|
wsEndpoint,
|
|
71
71
|
headers,
|
|
72
72
|
slowMo: options.slowMo,
|
|
73
73
|
timeout: options.timeout
|
|
74
74
|
};
|
|
75
|
-
const
|
|
76
|
-
pipe
|
|
77
|
-
} = await localUtils._channel.connect(connectParams);
|
|
78
|
-
const closePipe = () => pipe.close().catch(() => {});
|
|
79
|
-
const connection = new _connection.Connection(localUtils, this._instrumentation);
|
|
80
|
-
connection.markAsRemote();
|
|
81
|
-
connection.on('close', closePipe);
|
|
75
|
+
const connection = await (0, _webSocket.connectOverWebSocket)(this._connection, connectParams);
|
|
82
76
|
let device;
|
|
83
|
-
|
|
84
|
-
const onPipeClosed = () => {
|
|
77
|
+
connection.on('close', () => {
|
|
85
78
|
var _device;
|
|
86
79
|
(_device = device) === null || _device === void 0 || _device._didClose();
|
|
87
|
-
connection.close(closeError);
|
|
88
|
-
};
|
|
89
|
-
pipe.on('closed', onPipeClosed);
|
|
90
|
-
connection.onmessage = message => pipe.send({
|
|
91
|
-
message
|
|
92
|
-
}).catch(onPipeClosed);
|
|
93
|
-
pipe.on('message', ({
|
|
94
|
-
message
|
|
95
|
-
}) => {
|
|
96
|
-
try {
|
|
97
|
-
connection.dispatch(message);
|
|
98
|
-
} catch (e) {
|
|
99
|
-
closeError = String(e);
|
|
100
|
-
closePipe();
|
|
101
|
-
}
|
|
102
80
|
});
|
|
103
81
|
const result = await (0, _timeoutRunner.raceAgainstDeadline)(async () => {
|
|
104
82
|
const playwright = await connection.initializePlaywright();
|
|
105
83
|
if (!playwright._initializer.preConnectedAndroidDevice) {
|
|
106
|
-
|
|
84
|
+
connection.close();
|
|
107
85
|
throw new Error('Malformed endpoint. Did you use Android.launchServer method?');
|
|
108
86
|
}
|
|
109
87
|
device = AndroidDevice.from(playwright._initializer.preConnectedAndroidDevice);
|
|
110
88
|
device._shouldCloseConnectionOnClose = true;
|
|
111
|
-
device.on(_events.Events.AndroidDevice.Close,
|
|
89
|
+
device.on(_events.Events.AndroidDevice.Close, () => connection.close());
|
|
112
90
|
return device;
|
|
113
91
|
}, deadline);
|
|
114
92
|
if (!result.timedOut) {
|
|
115
93
|
return result.result;
|
|
116
94
|
} else {
|
|
117
|
-
|
|
95
|
+
connection.close();
|
|
118
96
|
throw new Error(`Timeout ${options.timeout}ms exceeded`);
|
|
119
97
|
}
|
|
120
98
|
});
|
|
121
99
|
}
|
|
122
100
|
}
|
|
123
101
|
exports.Android = Android;
|
|
124
|
-
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
125
102
|
class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
126
103
|
static from(androidDevice) {
|
|
127
104
|
return androidDevice._object;
|
|
@@ -133,7 +110,7 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
133
110
|
this._shouldCloseConnectionOnClose = false;
|
|
134
111
|
this.input = void 0;
|
|
135
112
|
this.input = new AndroidInput(this);
|
|
136
|
-
this._timeoutSettings = new _timeoutSettings.TimeoutSettings(parent._timeoutSettings);
|
|
113
|
+
this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform, parent._timeoutSettings);
|
|
137
114
|
this._channel.on('webViewAdded', ({
|
|
138
115
|
webView
|
|
139
116
|
}) => this._onWebViewAdded(webView));
|
|
@@ -154,9 +131,11 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
154
131
|
}
|
|
155
132
|
setDefaultTimeout(timeout) {
|
|
156
133
|
this._timeoutSettings.setDefaultTimeout(timeout);
|
|
157
|
-
this.
|
|
158
|
-
|
|
159
|
-
|
|
134
|
+
this._wrapApiCall(async () => {
|
|
135
|
+
await this._channel.setDefaultTimeoutNoReply({
|
|
136
|
+
timeout
|
|
137
|
+
});
|
|
138
|
+
}, true).catch(() => {});
|
|
160
139
|
}
|
|
161
140
|
serial() {
|
|
162
141
|
return this._initializer.serial;
|
|
@@ -262,10 +241,10 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
262
241
|
const {
|
|
263
242
|
binary
|
|
264
243
|
} = await this._channel.screenshot();
|
|
265
|
-
if (options.path) await
|
|
244
|
+
if (options.path) await this._platform.fs().promises.writeFile(options.path, binary);
|
|
266
245
|
return binary;
|
|
267
246
|
}
|
|
268
|
-
async [
|
|
247
|
+
async [Symbol.asyncDispose]() {
|
|
269
248
|
await this.close();
|
|
270
249
|
}
|
|
271
250
|
async close() {
|
|
@@ -294,19 +273,19 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
294
273
|
}
|
|
295
274
|
async installApk(file, options) {
|
|
296
275
|
await this._channel.installApk({
|
|
297
|
-
file: await loadFile(file),
|
|
276
|
+
file: await loadFile(this._platform, file),
|
|
298
277
|
args: options && options.args
|
|
299
278
|
});
|
|
300
279
|
}
|
|
301
280
|
async push(file, path, options) {
|
|
302
281
|
await this._channel.push({
|
|
303
|
-
file: await loadFile(file),
|
|
282
|
+
file: await loadFile(this._platform, file),
|
|
304
283
|
path,
|
|
305
284
|
mode: options ? options.mode : undefined
|
|
306
285
|
});
|
|
307
286
|
}
|
|
308
287
|
async launchBrowser(options = {}) {
|
|
309
|
-
const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(options);
|
|
288
|
+
const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(this._platform, options);
|
|
310
289
|
const result = await this._channel.launchBrowser(contextOptions);
|
|
311
290
|
const context = _browserContext.BrowserContext.from(result.context);
|
|
312
291
|
context._setOptions(contextOptions, {});
|
|
@@ -350,8 +329,8 @@ class AndroidSocket extends _channelOwner.ChannelOwner {
|
|
|
350
329
|
}
|
|
351
330
|
}
|
|
352
331
|
exports.AndroidSocket = AndroidSocket;
|
|
353
|
-
async function loadFile(file) {
|
|
354
|
-
if ((0,
|
|
332
|
+
async function loadFile(platform, file) {
|
|
333
|
+
if ((0, _rtti.isString)(file)) return await platform.fs().promises.readFile(file);
|
|
355
334
|
return file;
|
|
356
335
|
}
|
|
357
336
|
class AndroidInput {
|
|
@@ -411,7 +390,7 @@ function toSelectorChannel(selector) {
|
|
|
411
390
|
} = selector;
|
|
412
391
|
const toRegex = value => {
|
|
413
392
|
if (value === undefined) return undefined;
|
|
414
|
-
if ((0,
|
|
393
|
+
if ((0, _rtti.isRegExp)(value)) return value.source;
|
|
415
394
|
return '^' + value.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d') + '$';
|
|
416
395
|
};
|
|
417
396
|
return {
|
|
@@ -439,9 +418,9 @@ function toSelectorChannel(selector) {
|
|
|
439
418
|
selected
|
|
440
419
|
};
|
|
441
420
|
}
|
|
442
|
-
class AndroidWebView extends
|
|
421
|
+
class AndroidWebView extends _eventEmitter.EventEmitter {
|
|
443
422
|
constructor(device, data) {
|
|
444
|
-
super();
|
|
423
|
+
super(device._platform);
|
|
445
424
|
this._device = void 0;
|
|
446
425
|
this._data = void 0;
|
|
447
426
|
this._pagePromise = void 0;
|
package/lib/client/artifact.js
CHANGED
|
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Artifact = void 0;
|
|
7
|
-
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
-
var _stream = require("./stream");
|
|
9
|
-
var _fileUtils = require("../utils/fileUtils");
|
|
10
7
|
var _channelOwner = require("./channelOwner");
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
var _stream = require("./stream");
|
|
9
|
+
var _fileUtils = require("./fileUtils");
|
|
13
10
|
/**
|
|
14
11
|
* Copyright (c) Microsoft Corporation.
|
|
15
12
|
*
|
|
@@ -43,9 +40,9 @@ class Artifact extends _channelOwner.ChannelOwner {
|
|
|
43
40
|
}
|
|
44
41
|
const result = await this._channel.saveAsStream();
|
|
45
42
|
const stream = _stream.Stream.from(result.stream);
|
|
46
|
-
await (0, _fileUtils.mkdirIfNeeded)(path);
|
|
43
|
+
await (0, _fileUtils.mkdirIfNeeded)(this._platform, path);
|
|
47
44
|
await new Promise((resolve, reject) => {
|
|
48
|
-
stream.stream().pipe(fs.createWriteStream(path)).on('finish', resolve).on('error', reject);
|
|
45
|
+
stream.stream().pipe(this._platform.fs().createWriteStream(path)).on('finish', resolve).on('error', reject);
|
|
49
46
|
});
|
|
50
47
|
}
|
|
51
48
|
async failure() {
|
package/lib/client/browser.js
CHANGED
|
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Browser = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _artifact = require("./artifact");
|
|
8
8
|
var _browserContext = require("./browserContext");
|
|
9
|
+
var _cdpSession = require("./cdpSession");
|
|
9
10
|
var _channelOwner = require("./channelOwner");
|
|
10
|
-
var _events = require("./events");
|
|
11
11
|
var _errors = require("./errors");
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var _utils = require("../utils");
|
|
15
|
-
let _Symbol$asyncDispose;
|
|
12
|
+
var _events = require("./events");
|
|
13
|
+
var _fileUtils = require("./fileUtils");
|
|
16
14
|
/**
|
|
17
15
|
* Copyright (c) Microsoft Corporation.
|
|
18
16
|
*
|
|
@@ -28,8 +26,7 @@ let _Symbol$asyncDispose;
|
|
|
28
26
|
* See the License for the specific language governing permissions and
|
|
29
27
|
* limitations under the License.
|
|
30
28
|
*/
|
|
31
|
-
|
|
32
|
-
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
29
|
+
|
|
33
30
|
class Browser extends _channelOwner.ChannelOwner {
|
|
34
31
|
static from(browser) {
|
|
35
32
|
return browser._object;
|
|
@@ -44,8 +41,6 @@ class Browser extends _channelOwner.ChannelOwner {
|
|
|
44
41
|
this._options = {};
|
|
45
42
|
this._name = void 0;
|
|
46
43
|
this._path = void 0;
|
|
47
|
-
// Used from @playwright/test fixtures.
|
|
48
|
-
this._connectHeaders = void 0;
|
|
49
44
|
this._closeReason = void 0;
|
|
50
45
|
this._name = initializer.name;
|
|
51
46
|
this._channel.on('close', () => this._didClose());
|
|
@@ -76,10 +71,10 @@ class Browser extends _channelOwner.ChannelOwner {
|
|
|
76
71
|
}
|
|
77
72
|
async _innerNewContext(options = {}, forReuse) {
|
|
78
73
|
options = {
|
|
79
|
-
...this._browserType._defaultContextOptions,
|
|
74
|
+
...this._browserType._playwright._defaultContextOptions,
|
|
80
75
|
...options
|
|
81
76
|
};
|
|
82
|
-
const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(options);
|
|
77
|
+
const contextOptions = await (0, _browserContext.prepareBrowserContextParams)(this._platform, options);
|
|
83
78
|
const response = forReuse ? await this._channel.newContextForReuse(contextOptions) : await this._channel.newContext(contextOptions);
|
|
84
79
|
const context = _browserContext.BrowserContext.from(response.context);
|
|
85
80
|
await this._browserType._didCreateContext(context, contextOptions, this._options, options.logger || this._logger);
|
|
@@ -118,13 +113,13 @@ class Browser extends _channelOwner.ChannelOwner {
|
|
|
118
113
|
const buffer = await artifact.readIntoBuffer();
|
|
119
114
|
await artifact.delete();
|
|
120
115
|
if (this._path) {
|
|
121
|
-
await (0,
|
|
122
|
-
await
|
|
116
|
+
await (0, _fileUtils.mkdirIfNeeded)(this._platform, this._path);
|
|
117
|
+
await this._platform.fs().promises.writeFile(this._path, buffer);
|
|
123
118
|
this._path = undefined;
|
|
124
119
|
}
|
|
125
120
|
return buffer;
|
|
126
121
|
}
|
|
127
|
-
async [
|
|
122
|
+
async [Symbol.asyncDispose]() {
|
|
128
123
|
await this.close();
|
|
129
124
|
}
|
|
130
125
|
async close(options = {}) {
|