@checkly/playwright-core 1.51.17-beta.1 → 1.54.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/ThirdPartyNotices.txt +65 -123
- package/browsers.json +16 -14
- package/index.js +1 -1
- package/lib/androidServerImpl.js +47 -50
- package/lib/browserServerImpl.js +89 -69
- package/lib/checkly/escapeRegExp.js +23 -27
- package/lib/checkly/fetch.js +64 -46
- package/lib/checkly/secretsFilter.js +49 -36
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +400 -359
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +151 -242
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +96 -71
- package/lib/client/browserContext.js +314 -345
- package/lib/client/browserType.js +103 -127
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +90 -113
- package/lib/client/clientHelper.js +48 -39
- 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 +188 -214
- 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 +80 -77
- package/lib/client/elementHandle.js +120 -159
- 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 +166 -190
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +207 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +42 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -29
- package/lib/client/locator.js +145 -237
- package/lib/client/network.js +282 -307
- package/lib/client/page.js +269 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -76
- package/lib/client/selectors.js +45 -63
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +55 -41
- package/lib/client/tracing.js +49 -96
- 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 +43 -56
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +27 -23
- package/lib/generated/bindingsControllerSource.js +28 -0
- package/lib/generated/clockSource.js +26 -6
- package/lib/generated/consoleApiSource.js +26 -6
- package/lib/generated/injectedScriptSource.js +26 -6
- package/lib/generated/pollingRecorderSource.js +26 -6
- package/lib/generated/storageScriptSource.js +28 -0
- package/lib/generated/utilityScriptSource.js +26 -6
- package/lib/generated/webSocketMockSource.js +333 -5
- package/lib/inProcessFactory.js +51 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +51 -46
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2807 -2739
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +88 -242
- package/lib/remote/playwrightServer.js +305 -92
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +251 -241
- package/lib/server/android/backendAdb.js +87 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +297 -158
- package/lib/server/bidi/bidiChromium.js +119 -89
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +129 -113
- package/lib/server/bidi/bidiFirefox.js +86 -76
- package/lib/server/bidi/bidiInput.js +106 -117
- package/lib/server/bidi/bidiNetworkManager.js +142 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +260 -260
- 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 +22 -137
- package/lib/server/bidi/third_party/bidiProtocolCore.js +152 -0
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
- 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 +93 -95
- package/lib/server/browserContext.js +419 -429
- package/lib/server/browserType.js +186 -216
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +235 -203
- package/lib/server/chromium/chromiumSwitches.js +100 -67
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +310 -292
- package/lib/server/chromium/crConnection.js +95 -121
- package/lib/server/chromium/crCoverage.js +121 -131
- package/lib/server/chromium/crDevTools.js +60 -51
- package/lib/server/chromium/crDragDrop.js +68 -84
- package/lib/server/chromium/crExecutionContext.js +89 -83
- package/lib/server/chromium/crInput.js +118 -113
- package/lib/server/chromium/crNetworkManager.js +274 -375
- package/lib/server/chromium/crPage.js +536 -593
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +84 -73
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +66 -99
- package/lib/server/clock.js +107 -83
- package/lib/server/codegen/csharp.js +192 -162
- package/lib/server/codegen/java.js +156 -129
- 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 +141 -126
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +108 -86
- package/lib/server/debugController.js +147 -151
- package/lib/server/debugger.js +86 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +238 -128
- package/lib/server/dialog.js +84 -39
- package/lib/server/dispatchers/androidDispatcher.js +257 -148
- package/lib/server/dispatchers/artifactDispatcher.js +79 -79
- package/lib/server/dispatchers/browserContextDispatcher.js +289 -259
- package/lib/server/dispatchers/browserDispatcher.js +96 -148
- package/lib/server/dispatchers/browserTypeDispatcher.js +50 -41
- package/lib/server/dispatchers/cdpSessionDispatcher.js +35 -39
- package/lib/server/dispatchers/debugControllerDispatcher.js +65 -83
- package/lib/server/dispatchers/dialogDispatcher.js +34 -31
- package/lib/server/dispatchers/dispatcher.js +208 -248
- package/lib/server/dispatchers/electronDispatcher.js +66 -70
- package/lib/server/dispatchers/elementHandlerDispatcher.js +164 -216
- package/lib/server/dispatchers/frameDispatcher.js +211 -272
- package/lib/server/dispatchers/jsHandleDispatcher.js +63 -75
- package/lib/server/dispatchers/jsonPipeDispatcher.js +37 -38
- package/lib/server/dispatchers/localUtilsDispatcher.js +121 -119
- package/lib/server/dispatchers/networkDispatchers.js +117 -128
- package/lib/server/dispatchers/pageDispatcher.js +256 -248
- package/lib/server/dispatchers/playwrightDispatcher.js +92 -87
- package/lib/server/dispatchers/streamDispatcher.js +52 -48
- package/lib/server/dispatchers/tracingDispatcher.js +47 -52
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +126 -150
- package/lib/server/dispatchers/writableStreamDispatcher.js +65 -43
- package/lib/server/dom.js +485 -582
- package/lib/server/download.js +47 -37
- package/lib/server/electron/electron.js +216 -243
- package/lib/server/electron/loader.js +9 -37
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +317 -360
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -60
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +268 -305
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +92 -73
- package/lib/server/firefox/ffInput.js +82 -84
- package/lib/server/firefox/ffNetworkManager.js +137 -114
- package/lib/server/firefox/ffPage.js +261 -293
- package/lib/server/firefox/firefox.js +80 -72
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +98 -114
- package/lib/server/frames.js +845 -1055
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +290 -223
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +55 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +151 -189
- package/lib/server/instrumentation.js +57 -44
- package/lib/server/javascript.js +133 -134
- package/lib/server/launchApp.js +113 -75
- package/lib/server/localUtils.js +150 -142
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +299 -303
- package/lib/server/page.js +513 -544
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +58 -67
- package/lib/server/progress.js +137 -68
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +70 -86
- package/lib/server/recorder/recorderApp.js +341 -176
- package/lib/server/recorder/recorderInTraceViewer.js +65 -94
- package/lib/server/recorder/recorderRunner.js +93 -116
- package/lib/server/recorder/recorderSignalProcessor.js +83 -0
- package/lib/server/recorder/recorderUtils.js +104 -47
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +395 -275
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +930 -803
- package/lib/server/registry/nativeDeps.js +1073 -464
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +160 -191
- package/lib/server/selectors.js +90 -51
- package/lib/server/socksClientCertificatesInterceptor.js +171 -186
- package/lib/server/socksInterceptor.js +62 -70
- package/lib/server/trace/recorder/snapshotter.js +76 -102
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +354 -362
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +160 -147
- package/lib/server/transport.js +119 -134
- 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 +36 -32
- package/lib/server/utils/debugLogger.js +77 -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 +141 -126
- 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 +152 -96
- 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 +68 -75
- 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 +77 -61
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +193 -184
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +85 -70
- package/lib/server/webkit/wkInput.js +97 -95
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +568 -667
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +79 -79
- package/lib/utils/expectUtils.js +31 -26
- package/lib/utils/isomorphic/ariaSnapshot.js +149 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +120 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +358 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +46 -39
- package/lib/utils/isomorphic/mimeType.js +447 -25
- package/lib/utils/isomorphic/multimap.js +34 -27
- package/lib/utils/isomorphic/protocolFormatter.js +68 -0
- package/lib/utils/isomorphic/protocolMetainfo.js +321 -0
- package/lib/utils/isomorphic/recorderUtils.js +140 -181
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +182 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +98 -112
- package/lib/utils/isomorphic/time.js +46 -22
- package/lib/utils/isomorphic/timeoutRunner.js +53 -53
- package/lib/utils/isomorphic/traceUtils.js +37 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +113 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -0
- package/lib/utils.js +101 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/utilsBundleImpl/index.js +160 -150
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +1 -1
- package/types/protocol.d.ts +1267 -1057
- package/types/types.d.ts +131 -29
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/compare.js +0 -108
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/image_tools/stats.js +0 -102
- package/lib/protocol/debug.js +0 -27
- package/lib/protocol/transport.js +0 -82
- package/lib/server/dispatchers/selectorsDispatcher.js +0 -36
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/server/recorder/contextRecorder.js +0 -290
- package/lib/server/recorder/recorderCollection.js +0 -104
- package/lib/server/recorder/recorderFrontend.js +0 -5
- package/lib/server/storageScript.js +0 -160
- package/lib/server/timeoutSettings.js +0 -74
- package/lib/third_party/diff_match_patch.js +0 -2222
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -171
- package/lib/utils/crypto.js +0 -174
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -210
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -133
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -121
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -62
- package/lib/vite/htmlReport/index.html +0 -69
- package/lib/vite/recorder/assets/codeMirrorModule-DrMbgOIo.js +0 -16684
- package/lib/vite/recorder/assets/codeMirrorModule-DuST8d_k.css +0 -344
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-5NM3V7eb.css +0 -2524
- package/lib/vite/recorder/assets/index-CT-scFHn.js +0 -16848
- package/lib/vite/recorder/index.html +0 -29
- package/lib/vite/recorder/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/assets/codeMirrorModule-CB-2okZ8.js +0 -16684
- package/lib/vite/traceViewer/assets/defaultSettingsView-CBiB4avC.js +0 -217
- package/lib/vite/traceViewer/assets/inspectorTab-CwgfffWb.js +0 -25143
- package/lib/vite/traceViewer/assets/workbench-CWZselvp.js +0 -2470
- package/lib/vite/traceViewer/assets/xtermModule-Es_gt_u7.js +0 -5994
- package/lib/vite/traceViewer/codeMirrorModule.DuST8d_k.css +0 -344
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.Dp3b_92q.css +0 -41
- package/lib/vite/traceViewer/embedded.BeldSa2G.css +0 -68
- package/lib/vite/traceViewer/embedded.gzudoghF.js +0 -106
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/index.DilotR1h.js +0 -314
- package/lib/vite/traceViewer/index.QewjJ85u.css +0 -131
- package/lib/vite/traceViewer/index.html +0 -47
- package/lib/vite/traceViewer/inspectorTab.DnGm18kV.css +0 -3178
- package/lib/vite/traceViewer/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/recorder.DLgqV9db.css +0 -15
- package/lib/vite/traceViewer/recorder.DVrkq3Um.js +0 -551
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/snapshot.html +0 -21
- package/lib/vite/traceViewer/sw.bundle.js +0 -3
- package/lib/vite/traceViewer/uiMode.C9_OcpPU.js +0 -1756
- package/lib/vite/traceViewer/uiMode.c5ORgcrX.css +0 -1424
- package/lib/vite/traceViewer/uiMode.html +0 -21
- package/lib/vite/traceViewer/workbench.xUZSA8PY.css +0 -787
- package/lib/vite/traceViewer/xtermModule.EsaqrrTX.css +0 -209
package/lib/client/android.js
CHANGED
|
@@ -1,92 +1,80 @@
|
|
|
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 android_exports = {};
|
|
20
|
+
__export(android_exports, {
|
|
21
|
+
Android: () => Android,
|
|
22
|
+
AndroidDevice: () => AndroidDevice,
|
|
23
|
+
AndroidInput: () => AndroidInput,
|
|
24
|
+
AndroidSocket: () => AndroidSocket,
|
|
25
|
+
AndroidWebView: () => AndroidWebView
|
|
5
26
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
* Copyright (c) Microsoft Corporation.
|
|
20
|
-
*
|
|
21
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
22
|
-
* you may not use this file except in compliance with the License.
|
|
23
|
-
* You may obtain a copy of the License at
|
|
24
|
-
*
|
|
25
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
26
|
-
*
|
|
27
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
28
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
29
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
30
|
-
* See the License for the specific language governing permissions and
|
|
31
|
-
* limitations under the License.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
class Android extends _channelOwner.ChannelOwner {
|
|
27
|
+
module.exports = __toCommonJS(android_exports);
|
|
28
|
+
var import_eventEmitter = require("./eventEmitter");
|
|
29
|
+
var import_browserContext = require("./browserContext");
|
|
30
|
+
var import_channelOwner = require("./channelOwner");
|
|
31
|
+
var import_errors = require("./errors");
|
|
32
|
+
var import_events = require("./events");
|
|
33
|
+
var import_waiter = require("./waiter");
|
|
34
|
+
var import_timeoutSettings = require("./timeoutSettings");
|
|
35
|
+
var import_rtti = require("../utils/isomorphic/rtti");
|
|
36
|
+
var import_time = require("../utils/isomorphic/time");
|
|
37
|
+
var import_timeoutRunner = require("../utils/isomorphic/timeoutRunner");
|
|
38
|
+
var import_webSocket = require("./webSocket");
|
|
39
|
+
class Android extends import_channelOwner.ChannelOwner {
|
|
35
40
|
static from(android) {
|
|
36
41
|
return android._object;
|
|
37
42
|
}
|
|
38
43
|
constructor(parent, type, guid, initializer) {
|
|
39
44
|
super(parent, type, guid, initializer);
|
|
40
|
-
this._timeoutSettings =
|
|
41
|
-
this._serverLauncher = void 0;
|
|
42
|
-
this._timeoutSettings = new _timeoutSettings.TimeoutSettings(this._platform);
|
|
45
|
+
this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform);
|
|
43
46
|
}
|
|
44
47
|
setDefaultTimeout(timeout) {
|
|
45
48
|
this._timeoutSettings.setDefaultTimeout(timeout);
|
|
46
|
-
this._wrapApiCall(async () => {
|
|
47
|
-
await this._channel.setDefaultTimeoutNoReply({
|
|
48
|
-
timeout
|
|
49
|
-
});
|
|
50
|
-
}, true).catch(() => {});
|
|
51
49
|
}
|
|
52
50
|
async devices(options = {}) {
|
|
53
|
-
const {
|
|
54
|
-
|
|
55
|
-
} = await this._channel.devices(options);
|
|
56
|
-
return devices.map(d => AndroidDevice.from(d));
|
|
51
|
+
const { devices } = await this._channel.devices(options);
|
|
52
|
+
return devices.map((d) => AndroidDevice.from(d));
|
|
57
53
|
}
|
|
58
54
|
async launchServer(options = {}) {
|
|
59
|
-
if (!this._serverLauncher)
|
|
55
|
+
if (!this._serverLauncher)
|
|
56
|
+
throw new Error("Launching server is not supported");
|
|
60
57
|
return await this._serverLauncher.launchServer(options);
|
|
61
58
|
}
|
|
62
59
|
async connect(wsEndpoint, options = {}) {
|
|
63
60
|
return await this._wrapApiCall(async () => {
|
|
64
|
-
const deadline = options.timeout ? (0,
|
|
65
|
-
const headers = {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
};
|
|
69
|
-
const connectParams = {
|
|
70
|
-
wsEndpoint,
|
|
71
|
-
headers,
|
|
72
|
-
slowMo: options.slowMo,
|
|
73
|
-
timeout: options.timeout
|
|
74
|
-
};
|
|
75
|
-
const connection = await (0, _webSocket.connectOverWebSocket)(this._connection, connectParams);
|
|
61
|
+
const deadline = options.timeout ? (0, import_time.monotonicTime)() + options.timeout : 0;
|
|
62
|
+
const headers = { "x-playwright-browser": "android", ...options.headers };
|
|
63
|
+
const connectParams = { wsEndpoint, headers, slowMo: options.slowMo, timeout: options.timeout || 0 };
|
|
64
|
+
const connection = await (0, import_webSocket.connectOverWebSocket)(this._connection, connectParams);
|
|
76
65
|
let device;
|
|
77
|
-
connection.on(
|
|
78
|
-
|
|
79
|
-
(_device = device) === null || _device === void 0 || _device._didClose();
|
|
66
|
+
connection.on("close", () => {
|
|
67
|
+
device?._didClose();
|
|
80
68
|
});
|
|
81
|
-
const result = await (0,
|
|
69
|
+
const result = await (0, import_timeoutRunner.raceAgainstDeadline)(async () => {
|
|
82
70
|
const playwright = await connection.initializePlaywright();
|
|
83
71
|
if (!playwright._initializer.preConnectedAndroidDevice) {
|
|
84
72
|
connection.close();
|
|
85
|
-
throw new Error(
|
|
73
|
+
throw new Error("Malformed endpoint. Did you use Android.launchServer method?");
|
|
86
74
|
}
|
|
87
75
|
device = AndroidDevice.from(playwright._initializer.preConnectedAndroidDevice);
|
|
88
76
|
device._shouldCloseConnectionOnClose = true;
|
|
89
|
-
device.on(
|
|
77
|
+
device.on(import_events.Events.AndroidDevice.Close, () => connection.close());
|
|
90
78
|
return device;
|
|
91
79
|
}, deadline);
|
|
92
80
|
if (!result.timedOut) {
|
|
@@ -98,44 +86,34 @@ class Android extends _channelOwner.ChannelOwner {
|
|
|
98
86
|
});
|
|
99
87
|
}
|
|
100
88
|
}
|
|
101
|
-
|
|
102
|
-
class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
103
|
-
static from(androidDevice) {
|
|
104
|
-
return androidDevice._object;
|
|
105
|
-
}
|
|
89
|
+
class AndroidDevice extends import_channelOwner.ChannelOwner {
|
|
106
90
|
constructor(parent, type, guid, initializer) {
|
|
107
91
|
super(parent, type, guid, initializer);
|
|
108
|
-
this.
|
|
109
|
-
this._webViews = new Map();
|
|
92
|
+
this._webViews = /* @__PURE__ */ new Map();
|
|
110
93
|
this._shouldCloseConnectionOnClose = false;
|
|
111
|
-
this.
|
|
94
|
+
this._android = parent;
|
|
112
95
|
this.input = new AndroidInput(this);
|
|
113
|
-
this._timeoutSettings = new
|
|
114
|
-
this._channel.on(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
this._channel.on('close', () => this._didClose());
|
|
96
|
+
this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform, parent._timeoutSettings);
|
|
97
|
+
this._channel.on("webViewAdded", ({ webView }) => this._onWebViewAdded(webView));
|
|
98
|
+
this._channel.on("webViewRemoved", ({ socketName }) => this._onWebViewRemoved(socketName));
|
|
99
|
+
this._channel.on("close", () => this._didClose());
|
|
100
|
+
}
|
|
101
|
+
static from(androidDevice) {
|
|
102
|
+
return androidDevice._object;
|
|
121
103
|
}
|
|
122
104
|
_onWebViewAdded(webView) {
|
|
123
105
|
const view = new AndroidWebView(this, webView);
|
|
124
106
|
this._webViews.set(webView.socketName, view);
|
|
125
|
-
this.emit(
|
|
107
|
+
this.emit(import_events.Events.AndroidDevice.WebView, view);
|
|
126
108
|
}
|
|
127
109
|
_onWebViewRemoved(socketName) {
|
|
128
110
|
const view = this._webViews.get(socketName);
|
|
129
111
|
this._webViews.delete(socketName);
|
|
130
|
-
if (view)
|
|
112
|
+
if (view)
|
|
113
|
+
view.emit(import_events.Events.AndroidWebView.Close);
|
|
131
114
|
}
|
|
132
115
|
setDefaultTimeout(timeout) {
|
|
133
116
|
this._timeoutSettings.setDefaultTimeout(timeout);
|
|
134
|
-
this._wrapApiCall(async () => {
|
|
135
|
-
await this._channel.setDefaultTimeoutNoReply({
|
|
136
|
-
timeout
|
|
137
|
-
});
|
|
138
|
-
}, true).catch(() => {});
|
|
139
117
|
}
|
|
140
118
|
serial() {
|
|
141
119
|
return this._initializer.serial;
|
|
@@ -147,101 +125,59 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
147
125
|
return [...this._webViews.values()];
|
|
148
126
|
}
|
|
149
127
|
async webView(selector, options) {
|
|
150
|
-
const predicate = v => {
|
|
151
|
-
if (selector.pkg)
|
|
152
|
-
|
|
128
|
+
const predicate = (v) => {
|
|
129
|
+
if (selector.pkg)
|
|
130
|
+
return v.pkg() === selector.pkg;
|
|
131
|
+
if (selector.socketName)
|
|
132
|
+
return v._socketName() === selector.socketName;
|
|
153
133
|
return false;
|
|
154
134
|
};
|
|
155
135
|
const webView = [...this._webViews.values()].find(predicate);
|
|
156
|
-
if (webView)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
predicate
|
|
160
|
-
});
|
|
136
|
+
if (webView)
|
|
137
|
+
return webView;
|
|
138
|
+
return await this.waitForEvent("webview", { ...options, predicate });
|
|
161
139
|
}
|
|
162
|
-
async wait(selector, options) {
|
|
163
|
-
await this._channel.wait({
|
|
164
|
-
selector: toSelectorChannel(selector),
|
|
165
|
-
...options
|
|
166
|
-
});
|
|
140
|
+
async wait(selector, options = {}) {
|
|
141
|
+
await this._channel.wait({ androidSelector: toSelectorChannel(selector), ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
167
142
|
}
|
|
168
|
-
async fill(selector, text, options) {
|
|
169
|
-
await this._channel.fill({
|
|
170
|
-
selector: toSelectorChannel(selector),
|
|
171
|
-
text,
|
|
172
|
-
...options
|
|
173
|
-
});
|
|
143
|
+
async fill(selector, text, options = {}) {
|
|
144
|
+
await this._channel.fill({ androidSelector: toSelectorChannel(selector), text, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
174
145
|
}
|
|
175
|
-
async press(selector, key, options) {
|
|
146
|
+
async press(selector, key, options = {}) {
|
|
176
147
|
await this.tap(selector, options);
|
|
177
148
|
await this.input.press(key);
|
|
178
149
|
}
|
|
179
|
-
async tap(selector, options) {
|
|
180
|
-
await this._channel.tap({
|
|
181
|
-
selector: toSelectorChannel(selector),
|
|
182
|
-
...options
|
|
183
|
-
});
|
|
150
|
+
async tap(selector, options = {}) {
|
|
151
|
+
await this._channel.tap({ androidSelector: toSelectorChannel(selector), ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
184
152
|
}
|
|
185
|
-
async drag(selector, dest, options) {
|
|
186
|
-
await this._channel.drag({
|
|
187
|
-
selector: toSelectorChannel(selector),
|
|
188
|
-
dest,
|
|
189
|
-
...options
|
|
190
|
-
});
|
|
153
|
+
async drag(selector, dest, options = {}) {
|
|
154
|
+
await this._channel.drag({ androidSelector: toSelectorChannel(selector), dest, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
191
155
|
}
|
|
192
|
-
async fling(selector, direction, options) {
|
|
193
|
-
await this._channel.fling({
|
|
194
|
-
selector: toSelectorChannel(selector),
|
|
195
|
-
direction,
|
|
196
|
-
...options
|
|
197
|
-
});
|
|
156
|
+
async fling(selector, direction, options = {}) {
|
|
157
|
+
await this._channel.fling({ androidSelector: toSelectorChannel(selector), direction, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
198
158
|
}
|
|
199
|
-
async longTap(selector, options) {
|
|
200
|
-
await this._channel.longTap({
|
|
201
|
-
selector: toSelectorChannel(selector),
|
|
202
|
-
...options
|
|
203
|
-
});
|
|
159
|
+
async longTap(selector, options = {}) {
|
|
160
|
+
await this._channel.longTap({ androidSelector: toSelectorChannel(selector), ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
204
161
|
}
|
|
205
|
-
async pinchClose(selector, percent, options) {
|
|
206
|
-
await this._channel.pinchClose({
|
|
207
|
-
selector: toSelectorChannel(selector),
|
|
208
|
-
percent,
|
|
209
|
-
...options
|
|
210
|
-
});
|
|
162
|
+
async pinchClose(selector, percent, options = {}) {
|
|
163
|
+
await this._channel.pinchClose({ androidSelector: toSelectorChannel(selector), percent, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
211
164
|
}
|
|
212
|
-
async pinchOpen(selector, percent, options) {
|
|
213
|
-
await this._channel.pinchOpen({
|
|
214
|
-
selector: toSelectorChannel(selector),
|
|
215
|
-
percent,
|
|
216
|
-
...options
|
|
217
|
-
});
|
|
165
|
+
async pinchOpen(selector, percent, options = {}) {
|
|
166
|
+
await this._channel.pinchOpen({ androidSelector: toSelectorChannel(selector), percent, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
218
167
|
}
|
|
219
|
-
async scroll(selector, direction, percent, options) {
|
|
220
|
-
await this._channel.scroll({
|
|
221
|
-
selector: toSelectorChannel(selector),
|
|
222
|
-
direction,
|
|
223
|
-
percent,
|
|
224
|
-
...options
|
|
225
|
-
});
|
|
168
|
+
async scroll(selector, direction, percent, options = {}) {
|
|
169
|
+
await this._channel.scroll({ androidSelector: toSelectorChannel(selector), direction, percent, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
226
170
|
}
|
|
227
|
-
async swipe(selector, direction, percent, options) {
|
|
228
|
-
await this._channel.swipe({
|
|
229
|
-
selector: toSelectorChannel(selector),
|
|
230
|
-
direction,
|
|
231
|
-
percent,
|
|
232
|
-
...options
|
|
233
|
-
});
|
|
171
|
+
async swipe(selector, direction, percent, options = {}) {
|
|
172
|
+
await this._channel.swipe({ androidSelector: toSelectorChannel(selector), direction, percent, ...options, timeout: this._timeoutSettings.timeout(options) });
|
|
234
173
|
}
|
|
235
174
|
async info(selector) {
|
|
236
|
-
return (await this._channel.info({
|
|
237
|
-
selector: toSelectorChannel(selector)
|
|
238
|
-
})).info;
|
|
175
|
+
return (await this._channel.info({ androidSelector: toSelectorChannel(selector) })).info;
|
|
239
176
|
}
|
|
240
177
|
async screenshot(options = {}) {
|
|
241
|
-
const {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (options.path) await this._platform.fs().promises.writeFile(options.path, binary);
|
|
178
|
+
const { binary } = await this._channel.screenshot();
|
|
179
|
+
if (options.path)
|
|
180
|
+
await this._platform.fs().promises.writeFile(options.path, binary);
|
|
245
181
|
return binary;
|
|
246
182
|
}
|
|
247
183
|
async [Symbol.asyncDispose]() {
|
|
@@ -249,77 +185,67 @@ class AndroidDevice extends _channelOwner.ChannelOwner {
|
|
|
249
185
|
}
|
|
250
186
|
async close() {
|
|
251
187
|
try {
|
|
252
|
-
if (this._shouldCloseConnectionOnClose)
|
|
188
|
+
if (this._shouldCloseConnectionOnClose)
|
|
189
|
+
this._connection.close();
|
|
190
|
+
else
|
|
191
|
+
await this._channel.close();
|
|
253
192
|
} catch (e) {
|
|
254
|
-
if ((0,
|
|
193
|
+
if ((0, import_errors.isTargetClosedError)(e))
|
|
194
|
+
return;
|
|
255
195
|
throw e;
|
|
256
196
|
}
|
|
257
197
|
}
|
|
258
198
|
_didClose() {
|
|
259
|
-
this.emit(
|
|
199
|
+
this.emit(import_events.Events.AndroidDevice.Close, this);
|
|
260
200
|
}
|
|
261
201
|
async shell(command) {
|
|
262
|
-
const {
|
|
263
|
-
result
|
|
264
|
-
} = await this._channel.shell({
|
|
265
|
-
command
|
|
266
|
-
});
|
|
202
|
+
const { result } = await this._channel.shell({ command });
|
|
267
203
|
return result;
|
|
268
204
|
}
|
|
269
205
|
async open(command) {
|
|
270
|
-
return AndroidSocket.from((await this._channel.open({
|
|
271
|
-
command
|
|
272
|
-
})).socket);
|
|
206
|
+
return AndroidSocket.from((await this._channel.open({ command })).socket);
|
|
273
207
|
}
|
|
274
208
|
async installApk(file, options) {
|
|
275
|
-
await this._channel.installApk({
|
|
276
|
-
file: await loadFile(this._platform, file),
|
|
277
|
-
args: options && options.args
|
|
278
|
-
});
|
|
209
|
+
await this._channel.installApk({ file: await loadFile(this._platform, file), args: options && options.args });
|
|
279
210
|
}
|
|
280
211
|
async push(file, path, options) {
|
|
281
|
-
await this._channel.push({
|
|
282
|
-
file: await loadFile(this._platform, file),
|
|
283
|
-
path,
|
|
284
|
-
mode: options ? options.mode : undefined
|
|
285
|
-
});
|
|
212
|
+
await this._channel.push({ file: await loadFile(this._platform, file), path, mode: options ? options.mode : void 0 });
|
|
286
213
|
}
|
|
287
214
|
async launchBrowser(options = {}) {
|
|
288
|
-
const contextOptions = await (0,
|
|
215
|
+
const contextOptions = await (0, import_browserContext.prepareBrowserContextParams)(this._platform, options);
|
|
289
216
|
const result = await this._channel.launchBrowser(contextOptions);
|
|
290
|
-
const context =
|
|
291
|
-
|
|
217
|
+
const context = import_browserContext.BrowserContext.from(result.context);
|
|
218
|
+
const selectors = this._android._playwright.selectors;
|
|
219
|
+
selectors._contextsForSelectors.add(context);
|
|
220
|
+
context.once(import_events.Events.BrowserContext.Close, () => selectors._contextsForSelectors.delete(context));
|
|
221
|
+
await context._initializeHarFromOptions(options.recordHar);
|
|
292
222
|
return context;
|
|
293
223
|
}
|
|
294
224
|
async waitForEvent(event, optionsOrPredicate = {}) {
|
|
295
225
|
return await this._wrapApiCall(async () => {
|
|
296
|
-
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate ===
|
|
297
|
-
const predicate = typeof optionsOrPredicate ===
|
|
298
|
-
const waiter =
|
|
226
|
+
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
|
|
227
|
+
const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
|
|
228
|
+
const waiter = import_waiter.Waiter.createForEvent(this, event);
|
|
299
229
|
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
|
|
300
|
-
if (event !==
|
|
230
|
+
if (event !== import_events.Events.AndroidDevice.Close)
|
|
231
|
+
waiter.rejectOnEvent(this, import_events.Events.AndroidDevice.Close, () => new import_errors.TargetClosedError());
|
|
301
232
|
const result = await waiter.waitForEvent(this, event, predicate);
|
|
302
233
|
waiter.dispose();
|
|
303
234
|
return result;
|
|
304
235
|
});
|
|
305
236
|
}
|
|
306
237
|
}
|
|
307
|
-
|
|
308
|
-
class AndroidSocket extends _channelOwner.ChannelOwner {
|
|
238
|
+
class AndroidSocket extends import_channelOwner.ChannelOwner {
|
|
309
239
|
static from(androidDevice) {
|
|
310
240
|
return androidDevice._object;
|
|
311
241
|
}
|
|
312
242
|
constructor(parent, type, guid, initializer) {
|
|
313
243
|
super(parent, type, guid, initializer);
|
|
314
|
-
this._channel.on(
|
|
315
|
-
|
|
316
|
-
}) => this.emit(_events.Events.AndroidSocket.Data, data));
|
|
317
|
-
this._channel.on('close', () => this.emit(_events.Events.AndroidSocket.Close));
|
|
244
|
+
this._channel.on("data", ({ data }) => this.emit(import_events.Events.AndroidSocket.Data, data));
|
|
245
|
+
this._channel.on("close", () => this.emit(import_events.Events.AndroidSocket.Close));
|
|
318
246
|
}
|
|
319
247
|
async write(data) {
|
|
320
|
-
await this._channel.write({
|
|
321
|
-
data
|
|
322
|
-
});
|
|
248
|
+
await this._channel.write({ data });
|
|
323
249
|
}
|
|
324
250
|
async close() {
|
|
325
251
|
await this._channel.close();
|
|
@@ -328,46 +254,31 @@ class AndroidSocket extends _channelOwner.ChannelOwner {
|
|
|
328
254
|
await this.close();
|
|
329
255
|
}
|
|
330
256
|
}
|
|
331
|
-
exports.AndroidSocket = AndroidSocket;
|
|
332
257
|
async function loadFile(platform, file) {
|
|
333
|
-
if ((0,
|
|
258
|
+
if ((0, import_rtti.isString)(file))
|
|
259
|
+
return await platform.fs().promises.readFile(file);
|
|
334
260
|
return file;
|
|
335
261
|
}
|
|
336
262
|
class AndroidInput {
|
|
337
263
|
constructor(device) {
|
|
338
|
-
this._device = void 0;
|
|
339
264
|
this._device = device;
|
|
340
265
|
}
|
|
341
266
|
async type(text) {
|
|
342
|
-
await this._device._channel.inputType({
|
|
343
|
-
text
|
|
344
|
-
});
|
|
267
|
+
await this._device._channel.inputType({ text });
|
|
345
268
|
}
|
|
346
269
|
async press(key) {
|
|
347
|
-
await this._device._channel.inputPress({
|
|
348
|
-
key
|
|
349
|
-
});
|
|
270
|
+
await this._device._channel.inputPress({ key });
|
|
350
271
|
}
|
|
351
272
|
async tap(point) {
|
|
352
|
-
await this._device._channel.inputTap({
|
|
353
|
-
point
|
|
354
|
-
});
|
|
273
|
+
await this._device._channel.inputTap({ point });
|
|
355
274
|
}
|
|
356
275
|
async swipe(from, segments, steps) {
|
|
357
|
-
await this._device._channel.inputSwipe({
|
|
358
|
-
segments,
|
|
359
|
-
steps
|
|
360
|
-
});
|
|
276
|
+
await this._device._channel.inputSwipe({ segments, steps });
|
|
361
277
|
}
|
|
362
278
|
async drag(from, to, steps) {
|
|
363
|
-
await this._device._channel.inputDrag({
|
|
364
|
-
from,
|
|
365
|
-
to,
|
|
366
|
-
steps
|
|
367
|
-
});
|
|
279
|
+
await this._device._channel.inputDrag({ from, to, steps });
|
|
368
280
|
}
|
|
369
281
|
}
|
|
370
|
-
exports.AndroidInput = AndroidInput;
|
|
371
282
|
function toSelectorChannel(selector) {
|
|
372
283
|
const {
|
|
373
284
|
checkable,
|
|
@@ -388,10 +299,12 @@ function toSelectorChannel(selector) {
|
|
|
388
299
|
selected,
|
|
389
300
|
text
|
|
390
301
|
} = selector;
|
|
391
|
-
const toRegex = value => {
|
|
392
|
-
if (value ===
|
|
393
|
-
|
|
394
|
-
|
|
302
|
+
const toRegex = (value) => {
|
|
303
|
+
if (value === void 0)
|
|
304
|
+
return void 0;
|
|
305
|
+
if ((0, import_rtti.isRegExp)(value))
|
|
306
|
+
return value.source;
|
|
307
|
+
return "^" + value.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d") + "$";
|
|
395
308
|
};
|
|
396
309
|
return {
|
|
397
310
|
checkable,
|
|
@@ -406,24 +319,16 @@ function toSelectorChannel(selector) {
|
|
|
406
319
|
enabled,
|
|
407
320
|
focusable,
|
|
408
321
|
focused,
|
|
409
|
-
hasChild: hasChild ? {
|
|
410
|
-
|
|
411
|
-
} : undefined,
|
|
412
|
-
hasDescendant: hasDescendant ? {
|
|
413
|
-
selector: toSelectorChannel(hasDescendant.selector),
|
|
414
|
-
maxDepth: hasDescendant.maxDepth
|
|
415
|
-
} : undefined,
|
|
322
|
+
hasChild: hasChild ? { androidSelector: toSelectorChannel(hasChild.selector) } : void 0,
|
|
323
|
+
hasDescendant: hasDescendant ? { androidSelector: toSelectorChannel(hasDescendant.selector), maxDepth: hasDescendant.maxDepth } : void 0,
|
|
416
324
|
longClickable,
|
|
417
325
|
scrollable,
|
|
418
326
|
selected
|
|
419
327
|
};
|
|
420
328
|
}
|
|
421
|
-
class AndroidWebView extends
|
|
329
|
+
class AndroidWebView extends import_eventEmitter.EventEmitter {
|
|
422
330
|
constructor(device, data) {
|
|
423
331
|
super(device._platform);
|
|
424
|
-
this._device = void 0;
|
|
425
|
-
this._data = void 0;
|
|
426
|
-
this._pagePromise = void 0;
|
|
427
332
|
this._device = device;
|
|
428
333
|
this._data = data;
|
|
429
334
|
}
|
|
@@ -437,16 +342,20 @@ class AndroidWebView extends _eventEmitter.EventEmitter {
|
|
|
437
342
|
return this._data.socketName;
|
|
438
343
|
}
|
|
439
344
|
async page() {
|
|
440
|
-
if (!this._pagePromise)
|
|
345
|
+
if (!this._pagePromise)
|
|
346
|
+
this._pagePromise = this._fetchPage();
|
|
441
347
|
return await this._pagePromise;
|
|
442
348
|
}
|
|
443
349
|
async _fetchPage() {
|
|
444
|
-
const {
|
|
445
|
-
|
|
446
|
-
} = await this._device._channel.connectToWebView({
|
|
447
|
-
socketName: this._data.socketName
|
|
448
|
-
});
|
|
449
|
-
return _browserContext.BrowserContext.from(context).pages()[0];
|
|
350
|
+
const { context } = await this._device._channel.connectToWebView({ socketName: this._data.socketName });
|
|
351
|
+
return import_browserContext.BrowserContext.from(context).pages()[0];
|
|
450
352
|
}
|
|
451
353
|
}
|
|
452
|
-
|
|
354
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
355
|
+
0 && (module.exports = {
|
|
356
|
+
Android,
|
|
357
|
+
AndroidDevice,
|
|
358
|
+
AndroidInput,
|
|
359
|
+
AndroidSocket,
|
|
360
|
+
AndroidWebView
|
|
361
|
+
});
|