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
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.connectBidiOverCdp = connectBidiOverCdp;
|
|
7
7
|
var bidiMapper = _interopRequireWildcard(require("chromium-bidi/lib/cjs/bidiMapper/BidiMapper"));
|
|
8
8
|
var bidiCdpConnection = _interopRequireWildcard(require("chromium-bidi/lib/cjs/cdp/CdpConnection"));
|
|
9
|
-
var _debugLogger = require("
|
|
9
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
10
10
|
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); }
|
|
11
|
-
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 &&
|
|
11
|
+
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; }
|
|
12
12
|
/**
|
|
13
13
|
* Copyright (c) Microsoft Corporation.
|
|
14
14
|
*
|
|
@@ -4,19 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.BidiPage = void 0;
|
|
7
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
8
7
|
var _utils = require("../../utils");
|
|
9
|
-
var
|
|
8
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
9
|
+
var _browserContext = require("../browserContext");
|
|
10
10
|
var dialog = _interopRequireWildcard(require("../dialog"));
|
|
11
|
+
var dom = _interopRequireWildcard(require("../dom"));
|
|
11
12
|
var _page = require("../page");
|
|
12
|
-
var _bidiInput = require("./bidiInput");
|
|
13
|
-
var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
|
|
14
13
|
var _bidiExecutionContext = require("./bidiExecutionContext");
|
|
14
|
+
var _bidiInput = require("./bidiInput");
|
|
15
15
|
var _bidiNetworkManager = require("./bidiNetworkManager");
|
|
16
|
-
var _browserContext = require("../browserContext");
|
|
17
16
|
var _bidiPdf = require("./bidiPdf");
|
|
17
|
+
var bidi = _interopRequireWildcard(require("./third_party/bidiProtocol"));
|
|
18
18
|
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); }
|
|
19
|
-
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 &&
|
|
19
|
+
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; }
|
|
20
20
|
/**
|
|
21
21
|
* Copyright (c) Microsoft Corporation.
|
|
22
22
|
*
|
|
@@ -101,7 +101,6 @@ class BidiPage {
|
|
|
101
101
|
if (realmInfo.type !== 'window') return;
|
|
102
102
|
const frame = this._page._frameManager.frame(realmInfo.context);
|
|
103
103
|
if (!frame) return;
|
|
104
|
-
const delegate = new _bidiExecutionContext.BidiExecutionContext(this._session, realmInfo);
|
|
105
104
|
let worldName;
|
|
106
105
|
if (!realmInfo.sandbox) {
|
|
107
106
|
worldName = 'main';
|
|
@@ -112,8 +111,8 @@ class BidiPage {
|
|
|
112
111
|
} else {
|
|
113
112
|
return;
|
|
114
113
|
}
|
|
114
|
+
const delegate = new _bidiExecutionContext.BidiExecutionContext(this._session, realmInfo);
|
|
115
115
|
const context = new dom.FrameExecutionContext(delegate, frame, worldName);
|
|
116
|
-
context[contextDelegateSymbol] = delegate;
|
|
117
116
|
frame._contextCreated(worldName, context);
|
|
118
117
|
this._realmToContext.set(realmInfo.realm, context);
|
|
119
118
|
}
|
|
@@ -202,10 +201,7 @@ class BidiPage {
|
|
|
202
201
|
lineNumber: 1,
|
|
203
202
|
columnNumber: 1
|
|
204
203
|
};
|
|
205
|
-
this._page._addConsoleMessage(entry.method, entry.args.map(arg =>
|
|
206
|
-
objectId: arg.handle,
|
|
207
|
-
...arg
|
|
208
|
-
})), location, params.text || undefined);
|
|
204
|
+
this._page._addConsoleMessage(entry.method, entry.args.map(arg => (0, _bidiExecutionContext.createHandle)(context, arg)), location, params.text || undefined);
|
|
209
205
|
}
|
|
210
206
|
async navigateFrame(frame, url, referrer) {
|
|
211
207
|
const {
|
|
@@ -352,21 +348,20 @@ class BidiPage {
|
|
|
352
348
|
}
|
|
353
349
|
async getContentFrame(handle) {
|
|
354
350
|
const executionContext = toBidiExecutionContext(handle._context);
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
if (contentWindow.type === 'window') {
|
|
359
|
-
const frameId = contentWindow.value.context;
|
|
360
|
-
const result = this._page._frameManager.frame(frameId);
|
|
361
|
-
return result;
|
|
362
|
-
}
|
|
363
|
-
return null;
|
|
351
|
+
const frameId = await executionContext.contentFrameIdForFrame(handle);
|
|
352
|
+
if (!frameId) return null;
|
|
353
|
+
return this._page._frameManager.frame(frameId);
|
|
364
354
|
}
|
|
365
355
|
async getOwnerFrame(handle) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
356
|
+
// TODO: switch to utility world?
|
|
357
|
+
const windowHandle = await handle.evaluateHandle(node => {
|
|
358
|
+
var _node$ownerDocument;
|
|
359
|
+
const doc = (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : node;
|
|
360
|
+
return doc.defaultView;
|
|
361
|
+
});
|
|
362
|
+
if (!windowHandle) return null;
|
|
363
|
+
const executionContext = toBidiExecutionContext(handle._context);
|
|
364
|
+
return executionContext.frameIdForWindowHandle(windowHandle);
|
|
370
365
|
}
|
|
371
366
|
async getBoundingBox(handle) {
|
|
372
367
|
const box = await handle.evaluate(element => {
|
|
@@ -449,29 +444,19 @@ class BidiPage {
|
|
|
449
444
|
}));
|
|
450
445
|
return quads;
|
|
451
446
|
}
|
|
452
|
-
async setInputFiles(handle, files) {
|
|
453
|
-
throw new Error('Method not implemented.');
|
|
454
|
-
}
|
|
455
447
|
async setInputFilePaths(handle, paths) {
|
|
456
|
-
|
|
448
|
+
const fromContext = toBidiExecutionContext(handle._context);
|
|
449
|
+
await this._session.send('input.setFiles', {
|
|
450
|
+
context: this._session.sessionId,
|
|
451
|
+
element: await fromContext.nodeIdForElementHandle(handle),
|
|
452
|
+
files: paths
|
|
453
|
+
});
|
|
457
454
|
}
|
|
458
455
|
async adoptElementHandle(handle, to) {
|
|
459
456
|
const fromContext = toBidiExecutionContext(handle._context);
|
|
460
|
-
const
|
|
461
|
-
handle: handle._objectId
|
|
462
|
-
});
|
|
463
|
-
// TODO: store sharedId in the handle.
|
|
464
|
-
if (!('sharedId' in shared)) throw new Error('Element is not a node');
|
|
465
|
-
const sharedId = shared.sharedId;
|
|
457
|
+
const nodeId = await fromContext.nodeIdForElementHandle(handle);
|
|
466
458
|
const executionContext = toBidiExecutionContext(to);
|
|
467
|
-
|
|
468
|
-
sharedId
|
|
469
|
-
});
|
|
470
|
-
if ('handle' in result) return to.createHandle({
|
|
471
|
-
objectId: result.handle,
|
|
472
|
-
...result
|
|
473
|
-
});
|
|
474
|
-
throw new Error('Failed to adopt element handle.');
|
|
459
|
+
return await executionContext.remoteObjectForNodeId(to, nodeId);
|
|
475
460
|
}
|
|
476
461
|
async getAccessibilityTree(needle) {
|
|
477
462
|
throw new Error('Method not implemented.');
|
|
@@ -513,6 +498,5 @@ function addMainBinding(callback) {
|
|
|
513
498
|
globalThis['__playwright__binding__'] = callback;
|
|
514
499
|
}
|
|
515
500
|
function toBidiExecutionContext(executionContext) {
|
|
516
|
-
return executionContext
|
|
517
|
-
}
|
|
518
|
-
const contextDelegateSymbol = Symbol('delegate');
|
|
501
|
+
return executionContext.delegate;
|
|
502
|
+
}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createProfile = createProfile;
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
|
-
function _interopRequireDefault(
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
/**
|
|
11
11
|
* @license
|
|
12
12
|
* Copyright 2023 Google Inc.
|
|
@@ -47,6 +47,13 @@ function defaultProfilePreferences(extraPrefs) {
|
|
|
47
47
|
// console
|
|
48
48
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=1543115
|
|
49
49
|
'browser.dom.window.dump.enabled': true,
|
|
50
|
+
// Make sure newtab weather doesn't hit the network to retrieve weather data.
|
|
51
|
+
'browser.newtabpage.activity-stream.discoverystream.region-weather-config': '',
|
|
52
|
+
// Make sure newtab wallpapers don't hit the network to retrieve wallpaper data.
|
|
53
|
+
'browser.newtabpage.activity-stream.newtabWallpapers.enabled': false,
|
|
54
|
+
'browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled': false,
|
|
55
|
+
// Make sure Topsites doesn't hit the network to retrieve sponsored tiles.
|
|
56
|
+
'browser.newtabpage.activity-stream.showSponsoredTopSites': false,
|
|
50
57
|
// Disable topstories
|
|
51
58
|
'browser.newtabpage.activity-stream.feeds.system.topstories': false,
|
|
52
59
|
// Always display a blank page
|
|
@@ -112,6 +119,13 @@ function defaultProfilePreferences(extraPrefs) {
|
|
|
112
119
|
// Disable slow script dialogues
|
|
113
120
|
'dom.max_chrome_script_run_time': 0,
|
|
114
121
|
'dom.max_script_run_time': 0,
|
|
122
|
+
// Disable background timer throttling to allow tests to run in parallel
|
|
123
|
+
// without a decrease in performance.
|
|
124
|
+
'dom.min_background_timeout_value': 0,
|
|
125
|
+
'dom.min_background_timeout_value_without_budget_throttling': 0,
|
|
126
|
+
'dom.timeout.enable_budget_timer_throttling': false,
|
|
127
|
+
// Disable HTTPS-First upgrades
|
|
128
|
+
'dom.security.https_first': false,
|
|
115
129
|
// Only load extensions from the application and user profile
|
|
116
130
|
// AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_APPLICATION
|
|
117
131
|
'extensions.autoDisableScopes': 0,
|
|
@@ -141,10 +155,14 @@ function defaultProfilePreferences(extraPrefs) {
|
|
|
141
155
|
'hangmonitor.timeout': 0,
|
|
142
156
|
// Show chrome errors and warnings in the error console
|
|
143
157
|
'javascript.options.showInConsole': true,
|
|
158
|
+
// Do not throttle rendering (requestAnimationFrame) in background tabs
|
|
159
|
+
'layout.testing.top-level-always-active': true,
|
|
144
160
|
// Disable download and usage of OpenH264: and Widevine plugins
|
|
145
161
|
'media.gmp-manager.updateEnabled': false,
|
|
146
162
|
// Disable the GFX sanity window
|
|
147
163
|
'media.sanity-test.disabled': true,
|
|
164
|
+
// Disable connectivity service pings
|
|
165
|
+
'network.connectivity-service.enabled': false,
|
|
148
166
|
// Disable experimental feature that is only available in Nightly
|
|
149
167
|
'network.cookie.sameSite.laxByDefault': false,
|
|
150
168
|
// Do not prompt for temporary redirects
|
|
@@ -169,8 +187,6 @@ function defaultProfilePreferences(extraPrefs) {
|
|
|
169
187
|
'security.fileuri.strict_origin_policy': false,
|
|
170
188
|
// Do not wait for the notification button security delay
|
|
171
189
|
'security.notification_enable_delay': 0,
|
|
172
|
-
// Ensure blocklist updates do not hit the network
|
|
173
|
-
'services.settings.server': `http://${server}/dummy/blocklist/`,
|
|
174
190
|
// Do not automatically fill sign-in forms with known usernames and
|
|
175
191
|
// passwords
|
|
176
192
|
'signon.autofillForms': false,
|
package/lib/server/browser.js
CHANGED
|
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Browser = void 0;
|
|
7
|
+
var _artifact = require("./artifact");
|
|
7
8
|
var _browserContext = require("./browserContext");
|
|
8
|
-
var _page = require("./page");
|
|
9
9
|
var _download = require("./download");
|
|
10
10
|
var _instrumentation = require("./instrumentation");
|
|
11
|
-
var
|
|
11
|
+
var _page = require("./page");
|
|
12
12
|
var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
|
|
13
13
|
/**
|
|
14
14
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -9,26 +9,29 @@ exports.normalizeProxySettings = normalizeProxySettings;
|
|
|
9
9
|
exports.validateBrowserContextOptions = validateBrowserContextOptions;
|
|
10
10
|
exports.verifyClientCertificates = verifyClientCertificates;
|
|
11
11
|
exports.verifyGeolocation = verifyGeolocation;
|
|
12
|
-
var _timeoutSettings = require("../common/timeoutSettings");
|
|
13
|
-
var _utils = require("../utils");
|
|
14
|
-
var _fileUtils = require("../utils/fileUtils");
|
|
15
|
-
var _helper = require("./helper");
|
|
16
|
-
var network = _interopRequireWildcard(require("./network"));
|
|
17
|
-
var _page6 = require("./page");
|
|
18
|
-
var _path = _interopRequireDefault(require("path"));
|
|
19
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
20
|
-
var
|
|
13
|
+
var _path = _interopRequireDefault(require("path"));
|
|
14
|
+
var _timeoutSettings = require("./timeoutSettings");
|
|
15
|
+
var _crypto = require("./utils/crypto");
|
|
16
|
+
var _debug = require("./utils/debug");
|
|
17
|
+
var _clock = require("./clock");
|
|
21
18
|
var _debugger = require("./debugger");
|
|
22
|
-
var
|
|
19
|
+
var _fetch = require("./fetch");
|
|
20
|
+
var _fileUtils = require("./utils/fileUtils");
|
|
23
21
|
var _harRecorder = require("./har/harRecorder");
|
|
22
|
+
var _helper = require("./helper");
|
|
23
|
+
var _instrumentation = require("./instrumentation");
|
|
24
|
+
var utilityScriptSerializers = _interopRequireWildcard(require("./isomorphic/utilityScriptSerializers"));
|
|
25
|
+
var network = _interopRequireWildcard(require("./network"));
|
|
26
|
+
var _page6 = require("./page");
|
|
24
27
|
var _recorder = require("./recorder");
|
|
25
|
-
var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
|
|
26
|
-
var _fetch = require("./fetch");
|
|
27
|
-
var _clock = require("./clock");
|
|
28
28
|
var _recorderApp = require("./recorder/recorderApp");
|
|
29
|
-
|
|
29
|
+
var storageScript = _interopRequireWildcard(require("./storageScript"));
|
|
30
|
+
var consoleApiSource = _interopRequireWildcard(require("../generated/consoleApiSource"));
|
|
31
|
+
var _tracing = require("./trace/recorder/tracing");
|
|
30
32
|
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); }
|
|
31
|
-
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 &&
|
|
33
|
+
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; }
|
|
34
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
35
|
/**
|
|
33
36
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
34
37
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -102,7 +105,7 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
102
105
|
this._debugger = new _debugger.Debugger(this);
|
|
103
106
|
|
|
104
107
|
// When PWDEBUG=1, show inspector for each context.
|
|
105
|
-
if ((0,
|
|
108
|
+
if ((0, _debug.debugMode)() === 'inspector') await _recorder.Recorder.show(this, _recorderApp.RecorderApp.factory(this), {
|
|
106
109
|
pauseOnNextStatement: true
|
|
107
110
|
});
|
|
108
111
|
|
|
@@ -111,7 +114,7 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
111
114
|
this._debugger.on(_debugger.Debugger.Events.PausedStateChanged, () => {
|
|
112
115
|
if (this._debugger.isPaused()) _recorder.Recorder.showInspectorNoReply(this, _recorderApp.RecorderApp.factory(this));
|
|
113
116
|
});
|
|
114
|
-
if ((0,
|
|
117
|
+
if ((0, _debug.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);
|
|
115
118
|
if (this._options.serviceWorkers === 'block') await this.addInitScript(`navigator.serviceWorker.register = async () => { };`);
|
|
116
119
|
if (this._options.permissions) await this.grantPermissions(this._options.permissions);
|
|
117
120
|
}
|
|
@@ -399,24 +402,25 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
399
402
|
addVisitedOrigin(origin) {
|
|
400
403
|
this._origins.add(origin);
|
|
401
404
|
}
|
|
402
|
-
async storageState() {
|
|
405
|
+
async storageState(indexedDB = false) {
|
|
403
406
|
const result = {
|
|
404
407
|
cookies: await this.cookies(),
|
|
405
408
|
origins: []
|
|
406
409
|
};
|
|
407
410
|
const originsToSave = new Set(this._origins);
|
|
411
|
+
const collectScript = `(${storageScript.collect})((${utilityScriptSerializers.source})(), ${this._browser.options.name === 'firefox'}, ${indexedDB})`;
|
|
408
412
|
|
|
409
413
|
// First try collecting storage stage from existing pages.
|
|
410
414
|
for (const page of this.pages()) {
|
|
411
415
|
const origin = page.mainFrame().origin();
|
|
412
416
|
if (!origin || !originsToSave.has(origin)) continue;
|
|
413
417
|
try {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
if (storage.localStorage.length) result.origins.push({
|
|
418
|
+
var _storage$indexedDB;
|
|
419
|
+
const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(collectScript, 'utility');
|
|
420
|
+
if (storage.localStorage.length || (_storage$indexedDB = storage.indexedDB) !== null && _storage$indexedDB !== void 0 && _storage$indexedDB.length) result.origins.push({
|
|
418
421
|
origin,
|
|
419
|
-
localStorage: storage.localStorage
|
|
422
|
+
localStorage: storage.localStorage,
|
|
423
|
+
indexedDB: storage.indexedDB
|
|
420
424
|
});
|
|
421
425
|
originsToSave.delete(origin);
|
|
422
426
|
} catch {
|
|
@@ -435,19 +439,17 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
435
439
|
return true;
|
|
436
440
|
});
|
|
437
441
|
for (const origin of originsToSave) {
|
|
438
|
-
|
|
439
|
-
origin,
|
|
440
|
-
localStorage: []
|
|
441
|
-
};
|
|
442
|
+
var _storage$indexedDB2;
|
|
442
443
|
const frame = page.mainFrame();
|
|
443
444
|
await frame.goto(internalMetadata, origin);
|
|
444
|
-
const storage = await frame.evaluateExpression(
|
|
445
|
-
localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),
|
|
446
|
-
})`, {
|
|
445
|
+
const storage = await frame.evaluateExpression(collectScript, {
|
|
447
446
|
world: 'utility'
|
|
448
447
|
});
|
|
449
|
-
|
|
450
|
-
|
|
448
|
+
if (storage.localStorage.length || (_storage$indexedDB2 = storage.indexedDB) !== null && _storage$indexedDB2 !== void 0 && _storage$indexedDB2.length) result.origins.push({
|
|
449
|
+
origin,
|
|
450
|
+
localStorage: storage.localStorage,
|
|
451
|
+
indexedDB: storage.indexedDB
|
|
452
|
+
});
|
|
451
453
|
}
|
|
452
454
|
await page.close(internalMetadata);
|
|
453
455
|
}
|
|
@@ -505,14 +507,9 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
505
507
|
for (const originState of state.origins) {
|
|
506
508
|
const frame = page.mainFrame();
|
|
507
509
|
await frame.goto(metadata, originState.origin);
|
|
508
|
-
await frame.evaluateExpression(`
|
|
509
|
-
originState => {
|
|
510
|
-
for (const { name, value } of (originState.localStorage || []))
|
|
511
|
-
localStorage.setItem(name, value);
|
|
512
|
-
}`, {
|
|
513
|
-
isFunction: true,
|
|
510
|
+
await frame.evaluateExpression(`(${storageScript.restore})(${JSON.stringify(originState)}, (${utilityScriptSerializers.source})())`, {
|
|
514
511
|
world: 'utility'
|
|
515
|
-
}
|
|
512
|
+
});
|
|
516
513
|
}
|
|
517
514
|
await page.close(internalMetadata);
|
|
518
515
|
}
|
|
@@ -533,7 +530,7 @@ class BrowserContext extends _instrumentation.SdkObject {
|
|
|
533
530
|
await Promise.all(this.pages().map(page => page.safeNonStallingEvaluateInAllFrames(expression, world, options)));
|
|
534
531
|
}
|
|
535
532
|
async _harStart(page, options) {
|
|
536
|
-
const harId = (0,
|
|
533
|
+
const harId = (0, _crypto.createGuid)();
|
|
537
534
|
this._harRecorders.set(harId, new _harRecorder.HarRecorder(this, page, options));
|
|
538
535
|
return harId;
|
|
539
536
|
}
|
|
@@ -658,7 +655,7 @@ function normalizeProxySettings(proxy) {
|
|
|
658
655
|
bypass
|
|
659
656
|
};
|
|
660
657
|
}
|
|
661
|
-
const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'screen', 'userAgent', 'viewport'];
|
|
658
|
+
const paramsThatAllowContextReuse = ['colorScheme', 'forcedColors', 'reducedMotion', 'contrast', 'screen', 'userAgent', 'viewport'];
|
|
662
659
|
const defaultNewContextParamValues = {
|
|
663
660
|
noDefaultViewport: false,
|
|
664
661
|
ignoreHTTPSErrors: false,
|
|
@@ -5,25 +5,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.kNoXServerRunningError = exports.BrowserType = exports.BrowserReadyState = void 0;
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
-
var
|
|
8
|
+
var _os = _interopRequireDefault(require("os"));
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
10
|
var _browserContext = require("./browserContext");
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var _timeoutSettings = require("../common/timeoutSettings");
|
|
17
|
-
var _utils = require("../utils");
|
|
18
|
-
var _fileUtils = require("../utils/fileUtils");
|
|
11
|
+
var _timeoutSettings = require("./timeoutSettings");
|
|
12
|
+
var _debug = require("./utils/debug");
|
|
13
|
+
var _assert = require("../utils/isomorphic/assert");
|
|
14
|
+
var _manualPromise = require("../utils/isomorphic/manualPromise");
|
|
15
|
+
var _fileUtils = require("./utils/fileUtils");
|
|
19
16
|
var _helper = require("./helper");
|
|
20
|
-
var _debugLogger = require("../utils/debugLogger");
|
|
21
17
|
var _instrumentation = require("./instrumentation");
|
|
18
|
+
var _pipeTransport = require("./pipeTransport");
|
|
19
|
+
var _processLauncher = require("./utils/processLauncher");
|
|
20
|
+
var _progress = require("./progress");
|
|
22
21
|
var _protocolError = require("./protocolError");
|
|
22
|
+
var _registry = require("./registry");
|
|
23
23
|
var _socksClientCertificatesInterceptor = require("./socksClientCertificatesInterceptor");
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
function _interopRequireDefault(
|
|
24
|
+
var _transport = require("./transport");
|
|
25
|
+
var _debugLogger = require("./utils/debugLogger");
|
|
26
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
27
27
|
/**
|
|
28
28
|
* Copyright (c) Microsoft Corporation.
|
|
29
29
|
*
|
|
@@ -43,7 +43,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
43
43
|
const kNoXServerRunningError = exports.kNoXServerRunningError = 'Looks like you launched a headed browser without having a XServer running.\n' + 'Set either \'headless: true\' or use \'xvfb-run <your-playwright-app>\' before running Playwright.\n\n<3 Playwright Team';
|
|
44
44
|
class BrowserReadyState {
|
|
45
45
|
constructor() {
|
|
46
|
-
this._wsEndpoint = new
|
|
46
|
+
this._wsEndpoint = new _manualPromise.ManualPromise();
|
|
47
47
|
}
|
|
48
48
|
onBrowserExit() {
|
|
49
49
|
// Unblock launch when browser prematurely exits.
|
|
@@ -178,16 +178,17 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
178
178
|
const env = options.env ? (0, _processLauncher.envArrayToObject)(options.env) : process.env;
|
|
179
179
|
await this._createArtifactDirs(options);
|
|
180
180
|
const tempDirectories = [];
|
|
181
|
-
const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(
|
|
181
|
+
const artifactsDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), 'playwright-artifacts-'));
|
|
182
182
|
tempDirectories.push(artifactsDir);
|
|
183
183
|
if (userDataDir) {
|
|
184
|
+
(0, _assert.assert)(_path.default.isAbsolute(userDataDir), 'userDataDir must be an absolute path');
|
|
184
185
|
// Firefox bails if the profile directory does not exist, Chrome creates it. We ensure consistent behavior here.
|
|
185
186
|
if (!(await (0, _fileUtils.existsAsync)(userDataDir))) await _fs.default.promises.mkdir(userDataDir, {
|
|
186
187
|
recursive: true,
|
|
187
188
|
mode: 0o700
|
|
188
189
|
});
|
|
189
190
|
} else {
|
|
190
|
-
userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(
|
|
191
|
+
userDataDir = await _fs.default.promises.mkdtemp(_path.default.join(_os.default.tmpdir(), `playwright_${this._name}dev_profile-`));
|
|
191
192
|
tempDirectories.push(userDataDir);
|
|
192
193
|
}
|
|
193
194
|
await this.prepareUserDataDir(options, userDataDir);
|
|
@@ -293,7 +294,7 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
293
294
|
downloadsPath,
|
|
294
295
|
proxy
|
|
295
296
|
} = options;
|
|
296
|
-
if ((0,
|
|
297
|
+
if ((0, _debug.debugMode)()) headless = false;
|
|
297
298
|
if (downloadsPath && !_path.default.isAbsolute(downloadsPath)) downloadsPath = _path.default.join(process.cwd(), downloadsPath);
|
|
298
299
|
if (this.attribution.playwright.options.socksProxyPort) proxy = {
|
|
299
300
|
server: `socks5://127.0.0.1:${this.attribution.playwright.options.socksProxyPort}`
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.compressCallLog = compressCallLog;
|
|
7
|
+
exports.findRepeatedSubsequencesForTest = void 0;
|
|
7
8
|
/**
|
|
8
9
|
* Copyright (c) Microsoft Corporation.
|
|
9
10
|
*
|
|
10
|
-
* Licensed under the Apache License, Version 2.0 (the
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
11
12
|
* you may not use this file except in compliance with the License.
|
|
12
13
|
* You may obtain a copy of the License at
|
|
13
14
|
*
|
|
@@ -20,6 +21,19 @@ exports.findRepeatedSubsequences = findRepeatedSubsequences;
|
|
|
20
21
|
* limitations under the License.
|
|
21
22
|
*/
|
|
22
23
|
|
|
24
|
+
function compressCallLog(log) {
|
|
25
|
+
const lines = [];
|
|
26
|
+
for (const block of findRepeatedSubsequences(log)) {
|
|
27
|
+
for (let i = 0; i < block.sequence.length; i++) {
|
|
28
|
+
const line = block.sequence[i];
|
|
29
|
+
const leadingWhitespace = line.match(/^\s*/);
|
|
30
|
+
const whitespacePrefix = ' ' + (leadingWhitespace === null || leadingWhitespace === void 0 ? void 0 : leadingWhitespace[0]) || '';
|
|
31
|
+
const countPrefix = `${block.count} × `;
|
|
32
|
+
if (block.count > 1 && i === 0) lines.push(whitespacePrefix + countPrefix + line.trim());else if (block.count > 1) lines.push(whitespacePrefix + ' '.repeat(countPrefix.length - 2) + '- ' + line.trim());else lines.push(whitespacePrefix + '- ' + line.trim());
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return lines;
|
|
36
|
+
}
|
|
23
37
|
function findRepeatedSubsequences(s) {
|
|
24
38
|
const n = s.length;
|
|
25
39
|
const result = [];
|
|
@@ -61,4 +75,5 @@ function findRepeatedSubsequences(s) {
|
|
|
61
75
|
i += maxRepeatLength * maxRepeatCount; // Move index forward
|
|
62
76
|
}
|
|
63
77
|
return result;
|
|
64
|
-
}
|
|
78
|
+
}
|
|
79
|
+
const findRepeatedSubsequencesForTest = exports.findRepeatedSubsequencesForTest = findRepeatedSubsequences;
|
|
@@ -7,27 +7,27 @@ exports.Chromium = 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 _chromiumSwitches = require("./chromiumSwitches");
|
|
10
11
|
var _crBrowser = require("./crBrowser");
|
|
11
|
-
var _processLauncher = require("../../utils/processLauncher");
|
|
12
12
|
var _crConnection = require("./crConnection");
|
|
13
|
+
var _timeoutSettings = require("../timeoutSettings");
|
|
14
|
+
var _utils = require("../../utils");
|
|
15
|
+
var _ascii = require("../utils/ascii");
|
|
16
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
17
|
+
var _manualPromise = require("../../utils/isomorphic/manualPromise");
|
|
18
|
+
var _network = require("../utils/network");
|
|
19
|
+
var _userAgent = require("../utils/userAgent");
|
|
20
|
+
var _browserContext = require("../browserContext");
|
|
13
21
|
var _browserType = require("../browserType");
|
|
22
|
+
var _helper = require("../helper");
|
|
23
|
+
var _registry = require("../registry");
|
|
14
24
|
var _transport = require("../transport");
|
|
15
25
|
var _crDevTools = require("./crDevTools");
|
|
16
26
|
var _browser = require("../browser");
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var _ascii = require("../../utils/ascii");
|
|
20
|
-
var _utils = require("../../utils");
|
|
21
|
-
var _fileUtils = require("../../utils/fileUtils");
|
|
22
|
-
var _debugLogger = require("../../utils/debugLogger");
|
|
27
|
+
var _fileUtils = require("../utils/fileUtils");
|
|
28
|
+
var _processLauncher = require("../utils/processLauncher");
|
|
23
29
|
var _progress = require("../progress");
|
|
24
|
-
|
|
25
|
-
var _helper = require("../helper");
|
|
26
|
-
var _registry = require("../registry");
|
|
27
|
-
var _manualPromise = require("../../utils/manualPromise");
|
|
28
|
-
var _browserContext = require("../browserContext");
|
|
29
|
-
var _chromiumSwitches = require("./chromiumSwitches");
|
|
30
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
30
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
31
31
|
/**
|
|
32
32
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
33
33
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -23,13 +23,44 @@ exports.chromiumSwitches = void 0;
|
|
|
23
23
|
|
|
24
24
|
// No dependencies as it is used from the Electron loader.
|
|
25
25
|
|
|
26
|
+
const disabledFeatures = [
|
|
27
|
+
// See https://github.com/microsoft/playwright/pull/10380
|
|
28
|
+
'AcceptCHFrame',
|
|
29
|
+
// See https://github.com/microsoft/playwright/pull/10679
|
|
30
|
+
'AutoExpandDetailsElement',
|
|
31
|
+
// See https://github.com/microsoft/playwright/issues/14047
|
|
32
|
+
'AvoidUnnecessaryBeforeUnloadCheckSync',
|
|
33
|
+
// See https://github.com/microsoft/playwright/pull/12992
|
|
34
|
+
'CertificateTransparencyComponentUpdater',
|
|
35
|
+
// This makes Page.frameScheduledNavigation arrive much later after a click,
|
|
36
|
+
// making our navigation auto-wait after click not working.
|
|
37
|
+
// Can be removed once we deperecate noWaitAfter.
|
|
38
|
+
// See https://github.com/microsoft/playwright/pull/34372.
|
|
39
|
+
'DeferRendererTasksAfterInput', 'DestroyProfileOnBrowserClose',
|
|
40
|
+
// See https://github.com/microsoft/playwright/pull/13854
|
|
41
|
+
'DialMediaRouteProvider',
|
|
42
|
+
// Chromium is disabling manifest version 2. Allow testing it as long as Chromium can actually run it.
|
|
43
|
+
// Disabled in https://chromium-review.googlesource.com/c/chromium/src/+/6265903.
|
|
44
|
+
'ExtensionManifestV2Disabled', 'GlobalMediaControls',
|
|
45
|
+
// See https://github.com/microsoft/playwright/pull/27605
|
|
46
|
+
'HttpsUpgrades', 'ImprovedCookieControls', 'LazyFrameLoading',
|
|
47
|
+
// Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
|
|
48
|
+
'LensOverlay',
|
|
49
|
+
// See https://github.com/microsoft/playwright/pull/8162
|
|
50
|
+
'MediaRouter',
|
|
51
|
+
// See https://github.com/microsoft/playwright/issues/28023
|
|
52
|
+
'PaintHolding',
|
|
53
|
+
// See https://github.com/microsoft/playwright/issues/32230
|
|
54
|
+
'ThirdPartyStoragePartitioning',
|
|
55
|
+
// See https://github.com/microsoft/playwright/issues/16126
|
|
56
|
+
'Translate'];
|
|
26
57
|
const chromiumSwitches = exports.chromiumSwitches = ['--disable-field-trial-config',
|
|
27
58
|
// https://source.chromium.org/chromium/chromium/src/+/main:testing/variations/README.md
|
|
28
59
|
'--disable-background-networking', '--disable-background-timer-throttling', '--disable-backgrounding-occluded-windows',
|
|
29
60
|
// Avoids surprises like main request not being intercepted during page.goBack().
|
|
30
61
|
'--disable-breakpad',
|
|
31
62
|
// Avoids unneeded network activity after startup.
|
|
32
|
-
'--no-default-browser-check', '--disable-dev-shm-usage', '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
|
|
63
|
+
'--no-default-browser-check', '--disable-dev-shm-usage', '--disable-features=' + disabledFeatures.join(','), '--disable-hang-monitor', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--no-first-run', '--password-store=basic', '--use-mock-keychain',
|
|
33
64
|
// See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
|
|
34
65
|
'--no-service-autorun', '--export-tagged-pdf',
|
|
35
66
|
// https://chromium-review.googlesource.com/c/chromium/src/+/4853540
|