@checkly/playwright-core 1.48.22 → 1.51.11-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ThirdPartyNotices.txt +60 -48
- package/bin/reinstall_chrome_beta_linux.sh +10 -8
- package/bin/reinstall_chrome_stable_linux.sh +10 -8
- package/bin/reinstall_msedge_beta_linux.sh +17 -9
- package/bin/reinstall_msedge_dev_linux.sh +17 -9
- package/bin/reinstall_msedge_stable_linux.sh +17 -9
- package/browsers.json +33 -12
- package/index.js +0 -1
- package/lib/androidServerImpl.js +5 -5
- package/lib/browserServerImpl.js +18 -9
- package/lib/checkly/secretsFilter.js +1 -1
- package/lib/cli/driver.js +6 -6
- package/lib/cli/program.js +38 -43
- package/lib/cli/programWithTestStub.js +2 -1
- package/lib/client/android.js +37 -58
- package/lib/client/artifact.js +4 -7
- package/lib/client/browser.js +10 -15
- package/lib/client/browserContext.js +69 -62
- package/lib/client/browserType.js +30 -64
- package/lib/client/channelOwner.js +53 -68
- package/lib/client/clientHelper.js +4 -6
- package/lib/client/clientInstrumentation.js +2 -0
- package/lib/client/clientStackTrace.js +65 -0
- package/lib/client/connection.js +48 -41
- package/lib/client/consoleMessage.js +4 -7
- package/lib/client/electron.js +10 -10
- package/lib/client/elementHandle.js +32 -33
- package/lib/client/errors.js +2 -2
- package/lib/client/eventEmitter.js +5 -8
- package/lib/client/fetch.js +61 -62
- package/lib/client/fileUtils.js +31 -0
- package/lib/client/frame.js +22 -23
- package/lib/client/harRouter.js +7 -9
- package/lib/client/jsHandle.js +3 -4
- package/lib/client/localUtils.js +24 -0
- package/lib/client/locator.js +27 -13
- package/lib/client/network.js +44 -37
- package/lib/client/page.js +50 -41
- package/lib/client/platform.js +71 -0
- package/lib/client/playwright.js +21 -1
- package/lib/client/selectors.js +8 -2
- package/lib/client/stream.js +2 -21
- package/lib/client/timeoutSettings.js +65 -0
- package/lib/client/tracing.js +29 -7
- package/lib/client/video.js +2 -2
- package/lib/client/waiter.js +19 -16
- package/lib/client/webSocket.js +106 -0
- package/lib/client/worker.js +4 -4
- package/lib/client/writableStream.js +2 -21
- package/lib/generated/consoleApiSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/recorderSource.js +7 -0
- package/lib/generated/webSocketMockSource.js +1 -1
- package/lib/inProcessFactory.js +8 -3
- package/lib/outofprocess.js +12 -8
- package/lib/protocol/debug.js +1 -1
- package/lib/protocol/validator.js +77 -11
- package/lib/protocol/validatorPrimitives.js +1 -2
- package/lib/remote/playwrightConnection.js +21 -12
- package/lib/remote/playwrightServer.js +22 -8
- package/lib/server/android/android.js +17 -14
- package/lib/server/android/backendAdb.js +14 -14
- package/lib/server/artifact.js +3 -3
- package/lib/server/bidi/bidiBrowser.js +11 -8
- package/lib/server/bidi/bidiChromium.js +5 -4
- package/lib/server/bidi/bidiConnection.js +1 -3
- package/lib/server/bidi/bidiExecutionContext.js +71 -25
- package/lib/server/bidi/bidiFirefox.js +4 -3
- package/lib/server/bidi/bidiInput.js +11 -12
- package/lib/server/bidi/bidiNetworkManager.js +11 -12
- package/lib/server/bidi/bidiOverCdp.js +2 -2
- package/lib/server/bidi/bidiPage.js +39 -66
- package/lib/server/bidi/third_party/bidiKeyboard.js +9 -7
- package/lib/server/bidi/third_party/firefoxPrefs.js +19 -3
- package/lib/server/browser.js +2 -2
- package/lib/server/browserContext.js +60 -55
- package/lib/server/browserType.js +22 -18
- package/lib/server/callLog.js +79 -0
- package/lib/server/chromium/chromium.js +20 -16
- package/lib/server/chromium/chromiumSwitches.js +32 -9
- package/lib/server/chromium/crBrowser.js +25 -24
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crCoverage.js +1 -1
- package/lib/server/chromium/crDevTools.js +1 -1
- package/lib/server/chromium/crDragDrop.js +1 -1
- package/lib/server/chromium/crExecutionContext.js +26 -35
- package/lib/server/chromium/crInput.js +17 -6
- package/lib/server/chromium/crNetworkManager.js +3 -3
- package/lib/server/chromium/crPage.js +43 -55
- package/lib/server/chromium/crPdf.js +1 -1
- package/lib/server/chromium/crProtocolHelper.js +3 -3
- package/lib/server/chromium/crServiceWorker.js +2 -2
- package/lib/server/chromium/videoRecorder.js +2 -2
- package/lib/server/clock.js +1 -1
- package/lib/server/codegen/csharp.js +21 -16
- package/lib/server/codegen/java.js +17 -9
- package/lib/server/codegen/javascript.js +37 -7
- package/lib/server/codegen/jsonl.js +1 -1
- package/lib/server/codegen/languages.js +2 -2
- package/lib/server/codegen/python.js +14 -17
- package/lib/server/debugController.js +23 -45
- package/lib/server/debugger.js +1 -1
- package/lib/server/deviceDescriptors.js +1 -1
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dispatchers/androidDispatcher.js +14 -3
- package/lib/server/dispatchers/artifactDispatcher.js +3 -3
- package/lib/server/dispatchers/browserContextDispatcher.js +21 -32
- package/lib/server/dispatchers/browserTypeDispatcher.js +1 -1
- package/lib/server/dispatchers/cdpSessionDispatcher.js +1 -1
- package/lib/server/dispatchers/debugControllerDispatcher.js +5 -3
- package/lib/server/dispatchers/dispatcher.js +27 -25
- package/lib/server/dispatchers/electronDispatcher.js +3 -3
- package/lib/server/dispatchers/elementHandlerDispatcher.js +7 -2
- package/lib/server/dispatchers/frameDispatcher.js +9 -3
- package/lib/server/dispatchers/jsonPipeDispatcher.js +2 -2
- package/lib/server/dispatchers/localUtilsDispatcher.js +25 -291
- package/lib/server/dispatchers/networkDispatchers.js +3 -3
- package/lib/server/dispatchers/pageDispatcher.js +10 -8
- package/lib/server/dispatchers/playwrightDispatcher.js +5 -5
- package/lib/server/dispatchers/streamDispatcher.js +4 -3
- package/lib/server/dispatchers/tracingDispatcher.js +10 -0
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +18 -18
- package/lib/server/dispatchers/writableStreamDispatcher.js +5 -6
- package/lib/server/dom.js +102 -48
- package/lib/server/download.js +1 -1
- package/lib/server/electron/electron.js +17 -16
- package/lib/server/errors.js +1 -1
- package/lib/server/fetch.js +49 -33
- package/lib/server/fileUploadUtils.js +7 -4
- package/lib/server/firefox/ffBrowser.js +17 -9
- package/lib/server/firefox/ffConnection.js +1 -1
- package/lib/server/firefox/ffExecutionContext.js +25 -29
- package/lib/server/firefox/ffInput.js +15 -4
- package/lib/server/firefox/ffNetworkManager.js +3 -3
- package/lib/server/firefox/ffPage.js +29 -50
- package/lib/server/firefox/firefox.js +7 -9
- package/lib/server/frameSelectors.js +1 -1
- package/lib/server/frames.js +65 -55
- package/lib/server/har/harRecorder.js +4 -4
- package/lib/server/har/harTracer.js +8 -9
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +2 -2
- package/lib/server/index.js +1 -14
- package/lib/server/input.js +3 -4
- package/lib/server/instrumentation.js +2 -2
- package/lib/server/isomorphic/utilityScriptSerializers.js +3 -0
- package/lib/server/javascript.js +26 -33
- package/lib/server/launchApp.js +7 -7
- package/lib/server/localUtils.js +203 -0
- package/lib/server/network.js +5 -5
- package/lib/server/page.js +76 -37
- package/lib/server/pipeTransport.js +1 -1
- package/lib/server/playwright.js +5 -5
- package/lib/server/progress.js +1 -4
- package/lib/server/protocolError.js +1 -1
- package/lib/server/recorder/chat.js +177 -0
- package/lib/server/recorder/codeGenerator.js +154 -0
- package/lib/server/recorder/contextRecorder.js +9 -18
- package/lib/server/recorder/csharp.js +311 -0
- package/lib/server/recorder/java.js +249 -0
- package/lib/server/recorder/javascript.js +230 -0
- package/lib/server/recorder/jsonl.js +48 -0
- package/lib/server/recorder/language.js +45 -0
- package/lib/server/recorder/python.js +276 -0
- package/lib/server/recorder/recorderActions.js +6 -0
- package/lib/server/recorder/recorderApp.js +25 -28
- package/lib/server/recorder/recorderCollection.js +9 -21
- package/lib/server/recorder/recorderInTraceViewer.js +1 -1
- package/lib/server/recorder/recorderRunner.js +7 -3
- package/lib/server/recorder/recorderUtils.js +5 -28
- package/lib/server/recorder/throttledFile.js +3 -4
- package/lib/server/recorder/utils.js +46 -0
- package/lib/server/recorder.js +83 -43
- package/lib/server/registry/browserFetcher.js +10 -8
- package/lib/server/registry/dependencies.js +20 -20
- package/lib/server/registry/index.js +215 -61
- package/lib/server/registry/nativeDeps.js +10 -4
- package/lib/server/registry/oopDownloadBrowserMain.js +3 -3
- package/lib/server/screenshotter.js +1 -1
- package/lib/server/selectors.js +3 -3
- package/lib/server/socksClientCertificatesInterceptor.js +8 -8
- package/lib/server/socksInterceptor.js +8 -5
- package/lib/server/storageScript.js +160 -0
- package/lib/server/timeoutSettings.js +74 -0
- package/lib/server/trace/recorder/snapshotter.js +10 -20
- package/lib/server/trace/recorder/snapshotterInjected.js +26 -1
- package/lib/server/trace/recorder/tracing.js +108 -45
- package/lib/server/trace/test/inMemorySnapshotter.js +6 -6
- package/lib/server/trace/viewer/traceViewer.js +21 -7
- package/lib/server/transport.js +3 -2
- package/lib/server/utils/ascii.js +31 -0
- package/lib/server/utils/comparators.js +159 -0
- package/lib/server/utils/crypto.js +171 -0
- package/lib/server/utils/debug.js +38 -0
- package/lib/server/utils/debugLogger.js +93 -0
- package/lib/server/utils/env.js +53 -0
- package/lib/server/utils/eventsHelper.js +38 -0
- package/lib/server/utils/expectUtils.js +33 -0
- package/lib/server/utils/fileUtils.js +204 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +145 -0
- package/lib/server/utils/httpServer.js +233 -0
- package/lib/server/utils/image_tools/colorUtils.js +98 -0
- package/lib/server/utils/image_tools/compare.js +108 -0
- package/lib/server/utils/image_tools/imageChannel.js +70 -0
- package/lib/server/utils/image_tools/stats.js +102 -0
- package/lib/server/utils/linuxUtils.js +58 -0
- package/lib/server/utils/network.js +160 -0
- package/lib/server/utils/nodePlatform.js +140 -0
- package/lib/server/utils/pipeTransport.js +82 -0
- package/lib/server/utils/processLauncher.js +248 -0
- package/lib/server/utils/profiler.js +52 -0
- package/lib/server/utils/socksProxy.js +570 -0
- package/lib/server/utils/spawnAsync.js +45 -0
- package/lib/server/utils/task.js +58 -0
- package/lib/server/utils/userAgent.js +91 -0
- package/lib/server/utils/wsServer.js +128 -0
- package/lib/server/utils/zipFile.js +75 -0
- package/lib/server/utils/zones.js +54 -0
- package/lib/server/webkit/webkit.js +4 -4
- package/lib/server/webkit/wkBrowser.js +10 -10
- package/lib/server/webkit/wkConnection.js +1 -1
- package/lib/server/webkit/wkExecutionContext.js +26 -30
- package/lib/server/webkit/wkInput.js +17 -7
- package/lib/server/webkit/wkInterceptableRequest.js +2 -2
- package/lib/server/webkit/wkPage.js +80 -66
- package/lib/server/webkit/wkProvisionalPage.js +1 -1
- package/lib/server/webkit/wkWorkers.js +2 -2
- package/lib/utils/fileUtils.js +1 -1
- package/lib/utils/glob.js +84 -0
- package/lib/utils/isomorphic/ariaSnapshot.js +392 -0
- package/lib/utils/isomorphic/assert.js +25 -0
- package/lib/utils/isomorphic/colors.js +65 -0
- package/lib/utils/isomorphic/cssParser.js +5 -5
- package/lib/utils/isomorphic/headers.js +52 -0
- package/lib/utils/isomorphic/locatorGenerators.js +38 -8
- package/lib/utils/isomorphic/locatorParser.js +19 -13
- package/lib/utils/isomorphic/manualPromise.js +107 -0
- package/lib/utils/isomorphic/mimeType.js +11 -3
- package/lib/utils/isomorphic/multimap.js +73 -0
- package/lib/utils/isomorphic/rtti.js +41 -0
- package/lib/utils/isomorphic/semaphore.js +51 -0
- package/lib/utils/isomorphic/stackTrace.js +169 -0
- package/lib/utils/isomorphic/stringUtils.js +31 -1
- package/lib/utils/isomorphic/time.js +25 -0
- package/lib/utils/isomorphic/timeoutRunner.js +66 -0
- package/lib/utils/isomorphic/traceUtils.js +23 -0
- package/lib/utils/isomorphic/types.js +5 -0
- package/lib/utils/isomorphic/urlMatch.js +7 -5
- package/lib/utils/mimeType.js +30 -0
- package/lib/utils/stackTrace.js +1 -1
- package/lib/utils.js +447 -0
- package/lib/utilsBundle.js +4 -29
- package/lib/utilsBundleImpl/index.js +188 -33
- package/lib/vite/htmlReport/index.html +20 -17
- package/lib/vite/recorder/assets/codeMirrorModule-B9YMkrwa.js +24 -0
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +184 -0
- package/lib/vite/recorder/assets/{index-BW-aOBcL.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +1 -0
- package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +235 -0
- package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +25 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +1 -0
- package/lib/vite/traceViewer/{embedded.BkvOrz5Z.js → embedded.DpNPH6mk.js} +2 -2
- package/lib/vite/traceViewer/embedded.html +6 -6
- package/lib/vite/traceViewer/index.CuE3SYGw.js +2 -0
- package/lib/vite/traceViewer/index.html +27 -9
- package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +1 -0
- package/lib/vite/traceViewer/{recorder.DNMfnSiu.js → recorder.BD-uZJs7.js} +2 -2
- package/lib/vite/traceViewer/recorder.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +7888 -3
- package/lib/vite/traceViewer/{uiMode.CAYqod-m.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.DHrNgddz.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +8 -7
- package/lib/vite/traceViewer/workbench.B9vIAzH9.css +1 -0
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +820 -153
- package/types/types.d.ts +285 -82
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/vite/recorder/assets/codeMirrorModule-d0KhC1qL.js +0 -24
- package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
- package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-BuJ3wAX_.js +0 -64
- package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +0 -64
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-DdmJ9AJV.js +0 -9
- package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +0 -9
- package/lib/vite/traceViewer/embedded.DInvAijy.js +0 -2
- package/lib/vite/traceViewer/index.Dha3cgqs.js +0 -2
- package/lib/vite/traceViewer/index._Iolt-uE.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DLjBDrQR.css +0 -1
- package/lib/vite/traceViewer/recorder.DTSaNaly.js +0 -2
- package/lib/vite/traceViewer/uiMode.BM7yhjzl.js +0 -5
- package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +0 -5
- package/lib/vite/traceViewer/workbench.DlsCx8k5.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{embedded.w7WN2u1R.css → embedded.mLhjB5IF.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{recorder.B_SY1GJM.css → recorder.tn0RQdqM.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -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);
|
|
@@ -198,7 +199,7 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
198
199
|
if (!(await (0, _fileUtils.existsAsync)(executablePath))) throw new Error(`Failed to launch ${this._name} because executable doesn't exist at ${executablePath}`);
|
|
199
200
|
executable = executablePath;
|
|
200
201
|
} else {
|
|
201
|
-
const registryExecutable = _registry.registry.findExecutable(
|
|
202
|
+
const registryExecutable = _registry.registry.findExecutable(this.getExecutableName(options));
|
|
202
203
|
if (!registryExecutable || registryExecutable.browserName !== this._name) throw new Error(`Unsupported ${this._name} channel "${options.channel}"`);
|
|
203
204
|
executable = registryExecutable.executablePathOrDie(this.attribution.playwright.options.sdkLanguage);
|
|
204
205
|
await _registry.registry.validateHostRequirementsForExecutablesIfNeeded([registryExecutable], this.attribution.playwright.options.sdkLanguage);
|
|
@@ -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}`
|
|
@@ -326,6 +327,9 @@ class BrowserType extends _instrumentation.SdkObject {
|
|
|
326
327
|
return undefined;
|
|
327
328
|
}
|
|
328
329
|
async prepareUserDataDir(options, userDataDir) {}
|
|
330
|
+
getExecutableName(options) {
|
|
331
|
+
return options.channel || this._name;
|
|
332
|
+
}
|
|
329
333
|
}
|
|
330
334
|
exports.BrowserType = BrowserType;
|
|
331
335
|
function copyTestHooks(from, to) {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.compressCallLog = compressCallLog;
|
|
7
|
+
exports.findRepeatedSubsequencesForTest = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Copyright (c) Microsoft Corporation.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
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
|
+
}
|
|
37
|
+
function findRepeatedSubsequences(s) {
|
|
38
|
+
const n = s.length;
|
|
39
|
+
const result = [];
|
|
40
|
+
let i = 0;
|
|
41
|
+
const arraysEqual = (a1, a2) => {
|
|
42
|
+
if (a1.length !== a2.length) return false;
|
|
43
|
+
for (let j = 0; j < a1.length; j++) {
|
|
44
|
+
if (a1[j] !== a2[j]) return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
};
|
|
48
|
+
while (i < n) {
|
|
49
|
+
let maxRepeatCount = 1;
|
|
50
|
+
let maxRepeatSubstr = [s[i]]; // Initialize with the element at index i
|
|
51
|
+
let maxRepeatLength = 1;
|
|
52
|
+
|
|
53
|
+
// Try substrings of length from 1 to the remaining length of the array
|
|
54
|
+
for (let p = 1; p <= n - i; p++) {
|
|
55
|
+
const substr = s.slice(i, i + p); // Extract substring as array
|
|
56
|
+
let k = 1;
|
|
57
|
+
|
|
58
|
+
// Count how many times the substring repeats consecutively
|
|
59
|
+
while (i + p * k <= n && arraysEqual(s.slice(i + p * (k - 1), i + p * k), substr)) k += 1;
|
|
60
|
+
k -= 1; // Adjust k since it increments one extra time in the loop
|
|
61
|
+
|
|
62
|
+
// Update the maximal repeating substring if necessary
|
|
63
|
+
if (k > 1 && k * p > maxRepeatCount * maxRepeatLength) {
|
|
64
|
+
maxRepeatCount = k;
|
|
65
|
+
maxRepeatSubstr = substr;
|
|
66
|
+
maxRepeatLength = p;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Record the substring and its count
|
|
71
|
+
result.push({
|
|
72
|
+
sequence: maxRepeatSubstr,
|
|
73
|
+
count: maxRepeatCount
|
|
74
|
+
});
|
|
75
|
+
i += maxRepeatLength * maxRepeatCount; // Move index forward
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
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.
|
|
@@ -267,11 +267,11 @@ class Chromium extends _browserType.BrowserType {
|
|
|
267
267
|
// See https://github.com/microsoft/playwright/issues/7362
|
|
268
268
|
chromeArguments.push('--enable-use-zoom-for-dsf=false');
|
|
269
269
|
// See https://bugs.chromium.org/p/chromium/issues/detail?id=1407025.
|
|
270
|
-
if (options.headless) chromeArguments.push('--use-angle');
|
|
270
|
+
if (options.headless && (!options.channel || options.channel === 'chromium-headless-shell')) chromeArguments.push('--use-angle');
|
|
271
271
|
}
|
|
272
272
|
if (options.devtools) chromeArguments.push('--auto-open-devtools-for-tabs');
|
|
273
273
|
if (options.headless) {
|
|
274
|
-
|
|
274
|
+
chromeArguments.push('--headless');
|
|
275
275
|
chromeArguments.push('--hide-scrollbars', '--mute-audio', '--blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4');
|
|
276
276
|
}
|
|
277
277
|
if (options.chromiumSandbox !== true) chromeArguments.push('--no-sandbox');
|
|
@@ -300,6 +300,10 @@ class Chromium extends _browserType.BrowserType {
|
|
|
300
300
|
if (options.useWebSocket || (_options$args = options.args) !== null && _options$args !== void 0 && _options$args.some(a => a.startsWith('--remote-debugging-port'))) return new ChromiumReadyState();
|
|
301
301
|
return undefined;
|
|
302
302
|
}
|
|
303
|
+
getExecutableName(options) {
|
|
304
|
+
if (options.channel) return options.channel;
|
|
305
|
+
return options.headless ? 'chromium-headless-shell' : 'chromium';
|
|
306
|
+
}
|
|
303
307
|
}
|
|
304
308
|
exports.Chromium = Chromium;
|
|
305
309
|
class ChromiumReadyState extends _browserType.BrowserReadyState {
|
|
@@ -23,21 +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', '--disable-back-forward-cache',
|
|
29
60
|
// Avoids surprises like main request not being intercepted during page.goBack().
|
|
30
61
|
'--disable-breakpad', '--disable-client-side-phishing-detection', '--disable-component-extensions-with-background-pages', '--disable-component-update',
|
|
31
62
|
// Avoids unneeded network activity after startup.
|
|
32
|
-
'--no-default-browser-check', '--disable-default-apps', '--disable-dev-shm-usage', '--disable-extensions',
|
|
33
|
-
// AvoidUnnecessaryBeforeUnloadCheckSync - https://github.com/microsoft/playwright/issues/14047
|
|
34
|
-
// Translate - https://github.com/microsoft/playwright/issues/16126
|
|
35
|
-
// HttpsUpgrades - https://github.com/microsoft/playwright/pull/27605
|
|
36
|
-
// PaintHolding - https://github.com/microsoft/playwright/issues/28023
|
|
37
|
-
// ThirdPartyStoragePartitioning - https://github.com/microsoft/playwright/issues/32230
|
|
38
|
-
// LensOverlay - Hides the Lens feature in the URL address bar. Its not working in unofficial builds.
|
|
39
|
-
// PlzDedicatedWorker - https://github.com/microsoft/playwright/issues/31747
|
|
40
|
-
'--disable-features=ImprovedCookieControls,LazyFrameLoading,GlobalMediaControls,DestroyProfileOnBrowserClose,MediaRouter,DialMediaRouteProvider,AcceptCHFrame,AutoExpandDetailsElement,CertificateTransparencyComponentUpdater,AvoidUnnecessaryBeforeUnloadCheckSync,Translate,HttpsUpgrades,PaintHolding,ThirdPartyStoragePartitioning,LensOverlay,PlzDedicatedWorker', '--allow-pre-commit-input', '--disable-hang-monitor', '--disable-ipc-flooding-protection', '--disable-popup-blocking', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--metrics-recording-only', '--no-first-run', '--enable-automation', '--password-store=basic', '--use-mock-keychain',
|
|
63
|
+
'--no-default-browser-check', '--disable-default-apps', '--disable-dev-shm-usage', '--disable-extensions', '--disable-features=' + disabledFeatures.join(','), '--allow-pre-commit-input', '--disable-hang-monitor', '--disable-ipc-flooding-protection', '--disable-popup-blocking', '--disable-prompt-on-repost', '--disable-renderer-backgrounding', '--force-color-profile=srgb', '--metrics-recording-only', '--no-first-run', '--enable-automation', '--password-store=basic', '--use-mock-keychain',
|
|
41
64
|
// See https://chromium-review.googlesource.com/c/chromium/src/+/2436773
|
|
42
65
|
'--no-service-autorun', '--export-tagged-pdf',
|
|
43
66
|
// https://chromium-review.googlesource.com/c/chromium/src/+/4853540
|
|
@@ -5,20 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CRBrowserContext = exports.CRBrowser = void 0;
|
|
7
7
|
var _path = _interopRequireDefault(require("path"));
|
|
8
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
9
|
+
var _crypto = require("../utils/crypto");
|
|
10
|
+
var _artifact = require("../artifact");
|
|
8
11
|
var _browser = require("../browser");
|
|
9
12
|
var _browserContext = require("../browserContext");
|
|
10
|
-
var
|
|
13
|
+
var _frames = require("../frames");
|
|
11
14
|
var network = _interopRequireWildcard(require("../network"));
|
|
12
15
|
var _page = require("../page");
|
|
13
|
-
var _frames = require("../frames");
|
|
14
16
|
var _crConnection = require("./crConnection");
|
|
15
17
|
var _crPage = require("./crPage");
|
|
16
18
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
17
19
|
var _crServiceWorker = require("./crServiceWorker");
|
|
18
|
-
var _artifact = require("../artifact");
|
|
19
20
|
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(
|
|
21
|
+
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; }
|
|
22
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
23
|
/**
|
|
23
24
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
24
25
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -134,7 +135,7 @@ class CRBrowser extends _browser.Browser {
|
|
|
134
135
|
return this.options.name === 'clank';
|
|
135
136
|
}
|
|
136
137
|
async _waitForAllPagesToBeInitialized() {
|
|
137
|
-
await Promise.all([...this._crPages.values()].map(
|
|
138
|
+
await Promise.all([...this._crPages.values()].map(crPage => crPage._page.waitForInitializedOrError()));
|
|
138
139
|
}
|
|
139
140
|
_onAttachedToTarget({
|
|
140
141
|
targetInfo,
|
|
@@ -143,7 +144,7 @@ class CRBrowser extends _browser.Browser {
|
|
|
143
144
|
}) {
|
|
144
145
|
if (targetInfo.type === 'browser') return;
|
|
145
146
|
const session = this._session.createChildSession(sessionId);
|
|
146
|
-
(0,
|
|
147
|
+
(0, _assert.assert)(targetInfo.browserContextId, 'targetInfo: ' + JSON.stringify(targetInfo, null, 2));
|
|
147
148
|
let context = this._contexts.get(targetInfo.browserContextId) || null;
|
|
148
149
|
if (!context) {
|
|
149
150
|
// TODO: auto attach only to pages from our contexts.
|
|
@@ -159,9 +160,9 @@ class CRBrowser extends _browser.Browser {
|
|
|
159
160
|
session.detach().catch(() => {});
|
|
160
161
|
return;
|
|
161
162
|
}
|
|
162
|
-
(0,
|
|
163
|
-
(0,
|
|
164
|
-
(0,
|
|
163
|
+
(0, _assert.assert)(!this._crPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
164
|
+
(0, _assert.assert)(!this._backgroundPages.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
165
|
+
(0, _assert.assert)(!this._serviceWorkers.has(targetInfo.targetId), 'Duplicate target ' + targetInfo.targetId);
|
|
165
166
|
if (targetInfo.type === 'background_page') {
|
|
166
167
|
const backgroundPage = new _crPage.CRPage(session, targetInfo.targetId, context, null, {
|
|
167
168
|
hasUIWindow: false,
|
|
@@ -239,9 +240,9 @@ class CRBrowser extends _browser.Browser {
|
|
|
239
240
|
return;
|
|
240
241
|
}
|
|
241
242
|
page.willBeginDownload();
|
|
242
|
-
let originPage = page.
|
|
243
|
+
let originPage = page._page.initializedOrUndefined();
|
|
243
244
|
// If it's a new window download, report it on the opener page.
|
|
244
|
-
if (!originPage && page._opener) originPage = page._opener.
|
|
245
|
+
if (!originPage && page._opener) originPage = page._opener._page.initializedOrUndefined();
|
|
245
246
|
if (!originPage) return;
|
|
246
247
|
this._downloadCreated(originPage, payload.guid, payload.url, payload.suggestedFilename);
|
|
247
248
|
}
|
|
@@ -258,7 +259,7 @@ class CRBrowser extends _browser.Browser {
|
|
|
258
259
|
return await this._connection.createBrowserSession();
|
|
259
260
|
}
|
|
260
261
|
async startTracing(page, options = {}) {
|
|
261
|
-
(0,
|
|
262
|
+
(0, _assert.assert)(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
|
|
262
263
|
this._tracingClient = page ? page._delegate._mainFrameSession._client : this._session;
|
|
263
264
|
const defaultCategories = ['-*', 'devtools.timeline', 'v8.execute', 'disabled-by-default-devtools.timeline', 'disabled-by-default-devtools.timeline.frame', 'toplevel', 'blink.console', 'blink.user_timing', 'latencyInfo', 'disabled-by-default-devtools.timeline.stack', 'disabled-by-default-v8.cpu_profiler', 'disabled-by-default-v8.cpu_profiler.hires'];
|
|
264
265
|
const {
|
|
@@ -273,9 +274,9 @@ class CRBrowser extends _browser.Browser {
|
|
|
273
274
|
});
|
|
274
275
|
}
|
|
275
276
|
async stopTracing() {
|
|
276
|
-
(0,
|
|
277
|
+
(0, _assert.assert)(this._tracingClient, 'Tracing was not started.');
|
|
277
278
|
const [event] = await Promise.all([new Promise(f => this._tracingClient.once('Tracing.tracingComplete', f)), this._tracingClient.send('Tracing.end')]);
|
|
278
|
-
const tracingPath = _path.default.join(this.options.artifactsDir, (0,
|
|
279
|
+
const tracingPath = _path.default.join(this.options.artifactsDir, (0, _crypto.createGuid)() + '.crtrace');
|
|
279
280
|
await (0, _crProtocolHelper.saveProtocolStream)(this._tracingClient, event.stream, tracingPath);
|
|
280
281
|
this._tracingRecording = false;
|
|
281
282
|
const artifact = new _artifact.Artifact(this, tracingPath);
|
|
@@ -297,7 +298,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
297
298
|
this._authenticateProxyViaCredentials();
|
|
298
299
|
}
|
|
299
300
|
async _initialize() {
|
|
300
|
-
(0,
|
|
301
|
+
(0, _assert.assert)(!Array.from(this._browser._crPages.values()).some(page => page._browserContext === this));
|
|
301
302
|
const promises = [super._initialize()];
|
|
302
303
|
if (this._browser.options.name !== 'clank' && this._options.acceptDownloads !== 'internal-browser-default') {
|
|
303
304
|
promises.push(this._browser._session.send('Browser.setDownloadBehavior', {
|
|
@@ -312,10 +313,10 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
312
313
|
_crPages() {
|
|
313
314
|
return [...this._browser._crPages.values()].filter(crPage => crPage._browserContext === this);
|
|
314
315
|
}
|
|
315
|
-
|
|
316
|
-
return this._crPages().map(crPage => crPage.
|
|
316
|
+
possiblyUninitializedPages() {
|
|
317
|
+
return this._crPages().map(crPage => crPage._page);
|
|
317
318
|
}
|
|
318
|
-
async
|
|
319
|
+
async doCreateNewPage() {
|
|
319
320
|
(0, _browserContext.assertBrowserContextIsNotOwned)(this);
|
|
320
321
|
const oldKeys = this._browser.isClank() ? new Set(this._browser._crPages.keys()) : undefined;
|
|
321
322
|
let {
|
|
@@ -335,10 +336,10 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
335
336
|
const page = this._browser._crPages.get(key);
|
|
336
337
|
if (page._opener) newKeys.delete(key);
|
|
337
338
|
}
|
|
338
|
-
(0,
|
|
339
|
+
(0, _assert.assert)(newKeys.size === 1);
|
|
339
340
|
[targetId] = [...newKeys];
|
|
340
341
|
}
|
|
341
|
-
return this._browser._crPages.get(targetId);
|
|
342
|
+
return this._browser._crPages.get(targetId)._page;
|
|
342
343
|
}
|
|
343
344
|
async doGetCookies(urls) {
|
|
344
345
|
const {
|
|
@@ -372,7 +373,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
372
373
|
});
|
|
373
374
|
}
|
|
374
375
|
async doGrantPermissions(origin, permissions) {
|
|
375
|
-
const webPermissionToProtocol = new Map([['geolocation', 'geolocation'], ['midi', 'midi'], ['notifications', 'notifications'], ['camera', 'videoCapture'], ['microphone', 'audioCapture'], ['background-sync', 'backgroundSync'], ['ambient-light-sensor', 'sensors'], ['accelerometer', 'sensors'], ['gyroscope', 'sensors'], ['magnetometer', 'sensors'], ['
|
|
376
|
+
const webPermissionToProtocol = new Map([['geolocation', 'geolocation'], ['midi', 'midi'], ['notifications', 'notifications'], ['camera', 'videoCapture'], ['microphone', 'audioCapture'], ['background-sync', 'backgroundSync'], ['ambient-light-sensor', 'sensors'], ['accelerometer', 'sensors'], ['gyroscope', 'sensors'], ['magnetometer', 'sensors'], ['clipboard-read', 'clipboardReadWrite'], ['clipboard-write', 'clipboardSanitizedWrite'], ['payment-handler', 'paymentHandler'],
|
|
376
377
|
// chrome-specific permissions we have.
|
|
377
378
|
['midi-sysex', 'midiSysex'], ['storage-access', 'storageAccess']]);
|
|
378
379
|
const filtered = permissions.map(permission => {
|
|
@@ -466,7 +467,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
466
467
|
// When persistent context is closed, we do not necessary get Target.detachedFromTarget
|
|
467
468
|
// for all the background pages.
|
|
468
469
|
for (const [targetId, backgroundPage] of this._browser._backgroundPages.entries()) {
|
|
469
|
-
if (backgroundPage._browserContext === this && backgroundPage.
|
|
470
|
+
if (backgroundPage._browserContext === this && backgroundPage._page.initializedOrUndefined()) {
|
|
470
471
|
backgroundPage.didClose();
|
|
471
472
|
this._browser._backgroundPages.delete(targetId);
|
|
472
473
|
}
|
|
@@ -487,7 +488,7 @@ class CRBrowserContext extends _browserContext.BrowserContext {
|
|
|
487
488
|
backgroundPages() {
|
|
488
489
|
const result = [];
|
|
489
490
|
for (const backgroundPage of this._browser._backgroundPages.values()) {
|
|
490
|
-
if (backgroundPage._browserContext === this && backgroundPage.
|
|
491
|
+
if (backgroundPage._browserContext === this && backgroundPage._page.initializedOrUndefined()) result.push(backgroundPage._page);
|
|
491
492
|
}
|
|
492
493
|
return result;
|
|
493
494
|
}
|
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.kBrowserCloseMessageId = exports.ConnectionEvents = exports.CRSession = exports.CRConnection = exports.CDPSession = void 0;
|
|
7
|
-
var _utils = require("../../utils");
|
|
8
7
|
var _events = require("events");
|
|
9
|
-
var
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
10
10
|
var _helper = require("../helper");
|
|
11
11
|
var _protocolError = require("../protocolError");
|
|
12
12
|
/**
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CRCoverage = void 0;
|
|
7
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
8
7
|
var _utils = require("../../utils");
|
|
8
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
11
11
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CRDevTools = void 0;
|
|
7
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Microsoft Corporation.
|
|
11
11
|
*
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DragManager = void 0;
|
|
7
|
-
var _utils = require("../../utils");
|
|
8
7
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Microsoft Corporation.
|
|
11
11
|
*
|
|
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CRExecutionContext = void 0;
|
|
7
|
+
exports.createHandle = createHandle;
|
|
8
|
+
var _assert = require("../../utils/isomorphic/assert");
|
|
7
9
|
var _crProtocolHelper = require("./crProtocolHelper");
|
|
8
|
-
var
|
|
9
|
-
var _stackTrace = require("../../utils/stackTrace");
|
|
10
|
+
var _stackTrace = require("../../utils/isomorphic/stackTrace");
|
|
10
11
|
var _utilityScriptSerializers = require("../isomorphic/utilityScriptSerializers");
|
|
12
|
+
var js = _interopRequireWildcard(require("../javascript"));
|
|
13
|
+
var dom = _interopRequireWildcard(require("../dom"));
|
|
11
14
|
var _protocolError = require("../protocolError");
|
|
12
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); }
|
|
13
|
-
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; }
|
|
14
17
|
/**
|
|
15
18
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
16
19
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -47,7 +50,7 @@ class CRExecutionContext {
|
|
|
47
50
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
48
51
|
return remoteObject.value;
|
|
49
52
|
}
|
|
50
|
-
async rawEvaluateHandle(expression) {
|
|
53
|
+
async rawEvaluateHandle(context, expression) {
|
|
51
54
|
const {
|
|
52
55
|
exceptionDetails,
|
|
53
56
|
result: remoteObject
|
|
@@ -56,22 +59,9 @@ class CRExecutionContext {
|
|
|
56
59
|
contextId: this._contextId
|
|
57
60
|
}).catch(rewriteError);
|
|
58
61
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
59
|
-
return remoteObject
|
|
60
|
-
}
|
|
61
|
-
rawCallFunctionNoReply(func, ...args) {
|
|
62
|
-
this._client.send('Runtime.callFunctionOn', {
|
|
63
|
-
functionDeclaration: func.toString(),
|
|
64
|
-
arguments: args.map(a => a instanceof js.JSHandle ? {
|
|
65
|
-
objectId: a._objectId
|
|
66
|
-
} : {
|
|
67
|
-
value: a
|
|
68
|
-
}),
|
|
69
|
-
returnByValue: true,
|
|
70
|
-
executionContextId: this._contextId,
|
|
71
|
-
userGesture: true
|
|
72
|
-
}).catch(() => {});
|
|
62
|
+
return createHandle(context, remoteObject);
|
|
73
63
|
}
|
|
74
|
-
async evaluateWithArguments(expression, returnByValue, utilityScript, values,
|
|
64
|
+
async evaluateWithArguments(expression, returnByValue, utilityScript, values, handles) {
|
|
75
65
|
const {
|
|
76
66
|
exceptionDetails,
|
|
77
67
|
result: remoteObject
|
|
@@ -82,42 +72,36 @@ class CRExecutionContext {
|
|
|
82
72
|
objectId: utilityScript._objectId
|
|
83
73
|
}, ...values.map(value => ({
|
|
84
74
|
value
|
|
85
|
-
})), ...
|
|
86
|
-
objectId
|
|
75
|
+
})), ...handles.map(handle => ({
|
|
76
|
+
objectId: handle._objectId
|
|
87
77
|
}))],
|
|
88
78
|
returnByValue,
|
|
89
79
|
awaitPromise: true,
|
|
90
80
|
userGesture: true
|
|
91
81
|
}).catch(rewriteError);
|
|
92
82
|
if (exceptionDetails) throw new js.JavaScriptErrorInEvaluate((0, _crProtocolHelper.getExceptionMessage)(exceptionDetails));
|
|
93
|
-
return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : utilityScript._context
|
|
83
|
+
return returnByValue ? (0, _utilityScriptSerializers.parseEvaluationResultValue)(remoteObject.value) : createHandle(utilityScript._context, remoteObject);
|
|
94
84
|
}
|
|
95
|
-
async getProperties(
|
|
85
|
+
async getProperties(object) {
|
|
96
86
|
const response = await this._client.send('Runtime.getProperties', {
|
|
97
|
-
objectId,
|
|
87
|
+
objectId: object._objectId,
|
|
98
88
|
ownProperties: true
|
|
99
89
|
});
|
|
100
90
|
const result = new Map();
|
|
101
91
|
for (const property of response.result) {
|
|
102
92
|
if (!property.enumerable || !property.value) continue;
|
|
103
|
-
result.set(property.name,
|
|
93
|
+
result.set(property.name, createHandle(object._context, property.value));
|
|
104
94
|
}
|
|
105
95
|
return result;
|
|
106
96
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
async releaseHandle(objectId) {
|
|
111
|
-
await (0, _crProtocolHelper.releaseObject)(this._client, objectId);
|
|
97
|
+
async releaseHandle(handle) {
|
|
98
|
+
if (!handle._objectId) return;
|
|
99
|
+
await (0, _crProtocolHelper.releaseObject)(this._client, handle._objectId);
|
|
112
100
|
}
|
|
113
101
|
}
|
|
114
102
|
exports.CRExecutionContext = CRExecutionContext;
|
|
115
103
|
function rewriteError(error) {
|
|
116
|
-
if (error.message.includes('Object reference chain is too long'))
|
|
117
|
-
result: {
|
|
118
|
-
type: 'undefined'
|
|
119
|
-
}
|
|
120
|
-
};
|
|
104
|
+
if (error.message.includes('Object reference chain is too long')) throw new Error('Cannot serialize result: object reference chain is too long.');
|
|
121
105
|
if (error.message.includes('Object couldn\'t be returned by value')) return {
|
|
122
106
|
result: {
|
|
123
107
|
type: 'undefined'
|
|
@@ -146,4 +130,11 @@ function renderPreview(object) {
|
|
|
146
130
|
}
|
|
147
131
|
if (object.subtype === 'array' && object.preview) return js.sparseArrayToString(object.preview.properties);
|
|
148
132
|
return object.description;
|
|
133
|
+
}
|
|
134
|
+
function createHandle(context, remoteObject) {
|
|
135
|
+
if (remoteObject.subtype === 'node') {
|
|
136
|
+
(0, _assert.assert)(context instanceof dom.FrameExecutionContext);
|
|
137
|
+
return new dom.ElementHandle(context, remoteObject.objectId);
|
|
138
|
+
}
|
|
139
|
+
return new js.JSHandle(context, remoteObject.subtype || remoteObject.type, renderPreview(remoteObject), remoteObject.objectId, potentiallyUnserializableValue(remoteObject));
|
|
149
140
|
}
|