@checkly/playwright-core 1.51.17-beta.2 → 1.54.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ThirdPartyNotices.txt +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 -35
- 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 +89 -112
- 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-B9YMkrwa.js +0 -24
- package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +0 -1
- package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
- package/lib/vite/recorder/assets/index-eHBmevrY.css +0 -1
- package/lib/vite/recorder/index.html +0 -29
- package/lib/vite/recorder/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/assets/codeMirrorModule-gU1OOCQO.js +0 -24
- package/lib/vite/traceViewer/assets/defaultSettingsView-B5n_FjMx.js +0 -1
- package/lib/vite/traceViewer/assets/inspectorTab-6Tru8Mn_.js +0 -235
- package/lib/vite/traceViewer/assets/workbench-B_Nj4NA2.js +0 -25
- package/lib/vite/traceViewer/assets/xtermModule-BoAIEibi.js +0 -9
- package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +0 -1
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/defaultSettingsView.CO3FR0CX.css +0 -1
- package/lib/vite/traceViewer/embedded.DpNPH6mk.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.mLhjB5IF.css +0 -1
- package/lib/vite/traceViewer/index.CFOW-Ezb.css +0 -1
- package/lib/vite/traceViewer/index.CuE3SYGw.js +0 -2
- package/lib/vite/traceViewer/index.html +0 -47
- package/lib/vite/traceViewer/inspectorTab.CXDulcFG.css +0 -1
- package/lib/vite/traceViewer/playwright-logo.svg +0 -9
- package/lib/vite/traceViewer/recorder.BD-uZJs7.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/recorder.tn0RQdqM.css +0 -0
- package/lib/vite/traceViewer/snapshot.html +0 -21
- package/lib/vite/traceViewer/sw.bundle.js +0 -3
- package/lib/vite/traceViewer/uiMode.BatfzHMG.css +0 -1
- package/lib/vite/traceViewer/uiMode.DHrNgddz.js +0 -5
- package/lib/vite/traceViewer/uiMode.html +0 -21
- package/lib/vite/traceViewer/workbench.B9vIAzH9.css +0 -1
- package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +0 -32
|
@@ -1,105 +1,264 @@
|
|
|
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 playwrightServer_exports = {};
|
|
20
|
+
__export(playwrightServer_exports, {
|
|
21
|
+
PlaywrightServer: () => PlaywrightServer
|
|
5
22
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* You may obtain a copy of the License at
|
|
20
|
-
*
|
|
21
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
22
|
-
*
|
|
23
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
24
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
25
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
26
|
-
* See the License for the specific language governing permissions and
|
|
27
|
-
* limitations under the License.
|
|
28
|
-
*/
|
|
29
|
-
|
|
23
|
+
module.exports = __toCommonJS(playwrightServer_exports);
|
|
24
|
+
var import_playwrightConnection = require("./playwrightConnection");
|
|
25
|
+
var import_playwright = require("../server/playwright");
|
|
26
|
+
var import_semaphore = require("../utils/isomorphic/semaphore");
|
|
27
|
+
var import_time = require("../utils/isomorphic/time");
|
|
28
|
+
var import_wsServer = require("../server/utils/wsServer");
|
|
29
|
+
var import_ascii = require("../server/utils/ascii");
|
|
30
|
+
var import_userAgent = require("../server/utils/userAgent");
|
|
31
|
+
var import_utils = require("../utils");
|
|
32
|
+
var import_server = require("../server");
|
|
33
|
+
var import_socksProxy = require("../server/utils/socksProxy");
|
|
34
|
+
var import_browser = require("../server/browser");
|
|
35
|
+
var import_progress = require("../server/progress");
|
|
30
36
|
class PlaywrightServer {
|
|
31
37
|
constructor(options) {
|
|
32
|
-
this.
|
|
33
|
-
this._options = void 0;
|
|
34
|
-
this._wsServer = void 0;
|
|
38
|
+
this._dontReuseBrowsers = /* @__PURE__ */ new Set();
|
|
35
39
|
this._options = options;
|
|
36
|
-
if (options.preLaunchedBrowser)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
if (options.preLaunchedBrowser) {
|
|
41
|
+
this._playwright = options.preLaunchedBrowser.attribution.playwright;
|
|
42
|
+
this._dontReuse(options.preLaunchedBrowser);
|
|
43
|
+
}
|
|
44
|
+
if (options.preLaunchedAndroidDevice)
|
|
45
|
+
this._playwright = options.preLaunchedAndroidDevice._android.attribution.playwright;
|
|
46
|
+
this._playwright ??= (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isServer: true });
|
|
47
|
+
const browserSemaphore = new import_semaphore.Semaphore(this._options.maxConnections);
|
|
48
|
+
const controllerSemaphore = new import_semaphore.Semaphore(1);
|
|
49
|
+
const reuseBrowserSemaphore = new import_semaphore.Semaphore(1);
|
|
50
|
+
this._wsServer = new import_wsServer.WSServer({
|
|
51
|
+
onRequest: (request, response) => {
|
|
52
|
+
if (request.method === "GET" && request.url === "/json") {
|
|
53
|
+
response.setHeader("Content-Type", "application/json");
|
|
54
|
+
response.end(JSON.stringify({
|
|
55
|
+
wsEndpointPath: this._options.path
|
|
56
|
+
}));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
response.end("Running");
|
|
60
|
+
},
|
|
42
61
|
onUpgrade: (request, socket) => {
|
|
43
|
-
const uaError = userAgentVersionMatchesErrorMessage(request.headers[
|
|
44
|
-
if (uaError)
|
|
45
|
-
error: `HTTP/${request.httpVersion} 428 Precondition Required\r
|
|
46
|
-
|
|
62
|
+
const uaError = userAgentVersionMatchesErrorMessage(request.headers["user-agent"] || "");
|
|
63
|
+
if (uaError)
|
|
64
|
+
return { error: `HTTP/${request.httpVersion} 428 Precondition Required\r
|
|
65
|
+
\r
|
|
66
|
+
${uaError}` };
|
|
47
67
|
},
|
|
48
|
-
onHeaders: headers => {
|
|
49
|
-
if (process.env.PWTEST_SERVER_WS_HEADERS)
|
|
68
|
+
onHeaders: (headers) => {
|
|
69
|
+
if (process.env.PWTEST_SERVER_WS_HEADERS)
|
|
70
|
+
headers.push(process.env.PWTEST_SERVER_WS_HEADERS);
|
|
50
71
|
},
|
|
51
72
|
onConnection: (request, url, ws, id) => {
|
|
52
|
-
const browserHeader = request.headers[
|
|
53
|
-
const browserName = url.searchParams.get(
|
|
54
|
-
const proxyHeader = request.headers[
|
|
55
|
-
const proxyValue = url.searchParams.get(
|
|
56
|
-
const launchOptionsHeader = request.headers[
|
|
73
|
+
const browserHeader = request.headers["x-playwright-browser"];
|
|
74
|
+
const browserName = url.searchParams.get("browser") || (Array.isArray(browserHeader) ? browserHeader[0] : browserHeader) || null;
|
|
75
|
+
const proxyHeader = request.headers["x-playwright-proxy"];
|
|
76
|
+
const proxyValue = url.searchParams.get("proxy") || (Array.isArray(proxyHeader) ? proxyHeader[0] : proxyHeader);
|
|
77
|
+
const launchOptionsHeader = request.headers["x-playwright-launch-options"] || "";
|
|
57
78
|
const launchOptionsHeaderValue = Array.isArray(launchOptionsHeader) ? launchOptionsHeader[0] : launchOptionsHeader;
|
|
58
|
-
const launchOptionsParam = url.searchParams.get(
|
|
59
|
-
let launchOptions = {};
|
|
79
|
+
const launchOptionsParam = url.searchParams.get("launch-options");
|
|
80
|
+
let launchOptions = { timeout: import_time.DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT };
|
|
60
81
|
try {
|
|
61
82
|
launchOptions = JSON.parse(launchOptionsParam || launchOptionsHeaderValue);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
83
|
+
if (!launchOptions.timeout)
|
|
84
|
+
launchOptions.timeout = import_time.DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT;
|
|
85
|
+
} catch (e) {
|
|
86
|
+
}
|
|
87
|
+
const isExtension = this._options.mode === "extension";
|
|
88
|
+
const allowFSPaths = isExtension;
|
|
89
|
+
launchOptions = filterLaunchOptions(launchOptions, allowFSPaths);
|
|
90
|
+
if (process.env.PW_BROWSER_SERVER && url.searchParams.has("connect")) {
|
|
91
|
+
const filter = url.searchParams.get("connect");
|
|
92
|
+
if (filter !== "first")
|
|
93
|
+
throw new Error(`Unknown connect filter: ${filter}`);
|
|
94
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
95
|
+
browserSemaphore,
|
|
96
|
+
ws,
|
|
97
|
+
false,
|
|
98
|
+
this._playwright,
|
|
99
|
+
() => this._initConnectMode(id, filter, browserName, launchOptions),
|
|
100
|
+
id
|
|
101
|
+
);
|
|
102
|
+
}
|
|
66
103
|
if (isExtension) {
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
104
|
+
if (url.searchParams.has("debug-controller")) {
|
|
105
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
106
|
+
controllerSemaphore,
|
|
107
|
+
ws,
|
|
108
|
+
true,
|
|
109
|
+
this._playwright,
|
|
110
|
+
async () => {
|
|
111
|
+
throw new Error("shouldnt be used");
|
|
112
|
+
},
|
|
113
|
+
id
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
117
|
+
reuseBrowserSemaphore,
|
|
118
|
+
ws,
|
|
119
|
+
false,
|
|
120
|
+
this._playwright,
|
|
121
|
+
() => this._initReuseBrowsersMode(browserName, launchOptions, id),
|
|
122
|
+
id
|
|
123
|
+
);
|
|
71
124
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
125
|
+
if (this._options.mode === "launchServer" || this._options.mode === "launchServerShared") {
|
|
126
|
+
if (this._options.preLaunchedBrowser) {
|
|
127
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
128
|
+
browserSemaphore,
|
|
129
|
+
ws,
|
|
130
|
+
false,
|
|
131
|
+
this._playwright,
|
|
132
|
+
() => this._initPreLaunchedBrowserMode(id),
|
|
133
|
+
id
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
137
|
+
browserSemaphore,
|
|
138
|
+
ws,
|
|
139
|
+
false,
|
|
140
|
+
this._playwright,
|
|
141
|
+
() => this._initPreLaunchedAndroidMode(id),
|
|
142
|
+
id
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
return new import_playwrightConnection.PlaywrightConnection(
|
|
146
|
+
browserSemaphore,
|
|
147
|
+
ws,
|
|
148
|
+
false,
|
|
149
|
+
this._playwright,
|
|
150
|
+
() => this._initLaunchBrowserMode(browserName, proxyValue, launchOptions, id),
|
|
151
|
+
id
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async _initReuseBrowsersMode(browserName, launchOptions, id) {
|
|
157
|
+
import_utils.debugLogger.log("server", `[${id}] engaged reuse browsers mode for ${browserName}`);
|
|
158
|
+
const requestedOptions = launchOptionsHash(launchOptions);
|
|
159
|
+
let browser = this._playwright.allBrowsers().find((b) => {
|
|
160
|
+
if (b.options.name !== browserName)
|
|
161
|
+
return false;
|
|
162
|
+
if (this._dontReuseBrowsers.has(b))
|
|
163
|
+
return false;
|
|
164
|
+
const existingOptions = launchOptionsHash({ ...b.options.originalLaunchOptions, timeout: import_time.DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT });
|
|
165
|
+
return existingOptions === requestedOptions;
|
|
166
|
+
});
|
|
167
|
+
for (const b of this._playwright.allBrowsers()) {
|
|
168
|
+
if (b === browser)
|
|
169
|
+
continue;
|
|
170
|
+
if (this._dontReuseBrowsers.has(b))
|
|
171
|
+
continue;
|
|
172
|
+
if (b.options.name === browserName && b.options.channel === launchOptions.channel)
|
|
173
|
+
await b.close({ reason: "Connection terminated" });
|
|
174
|
+
}
|
|
175
|
+
if (!browser) {
|
|
176
|
+
const browserType = this._playwright[browserName || "chromium"];
|
|
177
|
+
const controller = new import_progress.ProgressController((0, import_server.serverSideCallMetadata)(), browserType);
|
|
178
|
+
browser = await controller.run((progress) => browserType.launch(progress, {
|
|
179
|
+
...launchOptions,
|
|
180
|
+
headless: !!process.env.PW_DEBUG_CONTROLLER_HEADLESS
|
|
181
|
+
}), launchOptions.timeout);
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
preLaunchedBrowser: browser,
|
|
185
|
+
denyLaunch: true,
|
|
186
|
+
dispose: async () => {
|
|
187
|
+
for (const context of browser.contexts()) {
|
|
188
|
+
if (!context.pages().length)
|
|
189
|
+
await context.close({ reason: "Connection terminated" });
|
|
83
190
|
}
|
|
84
|
-
return new _playwrightConnection.PlaywrightConnection(semaphore.acquire(), clientType, ws, {
|
|
85
|
-
socksProxyPattern: proxyValue,
|
|
86
|
-
browserName,
|
|
87
|
-
launchOptions,
|
|
88
|
-
allowFSPaths: this._options.mode === 'extension'
|
|
89
|
-
}, {
|
|
90
|
-
playwright: this._preLaunchedPlaywright,
|
|
91
|
-
browser: this._options.preLaunchedBrowser,
|
|
92
|
-
androidDevice: this._options.preLaunchedAndroidDevice,
|
|
93
|
-
socksProxy: this._options.preLaunchedSocksProxy
|
|
94
|
-
}, id, () => semaphore.release());
|
|
95
|
-
},
|
|
96
|
-
onClose: async () => {
|
|
97
|
-
_debugLogger.debugLogger.log('server', 'closing browsers');
|
|
98
|
-
if (this._preLaunchedPlaywright) await Promise.all(this._preLaunchedPlaywright.allBrowsers().map(browser => browser.close({
|
|
99
|
-
reason: 'Playwright Server stopped'
|
|
100
|
-
})));
|
|
101
|
-
_debugLogger.debugLogger.log('server', 'closed browsers');
|
|
102
191
|
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
async _initConnectMode(id, filter, browserName, launchOptions) {
|
|
195
|
+
browserName ??= "chromium";
|
|
196
|
+
import_utils.debugLogger.log("server", `[${id}] engaged connect mode`);
|
|
197
|
+
let browser = this._playwright.allBrowsers().find((b) => b.options.name === browserName);
|
|
198
|
+
if (!browser) {
|
|
199
|
+
const browserType = this._playwright[browserName];
|
|
200
|
+
const controller = new import_progress.ProgressController((0, import_server.serverSideCallMetadata)(), browserType);
|
|
201
|
+
browser = await controller.run((progress) => browserType.launch(progress, launchOptions), launchOptions.timeout);
|
|
202
|
+
this._dontReuse(browser);
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
preLaunchedBrowser: browser,
|
|
206
|
+
denyLaunch: true,
|
|
207
|
+
sharedBrowser: true
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async _initPreLaunchedBrowserMode(id) {
|
|
211
|
+
import_utils.debugLogger.log("server", `[${id}] engaged pre-launched (browser) mode`);
|
|
212
|
+
const browser = this._options.preLaunchedBrowser;
|
|
213
|
+
for (const b of this._playwright.allBrowsers()) {
|
|
214
|
+
if (b !== browser)
|
|
215
|
+
await b.close({ reason: "Connection terminated" });
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
preLaunchedBrowser: browser,
|
|
219
|
+
socksProxy: this._options.preLaunchedSocksProxy,
|
|
220
|
+
sharedBrowser: this._options.mode === "launchServerShared",
|
|
221
|
+
denyLaunch: true
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
async _initPreLaunchedAndroidMode(id) {
|
|
225
|
+
import_utils.debugLogger.log("server", `[${id}] engaged pre-launched (Android) mode`);
|
|
226
|
+
const androidDevice = this._options.preLaunchedAndroidDevice;
|
|
227
|
+
return {
|
|
228
|
+
preLaunchedAndroidDevice: androidDevice,
|
|
229
|
+
denyLaunch: true
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async _initLaunchBrowserMode(browserName, proxyValue, launchOptions, id) {
|
|
233
|
+
import_utils.debugLogger.log("server", `[${id}] engaged launch mode for "${browserName}"`);
|
|
234
|
+
let socksProxy;
|
|
235
|
+
if (proxyValue) {
|
|
236
|
+
socksProxy = new import_socksProxy.SocksProxy();
|
|
237
|
+
socksProxy.setPattern(proxyValue);
|
|
238
|
+
launchOptions.socksProxyPort = await socksProxy.listen(0);
|
|
239
|
+
import_utils.debugLogger.log("server", `[${id}] started socks proxy on port ${launchOptions.socksProxyPort}`);
|
|
240
|
+
} else {
|
|
241
|
+
launchOptions.socksProxyPort = void 0;
|
|
242
|
+
}
|
|
243
|
+
const browserType = this._playwright[browserName];
|
|
244
|
+
const controller = new import_progress.ProgressController((0, import_server.serverSideCallMetadata)(), browserType);
|
|
245
|
+
const browser = await controller.run((progress) => browserType.launch(progress, launchOptions), launchOptions.timeout);
|
|
246
|
+
this._dontReuseBrowsers.add(browser);
|
|
247
|
+
return {
|
|
248
|
+
preLaunchedBrowser: browser,
|
|
249
|
+
socksProxy,
|
|
250
|
+
sharedBrowser: true,
|
|
251
|
+
denyLaunch: true,
|
|
252
|
+
dispose: async () => {
|
|
253
|
+
await browser.close({ reason: "Connection terminated" });
|
|
254
|
+
socksProxy?.close();
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
_dontReuse(browser) {
|
|
259
|
+
this._dontReuseBrowsers.add(browser);
|
|
260
|
+
browser.on(import_browser.Browser.Events.Disconnected, () => {
|
|
261
|
+
this._dontReuseBrowsers.delete(browser);
|
|
103
262
|
});
|
|
104
263
|
}
|
|
105
264
|
async listen(port = 0, hostname) {
|
|
@@ -109,16 +268,70 @@ class PlaywrightServer {
|
|
|
109
268
|
await this._wsServer.close();
|
|
110
269
|
}
|
|
111
270
|
}
|
|
112
|
-
exports.PlaywrightServer = PlaywrightServer;
|
|
113
271
|
function userAgentVersionMatchesErrorMessage(userAgent) {
|
|
114
272
|
const match = userAgent.match(/^Playwright\/(\d+\.\d+\.\d+)/);
|
|
115
273
|
if (!match) {
|
|
116
|
-
// Cannot parse user agent - be lax.
|
|
117
274
|
return;
|
|
118
275
|
}
|
|
119
|
-
const received = match[1].split(
|
|
120
|
-
const expected = (0,
|
|
276
|
+
const received = match[1].split(".").slice(0, 2).join(".");
|
|
277
|
+
const expected = (0, import_userAgent.getPlaywrightVersion)(true);
|
|
121
278
|
if (received !== expected) {
|
|
122
|
-
return (0,
|
|
279
|
+
return (0, import_ascii.wrapInASCIIBox)([
|
|
280
|
+
`Playwright version mismatch:`,
|
|
281
|
+
` - server version: v${expected}`,
|
|
282
|
+
` - client version: v${received}`,
|
|
283
|
+
``,
|
|
284
|
+
`If you are using VSCode extension, restart VSCode.`,
|
|
285
|
+
``,
|
|
286
|
+
`If you are connecting to a remote service,`,
|
|
287
|
+
`keep your local Playwright version in sync`,
|
|
288
|
+
`with the remote service version.`,
|
|
289
|
+
``,
|
|
290
|
+
`<3 Playwright Team`
|
|
291
|
+
].join("\n"), 1);
|
|
123
292
|
}
|
|
124
|
-
}
|
|
293
|
+
}
|
|
294
|
+
function launchOptionsHash(options) {
|
|
295
|
+
const copy = { ...options };
|
|
296
|
+
for (const k of Object.keys(copy)) {
|
|
297
|
+
const key = k;
|
|
298
|
+
if (copy[key] === defaultLaunchOptions[key])
|
|
299
|
+
delete copy[key];
|
|
300
|
+
}
|
|
301
|
+
for (const key of optionsThatAllowBrowserReuse)
|
|
302
|
+
delete copy[key];
|
|
303
|
+
return JSON.stringify(copy);
|
|
304
|
+
}
|
|
305
|
+
function filterLaunchOptions(options, allowFSPaths) {
|
|
306
|
+
return {
|
|
307
|
+
channel: options.channel,
|
|
308
|
+
args: options.args,
|
|
309
|
+
ignoreAllDefaultArgs: options.ignoreAllDefaultArgs,
|
|
310
|
+
ignoreDefaultArgs: options.ignoreDefaultArgs,
|
|
311
|
+
timeout: options.timeout,
|
|
312
|
+
headless: options.headless,
|
|
313
|
+
proxy: options.proxy,
|
|
314
|
+
chromiumSandbox: options.chromiumSandbox,
|
|
315
|
+
firefoxUserPrefs: options.firefoxUserPrefs,
|
|
316
|
+
slowMo: options.slowMo,
|
|
317
|
+
executablePath: (0, import_utils.isUnderTest)() || allowFSPaths ? options.executablePath : void 0,
|
|
318
|
+
downloadsPath: allowFSPaths ? options.downloadsPath : void 0
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const defaultLaunchOptions = {
|
|
322
|
+
ignoreAllDefaultArgs: false,
|
|
323
|
+
handleSIGINT: false,
|
|
324
|
+
handleSIGTERM: false,
|
|
325
|
+
handleSIGHUP: false,
|
|
326
|
+
headless: true,
|
|
327
|
+
devtools: false
|
|
328
|
+
};
|
|
329
|
+
const optionsThatAllowBrowserReuse = [
|
|
330
|
+
"headless",
|
|
331
|
+
"timeout",
|
|
332
|
+
"tracesDir"
|
|
333
|
+
];
|
|
334
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
335
|
+
0 && (module.exports = {
|
|
336
|
+
PlaywrightServer
|
|
337
|
+
});
|
|
@@ -1,29 +1,28 @@
|
|
|
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 accessibility_exports = {};
|
|
20
|
+
__export(accessibility_exports, {
|
|
21
|
+
Accessibility: () => Accessibility
|
|
5
22
|
});
|
|
6
|
-
exports
|
|
7
|
-
/**
|
|
8
|
-
* Copyright 2018 Google Inc. All rights reserved.
|
|
9
|
-
* Modifications copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
23
|
+
module.exports = __toCommonJS(accessibility_exports);
|
|
24
24
|
class Accessibility {
|
|
25
25
|
constructor(getAXTree) {
|
|
26
|
-
this._getAXTree = void 0;
|
|
27
26
|
this._getAXTree = getAXTree;
|
|
28
27
|
}
|
|
29
28
|
async snapshot(options = {}) {
|
|
@@ -31,32 +30,40 @@ class Accessibility {
|
|
|
31
30
|
interestingOnly = true,
|
|
32
31
|
root = null
|
|
33
32
|
} = options;
|
|
34
|
-
const {
|
|
35
|
-
tree,
|
|
36
|
-
needle
|
|
37
|
-
} = await this._getAXTree(root || undefined);
|
|
33
|
+
const { tree, needle } = await this._getAXTree(root || void 0);
|
|
38
34
|
if (!interestingOnly) {
|
|
39
|
-
if (root)
|
|
35
|
+
if (root)
|
|
36
|
+
return needle && serializeTree(needle)[0];
|
|
40
37
|
return serializeTree(tree)[0];
|
|
41
38
|
}
|
|
42
|
-
const interestingNodes = new Set();
|
|
39
|
+
const interestingNodes = /* @__PURE__ */ new Set();
|
|
43
40
|
collectInterestingNodes(interestingNodes, tree, false);
|
|
44
|
-
if (root && (!needle || !interestingNodes.has(needle)))
|
|
41
|
+
if (root && (!needle || !interestingNodes.has(needle)))
|
|
42
|
+
return null;
|
|
45
43
|
return serializeTree(needle || tree, interestingNodes)[0];
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
|
-
exports.Accessibility = Accessibility;
|
|
49
46
|
function collectInterestingNodes(collection, node, insideControl) {
|
|
50
|
-
if (node.isInteresting(insideControl))
|
|
51
|
-
|
|
47
|
+
if (node.isInteresting(insideControl))
|
|
48
|
+
collection.add(node);
|
|
49
|
+
if (node.isLeafNode())
|
|
50
|
+
return;
|
|
52
51
|
insideControl = insideControl || node.isControl();
|
|
53
|
-
for (const child of node.children())
|
|
52
|
+
for (const child of node.children())
|
|
53
|
+
collectInterestingNodes(collection, child, insideControl);
|
|
54
54
|
}
|
|
55
55
|
function serializeTree(node, whitelistedNodes) {
|
|
56
56
|
const children = [];
|
|
57
|
-
for (const child of node.children())
|
|
58
|
-
|
|
57
|
+
for (const child of node.children())
|
|
58
|
+
children.push(...serializeTree(child, whitelistedNodes));
|
|
59
|
+
if (whitelistedNodes && !whitelistedNodes.has(node))
|
|
60
|
+
return children;
|
|
59
61
|
const serializedNode = node.serialize();
|
|
60
|
-
if (children.length)
|
|
62
|
+
if (children.length)
|
|
63
|
+
serializedNode.children = children;
|
|
61
64
|
return [serializedNode];
|
|
62
|
-
}
|
|
65
|
+
}
|
|
66
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
67
|
+
0 && (module.exports = {
|
|
68
|
+
Accessibility
|
|
69
|
+
});
|