@checkly/playwright-core 1.48.22 → 1.51.11-beta.1
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 +3 -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
|
@@ -8,10 +8,10 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _artifact = require("../artifact");
|
|
10
10
|
var _harTracer = require("./harTracer");
|
|
11
|
+
var _crypto = require("../utils/crypto");
|
|
12
|
+
var _manualPromise = require("../../utils/isomorphic/manualPromise");
|
|
11
13
|
var _zipBundle = require("../../zipBundle");
|
|
12
|
-
|
|
13
|
-
var _utils = require("../../utils");
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
15
|
/**
|
|
16
16
|
* Copyright (c) Microsoft Corporation.
|
|
17
17
|
*
|
|
@@ -36,7 +36,7 @@ class HarRecorder {
|
|
|
36
36
|
this._entries = [];
|
|
37
37
|
this._zipFile = null;
|
|
38
38
|
this._writtenZipEntries = new Set();
|
|
39
|
-
this._artifact = new _artifact.Artifact(context, _path.default.join(context._browser.options.artifactsDir, `${(0,
|
|
39
|
+
this._artifact = new _artifact.Artifact(context, _path.default.join(context._browser.options.artifactsDir, `${(0, _crypto.createGuid)()}.har`));
|
|
40
40
|
const urlFilterRe = options.urlRegexSource !== undefined && options.urlRegexFlags !== undefined ? new RegExp(options.urlRegexSource, options.urlRegexFlags) : undefined;
|
|
41
41
|
const expectsZip = options.path.endsWith('.zip');
|
|
42
42
|
const content = options.content || (expectsZip ? 'attach' : 'embed');
|
|
@@ -4,17 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.HarTracer = void 0;
|
|
7
|
+
var _utils = require("../../utils");
|
|
8
|
+
var _eventsHelper = require("../utils/eventsHelper");
|
|
9
|
+
var _manualPromise = require("../../utils/isomorphic/manualPromise");
|
|
10
|
+
var _utilsBundle = require("../../utilsBundle");
|
|
7
11
|
var _browserContext = require("../browserContext");
|
|
8
12
|
var _fetch = require("../fetch");
|
|
13
|
+
var _frames = require("../frames");
|
|
9
14
|
var _helper = require("../helper");
|
|
10
15
|
var network = _interopRequireWildcard(require("../network"));
|
|
11
|
-
var _utils = require("../../utils");
|
|
12
|
-
var _eventsHelper = require("../../utils/eventsHelper");
|
|
13
|
-
var _utilsBundle = require("../../utilsBundle");
|
|
14
|
-
var _manualPromise = require("../../utils/manualPromise");
|
|
15
|
-
var _frames = require("../frames");
|
|
16
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
18
|
/**
|
|
19
19
|
* Copyright (c) Microsoft Corporation.
|
|
20
20
|
*
|
|
@@ -196,7 +196,7 @@ class HarTracer {
|
|
|
196
196
|
if (!this._shouldIncludeEntryWithUrl(request.url())) return;
|
|
197
197
|
const page = (_request$frame = request.frame()) === null || _request$frame === void 0 ? void 0 : _request$frame._page;
|
|
198
198
|
if (this._page && page !== this._page) return;
|
|
199
|
-
const url = network.
|
|
199
|
+
const url = network.parseURL(request.url());
|
|
200
200
|
if (!url) return;
|
|
201
201
|
const pageEntry = this._createPageEntryIfNeeded(page);
|
|
202
202
|
const harEntry = createHarEntry(request.method(), url, (_request$frame2 = request.frame()) === null || _request$frame2 === void 0 ? void 0 : _request$frame2.guid, this._options);
|
|
@@ -440,9 +440,8 @@ class HarTracer {
|
|
|
440
440
|
return this._postDataForBuffer(postData, contentType, content);
|
|
441
441
|
}
|
|
442
442
|
_postDataForBuffer(postData, contentType, content) {
|
|
443
|
-
var _contentType;
|
|
444
443
|
if (!postData) return;
|
|
445
|
-
|
|
444
|
+
contentType !== null && contentType !== void 0 ? contentType : contentType = 'application/octet-stream';
|
|
446
445
|
const result = {
|
|
447
446
|
mimeType: contentType,
|
|
448
447
|
text: '',
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HarBackend = void 0;
|
|
7
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _crypto = require("./utils/crypto");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
/**
|
|
12
|
+
* Copyright (c) Microsoft Corporation.
|
|
13
|
+
*
|
|
14
|
+
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
15
|
+
* you may not use this file except in compliance with the License.
|
|
16
|
+
* You may obtain a copy of the License at
|
|
17
|
+
*
|
|
18
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
19
|
+
*
|
|
20
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
21
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23
|
+
* See the License for the specific language governing permissions and
|
|
24
|
+
* limitations under the License.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const redirectStatus = [301, 302, 303, 307, 308];
|
|
28
|
+
class HarBackend {
|
|
29
|
+
constructor(harFile, baseDir, zipFile) {
|
|
30
|
+
this.id = void 0;
|
|
31
|
+
this._harFile = void 0;
|
|
32
|
+
this._zipFile = void 0;
|
|
33
|
+
this._baseDir = void 0;
|
|
34
|
+
this.id = (0, _crypto.createGuid)();
|
|
35
|
+
this._harFile = harFile;
|
|
36
|
+
this._baseDir = baseDir;
|
|
37
|
+
this._zipFile = zipFile;
|
|
38
|
+
}
|
|
39
|
+
async lookup(url, method, headers, postData, isNavigationRequest) {
|
|
40
|
+
let entry;
|
|
41
|
+
try {
|
|
42
|
+
entry = await this._harFindResponse(url, method, headers, postData);
|
|
43
|
+
} catch (e) {
|
|
44
|
+
return {
|
|
45
|
+
action: 'error',
|
|
46
|
+
message: 'HAR error: ' + e.message
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (!entry) return {
|
|
50
|
+
action: 'noentry'
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// If navigation is being redirected, restart it with the final url to ensure the document's url changes.
|
|
54
|
+
if (entry.request.url !== url && isNavigationRequest) return {
|
|
55
|
+
action: 'redirect',
|
|
56
|
+
redirectURL: entry.request.url
|
|
57
|
+
};
|
|
58
|
+
const response = entry.response;
|
|
59
|
+
try {
|
|
60
|
+
const buffer = await this._loadContent(response.content);
|
|
61
|
+
return {
|
|
62
|
+
action: 'fulfill',
|
|
63
|
+
status: response.status,
|
|
64
|
+
headers: response.headers,
|
|
65
|
+
body: buffer
|
|
66
|
+
};
|
|
67
|
+
} catch (e) {
|
|
68
|
+
return {
|
|
69
|
+
action: 'error',
|
|
70
|
+
message: e.message
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async _loadContent(content) {
|
|
75
|
+
const file = content._file;
|
|
76
|
+
let buffer;
|
|
77
|
+
if (file) {
|
|
78
|
+
if (this._zipFile) buffer = await this._zipFile.read(file);else buffer = await _fs.default.promises.readFile(_path.default.resolve(this._baseDir, file));
|
|
79
|
+
} else {
|
|
80
|
+
buffer = Buffer.from(content.text || '', content.encoding === 'base64' ? 'base64' : 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
return buffer;
|
|
83
|
+
}
|
|
84
|
+
async _harFindResponse(url, method, headers, postData) {
|
|
85
|
+
const harLog = this._harFile.log;
|
|
86
|
+
const visited = new Set();
|
|
87
|
+
while (true) {
|
|
88
|
+
const entries = [];
|
|
89
|
+
for (const candidate of harLog.entries) {
|
|
90
|
+
if (candidate.request.url !== url || candidate.request.method !== method) continue;
|
|
91
|
+
if (method === 'POST' && postData && candidate.request.postData) {
|
|
92
|
+
const buffer = await this._loadContent(candidate.request.postData);
|
|
93
|
+
if (!buffer.equals(postData)) {
|
|
94
|
+
const boundary = multipartBoundary(headers);
|
|
95
|
+
if (!boundary) continue;
|
|
96
|
+
const candidataBoundary = multipartBoundary(candidate.request.headers);
|
|
97
|
+
if (!candidataBoundary) continue;
|
|
98
|
+
// Try to match multipart/form-data ignroing boundary as it changes between requests.
|
|
99
|
+
if (postData.toString().replaceAll(boundary, '') !== buffer.toString().replaceAll(candidataBoundary, '')) continue;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
entries.push(candidate);
|
|
103
|
+
}
|
|
104
|
+
if (!entries.length) return;
|
|
105
|
+
let entry = entries[0];
|
|
106
|
+
|
|
107
|
+
// Disambiguate using headers - then one with most matching headers wins.
|
|
108
|
+
if (entries.length > 1) {
|
|
109
|
+
const list = [];
|
|
110
|
+
for (const candidate of entries) {
|
|
111
|
+
const matchingHeaders = countMatchingHeaders(candidate.request.headers, headers);
|
|
112
|
+
list.push({
|
|
113
|
+
candidate,
|
|
114
|
+
matchingHeaders
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
list.sort((a, b) => b.matchingHeaders - a.matchingHeaders);
|
|
118
|
+
entry = list[0].candidate;
|
|
119
|
+
}
|
|
120
|
+
if (visited.has(entry)) throw new Error(`Found redirect cycle for ${url}`);
|
|
121
|
+
visited.add(entry);
|
|
122
|
+
|
|
123
|
+
// Follow redirects.
|
|
124
|
+
const locationHeader = entry.response.headers.find(h => h.name.toLowerCase() === 'location');
|
|
125
|
+
if (redirectStatus.includes(entry.response.status) && locationHeader) {
|
|
126
|
+
const locationURL = new URL(locationHeader.value, url);
|
|
127
|
+
url = locationURL.toString();
|
|
128
|
+
if ((entry.response.status === 301 || entry.response.status === 302) && method === 'POST' || entry.response.status === 303 && !['GET', 'HEAD'].includes(method)) {
|
|
129
|
+
// HTTP-redirect fetch step 13 (https://fetch.spec.whatwg.org/#http-redirect-fetch)
|
|
130
|
+
method = 'GET';
|
|
131
|
+
}
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
return entry;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
dispose() {
|
|
138
|
+
var _this$_zipFile;
|
|
139
|
+
(_this$_zipFile = this._zipFile) === null || _this$_zipFile === void 0 || _this$_zipFile.close();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.HarBackend = HarBackend;
|
|
143
|
+
function countMatchingHeaders(harHeaders, headers) {
|
|
144
|
+
const set = new Set(headers.map(h => h.name.toLowerCase() + ':' + h.value));
|
|
145
|
+
let matches = 0;
|
|
146
|
+
for (const h of harHeaders) {
|
|
147
|
+
if (set.has(h.name.toLowerCase() + ':' + h.value)) ++matches;
|
|
148
|
+
}
|
|
149
|
+
return matches;
|
|
150
|
+
}
|
|
151
|
+
function multipartBoundary(headers) {
|
|
152
|
+
const contentType = headers.find(h => h.name.toLowerCase() === 'content-type');
|
|
153
|
+
if (!(contentType !== null && contentType !== void 0 && contentType.value.includes('multipart/form-data'))) return undefined;
|
|
154
|
+
const boundary = contentType.value.match(/boundary=(\S+)/);
|
|
155
|
+
if (boundary) return boundary[1];
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
package/lib/server/helper.js
CHANGED
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.helper = void 0;
|
|
7
|
-
var _debugLogger = require("
|
|
8
|
-
var _eventsHelper = require("
|
|
7
|
+
var _debugLogger = require("./utils/debugLogger");
|
|
8
|
+
var _eventsHelper = require("./utils/eventsHelper");
|
|
9
9
|
/**
|
|
10
10
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
11
11
|
* Modifications copyright (c) Microsoft Corporation.
|
package/lib/server/index.js
CHANGED
|
@@ -27,12 +27,6 @@ Object.defineProperty(exports, "RootDispatcher", {
|
|
|
27
27
|
return _dispatcher.RootDispatcher;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
Object.defineProperty(exports, "SocksProxy", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _socksProxy.SocksProxy;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
30
|
Object.defineProperty(exports, "createPlaywright", {
|
|
37
31
|
enumerable: true,
|
|
38
32
|
get: function () {
|
|
@@ -45,12 +39,6 @@ Object.defineProperty(exports, "installBrowsersForNpmInstall", {
|
|
|
45
39
|
return _registry.installBrowsersForNpmInstall;
|
|
46
40
|
}
|
|
47
41
|
});
|
|
48
|
-
Object.defineProperty(exports, "installDefaultBrowsersForNpmInstall", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () {
|
|
51
|
-
return _registry.installDefaultBrowsersForNpmInstall;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
42
|
Object.defineProperty(exports, "installRootRedirect", {
|
|
55
43
|
enumerable: true,
|
|
56
44
|
get: function () {
|
|
@@ -110,5 +98,4 @@ var _dispatcher = require("./dispatchers/dispatcher");
|
|
|
110
98
|
var _playwrightDispatcher = require("./dispatchers/playwrightDispatcher");
|
|
111
99
|
var _playwright = require("./playwright");
|
|
112
100
|
var _traceViewer = require("./trace/viewer/traceViewer");
|
|
113
|
-
var _instrumentation = require("./instrumentation");
|
|
114
|
-
var _socksProxy = require("../common/socksProxy");
|
|
101
|
+
var _instrumentation = require("./instrumentation");
|
package/lib/server/input.js
CHANGED
|
@@ -9,7 +9,7 @@ exports.resolveSmartModifierString = resolveSmartModifierString;
|
|
|
9
9
|
var _utils = require("../utils");
|
|
10
10
|
var keyboardLayout = _interopRequireWildcard(require("./usKeyboardLayout"));
|
|
11
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
/**
|
|
14
14
|
* Copyright (c) Microsoft Corporation.
|
|
15
15
|
*
|
|
@@ -40,8 +40,7 @@ class Keyboard {
|
|
|
40
40
|
const autoRepeat = this._pressedKeys.has(description.code);
|
|
41
41
|
this._pressedKeys.add(description.code);
|
|
42
42
|
if (kModifiers.includes(description.key)) this._pressedModifiers.add(description.key);
|
|
43
|
-
|
|
44
|
-
await this._raw.keydown(this._pressedModifiers, description.code, description.keyCode, description.keyCodeWithoutLocation, description.key, description.location, autoRepeat, text);
|
|
43
|
+
await this._raw.keydown(this._pressedModifiers, key, description, autoRepeat);
|
|
45
44
|
}
|
|
46
45
|
_keyDescriptionForString(str) {
|
|
47
46
|
const keyString = resolveSmartModifierString(str);
|
|
@@ -61,7 +60,7 @@ class Keyboard {
|
|
|
61
60
|
const description = this._keyDescriptionForString(key);
|
|
62
61
|
if (kModifiers.includes(description.key)) this._pressedModifiers.delete(description.key);
|
|
63
62
|
this._pressedKeys.delete(description.code);
|
|
64
|
-
await this._raw.keyup(this._pressedModifiers,
|
|
63
|
+
await this._raw.keyup(this._pressedModifiers, key, description);
|
|
65
64
|
}
|
|
66
65
|
async insertText(text) {
|
|
67
66
|
await this._raw.sendText(text);
|
|
@@ -7,7 +7,7 @@ exports.SdkObject = void 0;
|
|
|
7
7
|
exports.createInstrumentation = createInstrumentation;
|
|
8
8
|
exports.serverSideCallMetadata = serverSideCallMetadata;
|
|
9
9
|
var _events = require("events");
|
|
10
|
-
var
|
|
10
|
+
var _crypto = require("./utils/crypto");
|
|
11
11
|
/**
|
|
12
12
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
13
13
|
*
|
|
@@ -30,7 +30,7 @@ class SdkObject extends _events.EventEmitter {
|
|
|
30
30
|
this.guid = void 0;
|
|
31
31
|
this.attribution = void 0;
|
|
32
32
|
this.instrumentation = void 0;
|
|
33
|
-
this.guid = guid || `${guidPrefix || ''}@${(0,
|
|
33
|
+
this.guid = guid || `${guidPrefix || ''}@${(0, _crypto.createGuid)()}`;
|
|
34
34
|
this.setMaxListeners(0);
|
|
35
35
|
this.attribution = {
|
|
36
36
|
...parent.attribution
|
|
@@ -101,8 +101,11 @@ function source() {
|
|
|
101
101
|
}
|
|
102
102
|
function serialize(value, handleSerializer, visitorInfo) {
|
|
103
103
|
if (value && typeof value === 'object') {
|
|
104
|
+
// eslint-disable-next-line no-restricted-globals
|
|
104
105
|
if (typeof globalThis.Window === 'function' && value instanceof globalThis.Window) return 'ref: <Window>';
|
|
106
|
+
// eslint-disable-next-line no-restricted-globals
|
|
105
107
|
if (typeof globalThis.Document === 'function' && value instanceof globalThis.Document) return 'ref: <Document>';
|
|
108
|
+
// eslint-disable-next-line no-restricted-globals
|
|
106
109
|
if (typeof globalThis.Node === 'function' && value instanceof globalThis.Node) return 'ref: <Node>';
|
|
107
110
|
}
|
|
108
111
|
return innerSerialize(value, handleSerializer, visitorInfo);
|
package/lib/server/javascript.js
CHANGED
|
@@ -10,13 +10,13 @@ exports.isJavaScriptErrorInEvaluate = isJavaScriptErrorInEvaluate;
|
|
|
10
10
|
exports.normalizeEvaluationExpression = normalizeEvaluationExpression;
|
|
11
11
|
exports.parseUnserializableValue = parseUnserializableValue;
|
|
12
12
|
exports.sparseArrayToString = sparseArrayToString;
|
|
13
|
-
var utilityScriptSource = _interopRequireWildcard(require("../generated/utilityScriptSource"));
|
|
14
|
-
var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
|
|
15
13
|
var _instrumentation = require("./instrumentation");
|
|
16
|
-
var
|
|
14
|
+
var utilityScriptSource = _interopRequireWildcard(require("../generated/utilityScriptSource"));
|
|
17
15
|
var _utils = require("../utils");
|
|
16
|
+
var _utilityScriptSerializers = require("./isomorphic/utilityScriptSerializers");
|
|
17
|
+
var _manualPromise = require("../utils/isomorphic/manualPromise");
|
|
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
|
*
|
|
@@ -36,12 +36,12 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
36
36
|
class ExecutionContext extends _instrumentation.SdkObject {
|
|
37
37
|
constructor(parent, delegate, worldNameForTest) {
|
|
38
38
|
super(parent, 'execution-context');
|
|
39
|
-
this.
|
|
39
|
+
this.delegate = void 0;
|
|
40
40
|
this._utilityScriptPromise = void 0;
|
|
41
41
|
this._contextDestroyedScope = new _manualPromise.LongStandingScope();
|
|
42
42
|
this.worldNameForTest = void 0;
|
|
43
43
|
this.worldNameForTest = worldNameForTest;
|
|
44
|
-
this.
|
|
44
|
+
this.delegate = delegate;
|
|
45
45
|
}
|
|
46
46
|
contextDestroyed(reason) {
|
|
47
47
|
this._contextDestroyedScope.close(new Error(reason));
|
|
@@ -50,30 +50,25 @@ class ExecutionContext extends _instrumentation.SdkObject {
|
|
|
50
50
|
return this._contextDestroyedScope.race(promise);
|
|
51
51
|
}
|
|
52
52
|
rawEvaluateJSON(expression) {
|
|
53
|
-
return this._raceAgainstContextDestroyed(this.
|
|
53
|
+
return this._raceAgainstContextDestroyed(this.delegate.rawEvaluateJSON(expression));
|
|
54
54
|
}
|
|
55
55
|
rawEvaluateHandle(expression) {
|
|
56
|
-
return this._raceAgainstContextDestroyed(this.
|
|
56
|
+
return this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this, expression));
|
|
57
57
|
}
|
|
58
|
-
|
|
59
|
-
this.
|
|
58
|
+
async evaluateWithArguments(expression, returnByValue, values, handles) {
|
|
59
|
+
const utilityScript = await this._utilityScript();
|
|
60
|
+
return this._raceAgainstContextDestroyed(this.delegate.evaluateWithArguments(expression, returnByValue, utilityScript, values, handles));
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
return this._raceAgainstContextDestroyed(this.
|
|
62
|
+
getProperties(object) {
|
|
63
|
+
return this._raceAgainstContextDestroyed(this.delegate.getProperties(object));
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
return this.
|
|
66
|
-
}
|
|
67
|
-
createHandle(remoteObject) {
|
|
68
|
-
return this._delegate.createHandle(this, remoteObject);
|
|
69
|
-
}
|
|
70
|
-
releaseHandle(objectId) {
|
|
71
|
-
return this._delegate.releaseHandle(objectId);
|
|
65
|
+
releaseHandle(handle) {
|
|
66
|
+
return this.delegate.releaseHandle(handle);
|
|
72
67
|
}
|
|
73
68
|
adoptIfNeeded(handle) {
|
|
74
69
|
return null;
|
|
75
70
|
}
|
|
76
|
-
|
|
71
|
+
_utilityScript() {
|
|
77
72
|
if (!this._utilityScriptPromise) {
|
|
78
73
|
const source = `
|
|
79
74
|
(() => {
|
|
@@ -81,7 +76,10 @@ class ExecutionContext extends _instrumentation.SdkObject {
|
|
|
81
76
|
${utilityScriptSource.source}
|
|
82
77
|
return new (module.exports.UtilityScript())(${(0, _utils.isUnderTest)()});
|
|
83
78
|
})();`;
|
|
84
|
-
this._utilityScriptPromise = this._raceAgainstContextDestroyed(this.
|
|
79
|
+
this._utilityScriptPromise = this._raceAgainstContextDestroyed(this.delegate.rawEvaluateHandle(this, source)).then(handle => {
|
|
80
|
+
handle._setPreview('UtilityScript');
|
|
81
|
+
return handle;
|
|
82
|
+
});
|
|
85
83
|
}
|
|
86
84
|
return this._utilityScriptPromise;
|
|
87
85
|
}
|
|
@@ -108,9 +106,6 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
108
106
|
this._preview = this._objectId ? preview || `JSHandle@${this._objectType}` : String(value);
|
|
109
107
|
if (this._objectId && globalThis.leakedJSHandles) globalThis.leakedJSHandles.set(this, new Error('Leaked JSHandle'));
|
|
110
108
|
}
|
|
111
|
-
callFunctionNoReply(func, arg) {
|
|
112
|
-
this._context.rawCallFunctionNoReply(func, this, arg);
|
|
113
|
-
}
|
|
114
109
|
async evaluate(pageFunction, arg) {
|
|
115
110
|
return evaluate(this._context, true /* returnByValue */, pageFunction, this, arg);
|
|
116
111
|
}
|
|
@@ -148,16 +143,15 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
148
143
|
}
|
|
149
144
|
async getProperties() {
|
|
150
145
|
if (!this._objectId) return new Map();
|
|
151
|
-
return this._context.getProperties(this
|
|
146
|
+
return this._context.getProperties(this);
|
|
152
147
|
}
|
|
153
148
|
rawValue() {
|
|
154
149
|
return this._value;
|
|
155
150
|
}
|
|
156
151
|
async jsonValue() {
|
|
157
152
|
if (!this._objectId) return this._value;
|
|
158
|
-
const utilityScript = await this._context.utilityScript();
|
|
159
153
|
const script = `(utilityScript, ...args) => utilityScript.jsonValue(...args)`;
|
|
160
|
-
return this._context.evaluateWithArguments(script, true,
|
|
154
|
+
return this._context.evaluateWithArguments(script, true, [true], [this]);
|
|
161
155
|
}
|
|
162
156
|
asElement() {
|
|
163
157
|
return null;
|
|
@@ -166,7 +160,7 @@ class JSHandle extends _instrumentation.SdkObject {
|
|
|
166
160
|
if (this._disposed) return;
|
|
167
161
|
this._disposed = true;
|
|
168
162
|
if (this._objectId) {
|
|
169
|
-
this._context.releaseHandle(this
|
|
163
|
+
this._context.releaseHandle(this).catch(e => {});
|
|
170
164
|
if (globalThis.leakedJSHandles) globalThis.leakedJSHandles.delete(this);
|
|
171
165
|
}
|
|
172
166
|
}
|
|
@@ -195,7 +189,6 @@ async function evaluate(context, returnByValue, pageFunction, ...args) {
|
|
|
195
189
|
}, ...args);
|
|
196
190
|
}
|
|
197
191
|
async function evaluateExpression(context, expression, options, ...args) {
|
|
198
|
-
const utilityScript = await context.utilityScript();
|
|
199
192
|
expression = normalizeEvaluationExpression(expression, options.isFunction);
|
|
200
193
|
const handles = [];
|
|
201
194
|
const toDispose = [];
|
|
@@ -222,17 +215,17 @@ async function evaluateExpression(context, expression, options, ...args) {
|
|
|
222
215
|
fallThrough: handle
|
|
223
216
|
};
|
|
224
217
|
}));
|
|
225
|
-
const
|
|
218
|
+
const utilityScriptObjects = [];
|
|
226
219
|
for (const handle of await Promise.all(handles)) {
|
|
227
220
|
if (handle._context !== context) throw new JavaScriptErrorInEvaluate('JSHandles can be evaluated only in the context they were created!');
|
|
228
|
-
|
|
221
|
+
utilityScriptObjects.push(handle);
|
|
229
222
|
}
|
|
230
223
|
|
|
231
224
|
// See UtilityScript for arguments.
|
|
232
225
|
const utilityScriptValues = [options.isFunction, options.returnByValue, expression, args.length, ...args];
|
|
233
226
|
const script = `(utilityScript, ...args) => utilityScript.evaluate(...args)`;
|
|
234
227
|
try {
|
|
235
|
-
return await context.evaluateWithArguments(script, options.returnByValue || false,
|
|
228
|
+
return await context.evaluateWithArguments(script, options.returnByValue || false, utilityScriptValues, utilityScriptObjects);
|
|
236
229
|
} finally {
|
|
237
230
|
toDispose.map(handlePromise => handlePromise.then(handle => handle.dispose()));
|
|
238
231
|
}
|
package/lib/server/launchApp.js
CHANGED
|
@@ -7,10 +7,10 @@ exports.launchApp = launchApp;
|
|
|
7
7
|
exports.syncLocalStorageWithSettings = syncLocalStorageWithSettings;
|
|
8
8
|
var _fs = _interopRequireDefault(require("fs"));
|
|
9
9
|
var _path = _interopRequireDefault(require("path"));
|
|
10
|
-
var _registry = require("./registry");
|
|
11
10
|
var _utils = require("../utils");
|
|
12
11
|
var _instrumentation = require("./instrumentation");
|
|
13
|
-
|
|
12
|
+
var _registry = require("./registry");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
/**
|
|
15
15
|
* Copyright (c) Microsoft Corporation.
|
|
16
16
|
*
|
|
@@ -28,18 +28,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
async function launchApp(browserType, options) {
|
|
31
|
-
var _options$persistentCo, _options$persistentCo2, _options$persistentCo3;
|
|
31
|
+
var _options$persistentCo, _options$persistentCo2, _options$persistentCo3, _options$persistentCo4, _options$persistentCo5, _options$persistentCo6, _options$persistentCo7, _options$persistentCo8, _options$persistentCo9, _options$persistentCo10, _options$persistentCo11;
|
|
32
32
|
const args = [...((_options$persistentCo = (_options$persistentCo2 = options.persistentContextOptions) === null || _options$persistentCo2 === void 0 ? void 0 : _options$persistentCo2.args) !== null && _options$persistentCo !== void 0 ? _options$persistentCo : [])];
|
|
33
33
|
if (browserType.name() === 'chromium') {
|
|
34
34
|
args.push('--app=data:text/html,', `--window-size=${options.windowSize.width},${options.windowSize.height}`, ...(options.windowPosition ? [`--window-position=${options.windowPosition.x},${options.windowPosition.y}`] : []), '--test-type=');
|
|
35
35
|
}
|
|
36
36
|
const context = await browserType.launchPersistentContext((0, _instrumentation.serverSideCallMetadata)(), '', {
|
|
37
|
-
channel: !((_options$persistentCo3 = options.persistentContextOptions) !== null && _options$persistentCo3 !== void 0 && _options$persistentCo3.executablePath) ? (0, _registry.findChromiumChannel)(options.sdkLanguage) : undefined,
|
|
38
|
-
noDefaultViewport: true,
|
|
39
37
|
ignoreDefaultArgs: ['--enable-automation'],
|
|
40
|
-
colorScheme: 'no-override',
|
|
41
|
-
acceptDownloads: (0, _utils.isUnderTest)() ? 'accept' : 'internal-browser-default',
|
|
42
38
|
...(options === null || options === void 0 ? void 0 : options.persistentContextOptions),
|
|
39
|
+
channel: (_options$persistentCo3 = (_options$persistentCo4 = options.persistentContextOptions) === null || _options$persistentCo4 === void 0 ? void 0 : _options$persistentCo4.channel) !== null && _options$persistentCo3 !== void 0 ? _options$persistentCo3 : !((_options$persistentCo5 = options.persistentContextOptions) !== null && _options$persistentCo5 !== void 0 && _options$persistentCo5.executablePath) ? (0, _registry.findChromiumChannel)(options.sdkLanguage) : undefined,
|
|
40
|
+
noDefaultViewport: (_options$persistentCo6 = (_options$persistentCo7 = options.persistentContextOptions) === null || _options$persistentCo7 === void 0 ? void 0 : _options$persistentCo7.noDefaultViewport) !== null && _options$persistentCo6 !== void 0 ? _options$persistentCo6 : true,
|
|
41
|
+
acceptDownloads: (_options$persistentCo8 = options === null || options === void 0 || (_options$persistentCo9 = options.persistentContextOptions) === null || _options$persistentCo9 === void 0 ? void 0 : _options$persistentCo9.acceptDownloads) !== null && _options$persistentCo8 !== void 0 ? _options$persistentCo8 : (0, _utils.isUnderTest)() ? 'accept' : 'internal-browser-default',
|
|
42
|
+
colorScheme: (_options$persistentCo10 = options === null || options === void 0 || (_options$persistentCo11 = options.persistentContextOptions) === null || _options$persistentCo11 === void 0 ? void 0 : _options$persistentCo11.colorScheme) !== null && _options$persistentCo10 !== void 0 ? _options$persistentCo10 : 'no-override',
|
|
43
43
|
args
|
|
44
44
|
});
|
|
45
45
|
const [page] = context.pages();
|