@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,343 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.APIResponse = exports.APIRequestContext = exports.APIRequest = void 0;
|
|
7
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var util = _interopRequireWildcard(require("util"));
|
|
10
|
+
var _utils = require("../utils");
|
|
11
|
+
var _fileUtils = require("../utils/fileUtils");
|
|
12
|
+
var _channelOwner = require("./channelOwner");
|
|
13
|
+
var _network = require("./network");
|
|
14
|
+
var _tracing = require("./tracing");
|
|
15
|
+
var _errors = require("./errors");
|
|
16
|
+
let _Symbol$asyncDispose, _Symbol$asyncDispose2, _util$inspect$custom;
|
|
17
|
+
/**
|
|
18
|
+
* Copyright (c) Microsoft Corporation.
|
|
19
|
+
*
|
|
20
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
21
|
+
* you may not use this file except in compliance with the License.
|
|
22
|
+
* You may obtain a copy of the License at
|
|
23
|
+
*
|
|
24
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
25
|
+
*
|
|
26
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
27
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
28
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
29
|
+
* See the License for the specific language governing permissions and
|
|
30
|
+
* limitations under the License.
|
|
31
|
+
*/
|
|
32
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
33
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && 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; }
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
class APIRequest {
|
|
36
|
+
constructor(playwright) {
|
|
37
|
+
this._playwright = void 0;
|
|
38
|
+
this._contexts = new Set();
|
|
39
|
+
// Instrumentation.
|
|
40
|
+
this._defaultContextOptions = void 0;
|
|
41
|
+
this._playwright = playwright;
|
|
42
|
+
}
|
|
43
|
+
async newContext(options = {}) {
|
|
44
|
+
var _this$_defaultContext;
|
|
45
|
+
options = {
|
|
46
|
+
...this._defaultContextOptions,
|
|
47
|
+
...options
|
|
48
|
+
};
|
|
49
|
+
const storageState = typeof options.storageState === 'string' ? JSON.parse(await _fs.default.promises.readFile(options.storageState, 'utf8')) : options.storageState;
|
|
50
|
+
// We do not expose tracesDir in the API, so do not allow options to accidentally override it.
|
|
51
|
+
const tracesDir = (_this$_defaultContext = this._defaultContextOptions) === null || _this$_defaultContext === void 0 ? void 0 : _this$_defaultContext.tracesDir;
|
|
52
|
+
const context = APIRequestContext.from((await this._playwright._channel.newRequest({
|
|
53
|
+
...options,
|
|
54
|
+
extraHTTPHeaders: options.extraHTTPHeaders ? (0, _utils.headersObjectToArray)(options.extraHTTPHeaders) : undefined,
|
|
55
|
+
storageState,
|
|
56
|
+
tracesDir
|
|
57
|
+
})).request);
|
|
58
|
+
this._contexts.add(context);
|
|
59
|
+
context._request = this;
|
|
60
|
+
context._tracing._tracesDir = tracesDir;
|
|
61
|
+
await context._instrumentation.onDidCreateRequestContext(context);
|
|
62
|
+
return context;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.APIRequest = APIRequest;
|
|
66
|
+
_Symbol$asyncDispose = Symbol.asyncDispose;
|
|
67
|
+
class APIRequestContext extends _channelOwner.ChannelOwner {
|
|
68
|
+
static from(channel) {
|
|
69
|
+
return channel._object;
|
|
70
|
+
}
|
|
71
|
+
constructor(parent, type, guid, initializer) {
|
|
72
|
+
super(parent, type, guid, initializer);
|
|
73
|
+
this._request = void 0;
|
|
74
|
+
this._tracing = void 0;
|
|
75
|
+
this._tracing = _tracing.Tracing.from(initializer.tracing);
|
|
76
|
+
}
|
|
77
|
+
async [_Symbol$asyncDispose]() {
|
|
78
|
+
await this.dispose();
|
|
79
|
+
}
|
|
80
|
+
async dispose() {
|
|
81
|
+
var _this$_request;
|
|
82
|
+
await this._instrumentation.onWillCloseRequestContext(this);
|
|
83
|
+
await this._channel.dispose();
|
|
84
|
+
(_this$_request = this._request) === null || _this$_request === void 0 || _this$_request._contexts.delete(this);
|
|
85
|
+
}
|
|
86
|
+
async delete(url, options) {
|
|
87
|
+
return await this.fetch(url, {
|
|
88
|
+
...options,
|
|
89
|
+
method: 'DELETE'
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async head(url, options) {
|
|
93
|
+
return await this.fetch(url, {
|
|
94
|
+
...options,
|
|
95
|
+
method: 'HEAD'
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async get(url, options) {
|
|
99
|
+
return await this.fetch(url, {
|
|
100
|
+
...options,
|
|
101
|
+
method: 'GET'
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async patch(url, options) {
|
|
105
|
+
return await this.fetch(url, {
|
|
106
|
+
...options,
|
|
107
|
+
method: 'PATCH'
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async post(url, options) {
|
|
111
|
+
return await this.fetch(url, {
|
|
112
|
+
...options,
|
|
113
|
+
method: 'POST'
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async put(url, options) {
|
|
117
|
+
return await this.fetch(url, {
|
|
118
|
+
...options,
|
|
119
|
+
method: 'PUT'
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async fetch(urlOrRequest, options = {}) {
|
|
123
|
+
const url = (0, _utils.isString)(urlOrRequest) ? urlOrRequest : undefined;
|
|
124
|
+
const request = (0, _utils.isString)(urlOrRequest) ? undefined : urlOrRequest;
|
|
125
|
+
return await this._innerFetch({
|
|
126
|
+
url,
|
|
127
|
+
request,
|
|
128
|
+
...options
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async _innerFetch(options = {}) {
|
|
132
|
+
return await this._wrapApiCall(async () => {
|
|
133
|
+
var _options$request, _options$request2, _options$request3;
|
|
134
|
+
(0, _utils.assert)(options.request || typeof options.url === 'string', 'First argument must be either URL string or Request');
|
|
135
|
+
(0, _utils.assert)((options.data === undefined ? 0 : 1) + (options.form === undefined ? 0 : 1) + (options.multipart === undefined ? 0 : 1) <= 1, `Only one of 'data', 'form' or 'multipart' can be specified`);
|
|
136
|
+
(0, _utils.assert)(options.maxRedirects === undefined || options.maxRedirects >= 0, `'maxRedirects' should be greater than or equal to '0'`);
|
|
137
|
+
const url = options.url !== undefined ? options.url : options.request.url();
|
|
138
|
+
const params = objectToArray(options.params);
|
|
139
|
+
const method = options.method || ((_options$request = options.request) === null || _options$request === void 0 ? void 0 : _options$request.method());
|
|
140
|
+
const maxRedirects = options.maxRedirects;
|
|
141
|
+
// Cannot call allHeaders() here as the request may be paused inside route handler.
|
|
142
|
+
const headersObj = options.headers || ((_options$request2 = options.request) === null || _options$request2 === void 0 ? void 0 : _options$request2.headers());
|
|
143
|
+
const headers = headersObj ? (0, _utils.headersObjectToArray)(headersObj) : undefined;
|
|
144
|
+
let jsonData;
|
|
145
|
+
let formData;
|
|
146
|
+
let multipartData;
|
|
147
|
+
let postDataBuffer;
|
|
148
|
+
if (options.data !== undefined) {
|
|
149
|
+
if ((0, _utils.isString)(options.data)) {
|
|
150
|
+
if (isJsonContentType(headers)) jsonData = isJsonParsable(options.data) ? options.data : JSON.stringify(options.data);else postDataBuffer = Buffer.from(options.data, 'utf8');
|
|
151
|
+
} else if (Buffer.isBuffer(options.data)) {
|
|
152
|
+
postDataBuffer = options.data;
|
|
153
|
+
} else if (typeof options.data === 'object' || typeof options.data === 'number' || typeof options.data === 'boolean') {
|
|
154
|
+
jsonData = JSON.stringify(options.data);
|
|
155
|
+
} else {
|
|
156
|
+
throw new Error(`Unexpected 'data' type`);
|
|
157
|
+
}
|
|
158
|
+
} else if (options.form) {
|
|
159
|
+
formData = objectToArray(options.form);
|
|
160
|
+
} else if (options.multipart) {
|
|
161
|
+
multipartData = [];
|
|
162
|
+
// Convert file-like values to ServerFilePayload structs.
|
|
163
|
+
for (const [name, value] of Object.entries(options.multipart)) {
|
|
164
|
+
if (isFilePayload(value)) {
|
|
165
|
+
const payload = value;
|
|
166
|
+
if (!Buffer.isBuffer(payload.buffer)) throw new Error(`Unexpected buffer type of 'data.${name}'`);
|
|
167
|
+
multipartData.push({
|
|
168
|
+
name,
|
|
169
|
+
file: filePayloadToJson(payload)
|
|
170
|
+
});
|
|
171
|
+
} else if (value instanceof _fs.default.ReadStream) {
|
|
172
|
+
multipartData.push({
|
|
173
|
+
name,
|
|
174
|
+
file: await readStreamToJson(value)
|
|
175
|
+
});
|
|
176
|
+
} else {
|
|
177
|
+
multipartData.push({
|
|
178
|
+
name,
|
|
179
|
+
value: String(value)
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (postDataBuffer === undefined && jsonData === undefined && formData === undefined && multipartData === undefined) postDataBuffer = ((_options$request3 = options.request) === null || _options$request3 === void 0 ? void 0 : _options$request3.postDataBuffer()) || undefined;
|
|
185
|
+
const fixtures = {
|
|
186
|
+
__testHookLookup: options.__testHookLookup
|
|
187
|
+
};
|
|
188
|
+
const result = await this._channel.fetch({
|
|
189
|
+
url,
|
|
190
|
+
params,
|
|
191
|
+
method,
|
|
192
|
+
headers,
|
|
193
|
+
postData: postDataBuffer,
|
|
194
|
+
jsonData,
|
|
195
|
+
formData,
|
|
196
|
+
multipartData,
|
|
197
|
+
timeout: options.timeout,
|
|
198
|
+
failOnStatusCode: options.failOnStatusCode,
|
|
199
|
+
ignoreHTTPSErrors: options.ignoreHTTPSErrors,
|
|
200
|
+
maxRedirects: maxRedirects,
|
|
201
|
+
...fixtures
|
|
202
|
+
});
|
|
203
|
+
return new APIResponse(this, result.response);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
async storageState(options = {}) {
|
|
207
|
+
const state = await this._channel.storageState();
|
|
208
|
+
if (options.path) {
|
|
209
|
+
await (0, _fileUtils.mkdirIfNeeded)(options.path);
|
|
210
|
+
await _fs.default.promises.writeFile(options.path, JSON.stringify(state, undefined, 2), 'utf8');
|
|
211
|
+
}
|
|
212
|
+
return state;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.APIRequestContext = APIRequestContext;
|
|
216
|
+
function isJsonParsable(value) {
|
|
217
|
+
if (typeof value !== 'string') return false;
|
|
218
|
+
try {
|
|
219
|
+
JSON.parse(value);
|
|
220
|
+
return true;
|
|
221
|
+
} catch (e) {
|
|
222
|
+
if (e instanceof SyntaxError) return false;else throw e;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
_Symbol$asyncDispose2 = Symbol.asyncDispose;
|
|
226
|
+
_util$inspect$custom = util.inspect.custom;
|
|
227
|
+
class APIResponse {
|
|
228
|
+
constructor(context, initializer) {
|
|
229
|
+
this._initializer = void 0;
|
|
230
|
+
this._headers = void 0;
|
|
231
|
+
this._request = void 0;
|
|
232
|
+
this._request = context;
|
|
233
|
+
this._initializer = initializer;
|
|
234
|
+
this._headers = new _network.RawHeaders(this._initializer.headers);
|
|
235
|
+
}
|
|
236
|
+
ok() {
|
|
237
|
+
return this._initializer.status >= 200 && this._initializer.status <= 299;
|
|
238
|
+
}
|
|
239
|
+
url() {
|
|
240
|
+
return this._initializer.url;
|
|
241
|
+
}
|
|
242
|
+
status() {
|
|
243
|
+
return this._initializer.status;
|
|
244
|
+
}
|
|
245
|
+
statusText() {
|
|
246
|
+
return this._initializer.statusText;
|
|
247
|
+
}
|
|
248
|
+
headers() {
|
|
249
|
+
return this._headers.headers();
|
|
250
|
+
}
|
|
251
|
+
headersArray() {
|
|
252
|
+
return this._headers.headersArray();
|
|
253
|
+
}
|
|
254
|
+
async body() {
|
|
255
|
+
try {
|
|
256
|
+
const result = await this._request._channel.fetchResponseBody({
|
|
257
|
+
fetchUid: this._fetchUid()
|
|
258
|
+
});
|
|
259
|
+
if (result.binary === undefined) throw new Error('Response has been disposed');
|
|
260
|
+
return result.binary;
|
|
261
|
+
} catch (e) {
|
|
262
|
+
if ((0, _errors.isTargetClosedError)(e)) throw new Error('Response has been disposed');
|
|
263
|
+
throw e;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async text() {
|
|
267
|
+
const content = await this.body();
|
|
268
|
+
return content.toString('utf8');
|
|
269
|
+
}
|
|
270
|
+
async json() {
|
|
271
|
+
const content = await this.text();
|
|
272
|
+
return JSON.parse(content);
|
|
273
|
+
}
|
|
274
|
+
async [_Symbol$asyncDispose2]() {
|
|
275
|
+
await this.dispose();
|
|
276
|
+
}
|
|
277
|
+
async dispose() {
|
|
278
|
+
await this._request._channel.disposeAPIResponse({
|
|
279
|
+
fetchUid: this._fetchUid()
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
[_util$inspect$custom]() {
|
|
283
|
+
const headers = this.headersArray().map(({
|
|
284
|
+
name,
|
|
285
|
+
value
|
|
286
|
+
}) => ` ${name}: ${value}`);
|
|
287
|
+
return `APIResponse: ${this.status()} ${this.statusText()}\n${headers.join('\n')}`;
|
|
288
|
+
}
|
|
289
|
+
_fetchUid() {
|
|
290
|
+
return this._initializer.fetchUid;
|
|
291
|
+
}
|
|
292
|
+
async _fetchLog() {
|
|
293
|
+
const {
|
|
294
|
+
log
|
|
295
|
+
} = await this._request._channel.fetchLog({
|
|
296
|
+
fetchUid: this._fetchUid()
|
|
297
|
+
});
|
|
298
|
+
return log;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.APIResponse = APIResponse;
|
|
302
|
+
function filePayloadToJson(payload) {
|
|
303
|
+
return {
|
|
304
|
+
name: payload.name,
|
|
305
|
+
mimeType: payload.mimeType,
|
|
306
|
+
buffer: payload.buffer
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
async function readStreamToJson(stream) {
|
|
310
|
+
const buffer = await new Promise((resolve, reject) => {
|
|
311
|
+
const chunks = [];
|
|
312
|
+
stream.on('data', chunk => chunks.push(chunk));
|
|
313
|
+
stream.on('end', () => resolve(Buffer.concat(chunks)));
|
|
314
|
+
stream.on('error', err => reject(err));
|
|
315
|
+
});
|
|
316
|
+
const streamPath = Buffer.isBuffer(stream.path) ? stream.path.toString('utf8') : stream.path;
|
|
317
|
+
return {
|
|
318
|
+
name: _path.default.basename(streamPath),
|
|
319
|
+
buffer
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
function isJsonContentType(headers) {
|
|
323
|
+
if (!headers) return false;
|
|
324
|
+
for (const {
|
|
325
|
+
name,
|
|
326
|
+
value
|
|
327
|
+
} of headers) {
|
|
328
|
+
if (name.toLocaleLowerCase() === 'content-type') return value === 'application/json';
|
|
329
|
+
}
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
function objectToArray(map) {
|
|
333
|
+
if (!map) return undefined;
|
|
334
|
+
const result = [];
|
|
335
|
+
for (const [name, value] of Object.entries(map)) result.push({
|
|
336
|
+
name,
|
|
337
|
+
value: String(value)
|
|
338
|
+
});
|
|
339
|
+
return result;
|
|
340
|
+
}
|
|
341
|
+
function isFilePayload(value) {
|
|
342
|
+
return typeof value === 'object' && value['name'] && value['mimeType'] && value['buffer'];
|
|
343
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FileChooser = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Copyright (c) Microsoft Corporation.
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
class FileChooser {
|
|
24
|
+
constructor(page, elementHandle, isMultiple) {
|
|
25
|
+
this._page = void 0;
|
|
26
|
+
this._elementHandle = void 0;
|
|
27
|
+
this._isMultiple = void 0;
|
|
28
|
+
this._page = page;
|
|
29
|
+
this._elementHandle = elementHandle;
|
|
30
|
+
this._isMultiple = isMultiple;
|
|
31
|
+
}
|
|
32
|
+
element() {
|
|
33
|
+
return this._elementHandle;
|
|
34
|
+
}
|
|
35
|
+
isMultiple() {
|
|
36
|
+
return this._isMultiple;
|
|
37
|
+
}
|
|
38
|
+
page() {
|
|
39
|
+
return this._page;
|
|
40
|
+
}
|
|
41
|
+
async setFiles(files, options) {
|
|
42
|
+
return await this._elementHandle.setInputFiles(files, options);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.FileChooser = FileChooser;
|