patchright-bun-core 1.58.0 → 1.58.2
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/README.md +2 -2
- package/ThirdPartyNotices.txt +4075 -4075
- package/bin/install_media_pack.ps1 +5 -5
- package/bin/install_webkit_wsl.ps1 +32 -32
- package/bin/reinstall_chrome_beta_linux.sh +42 -42
- package/bin/reinstall_chrome_beta_mac.sh +13 -13
- package/bin/reinstall_chrome_beta_win.ps1 +24 -24
- package/bin/reinstall_chrome_stable_linux.sh +42 -42
- package/bin/reinstall_chrome_stable_mac.sh +12 -12
- package/bin/reinstall_chrome_stable_win.ps1 +24 -24
- package/bin/reinstall_msedge_beta_linux.sh +48 -48
- package/bin/reinstall_msedge_beta_mac.sh +11 -11
- package/bin/reinstall_msedge_beta_win.ps1 +23 -23
- package/bin/reinstall_msedge_dev_linux.sh +48 -48
- package/bin/reinstall_msedge_dev_mac.sh +11 -11
- package/bin/reinstall_msedge_dev_win.ps1 +23 -23
- package/bin/reinstall_msedge_stable_linux.sh +48 -48
- package/bin/reinstall_msedge_stable_mac.sh +11 -11
- package/bin/reinstall_msedge_stable_win.ps1 +23 -23
- package/browsers.json +79 -79
- package/cli.js +18 -18
- package/index.d.ts +17 -17
- package/index.js +32 -32
- package/index.mjs +28 -28
- package/lib/androidServerImpl.js +65 -65
- package/lib/browserServerImpl.js +120 -120
- package/lib/cli/driver.js +97 -97
- package/lib/cli/program.js +589 -589
- package/lib/cli/programWithTestStub.js +74 -74
- package/lib/client/android.js +361 -361
- package/lib/client/api.js +137 -137
- package/lib/client/artifact.js +79 -79
- package/lib/client/browser.js +161 -161
- package/lib/client/browserContext.js +582 -582
- package/lib/client/browserType.js +185 -185
- package/lib/client/cdpSession.js +51 -51
- package/lib/client/channelOwner.js +194 -194
- package/lib/client/clientHelper.js +64 -64
- package/lib/client/clientInstrumentation.js +55 -55
- package/lib/client/clientStackTrace.js +69 -69
- package/lib/client/clock.js +68 -68
- package/lib/client/connection.js +318 -318
- package/lib/client/consoleMessage.js +58 -58
- package/lib/client/coverage.js +44 -44
- package/lib/client/dialog.js +56 -56
- package/lib/client/download.js +62 -62
- package/lib/client/electron.js +138 -138
- package/lib/client/elementHandle.js +284 -284
- package/lib/client/errors.js +77 -77
- package/lib/client/eventEmitter.js +314 -314
- package/lib/client/events.js +103 -103
- package/lib/client/fetch.js +368 -368
- package/lib/client/fileChooser.js +46 -46
- package/lib/client/fileUtils.js +34 -34
- package/lib/client/frame.js +409 -409
- package/lib/client/harRouter.js +87 -87
- package/lib/client/input.js +84 -84
- package/lib/client/jsHandle.js +109 -109
- package/lib/client/jsonPipe.js +39 -39
- package/lib/client/localUtils.js +60 -60
- package/lib/client/locator.js +369 -369
- package/lib/client/network.js +747 -747
- package/lib/client/page.js +745 -745
- package/lib/client/pageAgent.js +64 -64
- package/lib/client/platform.js +77 -77
- package/lib/client/playwright.js +71 -71
- package/lib/client/selectors.js +55 -55
- package/lib/client/stream.js +39 -39
- package/lib/client/timeoutSettings.js +79 -79
- package/lib/client/tracing.js +119 -119
- package/lib/client/types.js +28 -28
- package/lib/client/video.js +59 -59
- package/lib/client/waiter.js +142 -142
- package/lib/client/webError.js +39 -39
- package/lib/client/webSocket.js +93 -93
- package/lib/client/worker.js +85 -85
- package/lib/client/writableStream.js +39 -39
- package/lib/generated/bindingsControllerSource.js +28 -28
- package/lib/generated/clockSource.js +28 -28
- package/lib/generated/injectedScriptSource.js +28 -28
- package/lib/generated/pollingRecorderSource.js +28 -28
- package/lib/generated/storageScriptSource.js +28 -28
- package/lib/generated/utilityScriptSource.js +28 -28
- package/lib/generated/webSocketMockSource.js +336 -336
- package/lib/inProcessFactory.js +60 -60
- package/lib/inprocess.js +3 -3
- package/lib/mcpBundle.js +84 -84
- package/lib/mcpBundleImpl/index.js +147 -147
- package/lib/outofprocess.js +76 -76
- package/lib/protocol/serializers.js +197 -197
- package/lib/protocol/validator.js +2969 -2969
- package/lib/protocol/validatorPrimitives.js +193 -193
- package/lib/remote/playwrightConnection.js +129 -129
- package/lib/remote/playwrightServer.js +334 -334
- package/lib/server/agent/actionRunner.js +335 -335
- package/lib/server/agent/actions.js +128 -128
- package/lib/server/agent/codegen.js +111 -111
- package/lib/server/agent/context.js +150 -150
- package/lib/server/agent/expectTools.js +156 -156
- package/lib/server/agent/pageAgent.js +204 -204
- package/lib/server/agent/performTools.js +262 -262
- package/lib/server/agent/tool.js +109 -109
- package/lib/server/android/android.js +465 -465
- package/lib/server/android/backendAdb.js +177 -177
- package/lib/server/artifact.js +127 -127
- package/lib/server/bidi/bidiBrowser.js +549 -549
- package/lib/server/bidi/bidiChromium.js +149 -148
- package/lib/server/bidi/bidiConnection.js +213 -213
- package/lib/server/bidi/bidiDeserializer.js +116 -116
- package/lib/server/bidi/bidiExecutionContext.js +267 -267
- package/lib/server/bidi/bidiFirefox.js +128 -128
- package/lib/server/bidi/bidiInput.js +146 -146
- package/lib/server/bidi/bidiNetworkManager.js +383 -383
- package/lib/server/bidi/bidiOverCdp.js +102 -102
- package/lib/server/bidi/bidiPage.js +583 -583
- package/lib/server/bidi/bidiPdf.js +106 -106
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -22
- package/lib/server/bidi/third_party/bidiKeyboard.js +256 -256
- package/lib/server/bidi/third_party/bidiProtocol.js +24 -24
- package/lib/server/bidi/third_party/bidiProtocolCore.js +180 -180
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -42
- package/lib/server/bidi/third_party/bidiSerializer.js +148 -148
- package/lib/server/bidi/third_party/firefoxPrefs.js +259 -259
- package/lib/server/browser.js +149 -149
- package/lib/server/browserContext.js +702 -702
- package/lib/server/browserType.js +336 -336
- package/lib/server/callLog.js +82 -82
- package/lib/server/chromium/chromium.js +397 -395
- package/lib/server/chromium/chromiumSwitches.js +104 -104
- package/lib/server/chromium/crBrowser.js +520 -511
- package/lib/server/chromium/crConnection.js +197 -197
- package/lib/server/chromium/crCoverage.js +235 -235
- package/lib/server/chromium/crDevTools.js +111 -111
- package/lib/server/chromium/crDragDrop.js +131 -131
- package/lib/server/chromium/crExecutionContext.js +146 -146
- package/lib/server/chromium/crInput.js +187 -187
- package/lib/server/chromium/crNetworkManager.js +707 -707
- package/lib/server/chromium/crPage.js +1001 -1001
- package/lib/server/chromium/crPdf.js +121 -121
- package/lib/server/chromium/crProtocolHelper.js +145 -145
- package/lib/server/chromium/crServiceWorker.js +136 -136
- package/lib/server/chromium/defaultFontFamilies.js +162 -162
- package/lib/server/chromium/protocol.d.js +16 -16
- package/lib/server/clock.js +149 -149
- package/lib/server/codegen/csharp.js +327 -327
- package/lib/server/codegen/java.js +274 -274
- package/lib/server/codegen/javascript.js +247 -247
- package/lib/server/codegen/jsonl.js +52 -52
- package/lib/server/codegen/language.js +132 -132
- package/lib/server/codegen/languages.js +68 -68
- package/lib/server/codegen/python.js +279 -279
- package/lib/server/codegen/types.js +16 -16
- package/lib/server/console.js +57 -57
- package/lib/server/cookieStore.js +206 -206
- package/lib/server/debugController.js +191 -191
- package/lib/server/debugger.js +119 -119
- package/lib/server/deviceDescriptors.js +39 -39
- package/lib/server/deviceDescriptorsSource.json +1778 -1778
- package/lib/server/dialog.js +116 -116
- package/lib/server/dispatchers/androidDispatcher.js +325 -325
- package/lib/server/dispatchers/artifactDispatcher.js +118 -118
- package/lib/server/dispatchers/browserContextDispatcher.js +384 -384
- package/lib/server/dispatchers/browserDispatcher.js +118 -118
- package/lib/server/dispatchers/browserTypeDispatcher.js +64 -64
- package/lib/server/dispatchers/cdpSessionDispatcher.js +44 -44
- package/lib/server/dispatchers/debugControllerDispatcher.js +78 -78
- package/lib/server/dispatchers/dialogDispatcher.js +47 -47
- package/lib/server/dispatchers/dispatcher.js +364 -364
- package/lib/server/dispatchers/electronDispatcher.js +89 -89
- package/lib/server/dispatchers/elementHandlerDispatcher.js +181 -181
- package/lib/server/dispatchers/frameDispatcher.js +227 -227
- package/lib/server/dispatchers/jsHandleDispatcher.js +85 -85
- package/lib/server/dispatchers/jsonPipeDispatcher.js +58 -58
- package/lib/server/dispatchers/localUtilsDispatcher.js +149 -149
- package/lib/server/dispatchers/networkDispatchers.js +213 -213
- package/lib/server/dispatchers/pageAgentDispatcher.js +96 -96
- package/lib/server/dispatchers/pageDispatcher.js +393 -393
- package/lib/server/dispatchers/playwrightDispatcher.js +108 -108
- package/lib/server/dispatchers/streamDispatcher.js +67 -67
- package/lib/server/dispatchers/tracingDispatcher.js +68 -68
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +165 -165
- package/lib/server/dispatchers/writableStreamDispatcher.js +79 -79
- package/lib/server/dom.js +815 -815
- package/lib/server/download.js +70 -70
- package/lib/server/electron/electron.js +273 -273
- package/lib/server/electron/loader.js +29 -29
- package/lib/server/errors.js +69 -69
- package/lib/server/fetch.js +621 -621
- package/lib/server/fileChooser.js +43 -43
- package/lib/server/fileUploadUtils.js +84 -84
- package/lib/server/firefox/ffBrowser.js +418 -418
- package/lib/server/firefox/ffConnection.js +142 -142
- package/lib/server/firefox/ffExecutionContext.js +150 -150
- package/lib/server/firefox/ffInput.js +159 -159
- package/lib/server/firefox/ffNetworkManager.js +256 -256
- package/lib/server/firefox/ffPage.js +497 -497
- package/lib/server/firefox/firefox.js +114 -114
- package/lib/server/firefox/protocol.d.js +16 -16
- package/lib/server/formData.js +147 -147
- package/lib/server/frameSelectors.js +160 -160
- package/lib/server/frames.js +1471 -1471
- package/lib/server/har/harRecorder.js +147 -147
- package/lib/server/har/harTracer.js +607 -607
- package/lib/server/harBackend.js +157 -157
- package/lib/server/helper.js +96 -96
- package/lib/server/index.js +58 -58
- package/lib/server/input.js +277 -277
- package/lib/server/instrumentation.js +72 -72
- package/lib/server/javascript.js +291 -291
- package/lib/server/launchApp.js +128 -128
- package/lib/server/localUtils.js +214 -214
- package/lib/server/macEditingCommands.js +143 -143
- package/lib/server/network.js +667 -667
- package/lib/server/page.js +830 -830
- package/lib/server/pipeTransport.js +89 -89
- package/lib/server/playwright.js +69 -69
- package/lib/server/progress.js +132 -132
- package/lib/server/protocolError.js +52 -52
- package/lib/server/recorder/chat.js +161 -161
- package/lib/server/recorder/recorderApp.js +366 -366
- package/lib/server/recorder/recorderRunner.js +138 -138
- package/lib/server/recorder/recorderSignalProcessor.js +83 -83
- package/lib/server/recorder/recorderUtils.js +157 -157
- package/lib/server/recorder/throttledFile.js +57 -57
- package/lib/server/recorder.js +499 -499
- package/lib/server/registry/browserFetcher.js +177 -177
- package/lib/server/registry/dependencies.js +371 -371
- package/lib/server/registry/index.js +1422 -1422
- package/lib/server/registry/nativeDeps.js +1280 -1280
- package/lib/server/registry/oopDownloadBrowserMain.js +127 -127
- package/lib/server/screencast.js +190 -190
- package/lib/server/screenshotter.js +333 -333
- package/lib/server/selectors.js +112 -112
- package/lib/server/socksClientCertificatesInterceptor.js +383 -383
- package/lib/server/socksInterceptor.js +95 -95
- package/lib/server/trace/recorder/snapshotter.js +147 -147
- package/lib/server/trace/recorder/snapshotterInjected.js +561 -561
- package/lib/server/trace/recorder/tracing.js +604 -604
- package/lib/server/trace/viewer/traceParser.js +72 -72
- package/lib/server/trace/viewer/traceViewer.js +245 -245
- package/lib/server/transport.js +254 -254
- package/lib/server/types.js +28 -28
- package/lib/server/usKeyboardLayout.js +145 -145
- package/lib/server/utils/ascii.js +44 -44
- package/lib/server/utils/comparators.js +139 -139
- package/lib/server/utils/crypto.js +216 -216
- package/lib/server/utils/debug.js +42 -42
- package/lib/server/utils/debugLogger.js +122 -122
- package/lib/server/utils/env.js +73 -73
- package/lib/server/utils/eventsHelper.js +39 -39
- package/lib/server/utils/expectUtils.js +123 -123
- package/lib/server/utils/fileUtils.js +191 -191
- package/lib/server/utils/happyEyeballs.js +207 -207
- package/lib/server/utils/hostPlatform.js +138 -123
- package/lib/server/utils/httpServer.js +203 -203
- package/lib/server/utils/imageUtils.js +141 -141
- package/lib/server/utils/image_tools/colorUtils.js +89 -89
- package/lib/server/utils/image_tools/compare.js +109 -109
- package/lib/server/utils/image_tools/imageChannel.js +78 -78
- package/lib/server/utils/image_tools/stats.js +102 -102
- package/lib/server/utils/linuxUtils.js +71 -71
- package/lib/server/utils/network.js +242 -242
- package/lib/server/utils/nodePlatform.js +154 -154
- package/lib/server/utils/pipeTransport.js +84 -84
- package/lib/server/utils/processLauncher.js +241 -241
- package/lib/server/utils/profiler.js +65 -65
- package/lib/server/utils/socksProxy.js +511 -511
- package/lib/server/utils/spawnAsync.js +41 -41
- package/lib/server/utils/task.js +51 -51
- package/lib/server/utils/userAgent.js +98 -98
- package/lib/server/utils/wsServer.js +121 -121
- package/lib/server/utils/zipFile.js +74 -74
- package/lib/server/utils/zones.js +57 -57
- package/lib/server/videoRecorder.js +124 -124
- package/lib/server/webkit/protocol.d.js +16 -16
- package/lib/server/webkit/webkit.js +108 -108
- package/lib/server/webkit/wkBrowser.js +335 -335
- package/lib/server/webkit/wkConnection.js +144 -144
- package/lib/server/webkit/wkExecutionContext.js +154 -154
- package/lib/server/webkit/wkInput.js +181 -181
- package/lib/server/webkit/wkInterceptableRequest.js +197 -197
- package/lib/server/webkit/wkPage.js +1159 -1158
- package/lib/server/webkit/wkProvisionalPage.js +83 -83
- package/lib/server/webkit/wkWorkers.js +105 -105
- package/lib/third_party/pixelmatch.js +255 -255
- package/lib/utils/isomorphic/ariaSnapshot.js +455 -455
- package/lib/utils/isomorphic/assert.js +31 -31
- package/lib/utils/isomorphic/colors.js +72 -72
- package/lib/utils/isomorphic/cssParser.js +245 -245
- package/lib/utils/isomorphic/cssTokenizer.js +1051 -1051
- package/lib/utils/isomorphic/headers.js +53 -53
- package/lib/utils/isomorphic/locatorGenerators.js +689 -689
- package/lib/utils/isomorphic/locatorParser.js +176 -176
- package/lib/utils/isomorphic/locatorUtils.js +81 -81
- package/lib/utils/isomorphic/lruCache.js +51 -51
- package/lib/utils/isomorphic/manualPromise.js +114 -114
- package/lib/utils/isomorphic/mimeType.js +459 -459
- package/lib/utils/isomorphic/multimap.js +80 -80
- package/lib/utils/isomorphic/protocolFormatter.js +81 -81
- package/lib/utils/isomorphic/protocolMetainfo.js +330 -330
- package/lib/utils/isomorphic/rtti.js +43 -43
- package/lib/utils/isomorphic/selectorParser.js +386 -386
- package/lib/utils/isomorphic/semaphore.js +54 -54
- package/lib/utils/isomorphic/stackTrace.js +158 -158
- package/lib/utils/isomorphic/stringUtils.js +204 -204
- package/lib/utils/isomorphic/time.js +49 -49
- package/lib/utils/isomorphic/timeoutRunner.js +66 -66
- package/lib/utils/isomorphic/trace/entries.js +16 -16
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +499 -499
- package/lib/utils/isomorphic/trace/snapshotServer.js +120 -120
- package/lib/utils/isomorphic/trace/snapshotStorage.js +89 -89
- package/lib/utils/isomorphic/trace/traceLoader.js +131 -131
- package/lib/utils/isomorphic/trace/traceModel.js +365 -365
- package/lib/utils/isomorphic/trace/traceModernizer.js +400 -400
- package/lib/utils/isomorphic/trace/versions/traceV3.js +16 -16
- package/lib/utils/isomorphic/trace/versions/traceV4.js +16 -16
- package/lib/utils/isomorphic/trace/versions/traceV5.js +16 -16
- package/lib/utils/isomorphic/trace/versions/traceV6.js +16 -16
- package/lib/utils/isomorphic/trace/versions/traceV7.js +16 -16
- package/lib/utils/isomorphic/trace/versions/traceV8.js +16 -16
- package/lib/utils/isomorphic/traceUtils.js +58 -58
- package/lib/utils/isomorphic/types.js +16 -16
- package/lib/utils/isomorphic/urlMatch.js +190 -190
- package/lib/utils/isomorphic/utilityScriptSerializers.js +251 -251
- package/lib/utils/isomorphic/yaml.js +84 -84
- package/lib/utils.js +111 -111
- package/lib/utilsBundle.js +109 -109
- package/lib/utilsBundleImpl/index.js +218 -218
- package/lib/utilsBundleImpl/xdg-open +1066 -1066
- package/lib/vite/htmlReport/index.html +84 -84
- package/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -1
- package/lib/vite/recorder/assets/codeMirrorModule-DadYNm1I.js +32 -32
- package/lib/vite/recorder/assets/index-BSjZa4pk.css +1 -1
- package/lib/vite/recorder/assets/index-BhTWtUlo.js +193 -193
- package/lib/vite/recorder/index.html +29 -29
- package/lib/vite/recorder/playwright-logo.svg +9 -9
- package/lib/vite/traceViewer/assets/codeMirrorModule-a5XoALAZ.js +32 -32
- package/lib/vite/traceViewer/assets/defaultSettingsView-CJSZINFr.js +266 -266
- package/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -9
- package/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -1
- package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +1 -1
- package/lib/vite/traceViewer/{index.Bk2uYQRV.js → index.BDwrLSGN.js} +2 -2
- package/lib/vite/traceViewer/index.BVu7tZDe.css +1 -1
- package/lib/vite/traceViewer/index.html +43 -43
- package/lib/vite/traceViewer/manifest.webmanifest +16 -16
- package/lib/vite/traceViewer/playwright-logo.svg +9 -9
- package/lib/vite/traceViewer/snapshot.html +21 -21
- package/lib/vite/traceViewer/sw.bundle.js +5 -5
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -1
- package/lib/vite/traceViewer/uiMode.CQJ9SCIQ.js +5 -5
- package/lib/vite/traceViewer/uiMode.html +17 -17
- package/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -32
- package/lib/zipBundle.js +34 -34
- package/lib/zipBundleImpl.js +5 -5
- package/package.json +1 -1
- package/types/protocol.d.ts +23824 -23824
- package/types/structs.d.ts +45 -45
- package/types/types.d.ts +22843 -22843
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
"use strict";
|
|
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 traceParser_exports = {};
|
|
30
|
-
__export(traceParser_exports, {
|
|
31
|
-
ZipTraceLoaderBackend: () => ZipTraceLoaderBackend
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(traceParser_exports);
|
|
34
|
-
var import_url = __toESM(require("url"));
|
|
35
|
-
var import_zipFile = require("../../utils/zipFile");
|
|
36
|
-
class ZipTraceLoaderBackend {
|
|
37
|
-
constructor(traceFile) {
|
|
38
|
-
this._traceFile = traceFile;
|
|
39
|
-
this._zipFile = new import_zipFile.ZipFile(traceFile);
|
|
40
|
-
}
|
|
41
|
-
isLive() {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
traceURL() {
|
|
45
|
-
return import_url.default.pathToFileURL(this._traceFile).toString();
|
|
46
|
-
}
|
|
47
|
-
async entryNames() {
|
|
48
|
-
return await this._zipFile.entries();
|
|
49
|
-
}
|
|
50
|
-
async hasEntry(entryName) {
|
|
51
|
-
const entries = await this.entryNames();
|
|
52
|
-
return entries.includes(entryName);
|
|
53
|
-
}
|
|
54
|
-
async readText(entryName) {
|
|
55
|
-
try {
|
|
56
|
-
const buffer = await this._zipFile.read(entryName);
|
|
57
|
-
return buffer.toString("utf-8");
|
|
58
|
-
} catch {
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
async readBlob(entryName) {
|
|
62
|
-
try {
|
|
63
|
-
const buffer = await this._zipFile.read(entryName);
|
|
64
|
-
return new Blob([new Uint8Array(buffer)]);
|
|
65
|
-
} catch {
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
70
|
-
0 && (module.exports = {
|
|
71
|
-
ZipTraceLoaderBackend
|
|
72
|
-
});
|
|
1
|
+
"use strict";
|
|
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 traceParser_exports = {};
|
|
30
|
+
__export(traceParser_exports, {
|
|
31
|
+
ZipTraceLoaderBackend: () => ZipTraceLoaderBackend
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(traceParser_exports);
|
|
34
|
+
var import_url = __toESM(require("url"));
|
|
35
|
+
var import_zipFile = require("../../utils/zipFile");
|
|
36
|
+
class ZipTraceLoaderBackend {
|
|
37
|
+
constructor(traceFile) {
|
|
38
|
+
this._traceFile = traceFile;
|
|
39
|
+
this._zipFile = new import_zipFile.ZipFile(traceFile);
|
|
40
|
+
}
|
|
41
|
+
isLive() {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
traceURL() {
|
|
45
|
+
return import_url.default.pathToFileURL(this._traceFile).toString();
|
|
46
|
+
}
|
|
47
|
+
async entryNames() {
|
|
48
|
+
return await this._zipFile.entries();
|
|
49
|
+
}
|
|
50
|
+
async hasEntry(entryName) {
|
|
51
|
+
const entries = await this.entryNames();
|
|
52
|
+
return entries.includes(entryName);
|
|
53
|
+
}
|
|
54
|
+
async readText(entryName) {
|
|
55
|
+
try {
|
|
56
|
+
const buffer = await this._zipFile.read(entryName);
|
|
57
|
+
return buffer.toString("utf-8");
|
|
58
|
+
} catch {
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async readBlob(entryName) {
|
|
62
|
+
try {
|
|
63
|
+
const buffer = await this._zipFile.read(entryName);
|
|
64
|
+
return new Blob([new Uint8Array(buffer)]);
|
|
65
|
+
} catch {
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
70
|
+
0 && (module.exports = {
|
|
71
|
+
ZipTraceLoaderBackend
|
|
72
|
+
});
|
|
@@ -1,245 +1,245 @@
|
|
|
1
|
-
"use strict";
|
|
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 traceViewer_exports = {};
|
|
30
|
-
__export(traceViewer_exports, {
|
|
31
|
-
installRootRedirect: () => installRootRedirect,
|
|
32
|
-
openTraceInBrowser: () => openTraceInBrowser,
|
|
33
|
-
openTraceViewerApp: () => openTraceViewerApp,
|
|
34
|
-
runTraceInBrowser: () => runTraceInBrowser,
|
|
35
|
-
runTraceViewerApp: () => runTraceViewerApp,
|
|
36
|
-
startTraceViewerServer: () => startTraceViewerServer
|
|
37
|
-
});
|
|
38
|
-
module.exports = __toCommonJS(traceViewer_exports);
|
|
39
|
-
var import_fs = __toESM(require("fs"));
|
|
40
|
-
var import_path = __toESM(require("path"));
|
|
41
|
-
var import_utils = require("../../../utils");
|
|
42
|
-
var import_utils2 = require("../../../utils");
|
|
43
|
-
var import_httpServer = require("../../utils/httpServer");
|
|
44
|
-
var import_utilsBundle = require("../../../utilsBundle");
|
|
45
|
-
var import_launchApp = require("../../launchApp");
|
|
46
|
-
var import_launchApp2 = require("../../launchApp");
|
|
47
|
-
var import_playwright = require("../../playwright");
|
|
48
|
-
var import_progress = require("../../progress");
|
|
49
|
-
const tracesDirMarker = "traces.dir";
|
|
50
|
-
function
|
|
51
|
-
if (!traceFileOrUrl)
|
|
52
|
-
return traceFileOrUrl;
|
|
53
|
-
if (traceFileOrUrl.startsWith("http://") || traceFileOrUrl.startsWith("https://"))
|
|
54
|
-
return traceFileOrUrl;
|
|
55
|
-
let traceFile = traceFileOrUrl;
|
|
56
|
-
if (traceFile.endsWith(".json"))
|
|
57
|
-
return toFilePathUrl(traceFile);
|
|
58
|
-
try {
|
|
59
|
-
const stat = import_fs.default.statSync(traceFile);
|
|
60
|
-
if (stat.isDirectory())
|
|
61
|
-
traceFile = import_path.default.join(traceFile, tracesDirMarker);
|
|
62
|
-
return toFilePathUrl(traceFile);
|
|
63
|
-
} catch {
|
|
64
|
-
throw new Error(`Trace file ${traceFileOrUrl} does not exist!`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async function startTraceViewerServer(options) {
|
|
68
|
-
const server = new import_httpServer.HttpServer();
|
|
69
|
-
server.routePrefix("/trace", (request, response) => {
|
|
70
|
-
const url = new URL("http://localhost" + request.url);
|
|
71
|
-
const relativePath = url.pathname.slice("/trace".length);
|
|
72
|
-
if (relativePath.startsWith("/file")) {
|
|
73
|
-
try {
|
|
74
|
-
const filePath = url.searchParams.get("path");
|
|
75
|
-
if (import_fs.default.existsSync(filePath))
|
|
76
|
-
return server.serveFile(request, response, url.searchParams.get("path"));
|
|
77
|
-
if (filePath.endsWith(".json")) {
|
|
78
|
-
const fullPrefix = filePath.substring(0, filePath.length - ".json".length);
|
|
79
|
-
return sendTraceDescriptor(response, import_path.default.dirname(fullPrefix), import_path.default.basename(fullPrefix));
|
|
80
|
-
}
|
|
81
|
-
if (filePath.endsWith(tracesDirMarker))
|
|
82
|
-
return sendTraceDescriptor(response, import_path.default.dirname(filePath));
|
|
83
|
-
} catch {
|
|
84
|
-
}
|
|
85
|
-
response.statusCode = 404;
|
|
86
|
-
response.end();
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
const absolutePath = import_path.default.join(__dirname, "..", "..", "..", "vite", "traceViewer", ...relativePath.split("/"));
|
|
90
|
-
return server.serveFile(request, response, absolutePath);
|
|
91
|
-
});
|
|
92
|
-
const transport = options?.transport || (options?.isServer ? new StdinServer() : void 0);
|
|
93
|
-
if (transport)
|
|
94
|
-
server.createWebSocket(transport);
|
|
95
|
-
const { host, port } = options || {};
|
|
96
|
-
await server.start({ preferredPort: port, host });
|
|
97
|
-
return server;
|
|
98
|
-
}
|
|
99
|
-
async function installRootRedirect(server, traceUrl, options) {
|
|
100
|
-
const params = new URLSearchParams();
|
|
101
|
-
if (import_path.default.sep !== import_path.default.posix.sep)
|
|
102
|
-
params.set("pathSeparator", import_path.default.sep);
|
|
103
|
-
if (traceUrl)
|
|
104
|
-
params.append("trace", traceUrl);
|
|
105
|
-
if (server.wsGuid())
|
|
106
|
-
params.append("ws", server.wsGuid());
|
|
107
|
-
if (options?.isServer)
|
|
108
|
-
params.append("isServer", "");
|
|
109
|
-
if ((0, import_utils2.isUnderTest)())
|
|
110
|
-
params.append("isUnderTest", "true");
|
|
111
|
-
for (const arg of options.args || [])
|
|
112
|
-
params.append("arg", arg);
|
|
113
|
-
if (options.grep)
|
|
114
|
-
params.append("grep", options.grep);
|
|
115
|
-
if (options.grepInvert)
|
|
116
|
-
params.append("grepInvert", options.grepInvert);
|
|
117
|
-
for (const project of options.project || [])
|
|
118
|
-
params.append("project", project);
|
|
119
|
-
for (const reporter of options.reporter || [])
|
|
120
|
-
params.append("reporter", reporter);
|
|
121
|
-
const urlPath = `./trace/${options.webApp || "index.html"}?${params.toString()}`;
|
|
122
|
-
server.routePath("/", (_, response) => {
|
|
123
|
-
response.statusCode = 302;
|
|
124
|
-
response.setHeader("Location", urlPath);
|
|
125
|
-
response.end();
|
|
126
|
-
return true;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
async function runTraceViewerApp(traceUrl, browserName, options, exitOnClose) {
|
|
130
|
-
traceUrl =
|
|
131
|
-
const server = await startTraceViewerServer(options);
|
|
132
|
-
await installRootRedirect(server, traceUrl, options);
|
|
133
|
-
const page = await openTraceViewerApp(server.urlPrefix("precise"), browserName, options);
|
|
134
|
-
if (exitOnClose)
|
|
135
|
-
page.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
136
|
-
return page;
|
|
137
|
-
}
|
|
138
|
-
async function runTraceInBrowser(traceUrl, options) {
|
|
139
|
-
traceUrl =
|
|
140
|
-
const server = await startTraceViewerServer(options);
|
|
141
|
-
await installRootRedirect(server, traceUrl, options);
|
|
142
|
-
await openTraceInBrowser(server.urlPrefix("human-readable"));
|
|
143
|
-
}
|
|
144
|
-
async function openTraceViewerApp(url, browserName, options) {
|
|
145
|
-
const traceViewerPlaywright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isInternalPlaywright: true });
|
|
146
|
-
const traceViewerBrowser = (0, import_utils2.isUnderTest)() ? "chromium" : browserName;
|
|
147
|
-
const { context, page } = await (0, import_launchApp2.launchApp)(traceViewerPlaywright[traceViewerBrowser], {
|
|
148
|
-
sdkLanguage: traceViewerPlaywright.options.sdkLanguage,
|
|
149
|
-
windowSize: { width: 1280, height: 800 },
|
|
150
|
-
persistentContextOptions: {
|
|
151
|
-
...options?.persistentContextOptions,
|
|
152
|
-
cdpPort: (0, import_utils2.isUnderTest)() ? 0 : void 0,
|
|
153
|
-
headless: !!options?.headless,
|
|
154
|
-
colorScheme: (0, import_utils2.isUnderTest)() ? "light" : void 0
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
const controller = new import_progress.ProgressController();
|
|
158
|
-
await controller.run(async (progress) => {
|
|
159
|
-
await context._browser._defaultContext._loadDefaultContextAsIs(progress);
|
|
160
|
-
if (process.env.PWTEST_PRINT_WS_ENDPOINT) {
|
|
161
|
-
process.stderr.write("DevTools listening on: " + context._browser.options.wsEndpoint + "\n");
|
|
162
|
-
}
|
|
163
|
-
if (!(0, import_utils2.isUnderTest)())
|
|
164
|
-
await (0, import_launchApp.syncLocalStorageWithSettings)(page, "traceviewer");
|
|
165
|
-
if ((0, import_utils2.isUnderTest)())
|
|
166
|
-
page.on("close", () => context.close({ reason: "Trace viewer closed" }).catch(() => {
|
|
167
|
-
}));
|
|
168
|
-
await page.mainFrame().goto(progress, url);
|
|
169
|
-
});
|
|
170
|
-
return page;
|
|
171
|
-
}
|
|
172
|
-
async function openTraceInBrowser(url) {
|
|
173
|
-
console.log("\nListening on " + url);
|
|
174
|
-
if (!(0, import_utils2.isUnderTest)())
|
|
175
|
-
await (0, import_utilsBundle.open)(url.replace("0.0.0.0", "localhost")).catch(() => {
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
class StdinServer {
|
|
179
|
-
constructor() {
|
|
180
|
-
process.stdin.on("data", (data) => {
|
|
181
|
-
const url = data.toString().trim();
|
|
182
|
-
if (url === this._traceUrl)
|
|
183
|
-
return;
|
|
184
|
-
if (url.endsWith(".json"))
|
|
185
|
-
this._pollLoadTrace(url);
|
|
186
|
-
else
|
|
187
|
-
this._loadTrace(url);
|
|
188
|
-
});
|
|
189
|
-
process.stdin.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
190
|
-
}
|
|
191
|
-
onconnect() {
|
|
192
|
-
}
|
|
193
|
-
async dispatch(method, params) {
|
|
194
|
-
if (method === "initialize") {
|
|
195
|
-
if (this._traceUrl)
|
|
196
|
-
this._loadTrace(this._traceUrl);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
onclose() {
|
|
200
|
-
}
|
|
201
|
-
_loadTrace(traceUrl) {
|
|
202
|
-
this._traceUrl = traceUrl;
|
|
203
|
-
clearTimeout(this._pollTimer);
|
|
204
|
-
this.sendEvent?.("loadTraceRequested", { traceUrl });
|
|
205
|
-
}
|
|
206
|
-
_pollLoadTrace(url) {
|
|
207
|
-
this._loadTrace(url);
|
|
208
|
-
this._pollTimer = setTimeout(() => {
|
|
209
|
-
this._pollLoadTrace(url);
|
|
210
|
-
}, 500);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
function sendTraceDescriptor(response, traceDir, tracePrefix) {
|
|
214
|
-
response.statusCode = 200;
|
|
215
|
-
response.setHeader("Content-Type", "application/json");
|
|
216
|
-
response.end(JSON.stringify(traceDescriptor(traceDir, tracePrefix)));
|
|
217
|
-
return true;
|
|
218
|
-
}
|
|
219
|
-
function traceDescriptor(traceDir, tracePrefix) {
|
|
220
|
-
const result = {
|
|
221
|
-
entries: []
|
|
222
|
-
};
|
|
223
|
-
for (const name of import_fs.default.readdirSync(traceDir)) {
|
|
224
|
-
if (!tracePrefix || name.startsWith(tracePrefix))
|
|
225
|
-
result.entries.push({ name, path: toFilePathUrl(import_path.default.join(traceDir, name)) });
|
|
226
|
-
}
|
|
227
|
-
const resourcesDir = import_path.default.join(traceDir, "resources");
|
|
228
|
-
if (import_fs.default.existsSync(resourcesDir)) {
|
|
229
|
-
for (const name of import_fs.default.readdirSync(resourcesDir))
|
|
230
|
-
result.entries.push({ name: "resources/" + name, path: toFilePathUrl(import_path.default.join(resourcesDir, name)) });
|
|
231
|
-
}
|
|
232
|
-
return result;
|
|
233
|
-
}
|
|
234
|
-
function toFilePathUrl(filePath) {
|
|
235
|
-
return `file?path=${encodeURIComponent(filePath)}`;
|
|
236
|
-
}
|
|
237
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
238
|
-
0 && (module.exports = {
|
|
239
|
-
installRootRedirect,
|
|
240
|
-
openTraceInBrowser,
|
|
241
|
-
openTraceViewerApp,
|
|
242
|
-
runTraceInBrowser,
|
|
243
|
-
runTraceViewerApp,
|
|
244
|
-
startTraceViewerServer
|
|
245
|
-
});
|
|
1
|
+
"use strict";
|
|
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 traceViewer_exports = {};
|
|
30
|
+
__export(traceViewer_exports, {
|
|
31
|
+
installRootRedirect: () => installRootRedirect,
|
|
32
|
+
openTraceInBrowser: () => openTraceInBrowser,
|
|
33
|
+
openTraceViewerApp: () => openTraceViewerApp,
|
|
34
|
+
runTraceInBrowser: () => runTraceInBrowser,
|
|
35
|
+
runTraceViewerApp: () => runTraceViewerApp,
|
|
36
|
+
startTraceViewerServer: () => startTraceViewerServer
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(traceViewer_exports);
|
|
39
|
+
var import_fs = __toESM(require("fs"));
|
|
40
|
+
var import_path = __toESM(require("path"));
|
|
41
|
+
var import_utils = require("../../../utils");
|
|
42
|
+
var import_utils2 = require("../../../utils");
|
|
43
|
+
var import_httpServer = require("../../utils/httpServer");
|
|
44
|
+
var import_utilsBundle = require("../../../utilsBundle");
|
|
45
|
+
var import_launchApp = require("../../launchApp");
|
|
46
|
+
var import_launchApp2 = require("../../launchApp");
|
|
47
|
+
var import_playwright = require("../../playwright");
|
|
48
|
+
var import_progress = require("../../progress");
|
|
49
|
+
const tracesDirMarker = "traces.dir";
|
|
50
|
+
function validateTraceUrlOrPath(traceFileOrUrl) {
|
|
51
|
+
if (!traceFileOrUrl)
|
|
52
|
+
return traceFileOrUrl;
|
|
53
|
+
if (traceFileOrUrl.startsWith("http://") || traceFileOrUrl.startsWith("https://"))
|
|
54
|
+
return traceFileOrUrl;
|
|
55
|
+
let traceFile = traceFileOrUrl;
|
|
56
|
+
if (traceFile.endsWith(".json"))
|
|
57
|
+
return toFilePathUrl(traceFile);
|
|
58
|
+
try {
|
|
59
|
+
const stat = import_fs.default.statSync(traceFile);
|
|
60
|
+
if (stat.isDirectory())
|
|
61
|
+
traceFile = import_path.default.join(traceFile, tracesDirMarker);
|
|
62
|
+
return toFilePathUrl(traceFile);
|
|
63
|
+
} catch {
|
|
64
|
+
throw new Error(`Trace file ${traceFileOrUrl} does not exist!`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function startTraceViewerServer(options) {
|
|
68
|
+
const server = new import_httpServer.HttpServer();
|
|
69
|
+
server.routePrefix("/trace", (request, response) => {
|
|
70
|
+
const url = new URL("http://localhost" + request.url);
|
|
71
|
+
const relativePath = url.pathname.slice("/trace".length);
|
|
72
|
+
if (relativePath.startsWith("/file")) {
|
|
73
|
+
try {
|
|
74
|
+
const filePath = url.searchParams.get("path");
|
|
75
|
+
if (import_fs.default.existsSync(filePath))
|
|
76
|
+
return server.serveFile(request, response, url.searchParams.get("path"));
|
|
77
|
+
if (filePath.endsWith(".json")) {
|
|
78
|
+
const fullPrefix = filePath.substring(0, filePath.length - ".json".length);
|
|
79
|
+
return sendTraceDescriptor(response, import_path.default.dirname(fullPrefix), import_path.default.basename(fullPrefix));
|
|
80
|
+
}
|
|
81
|
+
if (filePath.endsWith(tracesDirMarker))
|
|
82
|
+
return sendTraceDescriptor(response, import_path.default.dirname(filePath));
|
|
83
|
+
} catch {
|
|
84
|
+
}
|
|
85
|
+
response.statusCode = 404;
|
|
86
|
+
response.end();
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
const absolutePath = import_path.default.join(__dirname, "..", "..", "..", "vite", "traceViewer", ...relativePath.split("/"));
|
|
90
|
+
return server.serveFile(request, response, absolutePath);
|
|
91
|
+
});
|
|
92
|
+
const transport = options?.transport || (options?.isServer ? new StdinServer() : void 0);
|
|
93
|
+
if (transport)
|
|
94
|
+
server.createWebSocket(transport);
|
|
95
|
+
const { host, port } = options || {};
|
|
96
|
+
await server.start({ preferredPort: port, host });
|
|
97
|
+
return server;
|
|
98
|
+
}
|
|
99
|
+
async function installRootRedirect(server, traceUrl, options) {
|
|
100
|
+
const params = new URLSearchParams();
|
|
101
|
+
if (import_path.default.sep !== import_path.default.posix.sep)
|
|
102
|
+
params.set("pathSeparator", import_path.default.sep);
|
|
103
|
+
if (traceUrl)
|
|
104
|
+
params.append("trace", traceUrl);
|
|
105
|
+
if (server.wsGuid())
|
|
106
|
+
params.append("ws", server.wsGuid());
|
|
107
|
+
if (options?.isServer)
|
|
108
|
+
params.append("isServer", "");
|
|
109
|
+
if ((0, import_utils2.isUnderTest)())
|
|
110
|
+
params.append("isUnderTest", "true");
|
|
111
|
+
for (const arg of options.args || [])
|
|
112
|
+
params.append("arg", arg);
|
|
113
|
+
if (options.grep)
|
|
114
|
+
params.append("grep", options.grep);
|
|
115
|
+
if (options.grepInvert)
|
|
116
|
+
params.append("grepInvert", options.grepInvert);
|
|
117
|
+
for (const project of options.project || [])
|
|
118
|
+
params.append("project", project);
|
|
119
|
+
for (const reporter of options.reporter || [])
|
|
120
|
+
params.append("reporter", reporter);
|
|
121
|
+
const urlPath = `./trace/${options.webApp || "index.html"}?${params.toString()}`;
|
|
122
|
+
server.routePath("/", (_, response) => {
|
|
123
|
+
response.statusCode = 302;
|
|
124
|
+
response.setHeader("Location", urlPath);
|
|
125
|
+
response.end();
|
|
126
|
+
return true;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async function runTraceViewerApp(traceUrl, browserName, options, exitOnClose) {
|
|
130
|
+
traceUrl = validateTraceUrlOrPath(traceUrl);
|
|
131
|
+
const server = await startTraceViewerServer(options);
|
|
132
|
+
await installRootRedirect(server, traceUrl, options);
|
|
133
|
+
const page = await openTraceViewerApp(server.urlPrefix("precise"), browserName, options);
|
|
134
|
+
if (exitOnClose)
|
|
135
|
+
page.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
136
|
+
return page;
|
|
137
|
+
}
|
|
138
|
+
async function runTraceInBrowser(traceUrl, options) {
|
|
139
|
+
traceUrl = validateTraceUrlOrPath(traceUrl);
|
|
140
|
+
const server = await startTraceViewerServer(options);
|
|
141
|
+
await installRootRedirect(server, traceUrl, options);
|
|
142
|
+
await openTraceInBrowser(server.urlPrefix("human-readable"));
|
|
143
|
+
}
|
|
144
|
+
async function openTraceViewerApp(url, browserName, options) {
|
|
145
|
+
const traceViewerPlaywright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isInternalPlaywright: true });
|
|
146
|
+
const traceViewerBrowser = (0, import_utils2.isUnderTest)() ? "chromium" : browserName;
|
|
147
|
+
const { context, page } = await (0, import_launchApp2.launchApp)(traceViewerPlaywright[traceViewerBrowser], {
|
|
148
|
+
sdkLanguage: traceViewerPlaywright.options.sdkLanguage,
|
|
149
|
+
windowSize: { width: 1280, height: 800 },
|
|
150
|
+
persistentContextOptions: {
|
|
151
|
+
...options?.persistentContextOptions,
|
|
152
|
+
cdpPort: (0, import_utils2.isUnderTest)() ? 0 : void 0,
|
|
153
|
+
headless: !!options?.headless,
|
|
154
|
+
colorScheme: (0, import_utils2.isUnderTest)() ? "light" : void 0
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
const controller = new import_progress.ProgressController();
|
|
158
|
+
await controller.run(async (progress) => {
|
|
159
|
+
await context._browser._defaultContext._loadDefaultContextAsIs(progress);
|
|
160
|
+
if (process.env.PWTEST_PRINT_WS_ENDPOINT) {
|
|
161
|
+
process.stderr.write("DevTools listening on: " + context._browser.options.wsEndpoint + "\n");
|
|
162
|
+
}
|
|
163
|
+
if (!(0, import_utils2.isUnderTest)())
|
|
164
|
+
await (0, import_launchApp.syncLocalStorageWithSettings)(page, "traceviewer");
|
|
165
|
+
if ((0, import_utils2.isUnderTest)())
|
|
166
|
+
page.on("close", () => context.close({ reason: "Trace viewer closed" }).catch(() => {
|
|
167
|
+
}));
|
|
168
|
+
await page.mainFrame().goto(progress, url);
|
|
169
|
+
});
|
|
170
|
+
return page;
|
|
171
|
+
}
|
|
172
|
+
async function openTraceInBrowser(url) {
|
|
173
|
+
console.log("\nListening on " + url);
|
|
174
|
+
if (!(0, import_utils2.isUnderTest)())
|
|
175
|
+
await (0, import_utilsBundle.open)(url.replace("0.0.0.0", "localhost")).catch(() => {
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
class StdinServer {
|
|
179
|
+
constructor() {
|
|
180
|
+
process.stdin.on("data", (data) => {
|
|
181
|
+
const url = validateTraceUrlOrPath(data.toString().trim());
|
|
182
|
+
if (!url || url === this._traceUrl)
|
|
183
|
+
return;
|
|
184
|
+
if (url.endsWith(".json"))
|
|
185
|
+
this._pollLoadTrace(url);
|
|
186
|
+
else
|
|
187
|
+
this._loadTrace(url);
|
|
188
|
+
});
|
|
189
|
+
process.stdin.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
190
|
+
}
|
|
191
|
+
onconnect() {
|
|
192
|
+
}
|
|
193
|
+
async dispatch(method, params) {
|
|
194
|
+
if (method === "initialize") {
|
|
195
|
+
if (this._traceUrl)
|
|
196
|
+
this._loadTrace(this._traceUrl);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
onclose() {
|
|
200
|
+
}
|
|
201
|
+
_loadTrace(traceUrl) {
|
|
202
|
+
this._traceUrl = traceUrl;
|
|
203
|
+
clearTimeout(this._pollTimer);
|
|
204
|
+
this.sendEvent?.("loadTraceRequested", { traceUrl });
|
|
205
|
+
}
|
|
206
|
+
_pollLoadTrace(url) {
|
|
207
|
+
this._loadTrace(url);
|
|
208
|
+
this._pollTimer = setTimeout(() => {
|
|
209
|
+
this._pollLoadTrace(url);
|
|
210
|
+
}, 500);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function sendTraceDescriptor(response, traceDir, tracePrefix) {
|
|
214
|
+
response.statusCode = 200;
|
|
215
|
+
response.setHeader("Content-Type", "application/json");
|
|
216
|
+
response.end(JSON.stringify(traceDescriptor(traceDir, tracePrefix)));
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
function traceDescriptor(traceDir, tracePrefix) {
|
|
220
|
+
const result = {
|
|
221
|
+
entries: []
|
|
222
|
+
};
|
|
223
|
+
for (const name of import_fs.default.readdirSync(traceDir)) {
|
|
224
|
+
if (!tracePrefix || name.startsWith(tracePrefix))
|
|
225
|
+
result.entries.push({ name, path: toFilePathUrl(import_path.default.join(traceDir, name)) });
|
|
226
|
+
}
|
|
227
|
+
const resourcesDir = import_path.default.join(traceDir, "resources");
|
|
228
|
+
if (import_fs.default.existsSync(resourcesDir)) {
|
|
229
|
+
for (const name of import_fs.default.readdirSync(resourcesDir))
|
|
230
|
+
result.entries.push({ name: "resources/" + name, path: toFilePathUrl(import_path.default.join(resourcesDir, name)) });
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
function toFilePathUrl(filePath) {
|
|
235
|
+
return `file?path=${encodeURIComponent(filePath)}`;
|
|
236
|
+
}
|
|
237
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
238
|
+
0 && (module.exports = {
|
|
239
|
+
installRootRedirect,
|
|
240
|
+
openTraceInBrowser,
|
|
241
|
+
openTraceViewerApp,
|
|
242
|
+
runTraceInBrowser,
|
|
243
|
+
runTraceViewerApp,
|
|
244
|
+
startTraceViewerServer
|
|
245
|
+
});
|