@checkly/playwright-core 1.41.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +3 -0
- package/ThirdPartyNotices.txt +1513 -0
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +2 -0
- package/bin/install_media_pack.ps1 +5 -0
- package/bin/reinstall_chrome_beta_linux.sh +40 -0
- package/bin/reinstall_chrome_beta_mac.sh +13 -0
- package/bin/reinstall_chrome_beta_win.ps1 +23 -0
- package/bin/reinstall_chrome_stable_linux.sh +40 -0
- package/bin/reinstall_chrome_stable_mac.sh +12 -0
- package/bin/reinstall_chrome_stable_win.ps1 +23 -0
- package/bin/reinstall_msedge_beta_linux.sh +40 -0
- package/bin/reinstall_msedge_beta_mac.sh +11 -0
- package/bin/reinstall_msedge_beta_win.ps1 +22 -0
- package/bin/reinstall_msedge_dev_linux.sh +40 -0
- package/bin/reinstall_msedge_dev_mac.sh +11 -0
- package/bin/reinstall_msedge_dev_win.ps1 +22 -0
- package/bin/reinstall_msedge_stable_linux.sh +40 -0
- package/bin/reinstall_msedge_stable_mac.sh +11 -0
- package/bin/reinstall_msedge_stable_win.ps1 +23 -0
- package/browsers.json +64 -0
- package/cli.js +17 -0
- package/index.d.ts +17 -0
- package/index.js +33 -0
- package/index.mjs +28 -0
- package/lib/androidServerImpl.js +69 -0
- package/lib/browserServerImpl.js +92 -0
- package/lib/cli/driver.js +97 -0
- package/lib/cli/program.js +582 -0
- package/lib/cli/programWithTestStub.js +67 -0
- package/lib/client/accessibility.js +50 -0
- package/lib/client/android.js +473 -0
- package/lib/client/api.js +272 -0
- package/lib/client/artifact.js +79 -0
- package/lib/client/browser.js +145 -0
- package/lib/client/browserContext.js +509 -0
- package/lib/client/browserType.js +233 -0
- package/lib/client/cdpSession.js +53 -0
- package/lib/client/channelOwner.js +229 -0
- package/lib/client/clientHelper.js +57 -0
- package/lib/client/clientInstrumentation.js +40 -0
- package/lib/client/connection.js +327 -0
- package/lib/client/consoleMessage.js +55 -0
- package/lib/client/coverage.js +41 -0
- package/lib/client/dialog.js +57 -0
- package/lib/client/download.js +62 -0
- package/lib/client/electron.js +130 -0
- package/lib/client/elementHandle.js +291 -0
- package/lib/client/errors.js +77 -0
- package/lib/client/events.js +93 -0
- package/lib/client/fetch.js +343 -0
- package/lib/client/fileChooser.js +45 -0
- package/lib/client/frame.js +506 -0
- package/lib/client/harRouter.js +93 -0
- package/lib/client/input.js +111 -0
- package/lib/client/jsHandle.js +123 -0
- package/lib/client/jsonPipe.js +35 -0
- package/lib/client/localUtils.js +35 -0
- package/lib/client/locator.js +432 -0
- package/lib/client/network.js +601 -0
- package/lib/client/page.js +707 -0
- package/lib/client/playwright.js +74 -0
- package/lib/client/selectors.js +67 -0
- package/lib/client/stream.js +54 -0
- package/lib/client/tracing.js +135 -0
- package/lib/client/types.js +24 -0
- package/lib/client/video.js +51 -0
- package/lib/client/waiter.js +158 -0
- package/lib/client/webError.js +37 -0
- package/lib/client/worker.js +71 -0
- package/lib/client/writableStream.js +54 -0
- package/lib/common/socksProxy.js +569 -0
- package/lib/common/timeoutSettings.js +73 -0
- package/lib/common/types.js +5 -0
- package/lib/generated/consoleApiSource.js +7 -0
- package/lib/generated/injectedScriptSource.js +7 -0
- package/lib/generated/recorderSource.js +7 -0
- package/lib/generated/utilityScriptSource.js +7 -0
- package/lib/image_tools/colorUtils.js +98 -0
- package/lib/image_tools/compare.js +108 -0
- package/lib/image_tools/imageChannel.js +70 -0
- package/lib/image_tools/stats.js +102 -0
- package/lib/inProcessFactory.js +54 -0
- package/lib/inprocess.js +20 -0
- package/lib/outofprocess.js +67 -0
- package/lib/protocol/debug.js +27 -0
- package/lib/protocol/serializers.js +172 -0
- package/lib/protocol/transport.js +82 -0
- package/lib/protocol/validator.js +2599 -0
- package/lib/protocol/validatorPrimitives.js +139 -0
- package/lib/remote/playwrightConnection.js +274 -0
- package/lib/remote/playwrightServer.js +110 -0
- package/lib/server/accessibility.js +62 -0
- package/lib/server/android/android.js +441 -0
- package/lib/server/android/backendAdb.js +172 -0
- package/lib/server/artifact.js +104 -0
- package/lib/server/browser.js +129 -0
- package/lib/server/browserContext.js +609 -0
- package/lib/server/browserType.js +300 -0
- package/lib/server/chromium/appIcon.png +0 -0
- package/lib/server/chromium/chromium.js +346 -0
- package/lib/server/chromium/chromiumSwitches.js +41 -0
- package/lib/server/chromium/crAccessibility.js +237 -0
- package/lib/server/chromium/crBrowser.js +521 -0
- package/lib/server/chromium/crConnection.js +228 -0
- package/lib/server/chromium/crCoverage.js +246 -0
- package/lib/server/chromium/crDevTools.js +104 -0
- package/lib/server/chromium/crDragDrop.js +144 -0
- package/lib/server/chromium/crExecutionContext.js +156 -0
- package/lib/server/chromium/crInput.js +171 -0
- package/lib/server/chromium/crNetworkManager.js +723 -0
- package/lib/server/chromium/crPage.js +1173 -0
- package/lib/server/chromium/crPdf.js +147 -0
- package/lib/server/chromium/crProtocolHelper.js +131 -0
- package/lib/server/chromium/crServiceWorker.js +115 -0
- package/lib/server/chromium/defaultFontFamilies.js +145 -0
- package/lib/server/chromium/videoRecorder.js +155 -0
- package/lib/server/console.js +59 -0
- package/lib/server/cookieStore.js +112 -0
- package/lib/server/debugController.js +236 -0
- package/lib/server/debugger.js +132 -0
- package/lib/server/deviceDescriptors.js +21 -0
- package/lib/server/deviceDescriptorsSource.json +1549 -0
- package/lib/server/dialog.js +70 -0
- package/lib/server/dispatchers/androidDispatcher.js +193 -0
- package/lib/server/dispatchers/artifactDispatcher.js +118 -0
- package/lib/server/dispatchers/browserContextDispatcher.js +306 -0
- package/lib/server/dispatchers/browserDispatcher.js +170 -0
- package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
- package/lib/server/dispatchers/debugControllerDispatcher.js +103 -0
- package/lib/server/dispatchers/dialogDispatcher.js +44 -0
- package/lib/server/dispatchers/dispatcher.js +400 -0
- package/lib/server/dispatchers/electronDispatcher.js +80 -0
- package/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
- package/lib/server/dispatchers/frameDispatcher.js +287 -0
- package/lib/server/dispatchers/jsHandleDispatcher.js +102 -0
- package/lib/server/dispatchers/jsonPipeDispatcher.js +61 -0
- package/lib/server/dispatchers/localUtilsDispatcher.js +399 -0
- package/lib/server/dispatchers/networkDispatchers.js +221 -0
- package/lib/server/dispatchers/pageDispatcher.js +363 -0
- package/lib/server/dispatchers/playwrightDispatcher.js +105 -0
- package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
- package/lib/server/dispatchers/streamDispatcher.js +62 -0
- package/lib/server/dispatchers/tracingDispatcher.js +54 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +55 -0
- package/lib/server/dom.js +808 -0
- package/lib/server/download.js +53 -0
- package/lib/server/electron/electron.js +254 -0
- package/lib/server/electron/loader.js +57 -0
- package/lib/server/errors.js +68 -0
- package/lib/server/fetch.js +611 -0
- package/lib/server/fileChooser.js +42 -0
- package/lib/server/fileUploadUtils.js +71 -0
- package/lib/server/firefox/ffAccessibility.js +215 -0
- package/lib/server/firefox/ffBrowser.js +447 -0
- package/lib/server/firefox/ffConnection.js +168 -0
- package/lib/server/firefox/ffExecutionContext.js +138 -0
- package/lib/server/firefox/ffInput.js +150 -0
- package/lib/server/firefox/ffNetworkManager.js +231 -0
- package/lib/server/firefox/ffPage.js +558 -0
- package/lib/server/firefox/firefox.js +91 -0
- package/lib/server/formData.js +75 -0
- package/lib/server/frameSelectors.js +171 -0
- package/lib/server/frames.js +1597 -0
- package/lib/server/har/harRecorder.js +139 -0
- package/lib/server/har/harTracer.js +539 -0
- package/lib/server/helper.js +103 -0
- package/lib/server/index.js +96 -0
- package/lib/server/input.js +301 -0
- package/lib/server/instrumentation.js +74 -0
- package/lib/server/isomorphic/utilityScriptSerializers.js +212 -0
- package/lib/server/javascript.js +305 -0
- package/lib/server/launchApp.js +90 -0
- package/lib/server/macEditingCommands.js +139 -0
- package/lib/server/network.js +607 -0
- package/lib/server/page.js +793 -0
- package/lib/server/pipeTransport.js +85 -0
- package/lib/server/playwright.js +82 -0
- package/lib/server/progress.js +102 -0
- package/lib/server/protocolError.js +49 -0
- package/lib/server/recorder/codeGenerator.js +153 -0
- package/lib/server/recorder/csharp.js +310 -0
- package/lib/server/recorder/java.js +216 -0
- package/lib/server/recorder/javascript.js +229 -0
- package/lib/server/recorder/jsonl.js +47 -0
- package/lib/server/recorder/language.js +44 -0
- package/lib/server/recorder/python.js +275 -0
- package/lib/server/recorder/recorderActions.js +5 -0
- package/lib/server/recorder/recorderApp.js +181 -0
- package/lib/server/recorder/recorderUtils.js +48 -0
- package/lib/server/recorder/utils.js +45 -0
- package/lib/server/recorder.js +700 -0
- package/lib/server/registry/browserFetcher.js +168 -0
- package/lib/server/registry/dependencies.js +322 -0
- package/lib/server/registry/index.js +925 -0
- package/lib/server/registry/nativeDeps.js +383 -0
- package/lib/server/registry/oopDownloadBrowserMain.js +138 -0
- package/lib/server/screenshotter.js +354 -0
- package/lib/server/selectors.js +73 -0
- package/lib/server/socksInterceptor.js +100 -0
- package/lib/server/trace/recorder/snapshotter.js +168 -0
- package/lib/server/trace/recorder/snapshotterInjected.js +493 -0
- package/lib/server/trace/recorder/tracing.js +552 -0
- package/lib/server/trace/test/inMemorySnapshotter.js +93 -0
- package/lib/server/trace/viewer/traceViewer.js +229 -0
- package/lib/server/transport.js +191 -0
- package/lib/server/types.js +24 -0
- package/lib/server/usKeyboardLayout.js +555 -0
- package/lib/server/webkit/webkit.js +87 -0
- package/lib/server/webkit/wkAccessibility.js +194 -0
- package/lib/server/webkit/wkBrowser.js +328 -0
- package/lib/server/webkit/wkConnection.js +173 -0
- package/lib/server/webkit/wkExecutionContext.js +146 -0
- package/lib/server/webkit/wkInput.js +169 -0
- package/lib/server/webkit/wkInterceptableRequest.js +158 -0
- package/lib/server/webkit/wkPage.js +1198 -0
- package/lib/server/webkit/wkProvisionalPage.js +59 -0
- package/lib/server/webkit/wkWorkers.js +104 -0
- package/lib/third_party/diff_match_patch.js +2222 -0
- package/lib/third_party/pixelmatch.js +255 -0
- package/lib/utils/ascii.js +31 -0
- package/lib/utils/comparators.js +171 -0
- package/lib/utils/crypto.js +33 -0
- package/lib/utils/debug.js +46 -0
- package/lib/utils/debugLogger.js +89 -0
- package/lib/utils/env.js +47 -0
- package/lib/utils/eventsHelper.js +38 -0
- package/lib/utils/fileUtils.js +66 -0
- package/lib/utils/glob.js +83 -0
- package/lib/utils/happy-eyeballs.js +154 -0
- package/lib/utils/headers.js +52 -0
- package/lib/utils/hostPlatform.js +124 -0
- package/lib/utils/httpServer.js +195 -0
- package/lib/utils/index.js +324 -0
- package/lib/utils/isomorphic/cssParser.js +250 -0
- package/lib/utils/isomorphic/cssTokenizer.js +979 -0
- package/lib/utils/isomorphic/locatorGenerators.js +651 -0
- package/lib/utils/isomorphic/locatorParser.js +179 -0
- package/lib/utils/isomorphic/locatorUtils.js +62 -0
- package/lib/utils/isomorphic/selectorParser.js +397 -0
- package/lib/utils/isomorphic/stringUtils.js +107 -0
- package/lib/utils/isomorphic/traceUtils.js +39 -0
- package/lib/utils/linuxUtils.js +78 -0
- package/lib/utils/manualPromise.js +109 -0
- package/lib/utils/mimeType.js +29 -0
- package/lib/utils/multimap.js +75 -0
- package/lib/utils/network.js +189 -0
- package/lib/utils/processLauncher.js +248 -0
- package/lib/utils/profiler.js +53 -0
- package/lib/utils/rtti.js +41 -0
- package/lib/utils/semaphore.js +51 -0
- package/lib/utils/spawnAsync.js +45 -0
- package/lib/utils/stackTrace.js +123 -0
- package/lib/utils/task.js +58 -0
- package/lib/utils/time.js +37 -0
- package/lib/utils/timeoutRunner.js +131 -0
- package/lib/utils/traceUtils.js +44 -0
- package/lib/utils/userAgent.js +105 -0
- package/lib/utils/wsServer.js +125 -0
- package/lib/utils/zipFile.js +75 -0
- package/lib/utils/zones.js +99 -0
- package/lib/utilsBundle.js +81 -0
- package/lib/utilsBundleImpl/index.js +51 -0
- package/lib/utilsBundleImpl/xdg-open +1066 -0
- package/lib/vite/htmlReport/index.html +66 -0
- package/lib/vite/recorder/assets/codeMirrorModule-Hs9-1ZG4.css +1 -0
- package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +24 -0
- package/lib/vite/recorder/assets/codicon-zGuYmc9o.ttf +0 -0
- package/lib/vite/recorder/assets/index-ljsTwXtJ.css +1 -0
- package/lib/vite/recorder/assets/index-yg8ypzl6.js +47 -0
- package/lib/vite/recorder/index.html +29 -0
- package/lib/vite/recorder/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-GluP1cQ1.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-fqJB1XDu.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-y3M3aAqy.js +24 -0
- package/lib/vite/traceViewer/assets/wsPort-Rvwd4WC-.js +69 -0
- package/lib/vite/traceViewer/assets/wsPort-dlD7vDkY.js +69 -0
- package/lib/vite/traceViewer/assets/wsPort-qOE2NWrO.js +69 -0
- package/lib/vite/traceViewer/assets/xtermModule-Yt6xwiJ_.js +9 -0
- package/lib/vite/traceViewer/codeMirrorModule.Hs9-1ZG4.css +1 -0
- package/lib/vite/traceViewer/codicon.zGuYmc9o.ttf +0 -0
- package/lib/vite/traceViewer/index.-g_5lMbJ.css +1 -0
- package/lib/vite/traceViewer/index.4X7zDysg.js +2 -0
- package/lib/vite/traceViewer/index.HkJgzlGy.js +2 -0
- package/lib/vite/traceViewer/index.html +26 -0
- package/lib/vite/traceViewer/index.kRjx5sAJ.js +2 -0
- package/lib/vite/traceViewer/playwright-logo.svg +9 -0
- package/lib/vite/traceViewer/snapshot.html +21 -0
- package/lib/vite/traceViewer/sw.bundle.js +4 -0
- package/lib/vite/traceViewer/uiMode.1Wcp_Kto.js +10 -0
- package/lib/vite/traceViewer/uiMode.GTNzARcV.js +10 -0
- package/lib/vite/traceViewer/uiMode.html +17 -0
- package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +1 -0
- package/lib/vite/traceViewer/uiMode.zV-7Lf9v.js +10 -0
- package/lib/vite/traceViewer/wsPort.kSgQKQ0y.css +1 -0
- package/lib/vite/traceViewer/xtermModule.0lwXJFHT.css +32 -0
- package/lib/zipBundle.js +25 -0
- package/lib/zipBundleImpl.js +5 -0
- package/package.json +43 -0
- package/types/protocol.d.ts +20304 -0
- package/types/structs.d.ts +45 -0
- package/types/types.d.ts +20626 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Frame = void 0;
|
|
7
|
+
exports.verifyLoadState = verifyLoadState;
|
|
8
|
+
var _utils = require("../utils");
|
|
9
|
+
var _channelOwner = require("./channelOwner");
|
|
10
|
+
var _locator = require("./locator");
|
|
11
|
+
var _locatorUtils = require("../utils/isomorphic/locatorUtils");
|
|
12
|
+
var _elementHandle = require("./elementHandle");
|
|
13
|
+
var _jsHandle = require("./jsHandle");
|
|
14
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
15
|
+
var network = _interopRequireWildcard(require("./network"));
|
|
16
|
+
var _events = require("events");
|
|
17
|
+
var _waiter = require("./waiter");
|
|
18
|
+
var _events2 = require("./events");
|
|
19
|
+
var _types = require("./types");
|
|
20
|
+
var _network2 = require("../utils/network");
|
|
21
|
+
var _clientHelper = require("./clientHelper");
|
|
22
|
+
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); }
|
|
23
|
+
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; }
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
/**
|
|
26
|
+
* Copyright 2017 Google Inc. All rights reserved.
|
|
27
|
+
* Modifications copyright (c) Microsoft Corporation.
|
|
28
|
+
*
|
|
29
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
30
|
+
* you may not use this file except in compliance with the License.
|
|
31
|
+
* You may obtain a copy of the License at
|
|
32
|
+
*
|
|
33
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
34
|
+
*
|
|
35
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
36
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
37
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
38
|
+
* See the License for the specific language governing permissions and
|
|
39
|
+
* limitations under the License.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
class Frame extends _channelOwner.ChannelOwner {
|
|
43
|
+
static from(frame) {
|
|
44
|
+
return frame._object;
|
|
45
|
+
}
|
|
46
|
+
static fromNullable(frame) {
|
|
47
|
+
return frame ? Frame.from(frame) : null;
|
|
48
|
+
}
|
|
49
|
+
constructor(parent, type, guid, initializer) {
|
|
50
|
+
super(parent, type, guid, initializer);
|
|
51
|
+
this._eventEmitter = void 0;
|
|
52
|
+
this._loadStates = void 0;
|
|
53
|
+
this._parentFrame = null;
|
|
54
|
+
this._url = '';
|
|
55
|
+
this._name = '';
|
|
56
|
+
this._detached = false;
|
|
57
|
+
this._childFrames = new Set();
|
|
58
|
+
this._page = void 0;
|
|
59
|
+
this._eventEmitter = new _events.EventEmitter();
|
|
60
|
+
this._eventEmitter.setMaxListeners(0);
|
|
61
|
+
this._parentFrame = Frame.fromNullable(initializer.parentFrame);
|
|
62
|
+
if (this._parentFrame) this._parentFrame._childFrames.add(this);
|
|
63
|
+
this._name = initializer.name;
|
|
64
|
+
this._url = initializer.url;
|
|
65
|
+
this._loadStates = new Set(initializer.loadStates);
|
|
66
|
+
this._channel.on('loadstate', event => {
|
|
67
|
+
if (event.add) {
|
|
68
|
+
this._loadStates.add(event.add);
|
|
69
|
+
this._eventEmitter.emit('loadstate', event.add);
|
|
70
|
+
}
|
|
71
|
+
if (event.remove) this._loadStates.delete(event.remove);
|
|
72
|
+
if (!this._parentFrame && event.add === 'load' && this._page) this._page.emit(_events2.Events.Page.Load, this._page);
|
|
73
|
+
if (!this._parentFrame && event.add === 'domcontentloaded' && this._page) this._page.emit(_events2.Events.Page.DOMContentLoaded, this._page);
|
|
74
|
+
});
|
|
75
|
+
this._channel.on('navigated', event => {
|
|
76
|
+
this._url = event.url;
|
|
77
|
+
this._name = event.name;
|
|
78
|
+
this._eventEmitter.emit('navigated', event);
|
|
79
|
+
if (!event.error && this._page) this._page.emit(_events2.Events.Page.FrameNavigated, this);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
page() {
|
|
83
|
+
return this._page;
|
|
84
|
+
}
|
|
85
|
+
async goto(url, options = {}) {
|
|
86
|
+
const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
|
|
87
|
+
return network.Response.fromNullable((await this._channel.goto({
|
|
88
|
+
url,
|
|
89
|
+
...options,
|
|
90
|
+
waitUntil
|
|
91
|
+
})).response);
|
|
92
|
+
}
|
|
93
|
+
_setupNavigationWaiter(options) {
|
|
94
|
+
const waiter = new _waiter.Waiter(this._page, '');
|
|
95
|
+
if (this._page.isClosed()) waiter.rejectImmediately(this._page._closeErrorWithReason());
|
|
96
|
+
waiter.rejectOnEvent(this._page, _events2.Events.Page.Close, () => this._page._closeErrorWithReason());
|
|
97
|
+
waiter.rejectOnEvent(this._page, _events2.Events.Page.Crash, new Error('Navigation failed because page crashed!'));
|
|
98
|
+
waiter.rejectOnEvent(this._page, _events2.Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
|
|
99
|
+
const timeout = this._page._timeoutSettings.navigationTimeout(options);
|
|
100
|
+
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);
|
|
101
|
+
return waiter;
|
|
102
|
+
}
|
|
103
|
+
async waitForNavigation(options = {}) {
|
|
104
|
+
return await this._page._wrapApiCall(async () => {
|
|
105
|
+
const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
|
|
106
|
+
const waiter = this._setupNavigationWaiter(options);
|
|
107
|
+
const toUrl = typeof options.url === 'string' ? ` to "${options.url}"` : '';
|
|
108
|
+
waiter.log(`waiting for navigation${toUrl} until "${waitUntil}"`);
|
|
109
|
+
const navigatedEvent = await waiter.waitForEvent(this._eventEmitter, 'navigated', event => {
|
|
110
|
+
var _this$_page;
|
|
111
|
+
// Any failed navigation results in a rejection.
|
|
112
|
+
if (event.error) return true;
|
|
113
|
+
waiter.log(` navigated to "${event.url}"`);
|
|
114
|
+
return (0, _network2.urlMatches)((_this$_page = this._page) === null || _this$_page === void 0 ? void 0 : _this$_page.context()._options.baseURL, event.url, options.url);
|
|
115
|
+
});
|
|
116
|
+
if (navigatedEvent.error) {
|
|
117
|
+
const e = new Error(navigatedEvent.error);
|
|
118
|
+
e.stack = '';
|
|
119
|
+
await waiter.waitForPromise(Promise.reject(e));
|
|
120
|
+
}
|
|
121
|
+
if (!this._loadStates.has(waitUntil)) {
|
|
122
|
+
await waiter.waitForEvent(this._eventEmitter, 'loadstate', s => {
|
|
123
|
+
waiter.log(` "${s}" event fired`);
|
|
124
|
+
return s === waitUntil;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const request = navigatedEvent.newDocument ? network.Request.fromNullable(navigatedEvent.newDocument.request) : null;
|
|
128
|
+
const response = request ? await waiter.waitForPromise(request._finalRequest()._internalResponse()) : null;
|
|
129
|
+
waiter.dispose();
|
|
130
|
+
return response;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async waitForLoadState(state = 'load', options = {}) {
|
|
134
|
+
state = verifyLoadState('state', state);
|
|
135
|
+
return await this._page._wrapApiCall(async () => {
|
|
136
|
+
const waiter = this._setupNavigationWaiter(options);
|
|
137
|
+
if (this._loadStates.has(state)) {
|
|
138
|
+
waiter.log(` not waiting, "${state}" event already fired`);
|
|
139
|
+
} else {
|
|
140
|
+
await waiter.waitForEvent(this._eventEmitter, 'loadstate', s => {
|
|
141
|
+
waiter.log(` "${s}" event fired`);
|
|
142
|
+
return s === state;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
waiter.dispose();
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async waitForURL(url, options = {}) {
|
|
149
|
+
var _this$_page2;
|
|
150
|
+
if ((0, _network2.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);
|
|
151
|
+
await this.waitForNavigation({
|
|
152
|
+
url,
|
|
153
|
+
...options
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async frameElement() {
|
|
157
|
+
return _elementHandle.ElementHandle.from((await this._channel.frameElement()).element);
|
|
158
|
+
}
|
|
159
|
+
async evaluateHandle(pageFunction, arg) {
|
|
160
|
+
(0, _jsHandle.assertMaxArguments)(arguments.length, 2);
|
|
161
|
+
const result = await this._channel.evaluateExpressionHandle({
|
|
162
|
+
expression: String(pageFunction),
|
|
163
|
+
isFunction: typeof pageFunction === 'function',
|
|
164
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
165
|
+
});
|
|
166
|
+
return _jsHandle.JSHandle.from(result.handle);
|
|
167
|
+
}
|
|
168
|
+
async evaluate(pageFunction, arg) {
|
|
169
|
+
(0, _jsHandle.assertMaxArguments)(arguments.length, 2);
|
|
170
|
+
const result = await this._channel.evaluateExpression({
|
|
171
|
+
expression: String(pageFunction),
|
|
172
|
+
isFunction: typeof pageFunction === 'function',
|
|
173
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
174
|
+
});
|
|
175
|
+
return (0, _jsHandle.parseResult)(result.value);
|
|
176
|
+
}
|
|
177
|
+
async _evaluateExposeUtilityScript(pageFunction, arg) {
|
|
178
|
+
(0, _jsHandle.assertMaxArguments)(arguments.length, 2);
|
|
179
|
+
const result = await this._channel.evaluateExpression({
|
|
180
|
+
expression: String(pageFunction),
|
|
181
|
+
isFunction: typeof pageFunction === 'function',
|
|
182
|
+
exposeUtilityScript: true,
|
|
183
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
184
|
+
});
|
|
185
|
+
return (0, _jsHandle.parseResult)(result.value);
|
|
186
|
+
}
|
|
187
|
+
async $(selector, options) {
|
|
188
|
+
const result = await this._channel.querySelector({
|
|
189
|
+
selector,
|
|
190
|
+
...options
|
|
191
|
+
});
|
|
192
|
+
return _elementHandle.ElementHandle.fromNullable(result.element);
|
|
193
|
+
}
|
|
194
|
+
async waitForSelector(selector, options = {}) {
|
|
195
|
+
if (options.visibility) throw new Error('options.visibility is not supported, did you mean options.state?');
|
|
196
|
+
if (options.waitFor && options.waitFor !== 'visible') throw new Error('options.waitFor is not supported, did you mean options.state?');
|
|
197
|
+
const result = await this._channel.waitForSelector({
|
|
198
|
+
selector,
|
|
199
|
+
...options
|
|
200
|
+
});
|
|
201
|
+
return _elementHandle.ElementHandle.fromNullable(result.element);
|
|
202
|
+
}
|
|
203
|
+
async dispatchEvent(selector, type, eventInit, options = {}) {
|
|
204
|
+
await this._channel.dispatchEvent({
|
|
205
|
+
selector,
|
|
206
|
+
type,
|
|
207
|
+
eventInit: (0, _jsHandle.serializeArgument)(eventInit),
|
|
208
|
+
...options
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
async $eval(selector, pageFunction, arg) {
|
|
212
|
+
(0, _jsHandle.assertMaxArguments)(arguments.length, 3);
|
|
213
|
+
const result = await this._channel.evalOnSelector({
|
|
214
|
+
selector,
|
|
215
|
+
expression: String(pageFunction),
|
|
216
|
+
isFunction: typeof pageFunction === 'function',
|
|
217
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
218
|
+
});
|
|
219
|
+
return (0, _jsHandle.parseResult)(result.value);
|
|
220
|
+
}
|
|
221
|
+
async $$eval(selector, pageFunction, arg) {
|
|
222
|
+
(0, _jsHandle.assertMaxArguments)(arguments.length, 3);
|
|
223
|
+
const result = await this._channel.evalOnSelectorAll({
|
|
224
|
+
selector,
|
|
225
|
+
expression: String(pageFunction),
|
|
226
|
+
isFunction: typeof pageFunction === 'function',
|
|
227
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
228
|
+
});
|
|
229
|
+
return (0, _jsHandle.parseResult)(result.value);
|
|
230
|
+
}
|
|
231
|
+
async $$(selector) {
|
|
232
|
+
const result = await this._channel.querySelectorAll({
|
|
233
|
+
selector
|
|
234
|
+
});
|
|
235
|
+
return result.elements.map(e => _elementHandle.ElementHandle.from(e));
|
|
236
|
+
}
|
|
237
|
+
async _queryCount(selector) {
|
|
238
|
+
return (await this._channel.queryCount({
|
|
239
|
+
selector
|
|
240
|
+
})).value;
|
|
241
|
+
}
|
|
242
|
+
async content() {
|
|
243
|
+
return (await this._channel.content()).value;
|
|
244
|
+
}
|
|
245
|
+
async setContent(html, options = {}) {
|
|
246
|
+
const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
|
|
247
|
+
await this._channel.setContent({
|
|
248
|
+
html,
|
|
249
|
+
...options,
|
|
250
|
+
waitUntil
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
name() {
|
|
254
|
+
return this._name || '';
|
|
255
|
+
}
|
|
256
|
+
url() {
|
|
257
|
+
return this._url;
|
|
258
|
+
}
|
|
259
|
+
parentFrame() {
|
|
260
|
+
return this._parentFrame;
|
|
261
|
+
}
|
|
262
|
+
childFrames() {
|
|
263
|
+
return Array.from(this._childFrames);
|
|
264
|
+
}
|
|
265
|
+
isDetached() {
|
|
266
|
+
return this._detached;
|
|
267
|
+
}
|
|
268
|
+
async addScriptTag(options = {}) {
|
|
269
|
+
const copy = {
|
|
270
|
+
...options
|
|
271
|
+
};
|
|
272
|
+
if (copy.path) {
|
|
273
|
+
copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
|
|
274
|
+
copy.content = (0, _clientHelper.addSourceUrlToScript)(copy.content, copy.path);
|
|
275
|
+
}
|
|
276
|
+
return _elementHandle.ElementHandle.from((await this._channel.addScriptTag({
|
|
277
|
+
...copy
|
|
278
|
+
})).element);
|
|
279
|
+
}
|
|
280
|
+
async addStyleTag(options = {}) {
|
|
281
|
+
const copy = {
|
|
282
|
+
...options
|
|
283
|
+
};
|
|
284
|
+
if (copy.path) {
|
|
285
|
+
copy.content = (await _fs.default.promises.readFile(copy.path)).toString();
|
|
286
|
+
copy.content += '/*# sourceURL=' + copy.path.replace(/\n/g, '') + '*/';
|
|
287
|
+
}
|
|
288
|
+
return _elementHandle.ElementHandle.from((await this._channel.addStyleTag({
|
|
289
|
+
...copy
|
|
290
|
+
})).element);
|
|
291
|
+
}
|
|
292
|
+
async click(selector, options = {}) {
|
|
293
|
+
return await this._channel.click({
|
|
294
|
+
selector,
|
|
295
|
+
...options
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
async dblclick(selector, options = {}) {
|
|
299
|
+
return await this._channel.dblclick({
|
|
300
|
+
selector,
|
|
301
|
+
...options
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
async dragAndDrop(source, target, options = {}) {
|
|
305
|
+
return await this._channel.dragAndDrop({
|
|
306
|
+
source,
|
|
307
|
+
target,
|
|
308
|
+
...options
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
async tap(selector, options = {}) {
|
|
312
|
+
return await this._channel.tap({
|
|
313
|
+
selector,
|
|
314
|
+
...options
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
async fill(selector, value, options = {}) {
|
|
318
|
+
return await this._channel.fill({
|
|
319
|
+
selector,
|
|
320
|
+
value,
|
|
321
|
+
...options
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
async _highlight(selector) {
|
|
325
|
+
return await this._channel.highlight({
|
|
326
|
+
selector
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
locator(selector, options) {
|
|
330
|
+
return new _locator.Locator(this, selector, options);
|
|
331
|
+
}
|
|
332
|
+
getByTestId(testId) {
|
|
333
|
+
return this.locator((0, _locatorUtils.getByTestIdSelector)((0, _locator.testIdAttributeName)(), testId));
|
|
334
|
+
}
|
|
335
|
+
getByAltText(text, options) {
|
|
336
|
+
return this.locator((0, _locatorUtils.getByAltTextSelector)(text, options));
|
|
337
|
+
}
|
|
338
|
+
getByLabel(text, options) {
|
|
339
|
+
return this.locator((0, _locatorUtils.getByLabelSelector)(text, options));
|
|
340
|
+
}
|
|
341
|
+
getByPlaceholder(text, options) {
|
|
342
|
+
return this.locator((0, _locatorUtils.getByPlaceholderSelector)(text, options));
|
|
343
|
+
}
|
|
344
|
+
getByText(text, options) {
|
|
345
|
+
return this.locator((0, _locatorUtils.getByTextSelector)(text, options));
|
|
346
|
+
}
|
|
347
|
+
getByTitle(text, options) {
|
|
348
|
+
return this.locator((0, _locatorUtils.getByTitleSelector)(text, options));
|
|
349
|
+
}
|
|
350
|
+
getByRole(role, options = {}) {
|
|
351
|
+
return this.locator((0, _locatorUtils.getByRoleSelector)(role, options));
|
|
352
|
+
}
|
|
353
|
+
frameLocator(selector) {
|
|
354
|
+
return new _locator.FrameLocator(this, selector);
|
|
355
|
+
}
|
|
356
|
+
async focus(selector, options = {}) {
|
|
357
|
+
await this._channel.focus({
|
|
358
|
+
selector,
|
|
359
|
+
...options
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
async textContent(selector, options = {}) {
|
|
363
|
+
const value = (await this._channel.textContent({
|
|
364
|
+
selector,
|
|
365
|
+
...options
|
|
366
|
+
})).value;
|
|
367
|
+
return value === undefined ? null : value;
|
|
368
|
+
}
|
|
369
|
+
async innerText(selector, options = {}) {
|
|
370
|
+
return (await this._channel.innerText({
|
|
371
|
+
selector,
|
|
372
|
+
...options
|
|
373
|
+
})).value;
|
|
374
|
+
}
|
|
375
|
+
async innerHTML(selector, options = {}) {
|
|
376
|
+
return (await this._channel.innerHTML({
|
|
377
|
+
selector,
|
|
378
|
+
...options
|
|
379
|
+
})).value;
|
|
380
|
+
}
|
|
381
|
+
async getAttribute(selector, name, options = {}) {
|
|
382
|
+
const value = (await this._channel.getAttribute({
|
|
383
|
+
selector,
|
|
384
|
+
name,
|
|
385
|
+
...options
|
|
386
|
+
})).value;
|
|
387
|
+
return value === undefined ? null : value;
|
|
388
|
+
}
|
|
389
|
+
async inputValue(selector, options = {}) {
|
|
390
|
+
return (await this._channel.inputValue({
|
|
391
|
+
selector,
|
|
392
|
+
...options
|
|
393
|
+
})).value;
|
|
394
|
+
}
|
|
395
|
+
async isChecked(selector, options = {}) {
|
|
396
|
+
return (await this._channel.isChecked({
|
|
397
|
+
selector,
|
|
398
|
+
...options
|
|
399
|
+
})).value;
|
|
400
|
+
}
|
|
401
|
+
async isDisabled(selector, options = {}) {
|
|
402
|
+
return (await this._channel.isDisabled({
|
|
403
|
+
selector,
|
|
404
|
+
...options
|
|
405
|
+
})).value;
|
|
406
|
+
}
|
|
407
|
+
async isEditable(selector, options = {}) {
|
|
408
|
+
return (await this._channel.isEditable({
|
|
409
|
+
selector,
|
|
410
|
+
...options
|
|
411
|
+
})).value;
|
|
412
|
+
}
|
|
413
|
+
async isEnabled(selector, options = {}) {
|
|
414
|
+
return (await this._channel.isEnabled({
|
|
415
|
+
selector,
|
|
416
|
+
...options
|
|
417
|
+
})).value;
|
|
418
|
+
}
|
|
419
|
+
async isHidden(selector, options = {}) {
|
|
420
|
+
return (await this._channel.isHidden({
|
|
421
|
+
selector,
|
|
422
|
+
...options
|
|
423
|
+
})).value;
|
|
424
|
+
}
|
|
425
|
+
async isVisible(selector, options = {}) {
|
|
426
|
+
return (await this._channel.isVisible({
|
|
427
|
+
selector,
|
|
428
|
+
...options
|
|
429
|
+
})).value;
|
|
430
|
+
}
|
|
431
|
+
async hover(selector, options = {}) {
|
|
432
|
+
await this._channel.hover({
|
|
433
|
+
selector,
|
|
434
|
+
...options
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
async selectOption(selector, values, options = {}) {
|
|
438
|
+
return (await this._channel.selectOption({
|
|
439
|
+
selector,
|
|
440
|
+
...(0, _elementHandle.convertSelectOptionValues)(values),
|
|
441
|
+
...options
|
|
442
|
+
})).values;
|
|
443
|
+
}
|
|
444
|
+
async setInputFiles(selector, files, options = {}) {
|
|
445
|
+
const converted = await (0, _elementHandle.convertInputFiles)(files, this.page().context());
|
|
446
|
+
await this._channel.setInputFiles({
|
|
447
|
+
selector,
|
|
448
|
+
...converted,
|
|
449
|
+
...options
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
async type(selector, text, options = {}) {
|
|
453
|
+
await this._channel.type({
|
|
454
|
+
selector,
|
|
455
|
+
text,
|
|
456
|
+
...options
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
async press(selector, key, options = {}) {
|
|
460
|
+
await this._channel.press({
|
|
461
|
+
selector,
|
|
462
|
+
key,
|
|
463
|
+
...options
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
async check(selector, options = {}) {
|
|
467
|
+
await this._channel.check({
|
|
468
|
+
selector,
|
|
469
|
+
...options
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
async uncheck(selector, options = {}) {
|
|
473
|
+
await this._channel.uncheck({
|
|
474
|
+
selector,
|
|
475
|
+
...options
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
async setChecked(selector, checked, options) {
|
|
479
|
+
if (checked) await this.check(selector, options);else await this.uncheck(selector, options);
|
|
480
|
+
}
|
|
481
|
+
async waitForTimeout(timeout) {
|
|
482
|
+
await this._channel.waitForTimeout({
|
|
483
|
+
timeout
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
async waitForFunction(pageFunction, arg, options = {}) {
|
|
487
|
+
if (typeof options.polling === 'string') (0, _utils.assert)(options.polling === 'raf', 'Unknown polling option: ' + options.polling);
|
|
488
|
+
const result = await this._channel.waitForFunction({
|
|
489
|
+
...options,
|
|
490
|
+
pollingInterval: options.polling === 'raf' ? undefined : options.polling,
|
|
491
|
+
expression: String(pageFunction),
|
|
492
|
+
isFunction: typeof pageFunction === 'function',
|
|
493
|
+
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
494
|
+
});
|
|
495
|
+
return _jsHandle.JSHandle.from(result.handle);
|
|
496
|
+
}
|
|
497
|
+
async title() {
|
|
498
|
+
return (await this._channel.title()).value;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
exports.Frame = Frame;
|
|
502
|
+
function verifyLoadState(name, waitUntil) {
|
|
503
|
+
if (waitUntil === 'networkidle0') waitUntil = 'networkidle';
|
|
504
|
+
if (!_types.kLifecycleEvents.has(waitUntil)) throw new Error(`${name}: expected one of (load|domcontentloaded|networkidle|commit)`);
|
|
505
|
+
return waitUntil;
|
|
506
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HarRouter = void 0;
|
|
7
|
+
var _debugLogger = require("../utils/debugLogger");
|
|
8
|
+
let _Symbol$asyncDispose;
|
|
9
|
+
/**
|
|
10
|
+
* Copyright (c) Microsoft Corporation.
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
25
|
+
class HarRouter {
|
|
26
|
+
static async create(localUtils, file, notFoundAction, options) {
|
|
27
|
+
const {
|
|
28
|
+
harId,
|
|
29
|
+
error
|
|
30
|
+
} = await localUtils._channel.harOpen({
|
|
31
|
+
file
|
|
32
|
+
});
|
|
33
|
+
if (error) throw new Error(error);
|
|
34
|
+
return new HarRouter(localUtils, harId, notFoundAction, options);
|
|
35
|
+
}
|
|
36
|
+
constructor(localUtils, harId, notFoundAction, options) {
|
|
37
|
+
this._localUtils = void 0;
|
|
38
|
+
this._harId = void 0;
|
|
39
|
+
this._notFoundAction = void 0;
|
|
40
|
+
this._options = void 0;
|
|
41
|
+
this._localUtils = localUtils;
|
|
42
|
+
this._harId = harId;
|
|
43
|
+
this._options = options;
|
|
44
|
+
this._notFoundAction = notFoundAction;
|
|
45
|
+
}
|
|
46
|
+
async _handle(route) {
|
|
47
|
+
const request = route.request();
|
|
48
|
+
const response = await this._localUtils._channel.harLookup({
|
|
49
|
+
harId: this._harId,
|
|
50
|
+
url: request.url(),
|
|
51
|
+
method: request.method(),
|
|
52
|
+
headers: await request.headersArray(),
|
|
53
|
+
postData: request.postDataBuffer() || undefined,
|
|
54
|
+
isNavigationRequest: request.isNavigationRequest()
|
|
55
|
+
});
|
|
56
|
+
if (response.action === 'redirect') {
|
|
57
|
+
_debugLogger.debugLogger.log('api', `HAR: ${route.request().url()} redirected to ${response.redirectURL}`);
|
|
58
|
+
await route._redirectNavigationRequest(response.redirectURL);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (response.action === 'fulfill') {
|
|
62
|
+
await route.fulfill({
|
|
63
|
+
status: response.status,
|
|
64
|
+
headers: Object.fromEntries(response.headers.map(h => [h.name, h.value])),
|
|
65
|
+
body: response.body
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (response.action === 'error') _debugLogger.debugLogger.log('api', 'HAR: ' + response.message);
|
|
70
|
+
// Report the error, but fall through to the default handler.
|
|
71
|
+
|
|
72
|
+
if (this._notFoundAction === 'abort') {
|
|
73
|
+
await route.abort();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
await route.fallback();
|
|
77
|
+
}
|
|
78
|
+
async addContextRoute(context) {
|
|
79
|
+
await context.route(this._options.urlMatch || '**/*', route => this._handle(route));
|
|
80
|
+
}
|
|
81
|
+
async addPageRoute(page) {
|
|
82
|
+
await page.route(this._options.urlMatch || '**/*', route => this._handle(route));
|
|
83
|
+
}
|
|
84
|
+
async [_Symbol$asyncDispose]() {
|
|
85
|
+
await this.dispose();
|
|
86
|
+
}
|
|
87
|
+
dispose() {
|
|
88
|
+
this._localUtils._channel.harClose({
|
|
89
|
+
harId: this._harId
|
|
90
|
+
}).catch(() => {});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.HarRouter = HarRouter;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Touchscreen = exports.Mouse = exports.Keyboard = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Copyright 2017 Google Inc. All rights reserved.
|
|
9
|
+
* Modifications copyright (c) Microsoft Corporation.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
class Keyboard {
|
|
25
|
+
constructor(page) {
|
|
26
|
+
this._page = void 0;
|
|
27
|
+
this._page = page;
|
|
28
|
+
}
|
|
29
|
+
async down(key) {
|
|
30
|
+
await this._page._channel.keyboardDown({
|
|
31
|
+
key
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async up(key) {
|
|
35
|
+
await this._page._channel.keyboardUp({
|
|
36
|
+
key
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
async insertText(text) {
|
|
40
|
+
await this._page._channel.keyboardInsertText({
|
|
41
|
+
text
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async type(text, options = {}) {
|
|
45
|
+
await this._page._channel.keyboardType({
|
|
46
|
+
text,
|
|
47
|
+
...options
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async press(key, options = {}) {
|
|
51
|
+
await this._page._channel.keyboardPress({
|
|
52
|
+
key,
|
|
53
|
+
...options
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Keyboard = Keyboard;
|
|
58
|
+
class Mouse {
|
|
59
|
+
constructor(page) {
|
|
60
|
+
this._page = void 0;
|
|
61
|
+
this._page = page;
|
|
62
|
+
}
|
|
63
|
+
async move(x, y, options = {}) {
|
|
64
|
+
await this._page._channel.mouseMove({
|
|
65
|
+
x,
|
|
66
|
+
y,
|
|
67
|
+
...options
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async down(options = {}) {
|
|
71
|
+
await this._page._channel.mouseDown({
|
|
72
|
+
...options
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async up(options = {}) {
|
|
76
|
+
await this._page._channel.mouseUp(options);
|
|
77
|
+
}
|
|
78
|
+
async click(x, y, options = {}) {
|
|
79
|
+
await this._page._channel.mouseClick({
|
|
80
|
+
x,
|
|
81
|
+
y,
|
|
82
|
+
...options
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async dblclick(x, y, options = {}) {
|
|
86
|
+
await this.click(x, y, {
|
|
87
|
+
...options,
|
|
88
|
+
clickCount: 2
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async wheel(deltaX, deltaY) {
|
|
92
|
+
await this._page._channel.mouseWheel({
|
|
93
|
+
deltaX,
|
|
94
|
+
deltaY
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.Mouse = Mouse;
|
|
99
|
+
class Touchscreen {
|
|
100
|
+
constructor(page) {
|
|
101
|
+
this._page = void 0;
|
|
102
|
+
this._page = page;
|
|
103
|
+
}
|
|
104
|
+
async tap(x, y) {
|
|
105
|
+
await this._page._channel.touchscreenTap({
|
|
106
|
+
x,
|
|
107
|
+
y
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.Touchscreen = Touchscreen;
|