patchright-core 1.50.0 → 1.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ThirdPartyNotices.txt +381 -55
- package/browsers.json +22 -10
- package/index.js +0 -1
- package/lib/androidServerImpl.js +4 -4
- package/lib/browserServerImpl.js +18 -9
- package/lib/cli/driver.js +6 -6
- package/lib/cli/program.js +9 -9
- 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 +77 -73
- package/lib/client/browserType.js +30 -64
- package/lib/client/channelOwner.js +23 -20
- package/lib/client/clientHelper.js +5 -7
- package/lib/client/clientStackTrace.js +65 -0
- package/lib/client/connection.js +46 -39
- 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 +60 -61
- package/lib/client/fileUtils.js +31 -0
- package/lib/client/frame.js +30 -29
- 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 +37 -18
- package/lib/client/network.js +40 -40
- package/lib/client/page.js +59 -55
- 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 +10 -7
- package/lib/client/video.js +2 -2
- package/lib/client/waiter.js +5 -6
- package/lib/client/webSocket.js +106 -0
- package/lib/client/worker.js +12 -10
- 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/inProcessFactory.js +6 -3
- package/lib/outofprocess.js +12 -8
- package/lib/protocol/validator.js +64 -13
- package/lib/protocol/validatorPrimitives.js +1 -2
- package/lib/remote/playwrightConnection.js +18 -10
- package/lib/remote/playwrightServer.js +20 -7
- 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 +2 -2
- package/lib/server/bidi/bidiChromium.js +4 -3
- package/lib/server/bidi/bidiConnection.js +1 -1
- package/lib/server/bidi/bidiExecutionContext.js +70 -40
- package/lib/server/bidi/bidiFirefox.js +4 -3
- package/lib/server/bidi/bidiInput.js +5 -8
- package/lib/server/bidi/bidiNetworkManager.js +3 -3
- package/lib/server/bidi/bidiOverCdp.js +2 -2
- package/lib/server/bidi/bidiPage.js +30 -46
- package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +37 -40
- package/lib/server/browserType.js +18 -17
- package/lib/{utils/sequence.js → server/callLog.js} +18 -3
- package/lib/server/chromium/chromium.js +14 -14
- package/lib/server/chromium/chromiumSwitches.js +32 -1
- package/lib/server/chromium/crBrowser.js +15 -14
- 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 +25 -17
- package/lib/server/chromium/crInput.js +2 -2
- package/lib/server/chromium/crNetworkManager.js +73 -26
- package/lib/server/chromium/crPage.js +22 -23
- 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/javascript.js +1 -1
- package/lib/server/codegen/languages.js +2 -2
- package/lib/server/debugController.js +3 -3
- package/lib/server/deviceDescriptors.js +1 -1
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dispatchers/androidDispatcher.js +1 -1
- package/lib/server/dispatchers/artifactDispatcher.js +3 -3
- package/lib/server/dispatchers/browserContextDispatcher.js +19 -19
- package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
- package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
- 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 +4 -4
- package/lib/server/dispatchers/jsHandleDispatcher.js +2 -2
- package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
- package/lib/server/dispatchers/localUtilsDispatcher.js +25 -298
- package/lib/server/dispatchers/networkDispatchers.js +3 -3
- package/lib/server/dispatchers/pageDispatcher.js +11 -9
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/streamDispatcher.js +4 -3
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +8 -7
- package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
- package/lib/server/dom.js +18 -12
- 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 +50 -45
- package/lib/server/fileUploadUtils.js +7 -4
- package/lib/server/firefox/ffBrowser.js +11 -3
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +25 -17
- package/lib/server/firefox/ffNetworkManager.js +2 -2
- package/lib/server/firefox/ffPage.js +15 -21
- package/lib/server/firefox/firefox.js +7 -9
- package/lib/server/frameSelectors.js +1 -1
- package/lib/server/frames.js +366 -209
- package/lib/server/har/harRecorder.js +4 -4
- package/lib/server/har/harTracer.js +7 -8
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +2 -2
- package/lib/server/index.js +1 -8
- package/lib/server/input.js +1 -1
- package/lib/server/instrumentation.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
- package/lib/server/javascript.js +46 -33
- package/lib/server/launchApp.js +2 -2
- package/lib/server/localUtils.js +203 -0
- package/lib/server/network.js +3 -3
- package/lib/server/page.js +41 -22
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +5 -5
- package/lib/server/progress.js +1 -1
- package/lib/server/protocolError.js +1 -1
- package/lib/server/recorder/contextRecorder.js +3 -3
- package/lib/server/recorder/recorderApp.js +18 -12
- package/lib/server/recorder/recorderCollection.js +4 -4
- package/lib/server/recorder/throttledFile.js +3 -4
- package/lib/server/recorder.js +7 -5
- package/lib/server/registry/browserFetcher.js +9 -7
- package/lib/server/registry/dependencies.js +15 -15
- package/lib/server/registry/index.js +38 -44
- 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 +9 -9
- package/lib/server/socksInterceptor.js +8 -5
- package/lib/server/storageScript.js +160 -0
- package/lib/{common → server}/timeoutSettings.js +6 -5
- package/lib/server/trace/recorder/snapshotter.js +9 -8
- package/lib/server/trace/recorder/tracing.js +40 -31
- package/lib/server/trace/test/inMemorySnapshotter.js +4 -4
- package/lib/server/trace/viewer/traceViewer.js +13 -5
- package/lib/server/transport.js +2 -2
- package/lib/{utils → server/utils}/comparators.js +4 -4
- package/lib/{utils → server/utils}/crypto.js +4 -4
- package/lib/{utils → server/utils}/debug.js +4 -12
- package/lib/{utils → server/utils}/debugLogger.js +2 -2
- package/lib/{utils → server/utils}/env.js +4 -0
- package/lib/{utils → server/utils}/expectUtils.js +1 -1
- package/lib/{utils → server/utils}/fileUtils.js +4 -5
- package/lib/{utils/happy-eyeballs.js → server/utils/happyEyeballs.js} +22 -24
- package/lib/{utils → server/utils}/hostPlatform.js +1 -1
- package/lib/{utils → server/utils}/httpServer.js +8 -12
- package/lib/{utils → server/utils}/linuxUtils.js +3 -23
- package/lib/{utils → server/utils}/network.js +5 -5
- package/lib/server/utils/nodePlatform.js +140 -0
- package/lib/{protocol/transport.js → server/utils/pipeTransport.js} +2 -2
- package/lib/{utils → server/utils}/processLauncher.js +5 -5
- package/lib/{utils → server/utils}/profiler.js +5 -6
- package/lib/{common → server/utils}/socksProxy.js +10 -9
- package/lib/{utils → server/utils}/userAgent.js +2 -16
- package/lib/{utils → server/utils}/wsServer.js +3 -3
- package/lib/{utils → server/utils}/zipFile.js +1 -1
- package/lib/{utils → server/utils}/zones.js +9 -24
- package/lib/server/webkit/webkit.js +4 -4
- package/lib/server/webkit/wkBrowser.js +4 -4
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +25 -17
- package/lib/server/webkit/wkInput.js +2 -2
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +41 -40
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +2 -2
- package/lib/utils/isomorphic/ariaSnapshot.js +2 -1
- package/lib/utils/isomorphic/assert.js +25 -0
- package/lib/utils/isomorphic/colors.js +65 -0
- package/lib/utils/isomorphic/cssParser.js +1 -1
- package/lib/utils/isomorphic/locatorGenerators.js +13 -1
- package/lib/utils/isomorphic/locatorParser.js +2 -2
- package/lib/utils/{manualPromise.js → isomorphic/manualPromise.js} +3 -5
- package/lib/utils/isomorphic/mimeType.js +11 -3
- package/lib/utils/{multimap.js → isomorphic/multimap.js} +1 -3
- package/lib/utils/{rtti.js → isomorphic/rtti.js} +2 -5
- package/lib/utils/isomorphic/stackTrace.js +169 -0
- package/lib/utils/isomorphic/stringUtils.js +1 -1
- package/lib/utils/{time.js → isomorphic/time.js} +1 -13
- package/lib/utils/{timeoutRunner.js → isomorphic/timeoutRunner.js} +4 -4
- package/lib/utils/isomorphic/traceUtils.js +23 -0
- package/lib/{utils/index.js → utils.js} +200 -121
- package/lib/utilsBundle.js +1 -25
- package/lib/utilsBundleImpl/index.js +119 -121
- package/lib/vite/htmlReport/index.html +20 -20
- package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DpJ-EmBQ.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +259 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.5fN5lw10.css +1 -0
- package/lib/vite/traceViewer/index.CUq7VgrV.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -4
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +123 -99
- package/types/types.d.ts +110 -38
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/traceUtils.js +0 -44
- package/lib/vite/recorder/assets/codeMirrorModule-3Qn3tPnZ.js +0 -24
- package/lib/vite/recorder/assets/index-Bek6JFv8.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-aLkSUGpW.js +0 -24
- package/lib/vite/traceViewer/assets/defaultSettingsView-CxUo6zd3.js +0 -243
- package/lib/vite/traceViewer/defaultSettingsView.DtIkrKWn.css +0 -1
- package/lib/vite/traceViewer/index.Bhu5cv5R.js +0 -2
- package/lib/vite/traceViewer/uiMode.BBy7FOVd.js +0 -5
- /package/lib/{utils → server/utils}/ascii.js +0 -0
- /package/lib/{utils → server/utils}/eventsHelper.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/colorUtils.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/compare.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/imageChannel.js +0 -0
- /package/lib/{image_tools → server/utils/image_tools}/stats.js +0 -0
- /package/lib/{utils → server/utils}/spawnAsync.js +0 -0
- /package/lib/{utils → server/utils}/task.js +0 -0
- /package/lib/utils/{headers.js → isomorphic/headers.js} +0 -0
- /package/lib/utils/{semaphore.js → isomorphic/semaphore.js} +0 -0
- /package/lib/{common → utils/isomorphic}/types.js +0 -0
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/recorder/assets/{index-CAQewHss.css → index-eHBmevrY.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{uiMode.Be_ME-Go.css → uiMode.BatfzHMG.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
package/lib/cli/driver.js
CHANGED
|
@@ -9,13 +9,13 @@ exports.runDriver = runDriver;
|
|
|
9
9
|
exports.runServer = runServer;
|
|
10
10
|
var _fs = _interopRequireDefault(require("fs"));
|
|
11
11
|
var playwright = _interopRequireWildcard(require("../.."));
|
|
12
|
-
var
|
|
13
|
-
var _transport = require("../protocol/transport");
|
|
12
|
+
var _pipeTransport = require("../server/utils/pipeTransport");
|
|
14
13
|
var _playwrightServer = require("../remote/playwrightServer");
|
|
15
|
-
var
|
|
14
|
+
var _server = require("../server");
|
|
15
|
+
var _processLauncher = require("../server/utils/processLauncher");
|
|
16
16
|
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); }
|
|
17
|
-
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 &&
|
|
18
|
-
function _interopRequireDefault(
|
|
17
|
+
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; }
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
/**
|
|
20
20
|
* Copyright (c) Microsoft Corporation.
|
|
21
21
|
*
|
|
@@ -48,7 +48,7 @@ function runDriver() {
|
|
|
48
48
|
});
|
|
49
49
|
return new _server.PlaywrightDispatcher(rootScope, playwright);
|
|
50
50
|
});
|
|
51
|
-
const transport = new
|
|
51
|
+
const transport = new _pipeTransport.PipeTransport(process.stdout, process.stdin);
|
|
52
52
|
transport.onmessage = message => dispatcherConnection.dispatch(JSON.parse(message));
|
|
53
53
|
// Certain Language Binding JSON parsers (e.g. .NET) do not like strings with lone surrogates.
|
|
54
54
|
const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === 'javascript';
|
package/lib/cli/program.js
CHANGED
|
@@ -12,16 +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
|
|
16
|
+
var _driver = require("./driver");
|
|
20
17
|
var _server = require("../server");
|
|
21
|
-
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");
|
|
22
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); }
|
|
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 &&
|
|
24
|
-
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 }; }
|
|
25
25
|
/**
|
|
26
26
|
* Copyright (c) Microsoft Corporation.
|
|
27
27
|
*
|
|
@@ -97,7 +97,7 @@ _utilsBundle.program.command('install [browser...]').description('ensure browser
|
|
|
97
97
|
// For '--no-shell' option, commander sets `shell: false` instead.
|
|
98
98
|
if (options.shell === false) options.noShell = true;
|
|
99
99
|
if ((0, _utils.isLikelyNpxGlobal)()) {
|
|
100
|
-
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));
|
|
101
101
|
}
|
|
102
102
|
try {
|
|
103
103
|
const hasNoArguments = !args.length;
|
|
@@ -408,7 +408,7 @@ async function openPage(context, url) {
|
|
|
408
408
|
if (url) {
|
|
409
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;
|
|
410
410
|
await page.goto(url).catch(error => {
|
|
411
|
-
if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN
|
|
411
|
+
if (process.env.PWTEST_CLI_AUTO_EXIT_WHEN) {
|
|
412
412
|
// Tests with PWTEST_CLI_AUTO_EXIT_WHEN might close page too fast, resulting
|
|
413
413
|
// in a stray navigation aborted error. We should ignore it.
|
|
414
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 = {}) {
|