rebrowser-playwright-core 1.49.0 → 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ThirdPartyNotices.txt +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- 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 +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- 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 +241 -223
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -595
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +353 -432
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -645
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +196 -75
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- 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/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- 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/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- 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/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- 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 -71
- package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
- package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
- package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
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(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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
|
-
this._page = void 0;
|
|
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, () => {
|
|
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, () => {
|
|
36
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
47
|
page._browserContext._downloads.add(this);
|
|
42
|
-
if (suggestedFilename !==
|
|
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,117 +1,111 @@
|
|
|
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
|
|
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
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* You may obtain a copy of the License at
|
|
36
|
-
*
|
|
37
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
38
|
-
*
|
|
39
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
40
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
41
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
42
|
-
* See the License for the specific language governing permissions and
|
|
43
|
-
* limitations under the License.
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
const ARTIFACTS_FOLDER = _path.default.join(_os.default.tmpdir(), 'playwright-artifacts-');
|
|
47
|
-
class ElectronApplication extends _instrumentation.SdkObject {
|
|
48
|
-
constructor(parent, browser, nodeConnection, process) {
|
|
49
|
-
super(parent, 'electron-app');
|
|
50
|
-
this._browserContext = void 0;
|
|
51
|
-
this._nodeConnection = void 0;
|
|
52
|
-
this._nodeSession = void 0;
|
|
53
|
-
this._nodeExecutionContext = void 0;
|
|
54
|
-
this._nodeElectronHandlePromise = new _utils.ManualPromise();
|
|
55
|
-
this._timeoutSettings = new _timeoutSettings.TimeoutSettings();
|
|
56
|
-
this._process = void 0;
|
|
57
|
-
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_timeoutSettings = require("../timeoutSettings");
|
|
40
|
+
var import_utils = require("../../utils");
|
|
41
|
+
var import_ascii = require("../utils/ascii");
|
|
42
|
+
var import_debugLogger = require("../utils/debugLogger");
|
|
43
|
+
var import_eventsHelper = require("../utils/eventsHelper");
|
|
44
|
+
var import_browserContext = require("../browserContext");
|
|
45
|
+
var import_crBrowser = require("../chromium/crBrowser");
|
|
46
|
+
var import_crConnection = require("../chromium/crConnection");
|
|
47
|
+
var import_crExecutionContext = require("../chromium/crExecutionContext");
|
|
48
|
+
var import_crProtocolHelper = require("../chromium/crProtocolHelper");
|
|
49
|
+
var import_console = require("../console");
|
|
50
|
+
var import_helper = require("../helper");
|
|
51
|
+
var import_instrumentation = require("../instrumentation");
|
|
52
|
+
var js = __toESM(require("../javascript"));
|
|
53
|
+
var import_processLauncher = require("../utils/processLauncher");
|
|
54
|
+
var import_progress = require("../progress");
|
|
55
|
+
var import_transport = require("../transport");
|
|
56
|
+
const ARTIFACTS_FOLDER = import_path.default.join(import_os.default.tmpdir(), "playwright-artifacts-");
|
|
57
|
+
class ElectronApplication extends import_instrumentation.SdkObject {
|
|
58
|
+
constructor(parent, browser, nodeConnection, process2) {
|
|
59
|
+
super(parent, "electron-app");
|
|
60
|
+
this._nodeElectronHandlePromise = new import_utils.ManualPromise();
|
|
61
|
+
this._timeoutSettings = new import_timeoutSettings.TimeoutSettings();
|
|
62
|
+
this._process = process2;
|
|
58
63
|
this._browserContext = browser._defaultContext;
|
|
59
64
|
this._nodeConnection = nodeConnection;
|
|
60
65
|
this._nodeSession = nodeConnection.rootSession;
|
|
61
|
-
this._nodeSession.on(
|
|
62
|
-
if (!event.context.auxData || !event.context.auxData.isDefault)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
} = await crExecutionContext._client.send('Runtime.evaluate', {
|
|
66
|
+
this._nodeSession.on("Runtime.executionContextCreated", async (event) => {
|
|
67
|
+
if (!event.context.auxData || !event.context.auxData.isDefault)
|
|
68
|
+
return;
|
|
69
|
+
const crExecutionContext = new import_crExecutionContext.CRExecutionContext(this._nodeSession, event.context);
|
|
70
|
+
this._nodeExecutionContext = new js.ExecutionContext(this, crExecutionContext, "electron");
|
|
71
|
+
const { result: remoteObject } = await crExecutionContext._client.send("Runtime.evaluate", {
|
|
68
72
|
expression: `require('electron')`,
|
|
69
73
|
contextId: event.context.id,
|
|
70
74
|
// Needed after Electron 28 to get access to require: https://github.com/microsoft/playwright/issues/28048
|
|
71
75
|
includeCommandLineAPI: true
|
|
72
76
|
});
|
|
73
|
-
this._nodeElectronHandlePromise.resolve(new js.JSHandle(this._nodeExecutionContext,
|
|
77
|
+
this._nodeElectronHandlePromise.resolve(new js.JSHandle(this._nodeExecutionContext, "object", "ElectronModule", remoteObject.objectId));
|
|
74
78
|
});
|
|
75
|
-
this._nodeSession.on(
|
|
76
|
-
const appClosePromise = new Promise(f => this.once(ElectronApplication.Events.Close, f));
|
|
79
|
+
this._nodeSession.on("Runtime.consoleAPICalled", (event) => this._onConsoleAPI(event));
|
|
80
|
+
const appClosePromise = new Promise((f) => this.once(ElectronApplication.Events.Close, f));
|
|
77
81
|
this._browserContext.setCustomCloseHandler(async () => {
|
|
78
82
|
await this._browserContext.stopVideoRecording();
|
|
79
83
|
const electronHandle = await this._nodeElectronHandlePromise;
|
|
80
|
-
await electronHandle.evaluate(({
|
|
81
|
-
|
|
82
|
-
}) => app.quit()).catch(() => {});
|
|
84
|
+
await electronHandle.evaluate(({ app }) => app.quit()).catch(() => {
|
|
85
|
+
});
|
|
83
86
|
this._nodeConnection.close();
|
|
84
87
|
await appClosePromise;
|
|
85
88
|
});
|
|
86
89
|
}
|
|
90
|
+
static {
|
|
91
|
+
this.Events = {
|
|
92
|
+
Close: "close",
|
|
93
|
+
Console: "console"
|
|
94
|
+
};
|
|
95
|
+
}
|
|
87
96
|
async _onConsoleAPI(event) {
|
|
88
97
|
if (event.executionContextId === 0) {
|
|
89
|
-
// DevTools protocol stores the last 1000 console messages. These
|
|
90
|
-
// messages are always reported even for removed execution contexts. In
|
|
91
|
-
// this case, they are marked with executionContextId = 0 and are
|
|
92
|
-
// reported upon enabling Runtime agent.
|
|
93
|
-
//
|
|
94
|
-
// Ignore these messages since:
|
|
95
|
-
// - there's no execution context we can use to operate with message
|
|
96
|
-
// arguments
|
|
97
|
-
// - these messages are reported before Playwright clients can subscribe
|
|
98
|
-
// to the 'console'
|
|
99
|
-
// page event.
|
|
100
|
-
//
|
|
101
|
-
// @see https://github.com/GoogleChrome/puppeteer/issues/3865
|
|
102
98
|
return;
|
|
103
99
|
}
|
|
104
|
-
if (!this._nodeExecutionContext)
|
|
105
|
-
|
|
106
|
-
const
|
|
100
|
+
if (!this._nodeExecutionContext)
|
|
101
|
+
return;
|
|
102
|
+
const args = event.args.map((arg) => (0, import_crExecutionContext.createHandle)(this._nodeExecutionContext, arg));
|
|
103
|
+
const message = new import_console.ConsoleMessage(null, event.type, void 0, args, (0, import_crProtocolHelper.toConsoleMessageLocation)(event.stackTrace));
|
|
107
104
|
this.emit(ElectronApplication.Events.Console, message);
|
|
108
105
|
}
|
|
109
106
|
async initialize() {
|
|
110
|
-
await this._nodeSession.send(
|
|
111
|
-
|
|
112
|
-
await this._nodeSession.send('Runtime.evaluate', {
|
|
113
|
-
expression: '__playwright_run()'
|
|
114
|
-
});
|
|
107
|
+
await this._nodeSession.send("Runtime.enable", {});
|
|
108
|
+
await this._nodeSession.send("Runtime.evaluate", { expression: "__playwright_run()" });
|
|
115
109
|
}
|
|
116
110
|
process() {
|
|
117
111
|
return this._process;
|
|
@@ -120,129 +114,109 @@ class ElectronApplication extends _instrumentation.SdkObject {
|
|
|
120
114
|
return this._browserContext;
|
|
121
115
|
}
|
|
122
116
|
async close() {
|
|
123
|
-
|
|
124
|
-
await this._browserContext.close({
|
|
125
|
-
reason: 'Application exited'
|
|
126
|
-
});
|
|
117
|
+
await this._browserContext.close({ reason: "Application exited" });
|
|
127
118
|
}
|
|
128
119
|
async browserWindow(page) {
|
|
129
|
-
// Assume CRPage as Electron is always Chromium.
|
|
130
120
|
const targetId = page._delegate._targetId;
|
|
131
121
|
const electronHandle = await this._nodeElectronHandlePromise;
|
|
132
|
-
return await electronHandle.evaluateHandle(({
|
|
133
|
-
|
|
134
|
-
webContents
|
|
135
|
-
}, targetId) => {
|
|
136
|
-
const wc = webContents.fromDevToolsTargetId(targetId);
|
|
122
|
+
return await electronHandle.evaluateHandle(({ BrowserWindow, webContents }, targetId2) => {
|
|
123
|
+
const wc = webContents.fromDevToolsTargetId(targetId2);
|
|
137
124
|
return BrowserWindow.fromWebContents(wc);
|
|
138
125
|
}, targetId);
|
|
139
126
|
}
|
|
140
127
|
}
|
|
141
|
-
|
|
142
|
-
ElectronApplication.Events = {
|
|
143
|
-
Close: 'close',
|
|
144
|
-
Console: 'console'
|
|
145
|
-
};
|
|
146
|
-
class Electron extends _instrumentation.SdkObject {
|
|
128
|
+
class Electron extends import_instrumentation.SdkObject {
|
|
147
129
|
constructor(playwright) {
|
|
148
|
-
super(playwright,
|
|
130
|
+
super(playwright, "electron");
|
|
149
131
|
}
|
|
150
132
|
async launch(options) {
|
|
151
133
|
const {
|
|
152
134
|
args = []
|
|
153
135
|
} = options;
|
|
154
|
-
const controller = new
|
|
155
|
-
controller.setLogName(
|
|
156
|
-
return controller.run(async progress => {
|
|
157
|
-
let app =
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (_os.default.platform() === 'linux') {
|
|
136
|
+
const controller = new import_progress.ProgressController((0, import_instrumentation.serverSideCallMetadata)(), this);
|
|
137
|
+
controller.setLogName("browser");
|
|
138
|
+
return controller.run(async (progress) => {
|
|
139
|
+
let app = void 0;
|
|
140
|
+
let electronArguments = ["--inspect=0", "--remote-debugging-port=0", ...args];
|
|
141
|
+
if (import_os.default.platform() === "linux") {
|
|
161
142
|
const runningAsRoot = process.geteuid && process.geteuid() === 0;
|
|
162
|
-
if (runningAsRoot && electronArguments.indexOf(
|
|
143
|
+
if (runningAsRoot && electronArguments.indexOf("--no-sandbox") === -1)
|
|
144
|
+
electronArguments.unshift("--no-sandbox");
|
|
163
145
|
}
|
|
164
|
-
const artifactsDir = await
|
|
165
|
-
const browserLogsCollector = new
|
|
166
|
-
const env = options.env ? (0,
|
|
146
|
+
const artifactsDir = await import_fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);
|
|
147
|
+
const browserLogsCollector = new import_debugLogger.RecentLogsCollector();
|
|
148
|
+
const env = options.env ? (0, import_processLauncher.envArrayToObject)(options.env) : process.env;
|
|
167
149
|
let command;
|
|
168
150
|
if (options.executablePath) {
|
|
169
151
|
command = options.executablePath;
|
|
170
152
|
} else {
|
|
171
153
|
try {
|
|
172
|
-
|
|
173
|
-
// 'electron/index.js' resolves to the actual Electron App.
|
|
174
|
-
command = require('electron/index.js');
|
|
154
|
+
command = require("electron/index.js");
|
|
175
155
|
} catch (error) {
|
|
176
|
-
if (
|
|
177
|
-
throw new Error(
|
|
156
|
+
if (error?.code === "MODULE_NOT_FOUND") {
|
|
157
|
+
throw new Error("\n" + (0, import_ascii.wrapInASCIIBox)([
|
|
158
|
+
"Electron executablePath not found!",
|
|
159
|
+
"Please install it using `npm install -D electron` or set the executablePath to your Electron executable."
|
|
160
|
+
].join("\n"), 1));
|
|
178
161
|
}
|
|
179
162
|
throw error;
|
|
180
163
|
}
|
|
181
|
-
|
|
182
|
-
// Packaged apps might have their own command line handling.
|
|
183
|
-
electronArguments.unshift('-r', require.resolve('./loader'));
|
|
164
|
+
electronArguments.unshift("-r", require.resolve("./loader"));
|
|
184
165
|
}
|
|
185
166
|
let shell = false;
|
|
186
|
-
if (process.platform ===
|
|
187
|
-
// On Windows in order to run .cmd files, shell: true is required.
|
|
188
|
-
// https://github.com/nodejs/node/issues/52554
|
|
167
|
+
if (process.platform === "win32") {
|
|
189
168
|
shell = true;
|
|
190
|
-
// On Windows, we need to quote the executable path due to shell: true.
|
|
191
169
|
command = `"${command}"`;
|
|
192
|
-
|
|
193
|
-
electronArguments = electronArguments.map(arg => `"${arg}"`);
|
|
170
|
+
electronArguments = electronArguments.map((arg) => `"${arg}"`);
|
|
194
171
|
}
|
|
195
|
-
|
|
196
|
-
// When debugging Playwright test that runs Electron, NODE_OPTIONS
|
|
197
|
-
// will make the debugger attach to Electron's Node. But Playwright
|
|
198
|
-
// also needs to attach to drive the automation. Disable external debugging.
|
|
199
172
|
delete env.NODE_OPTIONS;
|
|
200
|
-
const {
|
|
201
|
-
launchedProcess,
|
|
202
|
-
gracefullyClose,
|
|
203
|
-
kill
|
|
204
|
-
} = await (0, _processLauncher.launchProcess)({
|
|
173
|
+
const { launchedProcess, gracefullyClose, kill } = await (0, import_processLauncher.launchProcess)({
|
|
205
174
|
command,
|
|
206
175
|
args: electronArguments,
|
|
207
176
|
env,
|
|
208
|
-
log: message => {
|
|
177
|
+
log: (message) => {
|
|
209
178
|
progress.log(message);
|
|
210
179
|
browserLogsCollector.log(message);
|
|
211
180
|
},
|
|
212
181
|
shell,
|
|
213
|
-
stdio:
|
|
182
|
+
stdio: "pipe",
|
|
214
183
|
cwd: options.cwd,
|
|
215
184
|
tempDirectories: [artifactsDir],
|
|
216
185
|
attemptToGracefullyClose: () => app.close(),
|
|
217
186
|
handleSIGINT: true,
|
|
218
187
|
handleSIGTERM: true,
|
|
219
188
|
handleSIGHUP: true,
|
|
220
|
-
onExit: () =>
|
|
221
|
-
var _app;
|
|
222
|
-
return (_app = app) === null || _app === void 0 ? void 0 : _app.emit(ElectronApplication.Events.Close);
|
|
223
|
-
}
|
|
189
|
+
onExit: () => app?.emit(ElectronApplication.Events.Close)
|
|
224
190
|
});
|
|
225
|
-
|
|
226
|
-
// All waitForLines must be started immediately.
|
|
227
|
-
// Otherwise the lines might come before we are ready.
|
|
228
191
|
const waitForXserverError = new Promise(async (resolve, reject) => {
|
|
229
|
-
waitForLine(progress, launchedProcess, /Unable to open X display/).then(() => reject(new Error([
|
|
192
|
+
waitForLine(progress, launchedProcess, /Unable to open X display/).then(() => reject(new Error([
|
|
193
|
+
"Unable to open X display!",
|
|
194
|
+
`================================`,
|
|
195
|
+
"Most likely this is because there is no X server available.",
|
|
196
|
+
"Use 'xvfb-run' on Linux to launch your tests with an emulated display server.",
|
|
197
|
+
"For example: 'xvfb-run npm run test:e2e'",
|
|
198
|
+
`================================`,
|
|
199
|
+
progress.metadata.log
|
|
200
|
+
].join("\n")))).catch(() => {
|
|
201
|
+
});
|
|
230
202
|
});
|
|
231
203
|
const nodeMatchPromise = waitForLine(progress, launchedProcess, /^Debugger listening on (ws:\/\/.*)$/);
|
|
232
204
|
const chromeMatchPromise = waitForLine(progress, launchedProcess, /^DevTools listening on (ws:\/\/.*)$/);
|
|
233
205
|
const debuggerDisconnectPromise = waitForLine(progress, launchedProcess, /Waiting for the debugger to disconnect\.\.\./);
|
|
234
206
|
const nodeMatch = await nodeMatchPromise;
|
|
235
|
-
const nodeTransport = await
|
|
236
|
-
const nodeConnection = new
|
|
237
|
-
|
|
238
|
-
// Immediately release exiting process under debug.
|
|
207
|
+
const nodeTransport = await import_transport.WebSocketTransport.connect(progress, nodeMatch[1]);
|
|
208
|
+
const nodeConnection = new import_crConnection.CRConnection(nodeTransport, import_helper.helper.debugProtocolLogger(), browserLogsCollector);
|
|
239
209
|
debuggerDisconnectPromise.then(() => {
|
|
240
210
|
nodeTransport.close();
|
|
241
|
-
}).catch(() => {
|
|
242
|
-
|
|
243
|
-
const
|
|
211
|
+
}).catch(() => {
|
|
212
|
+
});
|
|
213
|
+
const chromeMatch = await Promise.race([
|
|
214
|
+
chromeMatchPromise,
|
|
215
|
+
waitForXserverError
|
|
216
|
+
]);
|
|
217
|
+
const chromeTransport = await import_transport.WebSocketTransport.connect(progress, chromeMatch[1]);
|
|
244
218
|
const browserProcess = {
|
|
245
|
-
onclose:
|
|
219
|
+
onclose: void 0,
|
|
246
220
|
process: launchedProcess,
|
|
247
221
|
close: gracefullyClose,
|
|
248
222
|
kill
|
|
@@ -252,45 +226,52 @@ class Electron extends _instrumentation.SdkObject {
|
|
|
252
226
|
noDefaultViewport: true
|
|
253
227
|
};
|
|
254
228
|
const browserOptions = {
|
|
255
|
-
name:
|
|
229
|
+
name: "electron",
|
|
256
230
|
isChromium: true,
|
|
257
231
|
headful: true,
|
|
258
232
|
persistent: contextOptions,
|
|
259
233
|
browserProcess,
|
|
260
|
-
protocolLogger:
|
|
234
|
+
protocolLogger: import_helper.helper.debugProtocolLogger(),
|
|
261
235
|
browserLogsCollector,
|
|
262
236
|
artifactsDir,
|
|
263
237
|
downloadsPath: artifactsDir,
|
|
264
238
|
tracesDir: options.tracesDir || artifactsDir,
|
|
265
239
|
originalLaunchOptions: {}
|
|
266
240
|
};
|
|
267
|
-
(0,
|
|
268
|
-
const browser = await
|
|
241
|
+
(0, import_browserContext.validateBrowserContextOptions)(contextOptions, browserOptions);
|
|
242
|
+
const browser = await import_crBrowser.CRBrowser.connect(this.attribution.playwright, chromeTransport, browserOptions);
|
|
269
243
|
app = new ElectronApplication(this, browser, nodeConnection, launchedProcess);
|
|
270
244
|
await app.initialize();
|
|
271
245
|
return app;
|
|
272
|
-
},
|
|
246
|
+
}, import_timeoutSettings.TimeoutSettings.launchTimeout(options));
|
|
273
247
|
}
|
|
274
248
|
}
|
|
275
|
-
|
|
276
|
-
function waitForLine(progress, process, regex) {
|
|
249
|
+
function waitForLine(progress, process2, regex) {
|
|
277
250
|
return new Promise((resolve, reject) => {
|
|
278
|
-
const rl = readline.createInterface({
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
251
|
+
const rl = readline.createInterface({ input: process2.stderr });
|
|
252
|
+
const failError = new Error("Process failed to launch!");
|
|
253
|
+
const listeners = [
|
|
254
|
+
import_eventsHelper.eventsHelper.addEventListener(rl, "line", onLine),
|
|
255
|
+
import_eventsHelper.eventsHelper.addEventListener(rl, "close", reject.bind(null, failError)),
|
|
256
|
+
import_eventsHelper.eventsHelper.addEventListener(process2, "exit", reject.bind(null, failError)),
|
|
257
|
+
// It is Ok to remove error handler because we did not create process and there is another listener.
|
|
258
|
+
import_eventsHelper.eventsHelper.addEventListener(process2, "error", reject.bind(null, failError))
|
|
259
|
+
];
|
|
285
260
|
progress.cleanupWhenAborted(cleanup);
|
|
286
261
|
function onLine(line) {
|
|
287
262
|
const match = line.match(regex);
|
|
288
|
-
if (!match)
|
|
263
|
+
if (!match)
|
|
264
|
+
return;
|
|
289
265
|
cleanup();
|
|
290
266
|
resolve(match);
|
|
291
267
|
}
|
|
292
268
|
function cleanup() {
|
|
293
|
-
|
|
269
|
+
import_eventsHelper.eventsHelper.removeEventListeners(listeners);
|
|
294
270
|
}
|
|
295
271
|
});
|
|
296
|
-
}
|
|
272
|
+
}
|
|
273
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
274
|
+
0 && (module.exports = {
|
|
275
|
+
Electron,
|
|
276
|
+
ElectronApplication
|
|
277
|
+
});
|
|
@@ -1,57 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
* you may not use this file except in compliance with the License.
|
|
8
|
-
* You may obtain a copy of the License at
|
|
9
|
-
*
|
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
*
|
|
12
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
* See the License for the specific language governing permissions and
|
|
16
|
-
* limitations under the License.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
const {
|
|
20
|
-
app
|
|
21
|
-
} = require('electron');
|
|
22
|
-
const {
|
|
23
|
-
chromiumSwitches
|
|
24
|
-
} = require('../chromium/chromiumSwitches');
|
|
25
|
-
|
|
26
|
-
// Always pass user arguments first, see https://github.com/microsoft/playwright/issues/16614 and
|
|
27
|
-
// https://github.com/microsoft/playwright/issues/29198.
|
|
28
|
-
// [Electron, -r, loader.js[, --no-sandbox>], --inspect=0, --remote-debugging-port=0, ...args]
|
|
29
|
-
process.argv.splice(1, process.argv.indexOf('--remote-debugging-port=0'));
|
|
2
|
+
const { app } = require("electron");
|
|
3
|
+
const { chromiumSwitches } = require("../chromium/chromiumSwitches");
|
|
4
|
+
process.argv.splice(1, process.argv.indexOf("--remote-debugging-port=0"));
|
|
30
5
|
for (const arg of chromiumSwitches) {
|
|
31
6
|
const match = arg.match(/--([^=]*)=?(.*)/);
|
|
32
7
|
app.commandLine.appendSwitch(match[1], match[2]);
|
|
33
8
|
}
|
|
34
|
-
|
|
35
|
-
// Defer ready event.
|
|
36
9
|
const originalWhenReady = app.whenReady();
|
|
37
10
|
const originalEmit = app.emit.bind(app);
|
|
38
11
|
let readyEventArgs;
|
|
39
12
|
app.emit = (event, ...args) => {
|
|
40
|
-
if (event ===
|
|
13
|
+
if (event === "ready") {
|
|
41
14
|
readyEventArgs = args;
|
|
42
|
-
return app.listenerCount(
|
|
15
|
+
return app.listenerCount("ready") > 0;
|
|
43
16
|
}
|
|
44
17
|
return originalEmit(event, ...args);
|
|
45
18
|
};
|
|
46
19
|
let isReady = false;
|
|
47
20
|
let whenReadyCallback;
|
|
48
|
-
const whenReadyPromise = new Promise(f => whenReadyCallback = f);
|
|
21
|
+
const whenReadyPromise = new Promise((f) => whenReadyCallback = f);
|
|
49
22
|
app.isReady = () => isReady;
|
|
50
23
|
app.whenReady = () => whenReadyPromise;
|
|
51
24
|
globalThis.__playwright_run = async () => {
|
|
52
|
-
// Wait for app to be ready to avoid browser initialization races.
|
|
53
25
|
const event = await originalWhenReady;
|
|
54
26
|
isReady = true;
|
|
55
27
|
whenReadyCallback(event);
|
|
56
|
-
originalEmit(
|
|
57
|
-
};
|
|
28
|
+
originalEmit("ready", ...readyEventArgs);
|
|
29
|
+
};
|