@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
package/lib/client/frame.js
CHANGED
|
@@ -5,22 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Frame = void 0;
|
|
7
7
|
exports.verifyLoadState = verifyLoadState;
|
|
8
|
-
var
|
|
8
|
+
var _eventEmitter = require("./eventEmitter");
|
|
9
9
|
var _channelOwner = require("./channelOwner");
|
|
10
|
-
var
|
|
11
|
-
var _locatorUtils = require("../utils/isomorphic/locatorUtils");
|
|
10
|
+
var _clientHelper = require("./clientHelper");
|
|
12
11
|
var _elementHandle = require("./elementHandle");
|
|
12
|
+
var _events = require("./events");
|
|
13
13
|
var _jsHandle = require("./jsHandle");
|
|
14
|
-
var
|
|
14
|
+
var _locator = require("./locator");
|
|
15
15
|
var network = _interopRequireWildcard(require("./network"));
|
|
16
|
-
var _events = require("events");
|
|
17
|
-
var _waiter = require("./waiter");
|
|
18
|
-
var _events2 = require("./events");
|
|
19
16
|
var _types = require("./types");
|
|
20
|
-
var
|
|
17
|
+
var _waiter = require("./waiter");
|
|
18
|
+
var _assert = require("../utils/isomorphic/assert");
|
|
19
|
+
var _locatorUtils = require("../utils/isomorphic/locatorUtils");
|
|
20
|
+
var _urlMatch = require("../utils/isomorphic/urlMatch");
|
|
21
21
|
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); }
|
|
22
|
-
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 &&
|
|
23
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
24
23
|
/**
|
|
25
24
|
* Copyright 2017 Google Inc. All rights reserved.
|
|
26
25
|
* Modifications copyright (c) Microsoft Corporation.
|
|
@@ -55,7 +54,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
55
54
|
this._detached = false;
|
|
56
55
|
this._childFrames = new Set();
|
|
57
56
|
this._page = void 0;
|
|
58
|
-
this._eventEmitter = new
|
|
57
|
+
this._eventEmitter = new _eventEmitter.EventEmitter(parent._platform);
|
|
59
58
|
this._eventEmitter.setMaxListeners(0);
|
|
60
59
|
this._parentFrame = Frame.fromNullable(initializer.parentFrame);
|
|
61
60
|
if (this._parentFrame) this._parentFrame._childFrames.add(this);
|
|
@@ -68,14 +67,14 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
68
67
|
this._eventEmitter.emit('loadstate', event.add);
|
|
69
68
|
}
|
|
70
69
|
if (event.remove) this._loadStates.delete(event.remove);
|
|
71
|
-
if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(
|
|
72
|
-
if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(
|
|
70
|
+
if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(_events.Events.Page.Load, this._page);
|
|
71
|
+
if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(_events.Events.Page.DOMContentLoaded, this._page);
|
|
73
72
|
});
|
|
74
73
|
this._channel.on('navigated', event => {
|
|
75
74
|
this._url = event.url;
|
|
76
75
|
this._name = event.name;
|
|
77
76
|
this._eventEmitter.emit('navigated', event);
|
|
78
|
-
if (!event.error && this._page) this._page.emit(
|
|
77
|
+
if (!event.error && this._page) this._page.emit(_events.Events.Page.FrameNavigated, this);
|
|
79
78
|
});
|
|
80
79
|
}
|
|
81
80
|
page() {
|
|
@@ -92,9 +91,9 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
92
91
|
_setupNavigationWaiter(options) {
|
|
93
92
|
const waiter = new _waiter.Waiter(this._page, '');
|
|
94
93
|
if (this._page.isClosed()) waiter.rejectImmediately(this._page._closeErrorWithReason());
|
|
95
|
-
waiter.rejectOnEvent(this._page,
|
|
96
|
-
waiter.rejectOnEvent(this._page,
|
|
97
|
-
waiter.rejectOnEvent(this._page,
|
|
94
|
+
waiter.rejectOnEvent(this._page, _events.Events.Page.Close, () => this._page._closeErrorWithReason());
|
|
95
|
+
waiter.rejectOnEvent(this._page, _events.Events.Page.Crash, new Error('Navigation failed because page crashed!'));
|
|
96
|
+
waiter.rejectOnEvent(this._page, _events.Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
|
|
98
97
|
const timeout = this._page._timeoutSettings.navigationTimeout(options);
|
|
99
98
|
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);
|
|
100
99
|
return waiter;
|
|
@@ -110,7 +109,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
110
109
|
// Any failed navigation results in a rejection.
|
|
111
110
|
if (event.error) return true;
|
|
112
111
|
waiter.log(` navigated to "${event.url}"`);
|
|
113
|
-
return (0,
|
|
112
|
+
return (0, _urlMatch.urlMatches)((_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page.context()._options.baseURL, event.url, options.url);
|
|
114
113
|
});
|
|
115
114
|
if (navigatedEvent.error) {
|
|
116
115
|
const e = new Error(navigatedEvent.error);
|
|
@@ -146,7 +145,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
146
145
|
}
|
|
147
146
|
async waitForURL(url, options = {}) {
|
|
148
147
|
var _this$_page2;
|
|
149
|
-
if ((0,
|
|
148
|
+
if ((0, _urlMatch.urlMatches)((_this$_page2 = this._page) === null || _this$_page2 === void 0 ? void 0 : _this$_page2.context()._options.baseURL, this.url(), url)) return await this.waitForLoadState(options.waitUntil, options);
|
|
150
149
|
await this.waitForNavigation({
|
|
151
150
|
url,
|
|
152
151
|
...options
|
|
@@ -268,7 +267,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
268
267
|
...options
|
|
269
268
|
};
|
|
270
269
|
if (copy.path) {
|
|
271
|
-
copy.content = (await
|
|
270
|
+
copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();
|
|
272
271
|
copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
|
|
273
272
|
}
|
|
274
273
|
return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
|
|
@@ -280,7 +279,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
280
279
|
...options
|
|
281
280
|
};
|
|
282
281
|
if (copy.path) {
|
|
283
|
-
copy.content = (await
|
|
282
|
+
copy.content = (await this._platform.fs().promises.readFile(copy.path)).toString();
|
|
284
283
|
copy.content += '/*# sourceURL=' + copy.path.replace(/\n/g, '') + '*/';
|
|
285
284
|
}
|
|
286
285
|
return _elementHandle.ElementHandle.from((await this._channel.addStyleTag({
|
|
@@ -440,7 +439,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
440
439
|
})).values;
|
|
441
440
|
}
|
|
442
441
|
async setInputFiles(selector, files, options = {}) {
|
|
443
|
-
const converted = await (0, _elementHandle.convertInputFiles)(files, this.page().context());
|
|
442
|
+
const converted = await (0, _elementHandle.convertInputFiles)(this._platform, files, this.page().context());
|
|
444
443
|
await this._channel.setInputFiles({
|
|
445
444
|
selector,
|
|
446
445
|
...converted,
|
|
@@ -482,7 +481,7 @@ class Frame extends _channelOwner.ChannelOwner {
|
|
|
482
481
|
});
|
|
483
482
|
}
|
|
484
483
|
async waitForFunction(pageFunction, arg, options = {}) {
|
|
485
|
-
if (typeof options.polling === 'string') (0,
|
|
484
|
+
if (typeof options.polling === 'string') (0, _assert.assert)(options.polling === 'raf', 'Unknown polling option: ' + options.polling);
|
|
486
485
|
const result = await this._channel.waitForFunction({
|
|
487
486
|
...options,
|
|
488
487
|
pollingInterval: options.polling === 'raf' ? undefined : options.polling,
|
package/lib/client/harRouter.js
CHANGED
|
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.HarRouter = void 0;
|
|
7
|
-
var _debugLogger = require("../utils/debugLogger");
|
|
8
|
-
let _Symbol$asyncDispose;
|
|
9
7
|
/**
|
|
10
8
|
* Copyright (c) Microsoft Corporation.
|
|
11
9
|
*
|
|
@@ -21,13 +19,13 @@ let _Symbol$asyncDispose;
|
|
|
21
19
|
* See the License for the specific language governing permissions and
|
|
22
20
|
* limitations under the License.
|
|
23
21
|
*/
|
|
24
|
-
|
|
22
|
+
|
|
25
23
|
class HarRouter {
|
|
26
24
|
static async create(localUtils, file, notFoundAction, options) {
|
|
27
25
|
const {
|
|
28
26
|
harId,
|
|
29
27
|
error
|
|
30
|
-
} = await localUtils.
|
|
28
|
+
} = await localUtils.harOpen({
|
|
31
29
|
file
|
|
32
30
|
});
|
|
33
31
|
if (error) throw new Error(error);
|
|
@@ -45,7 +43,7 @@ class HarRouter {
|
|
|
45
43
|
}
|
|
46
44
|
async _handle(route) {
|
|
47
45
|
const request = route.request();
|
|
48
|
-
const response = await this._localUtils.
|
|
46
|
+
const response = await this._localUtils.harLookup({
|
|
49
47
|
harId: this._harId,
|
|
50
48
|
url: request.url(),
|
|
51
49
|
method: request.method(),
|
|
@@ -54,7 +52,7 @@ class HarRouter {
|
|
|
54
52
|
isNavigationRequest: request.isNavigationRequest()
|
|
55
53
|
});
|
|
56
54
|
if (response.action === 'redirect') {
|
|
57
|
-
|
|
55
|
+
route._platform.log('api', `HAR: ${route.request().url()} redirected to ${response.redirectURL}`);
|
|
58
56
|
await route._redirectNavigationRequest(response.redirectURL);
|
|
59
57
|
return;
|
|
60
58
|
}
|
|
@@ -72,7 +70,7 @@ class HarRouter {
|
|
|
72
70
|
});
|
|
73
71
|
return;
|
|
74
72
|
}
|
|
75
|
-
if (response.action === 'error')
|
|
73
|
+
if (response.action === 'error') route._platform.log('api', 'HAR: ' + response.message);
|
|
76
74
|
// Report the error, but fall through to the default handler.
|
|
77
75
|
|
|
78
76
|
if (this._notFoundAction === 'abort') {
|
|
@@ -87,11 +85,11 @@ class HarRouter {
|
|
|
87
85
|
async addPageRoute(page) {
|
|
88
86
|
await page.route(this._options.urlMatch || '**/*', route => this._handle(route));
|
|
89
87
|
}
|
|
90
|
-
async [
|
|
88
|
+
async [Symbol.asyncDispose]() {
|
|
91
89
|
await this.dispose();
|
|
92
90
|
}
|
|
93
91
|
dispose() {
|
|
94
|
-
this._localUtils.
|
|
92
|
+
this._localUtils.harClose({
|
|
95
93
|
harId: this._harId
|
|
96
94
|
}).catch(() => {});
|
|
97
95
|
}
|
package/lib/client/jsHandle.js
CHANGED
|
@@ -8,9 +8,8 @@ exports.assertMaxArguments = assertMaxArguments;
|
|
|
8
8
|
exports.parseResult = parseResult;
|
|
9
9
|
exports.serializeArgument = serializeArgument;
|
|
10
10
|
var _channelOwner = require("./channelOwner");
|
|
11
|
-
var _serializers = require("../protocol/serializers");
|
|
12
11
|
var _errors = require("./errors");
|
|
13
|
-
|
|
12
|
+
var _serializers = require("../protocol/serializers");
|
|
14
13
|
/**
|
|
15
14
|
* Copyright (c) Microsoft Corporation.
|
|
16
15
|
*
|
|
@@ -26,7 +25,7 @@ let _Symbol$asyncDispose;
|
|
|
26
25
|
* See the License for the specific language governing permissions and
|
|
27
26
|
* limitations under the License.
|
|
28
27
|
*/
|
|
29
|
-
|
|
28
|
+
|
|
30
29
|
class JSHandle extends _channelOwner.ChannelOwner {
|
|
31
30
|
static from(handle) {
|
|
32
31
|
return handle._object;
|
|
@@ -75,7 +74,7 @@ class JSHandle extends _channelOwner.ChannelOwner {
|
|
|
75
74
|
asElement() {
|
|
76
75
|
return null;
|
|
77
76
|
}
|
|
78
|
-
async [
|
|
77
|
+
async [Symbol.asyncDispose]() {
|
|
79
78
|
await this.dispose();
|
|
80
79
|
}
|
|
81
80
|
async dispose() {
|
package/lib/client/localUtils.js
CHANGED
|
@@ -32,5 +32,29 @@ class LocalUtils extends _channelOwner.ChannelOwner {
|
|
|
32
32
|
descriptor
|
|
33
33
|
} of initializer.deviceDescriptors) this.devices[name] = descriptor;
|
|
34
34
|
}
|
|
35
|
+
async zip(params) {
|
|
36
|
+
return await this._channel.zip(params);
|
|
37
|
+
}
|
|
38
|
+
async harOpen(params) {
|
|
39
|
+
return await this._channel.harOpen(params);
|
|
40
|
+
}
|
|
41
|
+
async harLookup(params) {
|
|
42
|
+
return await this._channel.harLookup(params);
|
|
43
|
+
}
|
|
44
|
+
async harClose(params) {
|
|
45
|
+
return await this._channel.harClose(params);
|
|
46
|
+
}
|
|
47
|
+
async harUnzip(params) {
|
|
48
|
+
return await this._channel.harUnzip(params);
|
|
49
|
+
}
|
|
50
|
+
async tracingStarted(params) {
|
|
51
|
+
return await this._channel.tracingStarted(params);
|
|
52
|
+
}
|
|
53
|
+
async traceDiscarded(params) {
|
|
54
|
+
return await this._channel.traceDiscarded(params);
|
|
55
|
+
}
|
|
56
|
+
async addStackToTracingNoReply(params) {
|
|
57
|
+
return await this._channel.addStackToTracingNoReply(params);
|
|
58
|
+
}
|
|
35
59
|
}
|
|
36
60
|
exports.LocalUtils = LocalUtils;
|
package/lib/client/locator.js
CHANGED
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Locator = exports.FrameLocator = void 0;
|
|
7
7
|
exports.setTestIdAttribute = setTestIdAttribute;
|
|
8
8
|
exports.testIdAttributeName = testIdAttributeName;
|
|
9
|
-
var util = _interopRequireWildcard(require("util"));
|
|
10
|
-
var _utils = require("../utils");
|
|
11
9
|
var _elementHandle = require("./elementHandle");
|
|
12
10
|
var _jsHandle = require("./jsHandle");
|
|
13
|
-
var
|
|
11
|
+
var _locatorGenerators = require("../utils/isomorphic/locatorGenerators");
|
|
14
12
|
var _locatorUtils = require("../utils/isomorphic/locatorUtils");
|
|
15
|
-
|
|
13
|
+
var _stringUtils = require("../utils/isomorphic/stringUtils");
|
|
14
|
+
var _rtti = require("../utils/isomorphic/rtti");
|
|
15
|
+
var _time = require("../utils/isomorphic/time");
|
|
16
16
|
/**
|
|
17
17
|
* Copyright (c) Microsoft Corporation.
|
|
18
18
|
*
|
|
@@ -28,9 +28,7 @@ let _util$inspect$custom;
|
|
|
28
28
|
* See the License for the specific language governing permissions and
|
|
29
29
|
* limitations under the License.
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
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 && Object.prototype.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; }
|
|
33
|
-
_util$inspect$custom = util.inspect.custom;
|
|
31
|
+
|
|
34
32
|
class Locator {
|
|
35
33
|
constructor(frame, selector, options) {
|
|
36
34
|
this._frame = void 0;
|
|
@@ -49,12 +47,14 @@ class Locator {
|
|
|
49
47
|
if (locator._frame !== frame) throw new Error(`Inner "hasNot" locator must belong to the same frame.`);
|
|
50
48
|
this._selector += ` >> internal:has-not=` + JSON.stringify(locator._selector);
|
|
51
49
|
}
|
|
50
|
+
if ((options === null || options === void 0 ? void 0 : options.visible) !== undefined) this._selector += ` >> visible=${options.visible ? 'true' : 'false'}`;
|
|
51
|
+
if (this._frame._platform.inspectCustom) this[this._frame._platform.inspectCustom] = () => this._inspect();
|
|
52
52
|
}
|
|
53
53
|
async _withElement(task, timeout) {
|
|
54
54
|
timeout = this._frame.page()._timeoutSettings.timeout({
|
|
55
55
|
timeout
|
|
56
56
|
});
|
|
57
|
-
const deadline = timeout ? (0,
|
|
57
|
+
const deadline = timeout ? (0, _time.monotonicTime)() + timeout : 0;
|
|
58
58
|
return await this._frame._wrapApiCall(async () => {
|
|
59
59
|
const result = await this._frame._channel.waitForSelector({
|
|
60
60
|
selector: this._selector,
|
|
@@ -65,7 +65,7 @@ class Locator {
|
|
|
65
65
|
const handle = _elementHandle.ElementHandle.fromNullable(result.element);
|
|
66
66
|
if (!handle) throw new Error(`Could not resolve ${this._selector} to DOM Element`);
|
|
67
67
|
try {
|
|
68
|
-
return await task(handle, deadline ? deadline - (0,
|
|
68
|
+
return await task(handle, deadline ? deadline - (0, _time.monotonicTime)() : 0);
|
|
69
69
|
} finally {
|
|
70
70
|
await handle.dispose();
|
|
71
71
|
}
|
|
@@ -136,7 +136,7 @@ class Locator {
|
|
|
136
136
|
return await this._frame._highlight(this._selector);
|
|
137
137
|
}
|
|
138
138
|
locator(selectorOrLocator, options) {
|
|
139
|
-
if ((0,
|
|
139
|
+
if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._selector + ' >> ' + selectorOrLocator, options);
|
|
140
140
|
if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
|
|
141
141
|
return new Locator(this._frame, this._selector + ' >> internal:chain=' + JSON.stringify(selectorOrLocator._selector), options);
|
|
142
142
|
}
|
|
@@ -213,6 +213,9 @@ class Locator {
|
|
|
213
213
|
async count() {
|
|
214
214
|
return await this._frame._queryCount(this._selector);
|
|
215
215
|
}
|
|
216
|
+
async _generateLocatorString() {
|
|
217
|
+
return await this._withElement(h => h._generateLocatorString());
|
|
218
|
+
}
|
|
216
219
|
async getAttribute(name, options) {
|
|
217
220
|
return await this._frame.getAttribute(this._selector, name, {
|
|
218
221
|
strict: true,
|
|
@@ -286,11 +289,22 @@ class Locator {
|
|
|
286
289
|
});
|
|
287
290
|
}
|
|
288
291
|
async screenshot(options = {}) {
|
|
292
|
+
const mask = options.mask;
|
|
289
293
|
return await this._withElement((h, timeout) => h.screenshot({
|
|
290
294
|
...options,
|
|
295
|
+
mask,
|
|
291
296
|
timeout
|
|
292
297
|
}), options.timeout);
|
|
293
298
|
}
|
|
299
|
+
async ariaSnapshot(options) {
|
|
300
|
+
const result = await this._frame._channel.ariaSnapshot({
|
|
301
|
+
...options,
|
|
302
|
+
id: options === null || options === void 0 ? void 0 : options._id,
|
|
303
|
+
mode: options === null || options === void 0 ? void 0 : options._mode,
|
|
304
|
+
selector: this._selector
|
|
305
|
+
});
|
|
306
|
+
return result.snapshot;
|
|
307
|
+
}
|
|
294
308
|
async scrollIntoViewIfNeeded(options = {}) {
|
|
295
309
|
return await this._withElement((h, timeout) => h.scrollIntoViewIfNeeded({
|
|
296
310
|
...options,
|
|
@@ -374,11 +388,11 @@ class Locator {
|
|
|
374
388
|
if (result.received !== undefined) result.received = (0, _jsHandle.parseResult)(result.received);
|
|
375
389
|
return result;
|
|
376
390
|
}
|
|
377
|
-
|
|
391
|
+
_inspect() {
|
|
378
392
|
return this.toString();
|
|
379
393
|
}
|
|
380
394
|
toString() {
|
|
381
|
-
return (0,
|
|
395
|
+
return (0, _locatorGenerators.asLocator)('javascript', this._selector);
|
|
382
396
|
}
|
|
383
397
|
}
|
|
384
398
|
exports.Locator = Locator;
|
|
@@ -390,7 +404,7 @@ class FrameLocator {
|
|
|
390
404
|
this._frameSelector = selector;
|
|
391
405
|
}
|
|
392
406
|
locator(selectorOrLocator, options) {
|
|
393
|
-
if ((0,
|
|
407
|
+
if ((0, _rtti.isString)(selectorOrLocator)) return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator, options);
|
|
394
408
|
if (selectorOrLocator._frame !== this._frame) throw new Error(`Locators must belong to the same frame.`);
|
|
395
409
|
return new Locator(this._frame, this._frameSelector + ' >> internal:control=enter-frame >> ' + selectorOrLocator._selector, options);
|
|
396
410
|
}
|
package/lib/client/network.js
CHANGED
|
@@ -5,19 +5,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.WebSocketRouteHandler = exports.WebSocketRoute = exports.WebSocket = exports.RouteHandler = exports.Route = exports.Response = exports.Request = exports.RawHeaders = void 0;
|
|
7
7
|
exports.validateHeaders = validateHeaders;
|
|
8
|
-
var _url = require("url");
|
|
9
8
|
var _channelOwner = require("./channelOwner");
|
|
10
|
-
var
|
|
11
|
-
var _worker = require("./worker");
|
|
12
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
13
|
-
var _utilsBundle = require("../utilsBundle");
|
|
14
|
-
var _utils = require("../utils");
|
|
15
|
-
var _manualPromise = require("../utils/manualPromise");
|
|
9
|
+
var _errors = require("./errors");
|
|
16
10
|
var _events = require("./events");
|
|
17
|
-
var _waiter = require("./waiter");
|
|
18
11
|
var _fetch = require("./fetch");
|
|
19
|
-
var
|
|
20
|
-
|
|
12
|
+
var _frame = require("./frame");
|
|
13
|
+
var _waiter = require("./waiter");
|
|
14
|
+
var _worker = require("./worker");
|
|
15
|
+
var _assert = require("../utils/isomorphic/assert");
|
|
16
|
+
var _headers = require("../utils/isomorphic/headers");
|
|
17
|
+
var _urlMatch = require("../utils/isomorphic/urlMatch");
|
|
18
|
+
var _manualPromise = require("../utils/isomorphic/manualPromise");
|
|
19
|
+
var _multimap = require("../utils/isomorphic/multimap");
|
|
20
|
+
var _rtti = require("../utils/isomorphic/rtti");
|
|
21
|
+
var _stackTrace = require("../utils/isomorphic/stackTrace");
|
|
22
|
+
var _mimeType = require("../utils/isomorphic/mimeType");
|
|
21
23
|
/**
|
|
22
24
|
* Copyright (c) Microsoft Corporation.
|
|
23
25
|
*
|
|
@@ -33,7 +35,7 @@ let _Symbol$asyncDispose;
|
|
|
33
35
|
* See the License for the specific language governing permissions and
|
|
34
36
|
* limitations under the License.
|
|
35
37
|
*/
|
|
36
|
-
|
|
38
|
+
|
|
37
39
|
class Request extends _channelOwner.ChannelOwner {
|
|
38
40
|
static from(request) {
|
|
39
41
|
return request._object;
|
|
@@ -50,6 +52,7 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
50
52
|
this._actualHeadersPromise = void 0;
|
|
51
53
|
this._timing = void 0;
|
|
52
54
|
this._fallbackOverrides = {};
|
|
55
|
+
this.markAsInternalType();
|
|
53
56
|
this._redirectedFrom = Request.fromNullable(initializer.redirectedFrom);
|
|
54
57
|
if (this._redirectedFrom) this._redirectedFrom._redirectedTo = this;
|
|
55
58
|
this._provisionalHeaders = new RawHeaders(initializer.headers);
|
|
@@ -87,7 +90,7 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
87
90
|
const contentType = this.headers()['content-type'];
|
|
88
91
|
if (contentType !== null && contentType !== void 0 && contentType.includes('application/x-www-form-urlencoded')) {
|
|
89
92
|
const entries = {};
|
|
90
|
-
const parsed = new
|
|
93
|
+
const parsed = new URLSearchParams(postData);
|
|
91
94
|
for (const [k, v] of parsed.entries()) entries[k] = v;
|
|
92
95
|
return entries;
|
|
93
96
|
}
|
|
@@ -133,7 +136,7 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
133
136
|
}
|
|
134
137
|
frame() {
|
|
135
138
|
if (!this._initializer.frame) {
|
|
136
|
-
(0,
|
|
139
|
+
(0, _assert.assert)(this.serviceWorker());
|
|
137
140
|
throw new Error('Service Worker requests do not have an associated frame.');
|
|
138
141
|
}
|
|
139
142
|
const frame = _frame.Frame.from(this._initializer.frame);
|
|
@@ -183,7 +186,7 @@ class Request extends _channelOwner.ChannelOwner {
|
|
|
183
186
|
if (overrides.url) this._fallbackOverrides.url = overrides.url;
|
|
184
187
|
if (overrides.method) this._fallbackOverrides.method = overrides.method;
|
|
185
188
|
if (overrides.headers) this._fallbackOverrides.headers = overrides.headers;
|
|
186
|
-
if ((0,
|
|
189
|
+
if ((0, _rtti.isString)(overrides.postData)) this._fallbackOverrides.postDataBuffer = Buffer.from(overrides.postData, 'utf-8');else if (overrides.postData instanceof Buffer) this._fallbackOverrides.postDataBuffer = overrides.postData;else if (overrides.postData) this._fallbackOverrides.postDataBuffer = Buffer.from(JSON.stringify(overrides.postData), 'utf-8');
|
|
187
190
|
}
|
|
188
191
|
_fallbackOverridesForContinue() {
|
|
189
192
|
return this._fallbackOverrides;
|
|
@@ -271,13 +274,12 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
271
274
|
body
|
|
272
275
|
} = options;
|
|
273
276
|
if (options.json !== undefined) {
|
|
274
|
-
(0,
|
|
277
|
+
(0, _assert.assert)(options.body === undefined, 'Can specify either body or json parameters');
|
|
275
278
|
body = JSON.stringify(options.json);
|
|
276
279
|
}
|
|
277
280
|
if (options.response instanceof _fetch.APIResponse) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
(_headersOption = headersOption) !== null && _headersOption !== void 0 ? _headersOption : headersOption = options.response.headers();
|
|
281
|
+
statusOption !== null && statusOption !== void 0 ? statusOption : statusOption = options.response.status();
|
|
282
|
+
headersOption !== null && headersOption !== void 0 ? headersOption : headersOption = options.response.headers();
|
|
281
283
|
if (body === undefined && options.path === undefined) {
|
|
282
284
|
if (options.response._request._connection === this._connection) fetchResponseUid = options.response._fetchUid();else body = await options.response.body();
|
|
283
285
|
}
|
|
@@ -285,11 +287,11 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
285
287
|
let isBase64 = false;
|
|
286
288
|
let length = 0;
|
|
287
289
|
if (options.path) {
|
|
288
|
-
const buffer = await
|
|
290
|
+
const buffer = await this._platform.fs().promises.readFile(options.path);
|
|
289
291
|
body = buffer.toString('base64');
|
|
290
292
|
isBase64 = true;
|
|
291
293
|
length = buffer.length;
|
|
292
|
-
} else if ((0,
|
|
294
|
+
} else if ((0, _rtti.isString)(body)) {
|
|
293
295
|
isBase64 = false;
|
|
294
296
|
length = Buffer.byteLength(body);
|
|
295
297
|
} else if (body) {
|
|
@@ -299,11 +301,11 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
299
301
|
}
|
|
300
302
|
const headers = {};
|
|
301
303
|
for (const header of Object.keys(headersOption || {})) headers[header.toLowerCase()] = String(headersOption[header]);
|
|
302
|
-
if (options.contentType) headers['content-type'] = String(options.contentType);else if (options.json) headers['content-type'] = 'application/json';else if (options.path) headers['content-type'] =
|
|
304
|
+
if (options.contentType) headers['content-type'] = String(options.contentType);else if (options.json) headers['content-type'] = 'application/json';else if (options.path) headers['content-type'] = (0, _mimeType.getMimeTypeForPath)(options.path) || 'application/octet-stream';
|
|
303
305
|
if (length && !('content-length' in headers)) headers['content-length'] = String(length);
|
|
304
306
|
await this._raceWithTargetClose(this._channel.fulfill({
|
|
305
307
|
status: statusOption || 200,
|
|
306
|
-
headers: (0,
|
|
308
|
+
headers: (0, _headers.headersObjectToArray)(headers),
|
|
307
309
|
body,
|
|
308
310
|
isBase64,
|
|
309
311
|
fetchResponseUid
|
|
@@ -328,14 +330,13 @@ class Route extends _channelOwner.ChannelOwner {
|
|
|
328
330
|
return await this._raceWithTargetClose(this._channel.continue({
|
|
329
331
|
url: options.url,
|
|
330
332
|
method: options.method,
|
|
331
|
-
headers: options.headers ? (0,
|
|
333
|
+
headers: options.headers ? (0, _headers.headersObjectToArray)(options.headers) : undefined,
|
|
332
334
|
postData: options.postDataBuffer,
|
|
333
335
|
isFallback
|
|
334
336
|
}));
|
|
335
337
|
}
|
|
336
338
|
}
|
|
337
339
|
exports.Route = Route;
|
|
338
|
-
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
339
340
|
class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
340
341
|
static from(route) {
|
|
341
342
|
return route._object;
|
|
@@ -369,7 +370,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
|
369
370
|
}).catch(() => {});
|
|
370
371
|
},
|
|
371
372
|
send: message => {
|
|
372
|
-
if ((0,
|
|
373
|
+
if ((0, _rtti.isString)(message)) this._channel.sendToServer({
|
|
373
374
|
message,
|
|
374
375
|
isBase64: false
|
|
375
376
|
}).catch(() => {});else this._channel.sendToServer({
|
|
@@ -438,7 +439,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
|
438
439
|
return this._server;
|
|
439
440
|
}
|
|
440
441
|
send(message) {
|
|
441
|
-
if ((0,
|
|
442
|
+
if ((0, _rtti.isString)(message)) this._channel.sendToPage({
|
|
442
443
|
message,
|
|
443
444
|
isBase64: false
|
|
444
445
|
}).catch(() => {});else this._channel.sendToPage({
|
|
@@ -452,7 +453,7 @@ class WebSocketRoute extends _channelOwner.ChannelOwner {
|
|
|
452
453
|
onClose(handler) {
|
|
453
454
|
this._onPageClose = handler;
|
|
454
455
|
}
|
|
455
|
-
async [
|
|
456
|
+
async [Symbol.asyncDispose]() {
|
|
456
457
|
await this.close();
|
|
457
458
|
}
|
|
458
459
|
async _afterHandle() {
|
|
@@ -475,9 +476,9 @@ class WebSocketRouteHandler {
|
|
|
475
476
|
const patterns = [];
|
|
476
477
|
let all = false;
|
|
477
478
|
for (const handler of handlers) {
|
|
478
|
-
if ((0,
|
|
479
|
+
if ((0, _rtti.isString)(handler.url)) patterns.push({
|
|
479
480
|
glob: handler.url
|
|
480
|
-
});else if ((0,
|
|
481
|
+
});else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
|
|
481
482
|
regexSource: handler.url.source,
|
|
482
483
|
regexFlags: handler.url.flags
|
|
483
484
|
});else all = true;
|
|
@@ -488,7 +489,7 @@ class WebSocketRouteHandler {
|
|
|
488
489
|
return patterns;
|
|
489
490
|
}
|
|
490
491
|
matches(wsURL) {
|
|
491
|
-
return (0,
|
|
492
|
+
return (0, _urlMatch.urlMatches)(this._baseURL, wsURL, this.url);
|
|
492
493
|
}
|
|
493
494
|
async handle(webSocketRoute) {
|
|
494
495
|
const handler = this.handler;
|
|
@@ -510,6 +511,7 @@ class Response extends _channelOwner.ChannelOwner {
|
|
|
510
511
|
this._actualHeadersPromise = void 0;
|
|
511
512
|
this._request = void 0;
|
|
512
513
|
this._finishedPromise = new _manualPromise.ManualPromise();
|
|
514
|
+
this.markAsInternalType();
|
|
513
515
|
this._provisionalHeaders = new RawHeaders(initializer.headers);
|
|
514
516
|
this._request = Request.from(this._initializer.request);
|
|
515
517
|
Object.assign(this._request._timing, this._initializer.timing);
|
|
@@ -642,11 +644,11 @@ exports.WebSocket = WebSocket;
|
|
|
642
644
|
function validateHeaders(headers) {
|
|
643
645
|
for (const key of Object.keys(headers)) {
|
|
644
646
|
const value = headers[key];
|
|
645
|
-
if (!Object.is(value, undefined) && !(0,
|
|
647
|
+
if (!Object.is(value, undefined) && !(0, _rtti.isString)(value)) throw new Error(`Expected value of header "${key}" to be String, but "${typeof value}" is found.`);
|
|
646
648
|
}
|
|
647
649
|
}
|
|
648
650
|
class RouteHandler {
|
|
649
|
-
constructor(baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
|
|
651
|
+
constructor(platform, baseURL, url, handler, times = Number.MAX_SAFE_INTEGER) {
|
|
650
652
|
this.handledCount = 0;
|
|
651
653
|
this._baseURL = void 0;
|
|
652
654
|
this._times = void 0;
|
|
@@ -654,18 +656,20 @@ class RouteHandler {
|
|
|
654
656
|
this.handler = void 0;
|
|
655
657
|
this._ignoreException = false;
|
|
656
658
|
this._activeInvocations = new Set();
|
|
659
|
+
this._savedZone = void 0;
|
|
657
660
|
this._baseURL = baseURL;
|
|
658
661
|
this._times = times;
|
|
659
662
|
this.url = url;
|
|
660
663
|
this.handler = handler;
|
|
664
|
+
this._savedZone = platform.zones.current().pop();
|
|
661
665
|
}
|
|
662
666
|
static prepareInterceptionPatterns(handlers) {
|
|
663
667
|
const patterns = [];
|
|
664
668
|
let all = false;
|
|
665
669
|
for (const handler of handlers) {
|
|
666
|
-
if ((0,
|
|
670
|
+
if ((0, _rtti.isString)(handler.url)) patterns.push({
|
|
667
671
|
glob: handler.url
|
|
668
|
-
});else if ((0,
|
|
672
|
+
});else if ((0, _rtti.isRegExp)(handler.url)) patterns.push({
|
|
669
673
|
regexSource: handler.url.source,
|
|
670
674
|
regexFlags: handler.url.flags
|
|
671
675
|
});else all = true;
|
|
@@ -676,9 +680,12 @@ class RouteHandler {
|
|
|
676
680
|
return patterns;
|
|
677
681
|
}
|
|
678
682
|
matches(requestURL) {
|
|
679
|
-
return (0,
|
|
683
|
+
return (0, _urlMatch.urlMatches)(this._baseURL, requestURL, this.url);
|
|
680
684
|
}
|
|
681
685
|
async handle(route) {
|
|
686
|
+
return await this._savedZone.run(async () => this._handleImpl(route));
|
|
687
|
+
}
|
|
688
|
+
async _handleImpl(route) {
|
|
682
689
|
const handlerInvocation = {
|
|
683
690
|
complete: new _manualPromise.ManualPromise(),
|
|
684
691
|
route
|
|
@@ -692,7 +699,7 @@ class RouteHandler {
|
|
|
692
699
|
if ((0, _errors.isTargetClosedError)(e)) {
|
|
693
700
|
// We are failing in the handler because the target close closed.
|
|
694
701
|
// Give user a hint!
|
|
695
|
-
(0,
|
|
702
|
+
(0, _stackTrace.rewriteErrorMessage)(e, `"${e.message}" while running route callback.\nConsider awaiting \`await page.unrouteAll({ behavior: 'ignoreErrors' })\`\nbefore the end of the test to ignore remaining routes in flight.`);
|
|
696
703
|
}
|
|
697
704
|
throw e;
|
|
698
705
|
} finally {
|
|
@@ -738,7 +745,7 @@ class RawHeaders {
|
|
|
738
745
|
}
|
|
739
746
|
constructor(headers) {
|
|
740
747
|
this._headersArray = void 0;
|
|
741
|
-
this._headersMap = new
|
|
748
|
+
this._headersMap = new _multimap.MultiMap();
|
|
742
749
|
this._headersArray = headers;
|
|
743
750
|
for (const header of headers) this._headersMap.set(header.name.toLowerCase(), header.value);
|
|
744
751
|
}
|