patchright-core 1.51.2 → 1.52.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/browsers.json +15 -13
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +54 -67
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +312 -328
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +141 -228
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +57 -61
- package/lib/client/browserContext.js +297 -326
- package/lib/client/browserType.js +92 -106
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +82 -95
- package/lib/client/clientHelper.js +46 -38
- package/lib/client/clientInstrumentation.js +40 -37
- package/lib/client/clientStackTrace.js +41 -37
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +190 -212
- package/lib/client/consoleMessage.js +31 -28
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +73 -75
- package/lib/client/elementHandle.js +111 -147
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +124 -121
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +135 -158
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +187 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -28
- package/lib/client/locator.js +161 -245
- package/lib/client/network.js +277 -295
- package/lib/client/page.js +270 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -66
- package/lib/client/selectors.js +48 -46
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +49 -39
- package/lib/client/tracing.js +48 -84
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +69 -88
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +61 -56
- package/lib/client/worker.js +48 -58
- package/lib/client/writableStream.js +27 -23
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -46
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2714 -2714
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +140 -157
- package/lib/remote/playwrightServer.js +99 -84
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -209
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +221 -155
- package/lib/server/bidi/bidiChromium.js +106 -79
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +128 -113
- package/lib/server/bidi/bidiFirefox.js +76 -69
- package/lib/server/bidi/bidiInput.js +86 -97
- package/lib/server/bidi/bidiNetworkManager.js +137 -154
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +247 -219
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +321 -346
- package/lib/server/browserType.js +169 -182
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +86 -64
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +253 -273
- package/lib/server/chromium/crConnection.js +91 -116
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +59 -51
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +88 -83
- package/lib/server/chromium/crInput.js +97 -95
- package/lib/server/chromium/crNetworkManager.js +288 -403
- package/lib/server/chromium/crPage.js +522 -608
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +82 -67
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +62 -50
- package/lib/server/codegen/csharp.js +185 -160
- package/lib/server/codegen/java.js +155 -128
- package/lib/server/codegen/javascript.js +163 -148
- package/lib/server/codegen/jsonl.js +32 -28
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +140 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +97 -124
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +50 -50
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +176 -205
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -66
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +169 -220
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
- package/lib/server/dispatchers/frameDispatcher.js +99 -163
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
- package/lib/server/dispatchers/networkDispatchers.js +90 -107
- package/lib/server/dispatchers/pageDispatcher.js +128 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -45
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
- package/lib/server/dom.js +413 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -176
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +289 -323
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +65 -59
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +213 -277
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +91 -73
- package/lib/server/firefox/ffInput.js +67 -69
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +236 -273
- package/lib/server/firefox/firefox.js +76 -67
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +741 -891
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +287 -222
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +134 -163
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +143 -134
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +130 -122
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +262 -296
- package/lib/server/page.js +329 -426
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +70 -86
- package/lib/server/recorder/contextRecorder.js +134 -138
- package/lib/server/recorder/recorderApp.js +127 -136
- package/lib/server/recorder/recorderCollection.js +56 -44
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +79 -103
- package/lib/server/recorder/recorderUtils.js +56 -45
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +177 -186
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +904 -792
- package/lib/server/registry/nativeDeps.js +1073 -464
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -70
- package/lib/server/storageScript.js +94 -100
- package/lib/server/timeoutSettings.js +58 -43
- package/lib/server/trace/recorder/snapshotter.js +70 -89
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +321 -333
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +168 -146
- package/lib/server/transport.js +124 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +39 -26
- package/lib/server/utils/comparators.js +105 -103
- package/lib/server/utils/crypto.js +157 -112
- package/lib/server/utils/debug.js +37 -28
- package/lib/server/utils/debugLogger.js +69 -48
- package/lib/server/utils/env.js +52 -37
- package/lib/server/utils/eventsHelper.js +29 -28
- package/lib/server/utils/expectUtils.js +31 -26
- package/lib/server/utils/fileUtils.js +123 -136
- package/lib/server/utils/happyEyeballs.js +138 -123
- package/lib/server/utils/hostPlatform.js +84 -120
- package/lib/server/utils/httpServer.js +106 -121
- package/lib/server/utils/image_tools/colorUtils.js +42 -51
- package/lib/server/utils/image_tools/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +38 -30
- package/lib/server/utils/image_tools/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +50 -37
- package/lib/server/utils/network.js +143 -86
- package/lib/server/utils/nodePlatform.js +87 -79
- package/lib/server/utils/pipeTransport.js +44 -42
- package/lib/server/utils/processLauncher.js +111 -121
- package/lib/server/utils/profiler.js +52 -39
- package/lib/server/utils/socksProxy.js +280 -339
- package/lib/server/utils/spawnAsync.js +37 -41
- package/lib/server/utils/task.js +31 -38
- package/lib/server/utils/userAgent.js +73 -66
- package/lib/server/utils/wsServer.js +73 -69
- package/lib/server/utils/zipFile.js +36 -37
- package/lib/server/utils/zones.js +37 -34
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +159 -176
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +84 -70
- package/lib/server/webkit/wkInput.js +82 -80
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +525 -619
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +121 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +340 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +47 -39
- package/lib/utils/isomorphic/mimeType.js +448 -25
- package/lib/utils/isomorphic/multimap.js +35 -27
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +41 -22
- package/lib/utils/isomorphic/timeoutRunner.js +55 -54
- package/lib/utils/isomorphic/traceUtils.js +38 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +112 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +97 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/vite/htmlReport/index.html +21 -15
- package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-DpJ-EmBQ.js → codeMirrorModule-dvXVzLxY.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
- package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
- package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
- package/lib/vite/traceViewer/index.html +3 -3
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
- package/lib/zipBundle.js +32 -23
- package/package.json +1 -1
- package/types/protocol.d.ts +436 -17
- package/types/types.d.ts +35 -16
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
- package/lib/vite/traceViewer/assets/defaultSettingsView-DTenqiGw.js +0 -259
- package/lib/vite/traceViewer/index.CUq7VgrV.js +0 -2
- package/lib/vite/traceViewer/uiMode.CHJSAD7F.js +0 -5
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var elementHandle_exports = {};
|
|
20
|
+
__export(elementHandle_exports, {
|
|
21
|
+
ElementHandle: () => ElementHandle,
|
|
22
|
+
convertInputFiles: () => convertInputFiles,
|
|
23
|
+
convertSelectOptionValues: () => convertSelectOptionValues,
|
|
24
|
+
determineScreenshotType: () => determineScreenshotType
|
|
5
25
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
var _writableStream = require("./writableStream");
|
|
16
|
-
var _mimeType = require("../utils/isomorphic/mimeType");
|
|
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
|
-
|
|
33
|
-
class ElementHandle extends _jsHandle.JSHandle {
|
|
26
|
+
module.exports = __toCommonJS(elementHandle_exports);
|
|
27
|
+
var import_frame = require("./frame");
|
|
28
|
+
var import_jsHandle = require("./jsHandle");
|
|
29
|
+
var import_assert = require("../utils/isomorphic/assert");
|
|
30
|
+
var import_fileUtils = require("./fileUtils");
|
|
31
|
+
var import_rtti = require("../utils/isomorphic/rtti");
|
|
32
|
+
var import_writableStream = require("./writableStream");
|
|
33
|
+
var import_mimeType = require("../utils/isomorphic/mimeType");
|
|
34
|
+
class ElementHandle extends import_jsHandle.JSHandle {
|
|
34
35
|
static from(handle) {
|
|
35
36
|
return handle._object;
|
|
36
37
|
}
|
|
@@ -39,34 +40,31 @@ class ElementHandle extends _jsHandle.JSHandle {
|
|
|
39
40
|
}
|
|
40
41
|
constructor(parent, type, guid, initializer) {
|
|
41
42
|
super(parent, type, guid, initializer);
|
|
42
|
-
this._elementChannel = void 0;
|
|
43
43
|
this._elementChannel = this._channel;
|
|
44
44
|
}
|
|
45
45
|
asElement() {
|
|
46
46
|
return this;
|
|
47
47
|
}
|
|
48
48
|
async ownerFrame() {
|
|
49
|
-
return
|
|
49
|
+
return import_frame.Frame.fromNullable((await this._elementChannel.ownerFrame()).frame);
|
|
50
50
|
}
|
|
51
51
|
async contentFrame() {
|
|
52
|
-
return
|
|
52
|
+
return import_frame.Frame.fromNullable((await this._elementChannel.contentFrame()).frame);
|
|
53
53
|
}
|
|
54
54
|
async _generateLocatorString() {
|
|
55
55
|
const value = (await this._elementChannel.generateLocatorString()).value;
|
|
56
|
-
return value ===
|
|
56
|
+
return value === void 0 ? null : value;
|
|
57
57
|
}
|
|
58
58
|
async getAttribute(name) {
|
|
59
|
-
const value = (await this._elementChannel.getAttribute({
|
|
60
|
-
|
|
61
|
-
})).value;
|
|
62
|
-
return value === undefined ? null : value;
|
|
59
|
+
const value = (await this._elementChannel.getAttribute({ name })).value;
|
|
60
|
+
return value === void 0 ? null : value;
|
|
63
61
|
}
|
|
64
62
|
async inputValue() {
|
|
65
63
|
return (await this._elementChannel.inputValue()).value;
|
|
66
64
|
}
|
|
67
65
|
async textContent() {
|
|
68
66
|
const value = (await this._elementChannel.textContent()).value;
|
|
69
|
-
return value ===
|
|
67
|
+
return value === void 0 ? null : value;
|
|
70
68
|
}
|
|
71
69
|
async innerText() {
|
|
72
70
|
return (await this._elementChannel.innerText()).value;
|
|
@@ -93,10 +91,7 @@ class ElementHandle extends _jsHandle.JSHandle {
|
|
|
93
91
|
return (await this._elementChannel.isVisible()).value;
|
|
94
92
|
}
|
|
95
93
|
async dispatchEvent(type, eventInit = {}) {
|
|
96
|
-
await this._elementChannel.dispatchEvent({
|
|
97
|
-
type,
|
|
98
|
-
eventInit: (0, _jsHandle.serializeArgument)(eventInit)
|
|
99
|
-
});
|
|
94
|
+
await this._elementChannel.dispatchEvent({ type, eventInit: (0, import_jsHandle.serializeArgument)(eventInit) });
|
|
100
95
|
}
|
|
101
96
|
async scrollIntoViewIfNeeded(options = {}) {
|
|
102
97
|
await this._elementChannel.scrollIntoViewIfNeeded(options);
|
|
@@ -114,44 +109,30 @@ class ElementHandle extends _jsHandle.JSHandle {
|
|
|
114
109
|
return await this._elementChannel.tap(options);
|
|
115
110
|
}
|
|
116
111
|
async selectOption(values, options = {}) {
|
|
117
|
-
const result = await this._elementChannel.selectOption({
|
|
118
|
-
...convertSelectOptionValues(values),
|
|
119
|
-
...options
|
|
120
|
-
});
|
|
112
|
+
const result = await this._elementChannel.selectOption({ ...convertSelectOptionValues(values), ...options });
|
|
121
113
|
return result.values;
|
|
122
114
|
}
|
|
123
115
|
async fill(value, options = {}) {
|
|
124
|
-
return await this._elementChannel.fill({
|
|
125
|
-
value,
|
|
126
|
-
...options
|
|
127
|
-
});
|
|
116
|
+
return await this._elementChannel.fill({ value, ...options });
|
|
128
117
|
}
|
|
129
118
|
async selectText(options = {}) {
|
|
130
119
|
await this._elementChannel.selectText(options);
|
|
131
120
|
}
|
|
132
121
|
async setInputFiles(files, options = {}) {
|
|
133
122
|
const frame = await this.ownerFrame();
|
|
134
|
-
if (!frame)
|
|
123
|
+
if (!frame)
|
|
124
|
+
throw new Error("Cannot set input files to detached element");
|
|
135
125
|
const converted = await convertInputFiles(this._platform, files, frame.page().context());
|
|
136
|
-
await this._elementChannel.setInputFiles({
|
|
137
|
-
...converted,
|
|
138
|
-
...options
|
|
139
|
-
});
|
|
126
|
+
await this._elementChannel.setInputFiles({ ...converted, ...options });
|
|
140
127
|
}
|
|
141
128
|
async focus() {
|
|
142
129
|
await this._elementChannel.focus();
|
|
143
130
|
}
|
|
144
131
|
async type(text, options = {}) {
|
|
145
|
-
await this._elementChannel.type({
|
|
146
|
-
text,
|
|
147
|
-
...options
|
|
148
|
-
});
|
|
132
|
+
await this._elementChannel.type({ text, ...options });
|
|
149
133
|
}
|
|
150
134
|
async press(key, options = {}) {
|
|
151
|
-
await this._elementChannel.press({
|
|
152
|
-
key,
|
|
153
|
-
...options
|
|
154
|
-
});
|
|
135
|
+
await this._elementChannel.press({ key, ...options });
|
|
155
136
|
}
|
|
156
137
|
async check(options = {}) {
|
|
157
138
|
return await this._elementChannel.check(options);
|
|
@@ -160,129 +141,103 @@ class ElementHandle extends _jsHandle.JSHandle {
|
|
|
160
141
|
return await this._elementChannel.uncheck(options);
|
|
161
142
|
}
|
|
162
143
|
async setChecked(checked, options) {
|
|
163
|
-
if (checked)
|
|
144
|
+
if (checked)
|
|
145
|
+
await this.check(options);
|
|
146
|
+
else
|
|
147
|
+
await this.uncheck(options);
|
|
164
148
|
}
|
|
165
149
|
async boundingBox() {
|
|
166
150
|
const value = (await this._elementChannel.boundingBox()).value;
|
|
167
|
-
return value ===
|
|
151
|
+
return value === void 0 ? null : value;
|
|
168
152
|
}
|
|
169
153
|
async screenshot(options = {}) {
|
|
170
154
|
const mask = options.mask;
|
|
171
|
-
const copy = {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
};
|
|
175
|
-
if (!copy.type) copy.type = determineScreenshotType(options);
|
|
155
|
+
const copy = { ...options, mask: void 0 };
|
|
156
|
+
if (!copy.type)
|
|
157
|
+
copy.type = determineScreenshotType(options);
|
|
176
158
|
if (mask) {
|
|
177
|
-
copy.mask = mask.map(locator => ({
|
|
159
|
+
copy.mask = mask.map((locator) => ({
|
|
178
160
|
frame: locator._frame._channel,
|
|
179
161
|
selector: locator._selector
|
|
180
162
|
}));
|
|
181
163
|
}
|
|
182
164
|
const result = await this._elementChannel.screenshot(copy);
|
|
183
165
|
if (options.path) {
|
|
184
|
-
await (0,
|
|
166
|
+
await (0, import_fileUtils.mkdirIfNeeded)(this._platform, options.path);
|
|
185
167
|
await this._platform.fs().promises.writeFile(options.path, result.binary);
|
|
186
168
|
}
|
|
187
169
|
return result.binary;
|
|
188
170
|
}
|
|
189
171
|
async $(selector) {
|
|
190
|
-
return ElementHandle.fromNullable((await this._elementChannel.querySelector({
|
|
191
|
-
selector
|
|
192
|
-
})).element);
|
|
172
|
+
return ElementHandle.fromNullable((await this._elementChannel.querySelector({ selector })).element);
|
|
193
173
|
}
|
|
194
174
|
async $$(selector) {
|
|
195
|
-
const result = await this._elementChannel.querySelectorAll({
|
|
196
|
-
|
|
197
|
-
});
|
|
198
|
-
return result.elements.map(h => ElementHandle.from(h));
|
|
175
|
+
const result = await this._elementChannel.querySelectorAll({ selector });
|
|
176
|
+
return result.elements.map((h) => ElementHandle.from(h));
|
|
199
177
|
}
|
|
200
178
|
async $eval(selector, pageFunction, arg) {
|
|
201
|
-
const result = await this._elementChannel.evalOnSelector({
|
|
202
|
-
|
|
203
|
-
expression: String(pageFunction),
|
|
204
|
-
isFunction: typeof pageFunction === 'function',
|
|
205
|
-
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
206
|
-
});
|
|
207
|
-
return (0, _jsHandle.parseResult)(result.value);
|
|
179
|
+
const result = await this._elementChannel.evalOnSelector({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
180
|
+
return (0, import_jsHandle.parseResult)(result.value);
|
|
208
181
|
}
|
|
209
182
|
async $$eval(selector, pageFunction, arg) {
|
|
210
|
-
const result = await this._elementChannel.evalOnSelectorAll({
|
|
211
|
-
|
|
212
|
-
expression: String(pageFunction),
|
|
213
|
-
isFunction: typeof pageFunction === 'function',
|
|
214
|
-
arg: (0, _jsHandle.serializeArgument)(arg)
|
|
215
|
-
});
|
|
216
|
-
return (0, _jsHandle.parseResult)(result.value);
|
|
183
|
+
const result = await this._elementChannel.evalOnSelectorAll({ selector, expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
184
|
+
return (0, import_jsHandle.parseResult)(result.value);
|
|
217
185
|
}
|
|
218
186
|
async waitForElementState(state, options = {}) {
|
|
219
|
-
return await this._elementChannel.waitForElementState({
|
|
220
|
-
state,
|
|
221
|
-
...options
|
|
222
|
-
});
|
|
187
|
+
return await this._elementChannel.waitForElementState({ state, ...options });
|
|
223
188
|
}
|
|
224
189
|
async waitForSelector(selector, options = {}) {
|
|
225
|
-
const result = await this._elementChannel.waitForSelector({
|
|
226
|
-
selector,
|
|
227
|
-
...options
|
|
228
|
-
});
|
|
190
|
+
const result = await this._elementChannel.waitForSelector({ selector, ...options });
|
|
229
191
|
return ElementHandle.fromNullable(result.element);
|
|
230
192
|
}
|
|
231
193
|
}
|
|
232
|
-
exports.ElementHandle = ElementHandle;
|
|
233
194
|
function convertSelectOptionValues(values) {
|
|
234
|
-
if (values === null)
|
|
235
|
-
|
|
236
|
-
if (!values
|
|
237
|
-
|
|
238
|
-
if (values
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return {
|
|
247
|
-
options: values
|
|
248
|
-
};
|
|
195
|
+
if (values === null)
|
|
196
|
+
return {};
|
|
197
|
+
if (!Array.isArray(values))
|
|
198
|
+
values = [values];
|
|
199
|
+
if (!values.length)
|
|
200
|
+
return {};
|
|
201
|
+
for (let i = 0; i < values.length; i++)
|
|
202
|
+
(0, import_assert.assert)(values[i] !== null, `options[${i}]: expected object, got null`);
|
|
203
|
+
if (values[0] instanceof ElementHandle)
|
|
204
|
+
return { elements: values.map((v) => v._elementChannel) };
|
|
205
|
+
if ((0, import_rtti.isString)(values[0]))
|
|
206
|
+
return { options: values.map((valueOrLabel) => ({ valueOrLabel })) };
|
|
207
|
+
return { options: values };
|
|
249
208
|
}
|
|
250
209
|
function filePayloadExceedsSizeLimit(payloads) {
|
|
251
|
-
return payloads.reduce((size, item) => size + (item.buffer ? item.buffer.byteLength : 0), 0) >=
|
|
210
|
+
return payloads.reduce((size, item) => size + (item.buffer ? item.buffer.byteLength : 0), 0) >= import_fileUtils.fileUploadSizeLimit;
|
|
252
211
|
}
|
|
253
212
|
async function resolvePathsAndDirectoryForInputFiles(platform, items) {
|
|
254
|
-
var _localPaths;
|
|
255
213
|
let localPaths;
|
|
256
214
|
let localDirectory;
|
|
257
215
|
for (const item of items) {
|
|
258
216
|
const stat = await platform.fs().promises.stat(item);
|
|
259
217
|
if (stat.isDirectory()) {
|
|
260
|
-
if (localDirectory)
|
|
218
|
+
if (localDirectory)
|
|
219
|
+
throw new Error("Multiple directories are not supported");
|
|
261
220
|
localDirectory = platform.path().resolve(item);
|
|
262
221
|
} else {
|
|
263
|
-
localPaths
|
|
222
|
+
localPaths ??= [];
|
|
264
223
|
localPaths.push(platform.path().resolve(item));
|
|
265
224
|
}
|
|
266
225
|
}
|
|
267
|
-
if (
|
|
226
|
+
if (localPaths?.length && localDirectory)
|
|
227
|
+
throw new Error("File paths must be all files or a single directory");
|
|
268
228
|
return [localPaths, localDirectory];
|
|
269
229
|
}
|
|
270
230
|
async function convertInputFiles(platform, files, context) {
|
|
271
231
|
const items = Array.isArray(files) ? files.slice() : [files];
|
|
272
|
-
if (items.some(item => typeof item ===
|
|
273
|
-
if (!items.every(item => typeof item ===
|
|
232
|
+
if (items.some((item) => typeof item === "string")) {
|
|
233
|
+
if (!items.every((item) => typeof item === "string"))
|
|
234
|
+
throw new Error("File paths cannot be mixed with buffers");
|
|
274
235
|
const [localPaths, localDirectory] = await resolvePathsAndDirectoryForInputFiles(platform, items);
|
|
275
236
|
if (context._connection.isRemote()) {
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
const {
|
|
281
|
-
writableStreams,
|
|
282
|
-
rootDir
|
|
283
|
-
} = await context._wrapApiCall(async () => context._channel.createTempFiles({
|
|
284
|
-
rootDirName: localDirectory ? platform.path().basename(localDirectory) : undefined,
|
|
285
|
-
items: await Promise.all(files.map(async file => {
|
|
237
|
+
const files2 = localDirectory ? (await platform.fs().promises.readdir(localDirectory, { withFileTypes: true, recursive: true })).filter((f) => f.isFile()).map((f) => platform.path().join(f.path, f.name)) : localPaths;
|
|
238
|
+
const { writableStreams, rootDir } = await context._wrapApiCall(async () => context._channel.createTempFiles({
|
|
239
|
+
rootDirName: localDirectory ? platform.path().basename(localDirectory) : void 0,
|
|
240
|
+
items: await Promise.all(files2.map(async (file) => {
|
|
286
241
|
const lastModifiedMs = (await platform.fs().promises.stat(file)).mtimeMs;
|
|
287
242
|
return {
|
|
288
243
|
name: localDirectory ? platform.path().relative(localDirectory, file) : platform.path().basename(file),
|
|
@@ -290,13 +245,13 @@ async function convertInputFiles(platform, files, context) {
|
|
|
290
245
|
};
|
|
291
246
|
}))
|
|
292
247
|
}), true);
|
|
293
|
-
for (let i = 0; i <
|
|
294
|
-
const writable =
|
|
295
|
-
await platform.streamFile(
|
|
248
|
+
for (let i = 0; i < files2.length; i++) {
|
|
249
|
+
const writable = import_writableStream.WritableStream.from(writableStreams[i]);
|
|
250
|
+
await platform.streamFile(files2[i], writable.stream());
|
|
296
251
|
}
|
|
297
252
|
return {
|
|
298
253
|
directoryStream: rootDir,
|
|
299
|
-
streams: localDirectory ?
|
|
254
|
+
streams: localDirectory ? void 0 : writableStreams
|
|
300
255
|
};
|
|
301
256
|
}
|
|
302
257
|
return {
|
|
@@ -305,16 +260,25 @@ async function convertInputFiles(platform, files, context) {
|
|
|
305
260
|
};
|
|
306
261
|
}
|
|
307
262
|
const payloads = items;
|
|
308
|
-
if (filePayloadExceedsSizeLimit(payloads))
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
};
|
|
263
|
+
if (filePayloadExceedsSizeLimit(payloads))
|
|
264
|
+
throw new Error("Cannot set buffer larger than 50Mb, please write it to a file and pass its path instead.");
|
|
265
|
+
return { payloads };
|
|
312
266
|
}
|
|
313
267
|
function determineScreenshotType(options) {
|
|
314
268
|
if (options.path) {
|
|
315
|
-
const mimeType = (0,
|
|
316
|
-
if (mimeType ===
|
|
269
|
+
const mimeType = (0, import_mimeType.getMimeTypeForPath)(options.path);
|
|
270
|
+
if (mimeType === "image/png")
|
|
271
|
+
return "png";
|
|
272
|
+
else if (mimeType === "image/jpeg")
|
|
273
|
+
return "jpeg";
|
|
317
274
|
throw new Error(`path: unsupported mime type "${mimeType}"`);
|
|
318
275
|
}
|
|
319
276
|
return options.type;
|
|
320
|
-
}
|
|
277
|
+
}
|
|
278
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
279
|
+
0 && (module.exports = {
|
|
280
|
+
ElementHandle,
|
|
281
|
+
convertInputFiles,
|
|
282
|
+
convertSelectOptionValues,
|
|
283
|
+
determineScreenshotType
|
|
284
|
+
});
|
package/lib/client/errors.js
CHANGED
|
@@ -1,77 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var errors_exports = {};
|
|
20
|
+
__export(errors_exports, {
|
|
21
|
+
TargetClosedError: () => TargetClosedError,
|
|
22
|
+
TimeoutError: () => TimeoutError,
|
|
23
|
+
isTargetClosedError: () => isTargetClosedError,
|
|
24
|
+
parseError: () => parseError,
|
|
25
|
+
serializeError: () => serializeError
|
|
5
26
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.serializeError = serializeError;
|
|
10
|
-
var _serializers = require("../protocol/serializers");
|
|
11
|
-
var _rtti = require("../utils/isomorphic/rtti");
|
|
12
|
-
/**
|
|
13
|
-
* Copyright (c) Microsoft Corporation.
|
|
14
|
-
*
|
|
15
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16
|
-
* you may not use this file except in compliance with the License.
|
|
17
|
-
* You may obtain a copy of the License at
|
|
18
|
-
*
|
|
19
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
-
*
|
|
21
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
22
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24
|
-
* See the License for the specific language governing permissions and
|
|
25
|
-
* limitations under the License.
|
|
26
|
-
*/
|
|
27
|
-
|
|
27
|
+
module.exports = __toCommonJS(errors_exports);
|
|
28
|
+
var import_serializers = require("../protocol/serializers");
|
|
29
|
+
var import_rtti = require("../utils/isomorphic/rtti");
|
|
28
30
|
class TimeoutError extends Error {
|
|
29
31
|
constructor(message) {
|
|
30
32
|
super(message);
|
|
31
|
-
this.name =
|
|
33
|
+
this.name = "TimeoutError";
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
|
-
exports.TimeoutError = TimeoutError;
|
|
35
36
|
class TargetClosedError extends Error {
|
|
36
37
|
constructor(cause) {
|
|
37
|
-
super(cause ||
|
|
38
|
+
super(cause || "Target page, context or browser has been closed");
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
exports.TargetClosedError = TargetClosedError;
|
|
41
41
|
function isTargetClosedError(error) {
|
|
42
42
|
return error instanceof TargetClosedError;
|
|
43
43
|
}
|
|
44
44
|
function serializeError(e) {
|
|
45
|
-
if ((0,
|
|
46
|
-
error: {
|
|
47
|
-
|
|
48
|
-
stack: e.stack,
|
|
49
|
-
name: e.name
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
return {
|
|
53
|
-
value: (0, _serializers.serializeValue)(e, value => ({
|
|
54
|
-
fallThrough: value
|
|
55
|
-
}))
|
|
56
|
-
};
|
|
45
|
+
if ((0, import_rtti.isError)(e))
|
|
46
|
+
return { error: { message: e.message, stack: e.stack, name: e.name } };
|
|
47
|
+
return { value: (0, import_serializers.serializeValue)(e, (value) => ({ fallThrough: value })) };
|
|
57
48
|
}
|
|
58
49
|
function parseError(error) {
|
|
59
50
|
if (!error.error) {
|
|
60
|
-
if (error.value ===
|
|
61
|
-
|
|
51
|
+
if (error.value === void 0)
|
|
52
|
+
throw new Error("Serialized error must have either an error or a value");
|
|
53
|
+
return (0, import_serializers.parseSerializedValue)(error.value, void 0);
|
|
62
54
|
}
|
|
63
|
-
if (error.error.name ===
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
return
|
|
55
|
+
if (error.error.name === "TimeoutError") {
|
|
56
|
+
const e2 = new TimeoutError(error.error.message);
|
|
57
|
+
e2.stack = error.error.stack || "";
|
|
58
|
+
return e2;
|
|
67
59
|
}
|
|
68
|
-
if (error.error.name ===
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
return
|
|
60
|
+
if (error.error.name === "TargetClosedError") {
|
|
61
|
+
const e2 = new TargetClosedError(error.error.message);
|
|
62
|
+
e2.stack = error.error.stack || "";
|
|
63
|
+
return e2;
|
|
72
64
|
}
|
|
73
65
|
const e = new Error(error.error.message);
|
|
74
|
-
e.stack = error.error.stack ||
|
|
66
|
+
e.stack = error.error.stack || "";
|
|
75
67
|
e.name = error.error.name;
|
|
76
68
|
return e;
|
|
77
|
-
}
|
|
69
|
+
}
|
|
70
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
71
|
+
0 && (module.exports = {
|
|
72
|
+
TargetClosedError,
|
|
73
|
+
TimeoutError,
|
|
74
|
+
isTargetClosedError,
|
|
75
|
+
parseError,
|
|
76
|
+
serializeError
|
|
77
|
+
});
|