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/server/dom.js
CHANGED
|
@@ -10,15 +10,15 @@ exports.kUnableToAdoptErrorMessage = void 0;
|
|
|
10
10
|
exports.throwElementIsNotAttached = throwElementIsNotAttached;
|
|
11
11
|
exports.throwRetargetableDOMError = throwRetargetableDOMError;
|
|
12
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
|
-
var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
|
|
14
|
-
var _protocolError = require("./protocolError");
|
|
15
13
|
var js = _interopRequireWildcard(require("./javascript"));
|
|
16
14
|
var _progress = require("./progress");
|
|
17
15
|
var _utils = require("../utils");
|
|
18
16
|
var _fileUploadUtils = require("./fileUploadUtils");
|
|
17
|
+
var _protocolError = require("./protocolError");
|
|
18
|
+
var injectedScriptSource = _interopRequireWildcard(require("../generated/injectedScriptSource"));
|
|
19
19
|
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); }
|
|
20
|
-
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 &&
|
|
21
|
-
function _interopRequireDefault(
|
|
20
|
+
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; }
|
|
21
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
22
|
/**
|
|
23
23
|
* Copyright (c) Microsoft Corporation.
|
|
24
24
|
*
|
|
@@ -71,10 +71,6 @@ class FrameExecutionContext extends js.ExecutionContext {
|
|
|
71
71
|
returnByValue: false
|
|
72
72
|
}, arg);
|
|
73
73
|
}
|
|
74
|
-
createHandle(remoteObject) {
|
|
75
|
-
if (this.frame._page._delegate.isElementHandle(remoteObject)) return new ElementHandle(this, remoteObject.objectId);
|
|
76
|
-
return super.createHandle(remoteObject);
|
|
77
|
-
}
|
|
78
74
|
injectedScript() {
|
|
79
75
|
if (!this._injectedScriptPromise) {
|
|
80
76
|
const custom = [];
|
|
@@ -98,7 +94,10 @@ class FrameExecutionContext extends js.ExecutionContext {
|
|
|
98
94
|
);
|
|
99
95
|
})();
|
|
100
96
|
`;
|
|
101
|
-
this._injectedScriptPromise = this.rawEvaluateHandle(source).then(
|
|
97
|
+
this._injectedScriptPromise = this.rawEvaluateHandle(source).then(handle => {
|
|
98
|
+
handle._setPreview('InjectedScript');
|
|
99
|
+
return handle;
|
|
100
|
+
});
|
|
102
101
|
}
|
|
103
102
|
return this._injectedScriptPromise;
|
|
104
103
|
}
|
|
@@ -158,6 +157,13 @@ class ElementHandle extends js.JSHandle {
|
|
|
158
157
|
if (!isFrameElement) return null;
|
|
159
158
|
return this._page._delegate.getContentFrame(this);
|
|
160
159
|
}
|
|
160
|
+
async generateLocatorString() {
|
|
161
|
+
const selector = await this.evaluateInUtility(async ([injected, node]) => {
|
|
162
|
+
return injected.generateSelectorSimple(node);
|
|
163
|
+
}, {});
|
|
164
|
+
if (selector === 'error:notconnected') return;
|
|
165
|
+
return (0, _utils.asLocator)('javascript', selector);
|
|
166
|
+
}
|
|
161
167
|
async getAttribute(metadata, name) {
|
|
162
168
|
return this._frame.getAttribute(metadata, ':scope', name, {}, this);
|
|
163
169
|
}
|
|
@@ -639,7 +645,7 @@ class ElementHandle extends js.JSHandle {
|
|
|
639
645
|
await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory);
|
|
640
646
|
await waitForInputEvent;
|
|
641
647
|
} else {
|
|
642
|
-
await
|
|
648
|
+
await retargeted.evaluateInUtility(([injected, node, files]) => injected.setInputFiles(node, files), filePayloads);
|
|
643
649
|
}
|
|
644
650
|
return 'done';
|
|
645
651
|
}
|
|
@@ -729,8 +735,8 @@ class ElementHandle extends js.JSHandle {
|
|
|
729
735
|
async boundingBox() {
|
|
730
736
|
return this._page._delegate.getBoundingBox(this);
|
|
731
737
|
}
|
|
732
|
-
async ariaSnapshot() {
|
|
733
|
-
return await this.evaluateInUtility(([injected, element]) => injected.ariaSnapshot(element),
|
|
738
|
+
async ariaSnapshot(options) {
|
|
739
|
+
return await this.evaluateInUtility(([injected, element, options]) => injected.ariaSnapshot(element, options), options);
|
|
734
740
|
}
|
|
735
741
|
async screenshot(metadata, options = {}) {
|
|
736
742
|
const controller = new _progress.ProgressController(metadata, this);
|
package/lib/server/download.js
CHANGED
|
@@ -8,7 +8,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
8
8
|
var _page = require("./page");
|
|
9
9
|
var _utils = require("../utils");
|
|
10
10
|
var _artifact = require("./artifact");
|
|
11
|
-
function _interopRequireDefault(
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
/**
|
|
13
13
|
* Copyright (c) Microsoft Corporation.
|
|
14
14
|
*
|
|
@@ -7,26 +7,27 @@ exports.ElectronApplication = exports.Electron = void 0;
|
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
8
|
var _os = _interopRequireDefault(require("os"));
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var readline = _interopRequireWildcard(require("readline"));
|
|
11
|
+
var _timeoutSettings = require("../timeoutSettings");
|
|
12
|
+
var _utils = require("../../utils");
|
|
13
|
+
var _ascii = require("../utils/ascii");
|
|
14
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
15
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
16
|
+
var _browserContext = require("../browserContext");
|
|
10
17
|
var _crBrowser = require("../chromium/crBrowser");
|
|
11
18
|
var _crConnection = require("../chromium/crConnection");
|
|
12
19
|
var _crExecutionContext = require("../chromium/crExecutionContext");
|
|
13
|
-
var js = _interopRequireWildcard(require("../javascript"));
|
|
14
|
-
var _timeoutSettings = require("../../common/timeoutSettings");
|
|
15
|
-
var _utils = require("../../utils");
|
|
16
|
-
var _transport = require("../transport");
|
|
17
|
-
var _processLauncher = require("../../utils/processLauncher");
|
|
18
|
-
var _browserContext = require("../browserContext");
|
|
19
|
-
var _progress = require("../progress");
|
|
20
|
-
var _helper = require("../helper");
|
|
21
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
22
|
-
var readline = _interopRequireWildcard(require("readline"));
|
|
23
|
-
var _debugLogger = require("../../utils/debugLogger");
|
|
24
|
-
var _instrumentation = require("../instrumentation");
|
|
25
20
|
var _crProtocolHelper = require("../chromium/crProtocolHelper");
|
|
26
21
|
var _console = require("../console");
|
|
22
|
+
var _helper = require("../helper");
|
|
23
|
+
var _instrumentation = require("../instrumentation");
|
|
24
|
+
var js = _interopRequireWildcard(require("../javascript"));
|
|
25
|
+
var _processLauncher = require("../utils/processLauncher");
|
|
26
|
+
var _progress = require("../progress");
|
|
27
|
+
var _transport = require("../transport");
|
|
27
28
|
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); }
|
|
28
|
-
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 &&
|
|
29
|
-
function _interopRequireDefault(
|
|
29
|
+
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; }
|
|
30
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
30
31
|
/**
|
|
31
32
|
* Copyright (c) Microsoft Corporation.
|
|
32
33
|
*
|
|
@@ -102,7 +103,7 @@ class ElectronApplication extends _instrumentation.SdkObject {
|
|
|
102
103
|
return;
|
|
103
104
|
}
|
|
104
105
|
if (!this._nodeExecutionContext) return;
|
|
105
|
-
const args = event.args.map(arg => this._nodeExecutionContext
|
|
106
|
+
const args = event.args.map(arg => (0, _crExecutionContext.createHandle)(this._nodeExecutionContext, arg));
|
|
106
107
|
const message = new _console.ConsoleMessage(null, event.type, undefined, args, (0, _crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
|
|
107
108
|
this.emit(ElectronApplication.Events.Console, message);
|
|
108
109
|
}
|
|
@@ -174,7 +175,7 @@ class Electron extends _instrumentation.SdkObject {
|
|
|
174
175
|
command = require('electron/index.js');
|
|
175
176
|
} catch (error) {
|
|
176
177
|
if ((error === null || error === void 0 ? void 0 : error.code) === 'MODULE_NOT_FOUND') {
|
|
177
|
-
throw new Error('\n' + (0,
|
|
178
|
+
throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
|
|
178
179
|
}
|
|
179
180
|
throw error;
|
|
180
181
|
}
|
package/lib/server/errors.js
CHANGED
|
@@ -7,8 +7,8 @@ exports.TimeoutError = exports.TargetClosedError = void 0;
|
|
|
7
7
|
exports.isTargetClosedError = isTargetClosedError;
|
|
8
8
|
exports.parseError = parseError;
|
|
9
9
|
exports.serializeError = serializeError;
|
|
10
|
-
var _utils = require("../utils");
|
|
11
10
|
var _serializers = require("../protocol/serializers");
|
|
11
|
+
var _utils = require("../utils");
|
|
12
12
|
/**
|
|
13
13
|
* Copyright (c) Microsoft Corporation.
|
|
14
14
|
*
|
package/lib/server/fetch.js
CHANGED
|
@@ -8,21 +8,25 @@ exports.createProxyAgent = createProxyAgent;
|
|
|
8
8
|
var _http = _interopRequireDefault(require("http"));
|
|
9
9
|
var _https = _interopRequireDefault(require("https"));
|
|
10
10
|
var _stream = require("stream");
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
11
|
+
var _tls = require("tls");
|
|
12
|
+
var _url = _interopRequireDefault(require("url"));
|
|
13
|
+
var zlib = _interopRequireWildcard(require("zlib"));
|
|
14
|
+
var _timeoutSettings = require("./timeoutSettings");
|
|
14
15
|
var _utils = require("../utils");
|
|
16
|
+
var _crypto = require("./utils/crypto");
|
|
17
|
+
var _userAgent = require("./utils/userAgent");
|
|
15
18
|
var _utilsBundle = require("../utilsBundle");
|
|
16
19
|
var _browserContext = require("./browserContext");
|
|
17
20
|
var _cookieStore = require("./cookieStore");
|
|
18
21
|
var _formData = require("./formData");
|
|
19
|
-
var _happyEyeballs = require("../utils/happy-eyeballs");
|
|
20
22
|
var _instrumentation = require("./instrumentation");
|
|
21
23
|
var _progress = require("./progress");
|
|
22
|
-
var _tracing = require("./trace/recorder/tracing");
|
|
23
24
|
var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
|
|
24
|
-
var
|
|
25
|
-
|
|
25
|
+
var _happyEyeballs = require("./utils/happyEyeballs");
|
|
26
|
+
var _tracing = require("./trace/recorder/tracing");
|
|
27
|
+
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); }
|
|
28
|
+
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; }
|
|
29
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
30
|
/**
|
|
27
31
|
* Copyright (c) Microsoft Corporation.
|
|
28
32
|
*
|
|
@@ -66,7 +70,7 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
66
70
|
this.fetchLog.delete(fetchUid);
|
|
67
71
|
}
|
|
68
72
|
_storeResponseBody(body) {
|
|
69
|
-
const uid = (0,
|
|
73
|
+
const uid = (0, _crypto.createGuid)();
|
|
70
74
|
this.fetchResponses.set(uid, body);
|
|
71
75
|
return uid;
|
|
72
76
|
}
|
|
@@ -129,7 +133,8 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
129
133
|
});
|
|
130
134
|
const fetchUid = this._storeResponseBody(fetchResponse.body);
|
|
131
135
|
this.fetchLog.set(fetchUid, controller.metadata.log);
|
|
132
|
-
|
|
136
|
+
const failOnStatusCode = params.failOnStatusCode !== undefined ? params.failOnStatusCode : !!defaults.failOnStatusCode;
|
|
137
|
+
if (failOnStatusCode && (fetchResponse.status < 200 || fetchResponse.status >= 400)) {
|
|
133
138
|
let responseText = '';
|
|
134
139
|
if (fetchResponse.body.byteLength) {
|
|
135
140
|
let text = fetchResponse.body.toString('utf8');
|
|
@@ -171,8 +176,7 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
171
176
|
}
|
|
172
177
|
}
|
|
173
178
|
async _sendRequestWithRetries(progress, url, options, postData, maxRetries) {
|
|
174
|
-
|
|
175
|
-
(_maxRetries = maxRetries) !== null && _maxRetries !== void 0 ? _maxRetries : maxRetries = 0;
|
|
179
|
+
maxRetries !== null && maxRetries !== void 0 ? maxRetries : maxRetries = 0;
|
|
176
180
|
let backoff = 250;
|
|
177
181
|
for (let i = 0; i <= maxRetries; i++) {
|
|
178
182
|
try {
|
|
@@ -229,10 +233,9 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
229
233
|
const request = requestConstructor(url, requestOptions, async response => {
|
|
230
234
|
const responseAt = (0, _utils.monotonicTime)();
|
|
231
235
|
const notifyRequestFinished = body => {
|
|
232
|
-
var _tlsHandshakeAt;
|
|
233
236
|
const endAt = (0, _utils.monotonicTime)();
|
|
234
237
|
// spec: http://www.softwareishard.com/blog/har-12-spec/#timings
|
|
235
|
-
const connectEnd =
|
|
238
|
+
const connectEnd = tlsHandshakeAt !== null && tlsHandshakeAt !== void 0 ? tlsHandshakeAt : tcpConnectionAt;
|
|
236
239
|
const timings = {
|
|
237
240
|
send: requestFinishAt - startAt,
|
|
238
241
|
wait: responseAt - requestFinishAt,
|
|
@@ -356,17 +359,17 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
356
359
|
let transform;
|
|
357
360
|
const encoding = response.headers['content-encoding'];
|
|
358
361
|
if (encoding === 'gzip' || encoding === 'x-gzip') {
|
|
359
|
-
transform =
|
|
360
|
-
flush:
|
|
361
|
-
finishFlush:
|
|
362
|
+
transform = zlib.createGunzip({
|
|
363
|
+
flush: zlib.constants.Z_SYNC_FLUSH,
|
|
364
|
+
finishFlush: zlib.constants.Z_SYNC_FLUSH
|
|
362
365
|
});
|
|
363
366
|
} else if (encoding === 'br') {
|
|
364
|
-
transform =
|
|
365
|
-
flush:
|
|
366
|
-
finishFlush:
|
|
367
|
+
transform = zlib.createBrotliDecompress({
|
|
368
|
+
flush: zlib.constants.BROTLI_OPERATION_FLUSH,
|
|
369
|
+
finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH
|
|
367
370
|
});
|
|
368
371
|
} else if (encoding === 'deflate') {
|
|
369
|
-
transform =
|
|
372
|
+
transform = zlib.createInflate();
|
|
370
373
|
}
|
|
371
374
|
if (transform) {
|
|
372
375
|
// Brotli and deflate decompressors throw if the input stream is empty.
|
|
@@ -388,7 +391,6 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
388
391
|
}));
|
|
389
392
|
request.on('close', () => _utils.eventsHelper.removeEventListeners(listeners));
|
|
390
393
|
request.on('socket', socket => {
|
|
391
|
-
var _tcpConnectionAt, _tcpConnectionAt3;
|
|
392
394
|
if (request.reusedSocket) {
|
|
393
395
|
reusedSocketAt = (0, _utils.monotonicTime)();
|
|
394
396
|
return;
|
|
@@ -397,14 +399,13 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
397
399
|
// happy eyeballs don't emit lookup and connect events, so we use our custom ones
|
|
398
400
|
const happyEyeBallsTimings = (0, _happyEyeballs.timingForSocket)(socket);
|
|
399
401
|
dnsLookupAt = happyEyeBallsTimings.dnsLookupAt;
|
|
400
|
-
|
|
402
|
+
tcpConnectionAt = happyEyeBallsTimings.tcpConnectionAt;
|
|
401
403
|
|
|
402
404
|
// non-happy-eyeballs sockets
|
|
403
405
|
listeners.push(_utils.eventsHelper.addEventListener(socket, 'lookup', () => {
|
|
404
406
|
dnsLookupAt = (0, _utils.monotonicTime)();
|
|
405
407
|
}), _utils.eventsHelper.addEventListener(socket, 'connect', () => {
|
|
406
|
-
|
|
407
|
-
(_tcpConnectionAt2 = tcpConnectionAt) !== null && _tcpConnectionAt2 !== void 0 ? _tcpConnectionAt2 : tcpConnectionAt = (0, _utils.monotonicTime)();
|
|
408
|
+
tcpConnectionAt = (0, _utils.monotonicTime)();
|
|
408
409
|
}), _utils.eventsHelper.addEventListener(socket, 'secureConnect', () => {
|
|
409
410
|
tlsHandshakeAt = (0, _utils.monotonicTime)();
|
|
410
411
|
if (socket instanceof _tls.TLSSocket) {
|
|
@@ -419,21 +420,12 @@ class APIRequestContext extends _instrumentation.SdkObject {
|
|
|
419
420
|
};
|
|
420
421
|
}
|
|
421
422
|
}));
|
|
422
|
-
|
|
423
|
-
// when using socks proxy, having the socket means the connection got established
|
|
424
|
-
if (agent instanceof _utilsBundle.SocksProxyAgent) (_tcpConnectionAt3 = tcpConnectionAt) !== null && _tcpConnectionAt3 !== void 0 ? _tcpConnectionAt3 : tcpConnectionAt = (0, _utils.monotonicTime)();
|
|
425
423
|
serverIPAddress = socket.remoteAddress;
|
|
426
424
|
serverPort = socket.remotePort;
|
|
427
425
|
});
|
|
428
426
|
request.on('finish', () => {
|
|
429
427
|
requestFinishAt = (0, _utils.monotonicTime)();
|
|
430
428
|
});
|
|
431
|
-
|
|
432
|
-
// http proxy
|
|
433
|
-
request.on('proxyConnect', () => {
|
|
434
|
-
var _tcpConnectionAt4;
|
|
435
|
-
(_tcpConnectionAt4 = tcpConnectionAt) !== null && _tcpConnectionAt4 !== void 0 ? _tcpConnectionAt4 : tcpConnectionAt = (0, _utils.monotonicTime)();
|
|
436
|
-
});
|
|
437
429
|
progress.log(`→ ${options.method} ${url.toString()}`);
|
|
438
430
|
if (options.headers) {
|
|
439
431
|
for (const [name, value] of Object.entries(options.headers)) progress.log(` ${name}: ${value}`);
|
|
@@ -500,6 +492,7 @@ class BrowserContextAPIRequestContext extends APIRequestContext {
|
|
|
500
492
|
return {
|
|
501
493
|
userAgent: this._context._options.userAgent || this._context._browser.userAgent(),
|
|
502
494
|
extraHTTPHeaders: this._context._options.extraHTTPHeaders,
|
|
495
|
+
failOnStatusCode: undefined,
|
|
503
496
|
httpCredentials: this._context._options.httpCredentials,
|
|
504
497
|
proxy: this._context._options.proxy || this._context._browser.options.proxy,
|
|
505
498
|
timeoutSettings: this._context._timeoutSettings,
|
|
@@ -514,8 +507,8 @@ class BrowserContextAPIRequestContext extends APIRequestContext {
|
|
|
514
507
|
async _cookies(url) {
|
|
515
508
|
return await this._context.cookies(url.toString());
|
|
516
509
|
}
|
|
517
|
-
async storageState() {
|
|
518
|
-
return this._context.storageState();
|
|
510
|
+
async storageState(indexedDB) {
|
|
511
|
+
return this._context.storageState(indexedDB);
|
|
519
512
|
}
|
|
520
513
|
}
|
|
521
514
|
exports.BrowserContextAPIRequestContext = BrowserContextAPIRequestContext;
|
|
@@ -536,7 +529,11 @@ class GlobalAPIRequestContext extends APIRequestContext {
|
|
|
536
529
|
proxy.server = url;
|
|
537
530
|
}
|
|
538
531
|
if (options.storageState) {
|
|
539
|
-
|
|
532
|
+
var _options$storageState;
|
|
533
|
+
this._origins = (_options$storageState = options.storageState.origins) === null || _options$storageState === void 0 ? void 0 : _options$storageState.map(origin => ({
|
|
534
|
+
indexedDB: [],
|
|
535
|
+
...origin
|
|
536
|
+
}));
|
|
540
537
|
this._cookieStore.addCookies(options.storageState.cookies || []);
|
|
541
538
|
}
|
|
542
539
|
(0, _browserContext.verifyClientCertificates)(options.clientCertificates);
|
|
@@ -544,6 +541,7 @@ class GlobalAPIRequestContext extends APIRequestContext {
|
|
|
544
541
|
baseURL: options.baseURL,
|
|
545
542
|
userAgent: options.userAgent || (0, _userAgent.getUserAgent)(),
|
|
546
543
|
extraHTTPHeaders: options.extraHTTPHeaders,
|
|
544
|
+
failOnStatusCode: !!options.failOnStatusCode,
|
|
547
545
|
ignoreHTTPSErrors: !!options.ignoreHTTPSErrors,
|
|
548
546
|
httpCredentials: options.httpCredentials,
|
|
549
547
|
clientCertificates: options.clientCertificates,
|
|
@@ -570,22 +568,29 @@ class GlobalAPIRequestContext extends APIRequestContext {
|
|
|
570
568
|
async _cookies(url) {
|
|
571
569
|
return this._cookieStore.cookies(url);
|
|
572
570
|
}
|
|
573
|
-
async storageState() {
|
|
571
|
+
async storageState(indexedDB = false) {
|
|
574
572
|
return {
|
|
575
573
|
cookies: this._cookieStore.allCookies(),
|
|
576
|
-
origins: this._origins || []
|
|
574
|
+
origins: (this._origins || []).map(origin => ({
|
|
575
|
+
...origin,
|
|
576
|
+
indexedDB: indexedDB ? origin.indexedDB : []
|
|
577
|
+
}))
|
|
577
578
|
};
|
|
578
579
|
}
|
|
579
580
|
}
|
|
580
581
|
exports.GlobalAPIRequestContext = GlobalAPIRequestContext;
|
|
581
582
|
function createProxyAgent(proxy) {
|
|
582
|
-
var
|
|
583
|
-
const
|
|
584
|
-
if ((
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
583
|
+
var _proxyOpts$protocol;
|
|
584
|
+
const proxyOpts = _url.default.parse(proxy.server);
|
|
585
|
+
if ((_proxyOpts$protocol = proxyOpts.protocol) !== null && _proxyOpts$protocol !== void 0 && _proxyOpts$protocol.startsWith('socks')) {
|
|
586
|
+
return new _utilsBundle.SocksProxyAgent({
|
|
587
|
+
host: proxyOpts.hostname,
|
|
588
|
+
port: proxyOpts.port || undefined
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
if (proxy.username) proxyOpts.auth = `${proxy.username}:${proxy.password || ''}`;
|
|
592
|
+
// TODO: We should use HttpProxyAgent conditional on proxyOpts.protocol instead of always using CONNECT method.
|
|
593
|
+
return new _utilsBundle.HttpsProxyAgent(proxyOpts);
|
|
589
594
|
}
|
|
590
595
|
function toHeadersArray(rawHeaders) {
|
|
591
596
|
const result = [];
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.fileUploadSizeLimit = void 0;
|
|
6
7
|
exports.prepareFilesForUpload = prepareFilesForUpload;
|
|
7
8
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
9
|
var _path = _interopRequireDefault(require("path"));
|
|
9
|
-
var
|
|
10
|
+
var _assert = require("../utils/isomorphic/assert");
|
|
10
11
|
var _utilsBundle = require("../utilsBundle");
|
|
11
|
-
function _interopRequireDefault(
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
13
|
/**
|
|
13
14
|
* Copyright (c) Microsoft Corporation.
|
|
14
15
|
*
|
|
@@ -25,9 +26,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
25
26
|
* limitations under the License.
|
|
26
27
|
*/
|
|
27
28
|
|
|
29
|
+
// Keep in sync with the client.
|
|
30
|
+
const fileUploadSizeLimit = exports.fileUploadSizeLimit = 50 * 1024 * 1024;
|
|
28
31
|
async function filesExceedUploadLimit(files) {
|
|
29
32
|
const sizes = await Promise.all(files.map(async file => (await _fs.default.promises.stat(file)).size));
|
|
30
|
-
return sizes.reduce((total, size) => total + size, 0) >=
|
|
33
|
+
return sizes.reduce((total, size) => total + size, 0) >= fileUploadSizeLimit;
|
|
31
34
|
}
|
|
32
35
|
async function prepareFilesForUpload(frame, params) {
|
|
33
36
|
var _fileBuffers;
|
|
@@ -44,7 +47,7 @@ async function prepareFilesForUpload(frame, params) {
|
|
|
44
47
|
if (streams) localPaths = streams.map(c => c.path());
|
|
45
48
|
if (directoryStream) localDirectory = directoryStream.path();
|
|
46
49
|
if (localPaths) {
|
|
47
|
-
for (const p of localPaths) (0,
|
|
50
|
+
for (const p of localPaths) (0, _assert.assert)(_path.default.isAbsolute(p) && _path.default.resolve(p) === p, 'Paths provided to localPaths must be absolute and fully resolved.');
|
|
48
51
|
}
|
|
49
52
|
let fileBuffers = payloads;
|
|
50
53
|
if (!frame._page._browserContext._browser._isCollocatedWithServer) {
|
|
@@ -4,16 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.FFBrowserContext = exports.FFBrowser = void 0;
|
|
7
|
-
var _errors = require("../errors");
|
|
8
7
|
var _utils = require("../../utils");
|
|
9
8
|
var _browser = require("../browser");
|
|
10
9
|
var _browserContext = require("../browserContext");
|
|
10
|
+
var _errors = require("../errors");
|
|
11
11
|
var network = _interopRequireWildcard(require("../network"));
|
|
12
12
|
var _page = require("../page");
|
|
13
13
|
var _ffConnection = require("./ffConnection");
|
|
14
14
|
var _ffPage = require("./ffPage");
|
|
15
15
|
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); }
|
|
16
|
-
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 &&
|
|
16
|
+
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; }
|
|
17
17
|
/**
|
|
18
18
|
* Copyright 2018 Google Inc. All rights reserved.
|
|
19
19
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -244,6 +244,12 @@ class FFBrowserContext extends _browserContext.BrowserContext {
|
|
|
244
244
|
forcedColors: this._options.forcedColors !== undefined ? this._options.forcedColors : 'none'
|
|
245
245
|
}));
|
|
246
246
|
}
|
|
247
|
+
if (this._options.contrast !== 'no-override') {
|
|
248
|
+
promises.push(this._browser.session.send('Browser.setContrast', {
|
|
249
|
+
browserContextId,
|
|
250
|
+
contrast: this._options.contrast !== undefined ? this._options.contrast : 'no-preference'
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
247
253
|
if (this._options.recordVideo) {
|
|
248
254
|
promises.push(this._ensureVideosPath().then(() => {
|
|
249
255
|
return this._browser.session.send('Browser.setVideoRecordingOptions', {
|
|
@@ -457,4 +463,6 @@ function toJugglerProxyOptions(proxy) {
|
|
|
457
463
|
|
|
458
464
|
// Prefs for quick fixes that didn't make it to the build.
|
|
459
465
|
// Should all be moved to `playwright.cfg`.
|
|
460
|
-
const kBandaidFirefoxUserPrefs = {
|
|
466
|
+
const kBandaidFirefoxUserPrefs = {
|
|
467
|
+
'dom.fetchKeepalive.enabled': false
|
|
468
|
+
};
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.kBrowserCloseMessageId = exports.FFSession = exports.FFConnection = exports.ConnectionEvents = void 0;
|
|
7
7
|
var _events = require("events");
|
|
8
|
-
var _debugLogger = require("
|
|
8
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
9
9
|
var _helper = require("../helper");
|
|
10
10
|
var _protocolError = require("../protocolError");
|
|
11
11
|
/**
|
|
@@ -4,12 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.FFExecutionContext = void 0;
|
|
7
|
-
|
|
8
|
-
var
|
|
7
|
+
exports.createHandle = createHandle;
|
|
8
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
9
|
+
var _stackTrace = require("../../utils/isomorphic/stackTrace");
|
|
9
10
|
var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
|
|
11
|
+
var js = _interopRequireWildcard(require("../javascript"));
|
|
12
|
+
var dom = _interopRequireWildcard(require("../dom"));
|
|
10
13
|
var _protocolError = require("../protocolError");
|
|
11
14
|
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); }
|
|
12
|
-
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 &&
|
|
15
|
+
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; }
|
|
13
16
|
/**
|
|
14
17
|
* Copyright 2019 Google Inc. All rights reserved.
|
|
15
18
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -43,16 +46,16 @@ class FFExecutionContext {
|
|
|
43
46
|
checkException(payload.exceptionDetails);
|
|
44
47
|
return payload.result.value;
|
|
45
48
|
}
|
|
46
|
-
async rawEvaluateHandle(expression) {
|
|
49
|
+
async rawEvaluateHandle(context, expression) {
|
|
47
50
|
const payload = await this._session.send('Runtime.evaluate', {
|
|
48
51
|
expression,
|
|
49
52
|
returnByValue: false,
|
|
50
53
|
executionContextId: this._executionContextId
|
|
51
54
|
}).catch(rewriteError);
|
|
52
55
|
checkException(payload.exceptionDetails);
|
|
53
|
-
return payload.result
|
|
56
|
+
return createHandle(context, payload.result);
|
|
54
57
|
}
|
|
55
|
-
async evaluateWithArguments(expression, returnByValue, utilityScript, values,
|
|
58
|
+
async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
|
|
56
59
|
const payload = await this._session.send('Runtime.callFunction', {
|
|
57
60
|
functionDeclaration: expression,
|
|
58
61
|
args: [{
|
|
@@ -60,8 +63,8 @@ class FFExecutionContext {
|
|
|
60
63
|
value: undefined
|
|
61
64
|
}, ...values.map(value => ({
|
|
62
65
|
value
|
|
63
|
-
})), ...
|
|
64
|
-
objectId,
|
|
66
|
+
})), ...handles.map(handle => ({
|
|
67
|
+
objectId: handle._objectId,
|
|
65
68
|
value: undefined
|
|
66
69
|
}))],
|
|
67
70
|
returnByValue,
|
|
@@ -69,24 +72,22 @@ class FFExecutionContext {
|
|
|
69
72
|
}).catch(rewriteError);
|
|
70
73
|
checkException(payload.exceptionDetails);
|
|
71
74
|
if (returnByValue) return (0, _utilityScriptSerializers.parseEvaluationResultValue)(payload.result.value);
|
|
72
|
-
return utilityScript._context
|
|
75
|
+
return createHandle(utilityScript._context, payload.result);
|
|
73
76
|
}
|
|
74
|
-
async getProperties(
|
|
77
|
+
async getProperties(object) {
|
|
75
78
|
const response = await this._session.send('Runtime.getObjectProperties', {
|
|
76
79
|
executionContextId: this._executionContextId,
|
|
77
|
-
objectId
|
|
80
|
+
objectId: object._objectId
|
|
78
81
|
});
|
|
79
82
|
const result = new Map();
|
|
80
|
-
for (const property of response.properties) result.set(property.name,
|
|
83
|
+
for (const property of response.properties) result.set(property.name, createHandle(object._context, property.value));
|
|
81
84
|
return result;
|
|
82
85
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
async releaseHandle(objectId) {
|
|
86
|
+
async releaseHandle(handle) {
|
|
87
|
+
if (!handle._objectId) return;
|
|
87
88
|
await this._session.send('Runtime.disposeObject', {
|
|
88
89
|
executionContextId: this._executionContextId,
|
|
89
|
-
objectId
|
|
90
|
+
objectId: handle._objectId
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
93
|
}
|
|
@@ -120,4 +121,11 @@ function renderPreview(object) {
|
|
|
120
121
|
if (object.subtype === 'weakset') return 'WeakSet';
|
|
121
122
|
if (object.subtype) return object.subtype[0].toUpperCase() + object.subtype.slice(1);
|
|
122
123
|
if ('value' in object) return String(object.value);
|
|
124
|
+
}
|
|
125
|
+
function createHandle(context, remoteObject) {
|
|
126
|
+
if (remoteObject.subtype === 'node') {
|
|
127
|
+
(0, _assert.assert)(context instanceof dom.FrameExecutionContext);
|
|
128
|
+
return new dom.ElementHandle(context, remoteObject.objectId);
|
|
129
|
+
}
|
|
130
|
+
return new js.JSHandle(context, remoteObject.subtype || remoteObject.type || '', renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
|
|
123
131
|
}
|
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.FFNetworkManager = void 0;
|
|
7
|
-
var _eventsHelper = require("
|
|
7
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
8
8
|
var network = _interopRequireWildcard(require("../network"));
|
|
9
9
|
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); }
|
|
10
|
-
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 &&
|
|
10
|
+
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; }
|
|
11
11
|
/**
|
|
12
12
|
* Copyright 2019 Google Inc. All rights reserved.
|
|
13
13
|
* Modifications copyright (c) Microsoft Corporation.
|