@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/server/download.js
CHANGED
|
@@ -1,51 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var download_exports = {};
|
|
30
|
+
__export(download_exports, {
|
|
31
|
+
Download: () => Download
|
|
5
32
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
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
|
-
|
|
33
|
+
module.exports = __toCommonJS(download_exports);
|
|
34
|
+
var import_path = __toESM(require("path"));
|
|
35
|
+
var import_page = require("./page");
|
|
36
|
+
var import_utils = require("../utils");
|
|
37
|
+
var import_artifact = require("./artifact");
|
|
28
38
|
class Download {
|
|
29
39
|
constructor(page, downloadsPath, uuid, url, suggestedFilename) {
|
|
30
|
-
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
this._suggestedFilename = void 0;
|
|
34
|
-
const unaccessibleErrorMessage = page._browserContext._options.acceptDownloads === 'deny' ? 'Pass { acceptDownloads: true } when you are creating your browser context.' : undefined;
|
|
35
|
-
this.artifact = new _artifact.Artifact(page, _path.default.join(downloadsPath, uuid), unaccessibleErrorMessage, () => {
|
|
36
|
-
return this._page._browserContext.cancelDownload(uuid);
|
|
40
|
+
const unaccessibleErrorMessage = page.browserContext._options.acceptDownloads === "deny" ? "Pass { acceptDownloads: true } when you are creating your browser context." : void 0;
|
|
41
|
+
this.artifact = new import_artifact.Artifact(page, import_path.default.join(downloadsPath, uuid), unaccessibleErrorMessage, () => {
|
|
42
|
+
return this._page.browserContext.cancelDownload(uuid);
|
|
37
43
|
});
|
|
38
44
|
this._page = page;
|
|
39
45
|
this.url = url;
|
|
40
46
|
this._suggestedFilename = suggestedFilename;
|
|
41
|
-
page.
|
|
42
|
-
if (suggestedFilename !==
|
|
47
|
+
page.browserContext._downloads.add(this);
|
|
48
|
+
if (suggestedFilename !== void 0)
|
|
49
|
+
this._fireDownloadEvent();
|
|
43
50
|
}
|
|
44
51
|
page() {
|
|
45
52
|
return this._page;
|
|
46
53
|
}
|
|
47
54
|
_filenameSuggested(suggestedFilename) {
|
|
48
|
-
(0,
|
|
55
|
+
(0, import_utils.assert)(this._suggestedFilename === void 0);
|
|
49
56
|
this._suggestedFilename = suggestedFilename;
|
|
50
57
|
this._fireDownloadEvent();
|
|
51
58
|
}
|
|
@@ -54,7 +61,10 @@ class Download {
|
|
|
54
61
|
}
|
|
55
62
|
_fireDownloadEvent() {
|
|
56
63
|
this._page.instrumentation.onDownload(this._page, this);
|
|
57
|
-
this._page.emit(
|
|
64
|
+
this._page.emit(import_page.Page.Events.Download, this);
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
|
-
|
|
67
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
68
|
+
0 && (module.exports = {
|
|
69
|
+
Download
|
|
70
|
+
});
|
|
@@ -1,118 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty
|
|
4
|
-
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var electron_exports = {};
|
|
30
|
+
__export(electron_exports, {
|
|
31
|
+
Electron: () => Electron,
|
|
32
|
+
ElectronApplication: () => ElectronApplication
|
|
5
33
|
});
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var readline =
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* Copyright (c) Microsoft Corporation.
|
|
33
|
-
*
|
|
34
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
35
|
-
* you may not use this file except in compliance with the License.
|
|
36
|
-
* You may obtain a copy of the License at
|
|
37
|
-
*
|
|
38
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
39
|
-
*
|
|
40
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
41
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
42
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
43
|
-
* See the License for the specific language governing permissions and
|
|
44
|
-
* limitations under the License.
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
const ARTIFACTS_FOLDER = _path.default.join(_os.default.tmpdir(), 'playwright-artifacts-');
|
|
48
|
-
class ElectronApplication extends _instrumentation.SdkObject {
|
|
49
|
-
constructor(parent, browser, nodeConnection, process) {
|
|
50
|
-
super(parent, 'electron-app');
|
|
51
|
-
this._browserContext = void 0;
|
|
52
|
-
this._nodeConnection = void 0;
|
|
53
|
-
this._nodeSession = void 0;
|
|
54
|
-
this._nodeExecutionContext = void 0;
|
|
55
|
-
this._nodeElectronHandlePromise = new _utils.ManualPromise();
|
|
56
|
-
this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
|
|
57
|
-
this._process = void 0;
|
|
58
|
-
this._process = process;
|
|
34
|
+
module.exports = __toCommonJS(electron_exports);
|
|
35
|
+
var import_fs = __toESM(require("fs"));
|
|
36
|
+
var import_os = __toESM(require("os"));
|
|
37
|
+
var import_path = __toESM(require("path"));
|
|
38
|
+
var readline = __toESM(require("readline"));
|
|
39
|
+
var import_utils = require("../../utils");
|
|
40
|
+
var import_ascii = require("../utils/ascii");
|
|
41
|
+
var import_debugLogger = require("../utils/debugLogger");
|
|
42
|
+
var import_eventsHelper = require("../utils/eventsHelper");
|
|
43
|
+
var import_browserContext = require("../browserContext");
|
|
44
|
+
var import_crBrowser = require("../chromium/crBrowser");
|
|
45
|
+
var import_crConnection = require("../chromium/crConnection");
|
|
46
|
+
var import_crExecutionContext = require("../chromium/crExecutionContext");
|
|
47
|
+
var import_crProtocolHelper = require("../chromium/crProtocolHelper");
|
|
48
|
+
var import_console = require("../console");
|
|
49
|
+
var import_helper = require("../helper");
|
|
50
|
+
var import_instrumentation = require("../instrumentation");
|
|
51
|
+
var js = __toESM(require("../javascript"));
|
|
52
|
+
var import_processLauncher = require("../utils/processLauncher");
|
|
53
|
+
var import_transport = require("../transport");
|
|
54
|
+
const ARTIFACTS_FOLDER = import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-");
|
|
55
|
+
class ElectronApplication extends import_instrumentation.SdkObject {
|
|
56
|
+
constructor(parent, browser, nodeConnection, process2) {
|
|
57
|
+
super(parent, "electron-app");
|
|
58
|
+
this._nodeElectronHandlePromise = new import_utils.ManualPromise();
|
|
59
|
+
this._process = process2;
|
|
59
60
|
this._browserContext = browser._defaultContext;
|
|
60
61
|
this._nodeConnection = nodeConnection;
|
|
61
62
|
this._nodeSession = nodeConnection.rootSession;
|
|
62
|
-
this._nodeSession.on(
|
|
63
|
-
if (!event.context.auxData || !event.context.auxData.isDefault)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
} = await crExecutionContext._client.send('Runtime.evaluate', {
|
|
63
|
+
this._nodeSession.on("Runtime.executionContextCreated", async (event) => {
|
|
64
|
+
if (!event.context.auxData || !event.context.auxData.isDefault)
|
|
65
|
+
return;
|
|
66
|
+
const crExecutionContext = new import_crExecutionContext.CRExecutionContext(this._nodeSession, event.context);
|
|
67
|
+
this._nodeExecutionContext = new js.ExecutionContext(this, crExecutionContext, "electron");
|
|
68
|
+
const { result: remoteObject } = await crExecutionContext._client.send("Runtime.evaluate", {
|
|
69
69
|
expression: `require('electron')`,
|
|
70
70
|
contextId: event.context.id,
|
|
71
71
|
// Needed after Electron 28 to get access to require: https://github.com/microsoft/playwright/issues/28048
|
|
72
72
|
includeCommandLineAPI: true
|
|
73
73
|
});
|
|
74
|
-
this._nodeElectronHandlePromise.resolve(new js.JSHandle(this._nodeExecutionContext,
|
|
74
|
+
this._nodeElectronHandlePromise.resolve(new js.JSHandle(this._nodeExecutionContext, "object", "ElectronModule", remoteObject.objectId));
|
|
75
75
|
});
|
|
76
|
-
this._nodeSession.on(
|
|
77
|
-
const appClosePromise = new Promise(f => this.once(ElectronApplication.Events.Close, f));
|
|
76
|
+
this._nodeSession.on("Runtime.consoleAPICalled", (event) => this._onConsoleAPI(event));
|
|
77
|
+
const appClosePromise = new Promise((f) => this.once(ElectronApplication.Events.Close, f));
|
|
78
78
|
this._browserContext.setCustomCloseHandler(async () => {
|
|
79
79
|
await this._browserContext.stopVideoRecording();
|
|
80
80
|
const electronHandle = await this._nodeElectronHandlePromise;
|
|
81
|
-
await electronHandle.evaluate(({
|
|
82
|
-
|
|
83
|
-
}) => app.quit()).catch(() => {});
|
|
81
|
+
await electronHandle.evaluate(({ app }) => app.quit()).catch(() => {
|
|
82
|
+
});
|
|
84
83
|
this._nodeConnection.close();
|
|
85
84
|
await appClosePromise;
|
|
86
85
|
});
|
|
87
86
|
}
|
|
87
|
+
static {
|
|
88
|
+
this.Events = {
|
|
89
|
+
Close: "close",
|
|
90
|
+
Console: "console"
|
|
91
|
+
};
|
|
92
|
+
}
|
|
88
93
|
async _onConsoleAPI(event) {
|
|
89
94
|
if (event.executionContextId === 0) {
|
|
90
|
-
// DevTools protocol stores the last 1000 console messages. These
|
|
91
|
-
// messages are always reported even for removed execution contexts. In
|
|
92
|
-
// this case, they are marked with executionContextId = 0 and are
|
|
93
|
-
// reported upon enabling Runtime agent.
|
|
94
|
-
//
|
|
95
|
-
// Ignore these messages since:
|
|
96
|
-
// - there's no execution context we can use to operate with message
|
|
97
|
-
// arguments
|
|
98
|
-
// - these messages are reported before Playwright clients can subscribe
|
|
99
|
-
// to the 'console'
|
|
100
|
-
// page event.
|
|
101
|
-
//
|
|
102
|
-
// @see https://github.com/GoogleChrome/puppeteer/issues/3865
|
|
103
95
|
return;
|
|
104
96
|
}
|
|
105
|
-
if (!this._nodeExecutionContext)
|
|
106
|
-
|
|
107
|
-
const
|
|
97
|
+
if (!this._nodeExecutionContext)
|
|
98
|
+
return;
|
|
99
|
+
const args = event.args.map((arg) => (0, import_crExecutionContext.createHandle)(this._nodeExecutionContext, arg));
|
|
100
|
+
const message = new import_console.ConsoleMessage(null, event.type, void 0, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
|
|
108
101
|
this.emit(ElectronApplication.Events.Console, message);
|
|
109
102
|
}
|
|
110
103
|
async initialize() {
|
|
111
|
-
await this._nodeSession.send(
|
|
112
|
-
|
|
113
|
-
await this._nodeSession.send('Runtime.evaluate', {
|
|
114
|
-
expression: '__playwright_run()'
|
|
115
|
-
});
|
|
104
|
+
await this._nodeSession.send("Runtime.enable", {});
|
|
105
|
+
await this._nodeSession.send("Runtime.evaluate", { expression: "__playwright_run()" });
|
|
116
106
|
}
|
|
117
107
|
process() {
|
|
118
108
|
return this._process;
|
|
@@ -121,177 +111,160 @@ class ElectronApplication extends _instrumentation.SdkObject {
|
|
|
121
111
|
return this._browserContext;
|
|
122
112
|
}
|
|
123
113
|
async close() {
|
|
124
|
-
|
|
125
|
-
await this._browserContext.close({
|
|
126
|
-
reason: 'Application exited'
|
|
127
|
-
});
|
|
114
|
+
await this._browserContext.close({ reason: "Application exited" });
|
|
128
115
|
}
|
|
129
116
|
async browserWindow(page) {
|
|
130
|
-
|
|
131
|
-
const targetId = page._delegate._targetId;
|
|
117
|
+
const targetId = page.delegate._targetId;
|
|
132
118
|
const electronHandle = await this._nodeElectronHandlePromise;
|
|
133
|
-
return await electronHandle.evaluateHandle(({
|
|
134
|
-
|
|
135
|
-
webContents
|
|
136
|
-
}, targetId) => {
|
|
137
|
-
const wc = webContents.fromDevToolsTargetId(targetId);
|
|
119
|
+
return await electronHandle.evaluateHandle(({ BrowserWindow, webContents }, targetId2) => {
|
|
120
|
+
const wc = webContents.fromDevToolsTargetId(targetId2);
|
|
138
121
|
return BrowserWindow.fromWebContents(wc);
|
|
139
122
|
}, targetId);
|
|
140
123
|
}
|
|
141
124
|
}
|
|
142
|
-
|
|
143
|
-
ElectronApplication.Events = {
|
|
144
|
-
Close: 'close',
|
|
145
|
-
Console: 'console'
|
|
146
|
-
};
|
|
147
|
-
class Electron extends _instrumentation.SdkObject {
|
|
125
|
+
class Electron extends import_instrumentation.SdkObject {
|
|
148
126
|
constructor(playwright) {
|
|
149
|
-
super(playwright,
|
|
127
|
+
super(playwright, "electron");
|
|
128
|
+
this.logName = "browser";
|
|
150
129
|
}
|
|
151
|
-
async launch(options) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
command = require('electron/index.js');
|
|
176
|
-
} catch (error) {
|
|
177
|
-
if ((error === null || error === void 0 ? void 0 : error.code) === 'MODULE_NOT_FOUND') {
|
|
178
|
-
throw new Error('\n' + (0, _ascii.wrapInASCIIBox)(['Electron executablePath not found!', 'Please install it using `npm install -D electron` or set the executablePath to your Electron executable.'].join('\n'), 1));
|
|
179
|
-
}
|
|
180
|
-
throw error;
|
|
130
|
+
async launch(progress, options) {
|
|
131
|
+
let app = void 0;
|
|
132
|
+
let electronArguments = ["--inspect=0", "--remote-debugging-port=0", ...options.args || []];
|
|
133
|
+
if (import_os.default.platform() === "linux") {
|
|
134
|
+
const runningAsRoot = process.geteuid && process.geteuid() === 0;
|
|
135
|
+
if (runningAsRoot && electronArguments.indexOf("--no-sandbox") === -1)
|
|
136
|
+
electronArguments.unshift("--no-sandbox");
|
|
137
|
+
}
|
|
138
|
+
const artifactsDir = await progress.race(import_fs.default.promises.mkdtemp(ARTIFACTS_FOLDER));
|
|
139
|
+
progress.cleanupWhenAborted(() => (0, import_utils.removeFolders)([artifactsDir]));
|
|
140
|
+
const browserLogsCollector = new import_debugLogger.RecentLogsCollector();
|
|
141
|
+
const env = options.env ? (0, import_processLauncher.envArrayToObject)(options.env) : process.env;
|
|
142
|
+
let command;
|
|
143
|
+
if (options.executablePath) {
|
|
144
|
+
command = options.executablePath;
|
|
145
|
+
} else {
|
|
146
|
+
try {
|
|
147
|
+
command = require("electron/index.js");
|
|
148
|
+
} catch (error) {
|
|
149
|
+
if (error?.code === "MODULE_NOT_FOUND") {
|
|
150
|
+
throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)([
|
|
151
|
+
"Electron executablePath not found!",
|
|
152
|
+
"Please install it using `npm install -D electron` or set the executablePath to your Electron executable."
|
|
153
|
+
].join("\n"), 1));
|
|
181
154
|
}
|
|
182
|
-
|
|
183
|
-
// Packaged apps might have their own command line handling.
|
|
184
|
-
electronArguments.unshift('-r', require.resolve('./loader'));
|
|
185
|
-
}
|
|
186
|
-
let shell = false;
|
|
187
|
-
if (process.platform === 'win32') {
|
|
188
|
-
// On Windows in order to run .cmd files, shell: true is required.
|
|
189
|
-
// https://github.com/nodejs/node/issues/52554
|
|
190
|
-
shell = true;
|
|
191
|
-
// On Windows, we need to quote the executable path due to shell: true.
|
|
192
|
-
command = `"${command}"`;
|
|
193
|
-
// On Windows, we need to quote the arguments due to shell: true.
|
|
194
|
-
electronArguments = electronArguments.map(arg => `"${arg}"`);
|
|
155
|
+
throw error;
|
|
195
156
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
157
|
+
electronArguments.unshift("-r", require.resolve("./loader"));
|
|
158
|
+
}
|
|
159
|
+
let shell = false;
|
|
160
|
+
if (process.platform === "win32") {
|
|
161
|
+
shell = true;
|
|
162
|
+
command = `"${command}"`;
|
|
163
|
+
electronArguments = electronArguments.map((arg) => `"${arg}"`);
|
|
164
|
+
}
|
|
165
|
+
delete env.NODE_OPTIONS;
|
|
166
|
+
const { launchedProcess, gracefullyClose, kill } = await (0, import_processLauncher.launchProcess)({
|
|
167
|
+
command,
|
|
168
|
+
args: electronArguments,
|
|
169
|
+
env,
|
|
170
|
+
log: (message) => {
|
|
171
|
+
progress.log(message);
|
|
172
|
+
browserLogsCollector.log(message);
|
|
173
|
+
},
|
|
174
|
+
shell,
|
|
175
|
+
stdio: "pipe",
|
|
176
|
+
cwd: options.cwd,
|
|
177
|
+
tempDirectories: [artifactsDir],
|
|
178
|
+
attemptToGracefullyClose: () => app.close(),
|
|
179
|
+
handleSIGINT: true,
|
|
180
|
+
handleSIGTERM: true,
|
|
181
|
+
handleSIGHUP: true,
|
|
182
|
+
onExit: () => app?.emit(ElectronApplication.Events.Close)
|
|
183
|
+
});
|
|
184
|
+
const waitForXserverError = waitForLine(progress, launchedProcess, /Unable to open X display/).then(() => {
|
|
185
|
+
throw new Error([
|
|
186
|
+
"Unable to open X display!",
|
|
187
|
+
`================================`,
|
|
188
|
+
"Most likely this is because there is no X server available.",
|
|
189
|
+
"Use 'xvfb-run' on Linux to launch your tests with an emulated display server.",
|
|
190
|
+
"For example: 'xvfb-run npm run test:e2e'",
|
|
191
|
+
`================================`,
|
|
192
|
+
progress.metadata.log
|
|
193
|
+
].join("\n"));
|
|
194
|
+
});
|
|
195
|
+
const nodeMatchPromise = waitForLine(progress, launchedProcess, /^Debugger listening on (ws:\/\/.*)$/);
|
|
196
|
+
const chromeMatchPromise = waitForLine(progress, launchedProcess, /^DevTools listening on (ws:\/\/.*)$/);
|
|
197
|
+
const debuggerDisconnectPromise = waitForLine(progress, launchedProcess, /Waiting for the debugger to disconnect\.\.\./);
|
|
198
|
+
const nodeMatch = await nodeMatchPromise;
|
|
199
|
+
const nodeTransport = await import_transport.WebSocketTransport.connect(progress, nodeMatch[1]);
|
|
200
|
+
progress.cleanupWhenAborted(() => nodeTransport.close());
|
|
201
|
+
const nodeConnection = new import_crConnection.CRConnection(this, nodeTransport, import_helper.helper.debugProtocolLogger(), browserLogsCollector);
|
|
202
|
+
debuggerDisconnectPromise.then(() => {
|
|
203
|
+
nodeTransport.close();
|
|
204
|
+
}).catch(() => {
|
|
205
|
+
});
|
|
206
|
+
const chromeMatch = await Promise.race([
|
|
207
|
+
chromeMatchPromise,
|
|
208
|
+
waitForXserverError
|
|
209
|
+
]);
|
|
210
|
+
const chromeTransport = await import_transport.WebSocketTransport.connect(progress, chromeMatch[1]);
|
|
211
|
+
progress.cleanupWhenAborted(() => chromeTransport.close());
|
|
212
|
+
const browserProcess = {
|
|
213
|
+
onclose: void 0,
|
|
214
|
+
process: launchedProcess,
|
|
215
|
+
close: gracefullyClose,
|
|
216
|
+
kill
|
|
217
|
+
};
|
|
218
|
+
const contextOptions = {
|
|
219
|
+
...options,
|
|
220
|
+
noDefaultViewport: true
|
|
221
|
+
};
|
|
222
|
+
const browserOptions = {
|
|
223
|
+
name: "electron",
|
|
224
|
+
isChromium: true,
|
|
225
|
+
headful: true,
|
|
226
|
+
persistent: contextOptions,
|
|
227
|
+
browserProcess,
|
|
228
|
+
protocolLogger: import_helper.helper.debugProtocolLogger(),
|
|
229
|
+
browserLogsCollector,
|
|
230
|
+
artifactsDir,
|
|
231
|
+
downloadsPath: artifactsDir,
|
|
232
|
+
tracesDir: options.tracesDir || artifactsDir,
|
|
233
|
+
originalLaunchOptions: {}
|
|
234
|
+
};
|
|
235
|
+
(0, import_browserContext.validateBrowserContextOptions)(contextOptions, browserOptions);
|
|
236
|
+
const browser = await progress.race(import_crBrowser.CRBrowser.connect(this.attribution.playwright, chromeTransport, browserOptions));
|
|
237
|
+
app = new ElectronApplication(this, browser, nodeConnection, launchedProcess);
|
|
238
|
+
await progress.race(app.initialize());
|
|
239
|
+
return app;
|
|
274
240
|
}
|
|
275
241
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
242
|
+
function waitForLine(progress, process2, regex) {
|
|
243
|
+
return progress.race(new Promise((resolve, reject) => {
|
|
244
|
+
const rl = readline.createInterface({ input: process2.stderr });
|
|
245
|
+
const failError = new Error("Process failed to launch!");
|
|
246
|
+
const listeners = [
|
|
247
|
+
import_eventsHelper.eventsHelper.addEventListener(rl, "line", onLine),
|
|
248
|
+
import_eventsHelper.eventsHelper.addEventListener(rl, "close", reject.bind(null, failError)),
|
|
249
|
+
import_eventsHelper.eventsHelper.addEventListener(process2, "exit", reject.bind(null, failError)),
|
|
250
|
+
// It is Ok to remove error handler because we did not create process and there is another listener.
|
|
251
|
+
import_eventsHelper.eventsHelper.addEventListener(process2, "error", reject.bind(null, failError))
|
|
252
|
+
];
|
|
286
253
|
progress.cleanupWhenAborted(cleanup);
|
|
287
254
|
function onLine(line) {
|
|
288
255
|
const match = line.match(regex);
|
|
289
|
-
if (!match)
|
|
256
|
+
if (!match)
|
|
257
|
+
return;
|
|
290
258
|
cleanup();
|
|
291
259
|
resolve(match);
|
|
292
260
|
}
|
|
293
261
|
function cleanup() {
|
|
294
|
-
|
|
262
|
+
import_eventsHelper.eventsHelper.removeEventListeners(listeners);
|
|
295
263
|
}
|
|
296
|
-
});
|
|
297
|
-
}
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
267
|
+
0 && (module.exports = {
|
|
268
|
+
Electron,
|
|
269
|
+
ElectronApplication
|
|
270
|
+
});
|