patchright-core 1.51.3 → 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/browsers.json +15 -13
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +54 -67
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +312 -328
- package/lib/cli/programWithTestStub.js +51 -45
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +141 -228
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -36
- package/lib/client/browser.js +57 -61
- package/lib/client/browserContext.js +297 -326
- package/lib/client/browserType.js +92 -106
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +82 -95
- package/lib/client/clientHelper.js +46 -38
- package/lib/client/clientInstrumentation.js +40 -37
- package/lib/client/clientStackTrace.js +41 -37
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +190 -212
- package/lib/client/consoleMessage.js +31 -28
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +73 -75
- package/lib/client/elementHandle.js +111 -147
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +124 -121
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +135 -158
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +31 -28
- package/lib/client/frame.js +187 -306
- package/lib/client/harRouter.js +42 -52
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +54 -69
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +29 -28
- package/lib/client/locator.js +161 -245
- package/lib/client/network.js +277 -295
- package/lib/client/page.js +270 -318
- package/lib/client/platform.js +46 -43
- package/lib/client/playwright.js +51 -66
- package/lib/client/selectors.js +48 -46
- package/lib/client/stream.js +29 -25
- package/lib/client/timeoutSettings.js +49 -39
- package/lib/client/tracing.js +48 -84
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +69 -88
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +61 -56
- package/lib/client/worker.js +48 -58
- package/lib/client/writableStream.js +27 -23
- 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 -53
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -46
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2714 -2714
- package/lib/protocol/validatorPrimitives.js +114 -73
- package/lib/remote/playwrightConnection.js +140 -157
- package/lib/remote/playwrightServer.js +99 -84
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -209
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +221 -155
- package/lib/server/bidi/bidiChromium.js +106 -79
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +128 -113
- package/lib/server/bidi/bidiFirefox.js +76 -69
- package/lib/server/bidi/bidiInput.js +86 -97
- package/lib/server/bidi/bidiNetworkManager.js +137 -154
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +247 -219
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +236 -220
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +141 -119
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +321 -346
- package/lib/server/browserType.js +169 -182
- package/lib/server/callLog.js +47 -44
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +86 -64
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +253 -273
- package/lib/server/chromium/crConnection.js +91 -116
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +59 -51
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +88 -83
- package/lib/server/chromium/crInput.js +97 -95
- package/lib/server/chromium/crNetworkManager.js +284 -404
- package/lib/server/chromium/crPage.js +522 -608
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +82 -67
- 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 +62 -50
- package/lib/server/codegen/csharp.js +185 -160
- package/lib/server/codegen/java.js +155 -128
- package/lib/server/codegen/javascript.js +163 -148
- package/lib/server/codegen/jsonl.js +32 -28
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +140 -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 +97 -124
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +50 -50
- 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 +176 -205
- 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 -66
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +169 -220
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +77 -119
- package/lib/server/dispatchers/frameDispatcher.js +99 -163
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +95 -80
- package/lib/server/dispatchers/networkDispatchers.js +90 -107
- package/lib/server/dispatchers/pageDispatcher.js +128 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -45
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +96 -131
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -38
- package/lib/server/dom.js +413 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -176
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +289 -323
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +65 -59
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +213 -277
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +91 -73
- package/lib/server/firefox/ffInput.js +67 -69
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +236 -273
- package/lib/server/firefox/firefox.js +76 -67
- 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 +730 -894
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +287 -222
- package/lib/server/harBackend.js +80 -80
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -99
- package/lib/server/input.js +134 -163
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +143 -134
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +130 -122
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +262 -296
- package/lib/server/page.js +329 -426
- 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 +70 -86
- package/lib/server/recorder/contextRecorder.js +134 -138
- package/lib/server/recorder/recorderApp.js +127 -136
- package/lib/server/recorder/recorderCollection.js +56 -44
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +79 -103
- package/lib/server/recorder/recorderUtils.js +56 -45
- package/lib/server/recorder/throttledFile.js +42 -30
- package/lib/server/recorder.js +177 -186
- package/lib/server/registry/browserFetcher.js +106 -101
- package/lib/server/registry/dependencies.js +245 -196
- package/lib/server/registry/index.js +904 -792
- package/lib/server/registry/nativeDeps.js +1073 -464
- 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 -70
- package/lib/server/storageScript.js +94 -100
- package/lib/server/timeoutSettings.js +58 -43
- package/lib/server/trace/recorder/snapshotter.js +70 -89
- package/lib/server/trace/recorder/snapshotterInjected.js +238 -217
- package/lib/server/trace/recorder/tracing.js +321 -333
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +168 -146
- package/lib/server/transport.js +124 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +39 -26
- package/lib/server/utils/comparators.js +105 -103
- package/lib/server/utils/crypto.js +157 -112
- package/lib/server/utils/debug.js +37 -28
- package/lib/server/utils/debugLogger.js +69 -48
- package/lib/server/utils/env.js +52 -37
- package/lib/server/utils/eventsHelper.js +29 -28
- package/lib/server/utils/expectUtils.js +31 -26
- package/lib/server/utils/fileUtils.js +123 -136
- package/lib/server/utils/happyEyeballs.js +138 -123
- package/lib/server/utils/hostPlatform.js +84 -120
- package/lib/server/utils/httpServer.js +106 -121
- package/lib/server/utils/image_tools/colorUtils.js +42 -51
- package/lib/server/utils/image_tools/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +38 -30
- package/lib/server/utils/image_tools/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +50 -37
- package/lib/server/utils/network.js +143 -86
- package/lib/server/utils/nodePlatform.js +87 -79
- package/lib/server/utils/pipeTransport.js +44 -42
- package/lib/server/utils/processLauncher.js +111 -121
- package/lib/server/utils/profiler.js +52 -39
- package/lib/server/utils/socksProxy.js +280 -339
- package/lib/server/utils/spawnAsync.js +37 -41
- package/lib/server/utils/task.js +31 -38
- package/lib/server/utils/userAgent.js +73 -66
- package/lib/server/utils/wsServer.js +73 -69
- package/lib/server/utils/zipFile.js +36 -37
- package/lib/server/utils/zones.js +37 -34
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +159 -176
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +84 -70
- package/lib/server/webkit/wkInput.js +82 -80
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +525 -619
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +144 -152
- package/lib/utils/isomorphic/assert.js +28 -22
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +66 -59
- package/lib/utils/isomorphic/cssParser.js +121 -125
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +38 -37
- package/lib/utils/isomorphic/locatorGenerators.js +340 -357
- package/lib/utils/isomorphic/locatorParser.js +96 -105
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +47 -39
- package/lib/utils/isomorphic/mimeType.js +448 -25
- package/lib/utils/isomorphic/multimap.js +35 -27
- package/lib/utils/isomorphic/rtti.js +35 -33
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +27 -24
- package/lib/utils/isomorphic/stackTrace.js +87 -98
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +41 -22
- package/lib/utils/isomorphic/timeoutRunner.js +55 -54
- package/lib/utils/isomorphic/traceUtils.js +38 -41
- package/lib/utils/isomorphic/types.js +15 -4
- package/lib/utils/isomorphic/urlMatch.js +112 -67
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +97 -443
- package/lib/utilsBundle.js +101 -52
- package/lib/vite/htmlReport/index.html +21 -15
- package/lib/vite/recorder/assets/{codeMirrorModule-B9YMkrwa.js → codeMirrorModule-DVQi6prl.js} +1 -1
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-1DiydmYA.js → codeMirrorModule-dvXVzLxY.js} +1 -1
- package/lib/vite/traceViewer/assets/defaultSettingsView-BjymbO6M.js +265 -0
- package/lib/vite/traceViewer/{defaultSettingsView.5fN5lw10.css → defaultSettingsView.QdHITyLI.css} +1 -1
- package/lib/vite/traceViewer/index.ChIUCJnj.js +2 -0
- package/lib/vite/traceViewer/index.html +3 -3
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/vite/traceViewer/uiMode.jUCiCtdp.js +5 -0
- package/lib/zipBundle.js +32 -23
- package/package.json +1 -1
- package/types/protocol.d.ts +436 -17
- package/types/types.d.ts +35 -16
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -229
- package/lib/vite/recorder/assets/index-ELPgmkwA.js +0 -184
- package/lib/vite/traceViewer/assets/defaultSettingsView-l0TyP_G8.js +0 -259
- package/lib/vite/traceViewer/index.BqUZLSro.js +0 -2
- package/lib/vite/traceViewer/uiMode.C1d2m5sF.js +0 -5
|
@@ -1,59 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var inMemorySnapshotter_exports = {};
|
|
20
|
+
__export(inMemorySnapshotter_exports, {
|
|
21
|
+
InMemorySnapshotter: () => InMemorySnapshotter
|
|
5
22
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
/**
|
|
12
|
-
* Copyright (c) Microsoft Corporation.
|
|
13
|
-
*
|
|
14
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15
|
-
* you may not use this file except in compliance with the License.
|
|
16
|
-
* You may obtain a copy of the License at
|
|
17
|
-
*
|
|
18
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
19
|
-
*
|
|
20
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
21
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23
|
-
* See the License for the specific language governing permissions and
|
|
24
|
-
* limitations under the License.
|
|
25
|
-
*/
|
|
26
|
-
|
|
23
|
+
module.exports = __toCommonJS(inMemorySnapshotter_exports);
|
|
24
|
+
var import_snapshotStorage = require("../../../../../trace-viewer/src/sw/snapshotStorage");
|
|
25
|
+
var import_utils = require("../../../utils");
|
|
26
|
+
var import_harTracer = require("../../har/harTracer");
|
|
27
|
+
var import_snapshotter = require("../recorder/snapshotter");
|
|
27
28
|
class InMemorySnapshotter {
|
|
28
29
|
constructor(context) {
|
|
29
|
-
this._blobs = new Map();
|
|
30
|
-
this.
|
|
31
|
-
this._harTracer = void 0;
|
|
32
|
-
this._snapshotReadyPromises = new Map();
|
|
33
|
-
this._storage = void 0;
|
|
30
|
+
this._blobs = /* @__PURE__ */ new Map();
|
|
31
|
+
this._snapshotReadyPromises = /* @__PURE__ */ new Map();
|
|
34
32
|
this._snapshotCount = 0;
|
|
35
|
-
this._snapshotter = new
|
|
36
|
-
this._harTracer = new
|
|
37
|
-
|
|
38
|
-
includeTraceInfo: true,
|
|
39
|
-
recordRequestOverrides: false,
|
|
40
|
-
waitForContentOnStop: false
|
|
41
|
-
});
|
|
42
|
-
this._storage = new _snapshotStorage.SnapshotStorage();
|
|
33
|
+
this._snapshotter = new import_snapshotter.Snapshotter(context, this);
|
|
34
|
+
this._harTracer = new import_harTracer.HarTracer(context, null, this, { content: "attach", includeTraceInfo: true, recordRequestOverrides: false, waitForContentOnStop: false });
|
|
35
|
+
this._storage = new import_snapshotStorage.SnapshotStorage();
|
|
43
36
|
}
|
|
44
37
|
async initialize() {
|
|
45
38
|
await this._snapshotter.start();
|
|
46
|
-
this._harTracer.start({
|
|
47
|
-
omitScripts: true
|
|
48
|
-
});
|
|
39
|
+
this._harTracer.start({ omitScripts: true });
|
|
49
40
|
}
|
|
50
41
|
async reset() {
|
|
51
42
|
await this._snapshotter.reset();
|
|
52
43
|
await this._harTracer.flush();
|
|
53
44
|
this._harTracer.stop();
|
|
54
|
-
this._harTracer.start({
|
|
55
|
-
omitScripts: true
|
|
56
|
-
});
|
|
45
|
+
this._harTracer.start({ omitScripts: true });
|
|
57
46
|
}
|
|
58
47
|
async dispose() {
|
|
59
48
|
this._snapshotter.dispose();
|
|
@@ -61,15 +50,18 @@ class InMemorySnapshotter {
|
|
|
61
50
|
this._harTracer.stop();
|
|
62
51
|
}
|
|
63
52
|
async captureSnapshot(page, callId, snapshotName) {
|
|
64
|
-
if (this._snapshotReadyPromises.has(snapshotName))
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
if (this._snapshotReadyPromises.has(snapshotName))
|
|
54
|
+
throw new Error("Duplicate snapshot name: " + snapshotName);
|
|
55
|
+
this._snapshotter.captureSnapshot(page, callId, snapshotName).catch(() => {
|
|
56
|
+
});
|
|
57
|
+
const promise = new import_utils.ManualPromise();
|
|
67
58
|
this._snapshotReadyPromises.set(snapshotName, promise);
|
|
68
59
|
return promise;
|
|
69
60
|
}
|
|
70
|
-
onEntryStarted(entry) {
|
|
61
|
+
onEntryStarted(entry) {
|
|
62
|
+
}
|
|
71
63
|
onEntryFinished(entry) {
|
|
72
|
-
this._storage.addResource(
|
|
64
|
+
this._storage.addResource("", entry);
|
|
73
65
|
}
|
|
74
66
|
onContentBlob(sha1, buffer) {
|
|
75
67
|
this._blobs.set(sha1, buffer);
|
|
@@ -78,10 +70,9 @@ class InMemorySnapshotter {
|
|
|
78
70
|
this._blobs.set(blob.sha1, blob.buffer);
|
|
79
71
|
}
|
|
80
72
|
onFrameSnapshot(snapshot) {
|
|
81
|
-
var _this$_snapshotReadyP;
|
|
82
73
|
++this._snapshotCount;
|
|
83
|
-
const renderer = this._storage.addFrameSnapshot(
|
|
84
|
-
|
|
74
|
+
const renderer = this._storage.addFrameSnapshot("", snapshot, []);
|
|
75
|
+
this._snapshotReadyPromises.get(snapshot.snapshotName || "")?.resolve(renderer);
|
|
85
76
|
}
|
|
86
77
|
async resourceContentForTest(sha1) {
|
|
87
78
|
return this._blobs.get(sha1);
|
|
@@ -90,4 +81,7 @@ class InMemorySnapshotter {
|
|
|
90
81
|
return this._snapshotCount;
|
|
91
82
|
}
|
|
92
83
|
}
|
|
93
|
-
|
|
84
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
+
0 && (module.exports = {
|
|
86
|
+
InMemorySnapshotter
|
|
87
|
+
});
|
|
@@ -1,116 +1,138 @@
|
|
|
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 traceViewer_exports = {};
|
|
30
|
+
__export(traceViewer_exports, {
|
|
31
|
+
installRootRedirect: () => installRootRedirect,
|
|
32
|
+
openTraceInBrowser: () => openTraceInBrowser,
|
|
33
|
+
openTraceViewerApp: () => openTraceViewerApp,
|
|
34
|
+
runTraceInBrowser: () => runTraceInBrowser,
|
|
35
|
+
runTraceViewerApp: () => runTraceViewerApp,
|
|
36
|
+
startTraceViewerServer: () => startTraceViewerServer
|
|
5
37
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var _launchApp = require("../../launchApp");
|
|
19
|
-
var _playwright = require("../../playwright");
|
|
20
|
-
var _progress = require("../../progress");
|
|
21
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
|
-
/**
|
|
23
|
-
* Copyright (c) Microsoft Corporation.
|
|
24
|
-
*
|
|
25
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
26
|
-
* you may not use this file except in compliance with the License.
|
|
27
|
-
* You may obtain a copy of the License at
|
|
28
|
-
*
|
|
29
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
30
|
-
*
|
|
31
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
32
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
33
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
34
|
-
* See the License for the specific language governing permissions and
|
|
35
|
-
* limitations under the License.
|
|
36
|
-
*/
|
|
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_instrumentation = require("../../instrumentation");
|
|
46
|
+
var import_launchApp = require("../../launchApp");
|
|
47
|
+
var import_launchApp2 = require("../../launchApp");
|
|
48
|
+
var import_playwright = require("../../playwright");
|
|
49
|
+
var import_progress = require("../../progress");
|
|
38
50
|
function validateTraceUrls(traceUrls) {
|
|
39
51
|
for (const traceUrl of traceUrls) {
|
|
40
52
|
let traceFile = traceUrl;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (!traceUrl.startsWith(
|
|
53
|
+
if (traceUrl.endsWith(".json"))
|
|
54
|
+
traceFile = traceUrl.substring(0, traceUrl.length - ".json".length);
|
|
55
|
+
if (!traceUrl.startsWith("http://") && !traceUrl.startsWith("https://") && !import_fs.default.existsSync(traceFile) && !import_fs.default.existsSync(traceFile + ".trace"))
|
|
56
|
+
throw new Error(`Trace file ${traceUrl} does not exist!`);
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
async function startTraceViewerServer(options) {
|
|
47
|
-
const server = new
|
|
48
|
-
server.routePrefix(
|
|
49
|
-
const url = new URL(
|
|
50
|
-
const relativePath = url.pathname.slice(
|
|
60
|
+
const server = new import_httpServer.HttpServer();
|
|
61
|
+
server.routePrefix("/trace", (request, response) => {
|
|
62
|
+
const url = new URL("http://localhost" + request.url);
|
|
63
|
+
const relativePath = url.pathname.slice("/trace".length);
|
|
51
64
|
if (process.env.PW_HMR) {
|
|
52
|
-
|
|
53
|
-
response.appendHeader('Access-Control-Allow-Origin', 'http://localhost:44223');
|
|
65
|
+
response.appendHeader("Access-Control-Allow-Origin", "http://localhost:44223");
|
|
54
66
|
}
|
|
55
|
-
if (relativePath.endsWith(
|
|
56
|
-
|
|
67
|
+
if (relativePath.endsWith("/stall.js"))
|
|
68
|
+
return true;
|
|
69
|
+
if (relativePath.startsWith("/file")) {
|
|
57
70
|
try {
|
|
58
|
-
const filePath = url.searchParams.get(
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const traceName = filePath.substring(0, filePath.length - '.json'.length);
|
|
71
|
+
const filePath = url.searchParams.get("path");
|
|
72
|
+
if (import_fs.default.existsSync(filePath))
|
|
73
|
+
return server.serveFile(request, response, url.searchParams.get("path"));
|
|
74
|
+
if (filePath.endsWith(".json")) {
|
|
75
|
+
const traceName = filePath.substring(0, filePath.length - ".json".length);
|
|
64
76
|
response.statusCode = 200;
|
|
65
|
-
response.setHeader(
|
|
77
|
+
response.setHeader("Content-Type", "application/json");
|
|
66
78
|
response.end(JSON.stringify(traceDescriptor(traceName)));
|
|
67
79
|
return true;
|
|
68
80
|
}
|
|
69
|
-
} catch (e) {
|
|
81
|
+
} catch (e) {
|
|
82
|
+
}
|
|
70
83
|
response.statusCode = 404;
|
|
71
84
|
response.end();
|
|
72
85
|
return true;
|
|
73
86
|
}
|
|
74
|
-
const absolutePath =
|
|
87
|
+
const absolutePath = import_path.default.join(__dirname, "..", "..", "..", "vite", "traceViewer", ...relativePath.split("/"));
|
|
75
88
|
return server.serveFile(request, response, absolutePath);
|
|
76
89
|
});
|
|
77
|
-
const transport =
|
|
78
|
-
if (transport)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} = options || {};
|
|
83
|
-
await server.start({
|
|
84
|
-
preferredPort: port,
|
|
85
|
-
host
|
|
86
|
-
});
|
|
90
|
+
const transport = options?.transport || (options?.isServer ? new StdinServer() : void 0);
|
|
91
|
+
if (transport)
|
|
92
|
+
server.createWebSocket(transport);
|
|
93
|
+
const { host, port } = options || {};
|
|
94
|
+
await server.start({ preferredPort: port, host });
|
|
87
95
|
return server;
|
|
88
96
|
}
|
|
89
97
|
async function installRootRedirect(server, traceUrls, options) {
|
|
90
98
|
const params = new URLSearchParams();
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (
|
|
96
|
-
|
|
97
|
-
if (options
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
if (import_path.default.sep !== import_path.default.posix.sep)
|
|
100
|
+
params.set("pathSeparator", import_path.default.sep);
|
|
101
|
+
for (const traceUrl of traceUrls)
|
|
102
|
+
params.append("trace", traceUrl);
|
|
103
|
+
if (server.wsGuid())
|
|
104
|
+
params.append("ws", server.wsGuid());
|
|
105
|
+
if (options?.isServer)
|
|
106
|
+
params.append("isServer", "");
|
|
107
|
+
if ((0, import_utils2.isUnderTest)())
|
|
108
|
+
params.append("isUnderTest", "true");
|
|
109
|
+
for (const arg of options.args || [])
|
|
110
|
+
params.append("arg", arg);
|
|
111
|
+
if (options.grep)
|
|
112
|
+
params.append("grep", options.grep);
|
|
113
|
+
if (options.grepInvert)
|
|
114
|
+
params.append("grepInvert", options.grepInvert);
|
|
115
|
+
for (const project of options.project || [])
|
|
116
|
+
params.append("project", project);
|
|
117
|
+
for (const reporter of options.reporter || [])
|
|
118
|
+
params.append("reporter", reporter);
|
|
119
|
+
let baseUrl = ".";
|
|
102
120
|
if (process.env.PW_HMR) {
|
|
103
|
-
baseUrl =
|
|
104
|
-
params.set(
|
|
121
|
+
baseUrl = "http://localhost:44223";
|
|
122
|
+
params.set("server", server.urlPrefix("precise"));
|
|
105
123
|
}
|
|
106
|
-
const urlPath = `${baseUrl}/trace/${options.webApp ||
|
|
107
|
-
server.routePath(
|
|
124
|
+
const urlPath = `${baseUrl}/trace/${options.webApp || "index.html"}?${params.toString()}`;
|
|
125
|
+
server.routePath("/", (_, response) => {
|
|
108
126
|
response.statusCode = 302;
|
|
109
|
-
response.setHeader(
|
|
110
|
-
if (process.env.EXPERIMENTAL_OPENAI_API_KEY)
|
|
111
|
-
|
|
112
|
-
if (process.env.
|
|
113
|
-
|
|
127
|
+
response.setHeader("Location", urlPath);
|
|
128
|
+
if (process.env.EXPERIMENTAL_OPENAI_API_KEY)
|
|
129
|
+
response.appendHeader("Set-Cookie", `openai_api_key=${process.env.EXPERIMENTAL_OPENAI_API_KEY}`);
|
|
130
|
+
if (process.env.OPENAI_BASE_URL)
|
|
131
|
+
response.appendHeader("Set-Cookie", `openai_base_url=${process.env.OPENAI_BASE_URL}`);
|
|
132
|
+
if (process.env.EXPERIMENTAL_ANTHROPIC_API_KEY)
|
|
133
|
+
response.appendHeader("Set-Cookie", `anthropic_api_key=${process.env.EXPERIMENTAL_ANTHROPIC_API_KEY}`);
|
|
134
|
+
if (process.env.ANTHROPIC_BASE_URL)
|
|
135
|
+
response.appendHeader("Set-Cookie", `anthropic_base_url=${process.env.ANTHROPIC_BASE_URL}`);
|
|
114
136
|
response.end();
|
|
115
137
|
return true;
|
|
116
138
|
});
|
|
@@ -119,83 +141,78 @@ async function runTraceViewerApp(traceUrls, browserName, options, exitOnClose) {
|
|
|
119
141
|
validateTraceUrls(traceUrls);
|
|
120
142
|
const server = await startTraceViewerServer(options);
|
|
121
143
|
await installRootRedirect(server, traceUrls, options);
|
|
122
|
-
const page = await openTraceViewerApp(server.urlPrefix(
|
|
123
|
-
if (exitOnClose)
|
|
144
|
+
const page = await openTraceViewerApp(server.urlPrefix("precise"), browserName, options);
|
|
145
|
+
if (exitOnClose)
|
|
146
|
+
page.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
124
147
|
return page;
|
|
125
148
|
}
|
|
126
149
|
async function runTraceInBrowser(traceUrls, options) {
|
|
127
150
|
validateTraceUrls(traceUrls);
|
|
128
151
|
const server = await startTraceViewerServer(options);
|
|
129
152
|
await installRootRedirect(server, traceUrls, options);
|
|
130
|
-
await openTraceInBrowser(server.urlPrefix(
|
|
153
|
+
await openTraceInBrowser(server.urlPrefix("human-readable"));
|
|
131
154
|
}
|
|
132
155
|
async function openTraceViewerApp(url, browserName, options) {
|
|
133
|
-
const traceViewerPlaywright = (0,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
});
|
|
137
|
-
const traceViewerBrowser = (0, _utils.isUnderTest)() ? 'chromium' : browserName;
|
|
138
|
-
const {
|
|
139
|
-
context,
|
|
140
|
-
page
|
|
141
|
-
} = await (0, _launchApp.launchApp)(traceViewerPlaywright[traceViewerBrowser], {
|
|
156
|
+
const traceViewerPlaywright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isInternalPlaywright: true });
|
|
157
|
+
const traceViewerBrowser = (0, import_utils2.isUnderTest)() ? "chromium" : browserName;
|
|
158
|
+
const { context, page } = await (0, import_launchApp2.launchApp)(traceViewerPlaywright[traceViewerBrowser], {
|
|
142
159
|
// TODO: store language in the trace.
|
|
143
160
|
sdkLanguage: traceViewerPlaywright.options.sdkLanguage,
|
|
144
|
-
windowSize: {
|
|
145
|
-
width: 1280,
|
|
146
|
-
height: 800
|
|
147
|
-
},
|
|
161
|
+
windowSize: { width: 1280, height: 800 },
|
|
148
162
|
persistentContextOptions: {
|
|
149
|
-
...
|
|
150
|
-
useWebSocket: (0,
|
|
151
|
-
headless: !!
|
|
152
|
-
colorScheme: (0,
|
|
163
|
+
...options?.persistentContextOptions,
|
|
164
|
+
useWebSocket: (0, import_utils2.isUnderTest)(),
|
|
165
|
+
headless: !!options?.headless,
|
|
166
|
+
colorScheme: (0, import_utils2.isUnderTest)() ? "light" : void 0
|
|
153
167
|
}
|
|
154
168
|
});
|
|
155
|
-
const controller = new
|
|
156
|
-
await controller.run(async progress => {
|
|
169
|
+
const controller = new import_progress.ProgressController((0, import_instrumentation.serverSideCallMetadata)(), context._browser);
|
|
170
|
+
await controller.run(async (progress) => {
|
|
157
171
|
await context._browser._defaultContext._loadDefaultContextAsIs(progress);
|
|
158
172
|
});
|
|
159
|
-
if (process.env.PWTEST_PRINT_WS_ENDPOINT)
|
|
160
|
-
|
|
161
|
-
if ((0,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
173
|
+
if (process.env.PWTEST_PRINT_WS_ENDPOINT)
|
|
174
|
+
process.stderr.write("DevTools listening on: " + context._browser.options.wsEndpoint + "\n");
|
|
175
|
+
if (!(0, import_utils2.isUnderTest)())
|
|
176
|
+
await (0, import_launchApp.syncLocalStorageWithSettings)(page, "traceviewer");
|
|
177
|
+
if ((0, import_utils2.isUnderTest)())
|
|
178
|
+
page.on("close", () => context.close({ reason: "Trace viewer closed" }).catch(() => {
|
|
179
|
+
}));
|
|
180
|
+
await page.mainFrame().goto((0, import_instrumentation.serverSideCallMetadata)(), url);
|
|
165
181
|
return page;
|
|
166
182
|
}
|
|
167
183
|
async function openTraceInBrowser(url) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
184
|
+
console.log("\nListening on " + url);
|
|
185
|
+
if (!(0, import_utils2.isUnderTest)())
|
|
186
|
+
await (0, import_utilsBundle.open)(url.replace("0.0.0.0", "localhost")).catch(() => {
|
|
187
|
+
});
|
|
171
188
|
}
|
|
172
189
|
class StdinServer {
|
|
173
190
|
constructor() {
|
|
174
|
-
|
|
175
|
-
this._traceUrl = void 0;
|
|
176
|
-
this.sendEvent = void 0;
|
|
177
|
-
this.close = void 0;
|
|
178
|
-
process.stdin.on('data', data => {
|
|
191
|
+
process.stdin.on("data", (data) => {
|
|
179
192
|
const url = data.toString().trim();
|
|
180
|
-
if (url === this._traceUrl)
|
|
181
|
-
|
|
193
|
+
if (url === this._traceUrl)
|
|
194
|
+
return;
|
|
195
|
+
if (url.endsWith(".json"))
|
|
196
|
+
this._pollLoadTrace(url);
|
|
197
|
+
else
|
|
198
|
+
this._loadTrace(url);
|
|
182
199
|
});
|
|
183
|
-
process.stdin.on(
|
|
200
|
+
process.stdin.on("close", () => (0, import_utils.gracefullyProcessExitDoNotHang)(0));
|
|
201
|
+
}
|
|
202
|
+
onconnect() {
|
|
184
203
|
}
|
|
185
|
-
onconnect() {}
|
|
186
204
|
async dispatch(method, params) {
|
|
187
|
-
if (method ===
|
|
188
|
-
if (this._traceUrl)
|
|
205
|
+
if (method === "initialize") {
|
|
206
|
+
if (this._traceUrl)
|
|
207
|
+
this._loadTrace(this._traceUrl);
|
|
189
208
|
}
|
|
190
209
|
}
|
|
191
|
-
onclose() {
|
|
210
|
+
onclose() {
|
|
211
|
+
}
|
|
192
212
|
_loadTrace(traceUrl) {
|
|
193
|
-
var _this$sendEvent;
|
|
194
213
|
this._traceUrl = traceUrl;
|
|
195
214
|
clearTimeout(this._pollTimer);
|
|
196
|
-
|
|
197
|
-
traceUrl
|
|
198
|
-
});
|
|
215
|
+
this.sendEvent?.("loadTraceRequested", { traceUrl });
|
|
199
216
|
}
|
|
200
217
|
_pollLoadTrace(url) {
|
|
201
218
|
this._loadTrace(url);
|
|
@@ -208,20 +225,25 @@ function traceDescriptor(traceName) {
|
|
|
208
225
|
const result = {
|
|
209
226
|
entries: []
|
|
210
227
|
};
|
|
211
|
-
const traceDir =
|
|
212
|
-
const traceFile =
|
|
213
|
-
for (const name of
|
|
214
|
-
if (name.startsWith(traceFile))
|
|
215
|
-
name,
|
|
216
|
-
path: _path.default.join(traceDir, name)
|
|
217
|
-
});
|
|
228
|
+
const traceDir = import_path.default.dirname(traceName);
|
|
229
|
+
const traceFile = import_path.default.basename(traceName);
|
|
230
|
+
for (const name of import_fs.default.readdirSync(traceDir)) {
|
|
231
|
+
if (name.startsWith(traceFile))
|
|
232
|
+
result.entries.push({ name, path: import_path.default.join(traceDir, name) });
|
|
218
233
|
}
|
|
219
|
-
const resourcesDir =
|
|
220
|
-
if (
|
|
221
|
-
for (const name of
|
|
222
|
-
name:
|
|
223
|
-
path: _path.default.join(resourcesDir, name)
|
|
224
|
-
});
|
|
234
|
+
const resourcesDir = import_path.default.join(traceDir, "resources");
|
|
235
|
+
if (import_fs.default.existsSync(resourcesDir)) {
|
|
236
|
+
for (const name of import_fs.default.readdirSync(resourcesDir))
|
|
237
|
+
result.entries.push({ name: "resources/" + name, path: import_path.default.join(resourcesDir, name) });
|
|
225
238
|
}
|
|
226
239
|
return result;
|
|
227
|
-
}
|
|
240
|
+
}
|
|
241
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
242
|
+
0 && (module.exports = {
|
|
243
|
+
installRootRedirect,
|
|
244
|
+
openTraceInBrowser,
|
|
245
|
+
openTraceViewerApp,
|
|
246
|
+
runTraceInBrowser,
|
|
247
|
+
runTraceViewerApp,
|
|
248
|
+
startTraceViewerServer
|
|
249
|
+
});
|