@checkly/playwright-core 1.48.22-beta → 1.48.22
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/lib/server/trace/recorder/tracing.js +2 -2
- package/lib/vite/recorder/assets/{codeMirrorModule-CR6kB851.js → codeMirrorModule-d0KhC1qL.js} +10 -10
- package/lib/vite/recorder/assets/{index-BcaUAUCW.js → index-Bxxcmxlu.js} +2 -2
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/codeMirrorModule-pBPtArIT.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-tzBrK1V4.js +24 -0
- package/lib/vite/traceViewer/assets/{inspectorTab-BPzhNk9r.js → inspectorTab-BuJ3wAX_.js} +3 -3
- package/lib/vite/traceViewer/assets/inspectorTab-Soeeuvzv.js +64 -0
- package/lib/vite/traceViewer/assets/{workbench-DLv_q9ji.js → workbench-DdmJ9AJV.js} +1 -1
- package/lib/vite/traceViewer/assets/workbench-lypYlf00.js +9 -0
- package/lib/vite/traceViewer/{embedded.BIubxTi3.js → embedded.BkvOrz5Z.js} +1 -1
- package/lib/vite/traceViewer/embedded.DInvAijy.js +2 -0
- package/lib/vite/traceViewer/embedded.html +3 -3
- package/lib/vite/traceViewer/{index.DPD22sZn.js → index.Dha3cgqs.js} +1 -1
- package/lib/vite/traceViewer/index._Iolt-uE.js +2 -0
- package/lib/vite/traceViewer/index.html +3 -3
- package/lib/vite/traceViewer/{recorder.BaRuS6Pc.js → recorder.DNMfnSiu.js} +1 -1
- package/lib/vite/traceViewer/recorder.DTSaNaly.js +2 -0
- package/lib/vite/traceViewer/recorder.html +2 -2
- package/lib/vite/traceViewer/{uiMode.B11wexdJ.js → uiMode.BM7yhjzl.js} +1 -1
- package/lib/vite/traceViewer/uiMode.Cr1tvTWS.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/package.json +1 -1
- package/lib/cli/cli.js +0 -61
- package/lib/common/debugLogger.js +0 -90
- package/lib/generated/recorderSource.js +0 -7
- package/lib/server/recorder/codeGenerator.js +0 -154
- package/lib/server/recorder/csharp.js +0 -311
- package/lib/server/recorder/java.js +0 -217
- package/lib/server/recorder/javascript.js +0 -230
- package/lib/server/recorder/jsonl.js +0 -48
- package/lib/server/recorder/language.js +0 -45
- package/lib/server/recorder/python.js +0 -276
- package/lib/server/recorder/recorderActions.js +0 -6
- package/lib/server/recorder/utils.js +0 -46
- package/lib/utils/glob.js +0 -84
- package/lib/utils/mimeType.js +0 -30
- package/lib/vite/traceViewer/assets/codeMirrorModule-75b0ca4f.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-BTYWvxEC.js +0 -16437
- package/lib/vite/traceViewer/assets/codeMirrorModule-CNHvVrFd.js +0 -16437
- package/lib/vite/traceViewer/assets/codeMirrorModule-CpGx_S8D.js +0 -16443
- package/lib/vite/traceViewer/assets/codeMirrorModule-DGE2kpkE.js +0 -16443
- package/lib/vite/traceViewer/assets/codeMirrorModule-DblsdhjA.js +0 -16449
- package/lib/vite/traceViewer/assets/codeMirrorModule-DtXZtbmO.js +0 -16437
- package/lib/vite/traceViewer/assets/codeMirrorModule-SomGa-Da.js +0 -16443
- package/lib/vite/traceViewer/assets/codeMirrorModule-c1454a2e.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-c9bb9834.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-cc2329e4.js +0 -15593
- package/lib/vite/traceViewer/assets/codeMirrorModule-d2cc7db0.js +0 -15579
- package/lib/vite/traceViewer/assets/codeMirrorModule-da915a35.js +0 -15586
- package/lib/vite/traceViewer/assets/codeMirrorModule-f03b1a3e.js +0 -15579
- package/lib/vite/traceViewer/assets/codeMirrorModule-f333a775.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-lDjkI8Ax.js +0 -24
- package/lib/vite/traceViewer/assets/codeMirrorModule-uWDlVSQz.js +0 -15585
- package/lib/vite/traceViewer/assets/codeMirrorModule-yboVpgC0.js +0 -15592
- package/lib/vite/traceViewer/assets/inspectorTab-B4ynvyY9.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-BB2Bm-wy.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-CHcHvp_a.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-C_OTuI8x.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-DOc4D3cX.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-Dw0Gnh1T.js +0 -17361
- package/lib/vite/traceViewer/assets/inspectorTab-Ywa000c9.js +0 -17361
- package/lib/vite/traceViewer/assets/testServerConnection-D-tXL3sj.js +0 -224
- package/lib/vite/traceViewer/assets/workbench-CROk6Fcc.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-CWtpwfKK.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-CfXOj3eT.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-D9CTkv-4.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-DNolpp3y.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-DjoIOtwK.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-M-Dh_RgU.js +0 -1473
- package/lib/vite/traceViewer/assets/workbench-dnZM5a7x.js +0 -1473
- package/lib/vite/traceViewer/assets/wsPort-54626118.js +0 -18361
- package/lib/vite/traceViewer/assets/wsPort-57f274c6.js +0 -18361
- package/lib/vite/traceViewer/assets/wsPort-762c6840.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-85286e61.js +0 -18361
- package/lib/vite/traceViewer/assets/wsPort-98e00a94.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-CAXygIGt.js +0 -18540
- package/lib/vite/traceViewer/assets/wsPort-cc0077b5.js +0 -18542
- package/lib/vite/traceViewer/assets/wsPort-edfeeb7d.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-ee2830d7.js +0 -64
- package/lib/vite/traceViewer/assets/wsPort-peeLnQhT.js +0 -18564
- package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +0 -9
- package/lib/vite/traceViewer/assets/xtermModule-60687b6b.js +0 -6410
- package/lib/vite/traceViewer/assets/xtermModule-DZP0glxx.js +0 -5982
- package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +0 -6529
- package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +0 -1
- package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +0 -344
- package/lib/vite/traceViewer/codeMirrorModule.eb494ea9.css +0 -344
- package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +0 -344
- package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
- package/lib/vite/traceViewer/codicon.zGuYmc9o.ttf +0 -0
- package/lib/vite/traceViewer/embedded.6N1v7bZ1.js +0 -106
- package/lib/vite/traceViewer/embedded.BaqdbLsy.js +0 -106
- package/lib/vite/traceViewer/embedded.CHH7D63q.js +0 -106
- package/lib/vite/traceViewer/embedded.CwwTDBzP.js +0 -106
- package/lib/vite/traceViewer/embedded.DeCrOtlO.js +0 -106
- package/lib/vite/traceViewer/embedded.DjZq4InJ.css +0 -68
- package/lib/vite/traceViewer/embedded.DnD_eIZU.js +0 -106
- package/lib/vite/traceViewer/embedded.i_k4ceMJ.js +0 -106
- package/lib/vite/traceViewer/embedded.ymLJ2mBS.js +0 -106
- package/lib/vite/traceViewer/index.1a1fe659.css +0 -1
- package/lib/vite/traceViewer/index.1b525c1c.js +0 -181
- package/lib/vite/traceViewer/index.55e65778.js +0 -181
- package/lib/vite/traceViewer/index.5mge2rY_.css +0 -124
- package/lib/vite/traceViewer/index.5nqVcfiC.js +0 -180
- package/lib/vite/traceViewer/index.5ooko4n7.js +0 -180
- package/lib/vite/traceViewer/index.76e9f312.css +0 -124
- package/lib/vite/traceViewer/index.Bfh46hDK.js +0 -197
- package/lib/vite/traceViewer/index.Bugo2TbS.js +0 -197
- package/lib/vite/traceViewer/index.BzvnAP7t.js +0 -197
- package/lib/vite/traceViewer/index.C8ZWP1Qw.js +0 -197
- package/lib/vite/traceViewer/index.CM_h9lHr.js +0 -197
- package/lib/vite/traceViewer/index.CY13pBr8.js +0 -197
- package/lib/vite/traceViewer/index.DblJtEW_.js +0 -197
- package/lib/vite/traceViewer/index.QanXxRUb.css +0 -131
- package/lib/vite/traceViewer/index.UtHmfPiA.js +0 -197
- package/lib/vite/traceViewer/index.a265fbdb.js +0 -2
- package/lib/vite/traceViewer/index.c9f6fa8f.js +0 -2
- package/lib/vite/traceViewer/index.d86e70ca.js +0 -181
- package/lib/vite/traceViewer/index.decad628.js +0 -2
- package/lib/vite/traceViewer/index.e8730524.js +0 -181
- package/lib/vite/traceViewer/index.ed9a3c58.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DGJWXOSd.css +0 -3145
- package/lib/vite/traceViewer/recorder.3Xfrl_zV.js +0 -551
- package/lib/vite/traceViewer/recorder.BHq8OXiu.js +0 -551
- package/lib/vite/traceViewer/recorder.BWH6blRw.js +0 -551
- package/lib/vite/traceViewer/recorder.DBDpiNOK.css +0 -15
- package/lib/vite/traceViewer/recorder.Db1aK_DY.js +0 -551
- package/lib/vite/traceViewer/recorder.Fwf59ZKh.js +0 -551
- package/lib/vite/traceViewer/recorder.uj3cfoMf.js +0 -551
- package/lib/vite/traceViewer/recorder.zV_xPHM4.js +0 -551
- package/lib/vite/traceViewer/uiMode.08ab2d90.js +0 -4
- package/lib/vite/traceViewer/uiMode.0d0d667b.js +0 -4
- package/lib/vite/traceViewer/uiMode.216233d5.js +0 -1484
- package/lib/vite/traceViewer/uiMode.2c31018f.css +0 -1324
- package/lib/vite/traceViewer/uiMode.3ff70f7d.js +0 -4
- package/lib/vite/traceViewer/uiMode.4d0a45af.js +0 -1484
- package/lib/vite/traceViewer/uiMode.66eb0ce2.js +0 -1484
- package/lib/vite/traceViewer/uiMode.8b41a49d.css +0 -1
- package/lib/vite/traceViewer/uiMode.8d080c01.js +0 -1486
- package/lib/vite/traceViewer/uiMode.BH2Nj2h0.js +0 -1724
- package/lib/vite/traceViewer/uiMode.BKrDfnAk.js +0 -1725
- package/lib/vite/traceViewer/uiMode.BMYUvsRh.js +0 -1725
- package/lib/vite/traceViewer/uiMode.BVpTBGoe.js +0 -1724
- package/lib/vite/traceViewer/uiMode.BWhJCEE9.js +0 -1725
- package/lib/vite/traceViewer/uiMode.Bg9fACTB.js +0 -1725
- package/lib/vite/traceViewer/uiMode.CBRJkC_K.js +0 -1724
- package/lib/vite/traceViewer/uiMode.CYBsUhm_.js +0 -1724
- package/lib/vite/traceViewer/uiMode.DCSdxlAq.js +0 -1724
- package/lib/vite/traceViewer/uiMode.DRmgrHSk.css +0 -1462
- package/lib/vite/traceViewer/uiMode.DtleKuGI.js +0 -1724
- package/lib/vite/traceViewer/uiMode.UamAvOMX.js +0 -1725
- package/lib/vite/traceViewer/uiMode._Kp3dUXk.js +0 -1724
- package/lib/vite/traceViewer/uiMode.bBcXYWNF.js +0 -1725
- package/lib/vite/traceViewer/uiMode.ca6ec898.js +0 -4
- package/lib/vite/traceViewer/uiMode.e-PLonGl.js +0 -1490
- package/lib/vite/traceViewer/uiMode.e_-GuqEi.js +0 -1725
- package/lib/vite/traceViewer/uiMode.f1YADWIl.js +0 -1724
- package/lib/vite/traceViewer/uiMode.kHsXCfV8.js +0 -1490
- package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +0 -1324
- package/lib/vite/traceViewer/workbench.9Es1K_T7.css +0 -549
- package/lib/vite/traceViewer/workbench.BQNDbcQ0.css +0 -550
- package/lib/vite/traceViewer/wsPort.162042f9.css +0 -3450
- package/lib/vite/traceViewer/wsPort.997c92cf.css +0 -3513
- package/lib/vite/traceViewer/wsPort.9c9a6767.css +0 -1
- package/lib/vite/traceViewer/wsPort.p5jUwABW.css +0 -3450
- package/lib/vite/traceViewer/xtermModule.125f4259.css +0 -191
- package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +0 -209
- package/lib/vite/traceViewer/xtermModule.6428296b.css +0 -32
- package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +0 -209
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { M as MultiTraceModel, r as reactExports, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, a as applyTheme, c as createRoot } from "./assets/inspectorTab-DOc4D3cX.js";
|
|
2
|
-
import { W as Workbench } from "./assets/workbench-DNolpp3y.js";
|
|
3
|
-
import { T as TestServerConnection, W as WebSocketTestServerTransport } from "./assets/testServerConnection-D-tXL3sj.js";
|
|
4
|
-
const WorkbenchLoader = () => {
|
|
5
|
-
const [isServer, setIsServer] = reactExports.useState(false);
|
|
6
|
-
const [traceURLs, setTraceURLs] = reactExports.useState([]);
|
|
7
|
-
const [uploadedTraceNames, setUploadedTraceNames] = reactExports.useState([]);
|
|
8
|
-
const [model, setModel] = reactExports.useState(emptyModel);
|
|
9
|
-
const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
|
|
10
|
-
const [dragOver, setDragOver] = reactExports.useState(false);
|
|
11
|
-
const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
|
|
12
|
-
const [fileForLocalModeError, setFileForLocalModeError] = reactExports.useState(null);
|
|
13
|
-
const processTraceFiles = reactExports.useCallback((files) => {
|
|
14
|
-
const blobUrls = [];
|
|
15
|
-
const fileNames = [];
|
|
16
|
-
const url = new URL(window.location.href);
|
|
17
|
-
for (let i = 0; i < files.length; i++) {
|
|
18
|
-
const file = files.item(i);
|
|
19
|
-
if (!file)
|
|
20
|
-
continue;
|
|
21
|
-
const blobTraceURL = URL.createObjectURL(file);
|
|
22
|
-
blobUrls.push(blobTraceURL);
|
|
23
|
-
fileNames.push(file.name);
|
|
24
|
-
url.searchParams.append("trace", blobTraceURL);
|
|
25
|
-
url.searchParams.append("traceFileName", file.name);
|
|
26
|
-
}
|
|
27
|
-
const href = url.toString();
|
|
28
|
-
window.history.pushState({}, "", href);
|
|
29
|
-
setTraceURLs(blobUrls);
|
|
30
|
-
setUploadedTraceNames(fileNames);
|
|
31
|
-
setDragOver(false);
|
|
32
|
-
setProcessingErrorMessage(null);
|
|
33
|
-
}, []);
|
|
34
|
-
reactExports.useEffect(() => {
|
|
35
|
-
const listener = async (e) => {
|
|
36
|
-
var _a;
|
|
37
|
-
if (!((_a = e.clipboardData) == null ? void 0 : _a.files.length))
|
|
38
|
-
return;
|
|
39
|
-
for (const file of e.clipboardData.files) {
|
|
40
|
-
if (file.type !== "application/zip")
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
e.preventDefault();
|
|
44
|
-
processTraceFiles(e.clipboardData.files);
|
|
45
|
-
};
|
|
46
|
-
document.addEventListener("paste", listener);
|
|
47
|
-
return () => document.removeEventListener("paste", listener);
|
|
48
|
-
});
|
|
49
|
-
const handleDropEvent = reactExports.useCallback((event) => {
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
processTraceFiles(event.dataTransfer.files);
|
|
52
|
-
}, [processTraceFiles]);
|
|
53
|
-
const handleFileInputChange = reactExports.useCallback((event) => {
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
if (!event.target.files)
|
|
56
|
-
return;
|
|
57
|
-
processTraceFiles(event.target.files);
|
|
58
|
-
}, [processTraceFiles]);
|
|
59
|
-
reactExports.useEffect(() => {
|
|
60
|
-
const params = new URL(window.location.href).searchParams;
|
|
61
|
-
const newTraceURLs = params.getAll("trace");
|
|
62
|
-
setIsServer(params.has("isServer"));
|
|
63
|
-
for (const url of newTraceURLs) {
|
|
64
|
-
if (url.startsWith("file:")) {
|
|
65
|
-
setFileForLocalModeError(url || null);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (params.has("isServer")) {
|
|
70
|
-
const guid = new URLSearchParams(window.location.search).get("ws");
|
|
71
|
-
const wsURL = new URL(`../${guid}`, window.location.toString());
|
|
72
|
-
wsURL.protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
|
|
73
|
-
const testServerConnection = new TestServerConnection(new WebSocketTestServerTransport(wsURL));
|
|
74
|
-
testServerConnection.onLoadTraceRequested(async (params2) => {
|
|
75
|
-
setTraceURLs(params2.traceUrl ? [params2.traceUrl] : []);
|
|
76
|
-
setDragOver(false);
|
|
77
|
-
setProcessingErrorMessage(null);
|
|
78
|
-
});
|
|
79
|
-
testServerConnection.initialize({}).catch(() => {
|
|
80
|
-
});
|
|
81
|
-
} else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
|
|
82
|
-
setTraceURLs(newTraceURLs);
|
|
83
|
-
}
|
|
84
|
-
}, []);
|
|
85
|
-
reactExports.useEffect(() => {
|
|
86
|
-
(async () => {
|
|
87
|
-
if (traceURLs.length) {
|
|
88
|
-
const swListener = (event) => {
|
|
89
|
-
if (event.data.method === "progress")
|
|
90
|
-
setProgress(event.data.params);
|
|
91
|
-
};
|
|
92
|
-
navigator.serviceWorker.addEventListener("message", swListener);
|
|
93
|
-
setProgress({ done: 0, total: 1 });
|
|
94
|
-
const contextEntries = [];
|
|
95
|
-
for (let i = 0; i < traceURLs.length; i++) {
|
|
96
|
-
const url = traceURLs[i];
|
|
97
|
-
const params = new URLSearchParams();
|
|
98
|
-
params.set("trace", url);
|
|
99
|
-
if (uploadedTraceNames.length)
|
|
100
|
-
params.set("traceFileName", uploadedTraceNames[i]);
|
|
101
|
-
params.set("limit", String(traceURLs.length));
|
|
102
|
-
const response = await fetch(`contexts?${params.toString()}`);
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
if (!isServer)
|
|
105
|
-
setTraceURLs([]);
|
|
106
|
-
setProcessingErrorMessage((await response.json()).error);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
contextEntries.push(...await response.json());
|
|
110
|
-
}
|
|
111
|
-
navigator.serviceWorker.removeEventListener("message", swListener);
|
|
112
|
-
const model2 = new MultiTraceModel(contextEntries);
|
|
113
|
-
setProgress({ done: 0, total: 0 });
|
|
114
|
-
setModel(model2);
|
|
115
|
-
} else {
|
|
116
|
-
setModel(emptyModel);
|
|
117
|
-
}
|
|
118
|
-
})();
|
|
119
|
-
}, [isServer, traceURLs, uploadedTraceNames]);
|
|
120
|
-
const showFileUploadDropArea = !!(!isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage));
|
|
121
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
setDragOver(true);
|
|
124
|
-
}, children: [
|
|
125
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hbox header", ...showFileUploadDropArea ? { inert: "true" } : {}, children: [
|
|
126
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
|
|
127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "product", children: "Playwright" }),
|
|
128
|
-
model.title && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: model.title }),
|
|
129
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "spacer" }),
|
|
130
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
|
|
131
|
-
] }),
|
|
132
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
|
|
133
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model, inert: showFileUploadDropArea, showSettings: true }),
|
|
134
|
-
fileForLocalModeError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
135
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
|
|
136
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { paddingTop: 20 }, children: [
|
|
137
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
138
|
-
"1. Click ",
|
|
139
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: fileForLocalModeError, children: "here" }),
|
|
140
|
-
" to put your trace into the download shelf"
|
|
141
|
-
] }),
|
|
142
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
143
|
-
"2. Go to ",
|
|
144
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://trace.playwright.dev", children: "trace.playwright.dev" })
|
|
145
|
-
] }),
|
|
146
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
|
|
147
|
-
] })
|
|
148
|
-
] }),
|
|
149
|
-
showFileUploadDropArea && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "processing-error", role: "alert", children: processingErrorMessage }),
|
|
151
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", role: "heading", "aria-level": 1, children: "Drop Playwright Trace to load" }),
|
|
152
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "or" }),
|
|
153
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => {
|
|
154
|
-
const input = document.createElement("input");
|
|
155
|
-
input.type = "file";
|
|
156
|
-
input.multiple = true;
|
|
157
|
-
input.click();
|
|
158
|
-
input.addEventListener("change", (e) => handleFileInputChange(e));
|
|
159
|
-
}, type: "button", children: "Select file(s)" }),
|
|
160
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: 400 }, children: "Playwright Trace Viewer is a Progressive Web App, it does not send your trace anywhere, it opens it locally." })
|
|
161
|
-
] }),
|
|
162
|
-
isServer && !traceURLs.length && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Select test to see the trace" }) }),
|
|
163
|
-
dragOver && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164
|
-
"div",
|
|
165
|
-
{
|
|
166
|
-
className: "drop-target",
|
|
167
|
-
onDragLeave: () => {
|
|
168
|
-
setDragOver(false);
|
|
169
|
-
},
|
|
170
|
-
onDrop: (event) => handleDropEvent(event),
|
|
171
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Release to analyse the Playwright Trace" })
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] });
|
|
175
|
-
};
|
|
176
|
-
const emptyModel = new MultiTraceModel([]);
|
|
177
|
-
(async () => {
|
|
178
|
-
applyTheme();
|
|
179
|
-
if (window.location.protocol !== "file:") {
|
|
180
|
-
if (window.location.href.includes("isUnderTest=true"))
|
|
181
|
-
await new Promise((f) => setTimeout(f, 1e3));
|
|
182
|
-
if (!navigator.serviceWorker)
|
|
183
|
-
throw new Error(`Service workers are not supported.
|
|
184
|
-
Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
|
|
185
|
-
navigator.serviceWorker.register("sw.bundle.js");
|
|
186
|
-
if (!navigator.serviceWorker.controller) {
|
|
187
|
-
await new Promise((f) => {
|
|
188
|
-
navigator.serviceWorker.oncontrollerchange = () => f();
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
setInterval(function() {
|
|
192
|
-
fetch("ping");
|
|
193
|
-
}, 1e4);
|
|
194
|
-
}
|
|
195
|
-
createRoot(document.querySelector("#root")).render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}));
|
|
196
|
-
})();
|
|
197
|
-
//# sourceMappingURL=index.CM_h9lHr.js.map
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { M as MultiTraceModel, r as reactExports, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, a as applyTheme, c as createRoot } from "./assets/inspectorTab-Dw0Gnh1T.js";
|
|
2
|
-
import { W as Workbench } from "./assets/workbench-dnZM5a7x.js";
|
|
3
|
-
import { T as TestServerConnection, W as WebSocketTestServerTransport } from "./assets/testServerConnection-D-tXL3sj.js";
|
|
4
|
-
const WorkbenchLoader = () => {
|
|
5
|
-
const [isServer, setIsServer] = reactExports.useState(false);
|
|
6
|
-
const [traceURLs, setTraceURLs] = reactExports.useState([]);
|
|
7
|
-
const [uploadedTraceNames, setUploadedTraceNames] = reactExports.useState([]);
|
|
8
|
-
const [model, setModel] = reactExports.useState(emptyModel);
|
|
9
|
-
const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
|
|
10
|
-
const [dragOver, setDragOver] = reactExports.useState(false);
|
|
11
|
-
const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
|
|
12
|
-
const [fileForLocalModeError, setFileForLocalModeError] = reactExports.useState(null);
|
|
13
|
-
const processTraceFiles = reactExports.useCallback((files) => {
|
|
14
|
-
const blobUrls = [];
|
|
15
|
-
const fileNames = [];
|
|
16
|
-
const url = new URL(window.location.href);
|
|
17
|
-
for (let i = 0; i < files.length; i++) {
|
|
18
|
-
const file = files.item(i);
|
|
19
|
-
if (!file)
|
|
20
|
-
continue;
|
|
21
|
-
const blobTraceURL = URL.createObjectURL(file);
|
|
22
|
-
blobUrls.push(blobTraceURL);
|
|
23
|
-
fileNames.push(file.name);
|
|
24
|
-
url.searchParams.append("trace", blobTraceURL);
|
|
25
|
-
url.searchParams.append("traceFileName", file.name);
|
|
26
|
-
}
|
|
27
|
-
const href = url.toString();
|
|
28
|
-
window.history.pushState({}, "", href);
|
|
29
|
-
setTraceURLs(blobUrls);
|
|
30
|
-
setUploadedTraceNames(fileNames);
|
|
31
|
-
setDragOver(false);
|
|
32
|
-
setProcessingErrorMessage(null);
|
|
33
|
-
}, []);
|
|
34
|
-
reactExports.useEffect(() => {
|
|
35
|
-
const listener = async (e) => {
|
|
36
|
-
var _a;
|
|
37
|
-
if (!((_a = e.clipboardData) == null ? void 0 : _a.files.length))
|
|
38
|
-
return;
|
|
39
|
-
for (const file of e.clipboardData.files) {
|
|
40
|
-
if (file.type !== "application/zip")
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
e.preventDefault();
|
|
44
|
-
processTraceFiles(e.clipboardData.files);
|
|
45
|
-
};
|
|
46
|
-
document.addEventListener("paste", listener);
|
|
47
|
-
return () => document.removeEventListener("paste", listener);
|
|
48
|
-
});
|
|
49
|
-
const handleDropEvent = reactExports.useCallback((event) => {
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
processTraceFiles(event.dataTransfer.files);
|
|
52
|
-
}, [processTraceFiles]);
|
|
53
|
-
const handleFileInputChange = reactExports.useCallback((event) => {
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
if (!event.target.files)
|
|
56
|
-
return;
|
|
57
|
-
processTraceFiles(event.target.files);
|
|
58
|
-
}, [processTraceFiles]);
|
|
59
|
-
reactExports.useEffect(() => {
|
|
60
|
-
const params = new URL(window.location.href).searchParams;
|
|
61
|
-
const newTraceURLs = params.getAll("trace");
|
|
62
|
-
setIsServer(params.has("isServer"));
|
|
63
|
-
for (const url of newTraceURLs) {
|
|
64
|
-
if (url.startsWith("file:")) {
|
|
65
|
-
setFileForLocalModeError(url || null);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (params.has("isServer")) {
|
|
70
|
-
const guid = new URLSearchParams(window.location.search).get("ws");
|
|
71
|
-
const wsURL = new URL(`../${guid}`, window.location.toString());
|
|
72
|
-
wsURL.protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
|
|
73
|
-
const testServerConnection = new TestServerConnection(new WebSocketTestServerTransport(wsURL));
|
|
74
|
-
testServerConnection.onLoadTraceRequested(async (params2) => {
|
|
75
|
-
setTraceURLs(params2.traceUrl ? [params2.traceUrl] : []);
|
|
76
|
-
setDragOver(false);
|
|
77
|
-
setProcessingErrorMessage(null);
|
|
78
|
-
});
|
|
79
|
-
testServerConnection.initialize({}).catch(() => {
|
|
80
|
-
});
|
|
81
|
-
} else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
|
|
82
|
-
setTraceURLs(newTraceURLs);
|
|
83
|
-
}
|
|
84
|
-
}, []);
|
|
85
|
-
reactExports.useEffect(() => {
|
|
86
|
-
(async () => {
|
|
87
|
-
if (traceURLs.length) {
|
|
88
|
-
const swListener = (event) => {
|
|
89
|
-
if (event.data.method === "progress")
|
|
90
|
-
setProgress(event.data.params);
|
|
91
|
-
};
|
|
92
|
-
navigator.serviceWorker.addEventListener("message", swListener);
|
|
93
|
-
setProgress({ done: 0, total: 1 });
|
|
94
|
-
const contextEntries = [];
|
|
95
|
-
for (let i = 0; i < traceURLs.length; i++) {
|
|
96
|
-
const url = traceURLs[i];
|
|
97
|
-
const params = new URLSearchParams();
|
|
98
|
-
params.set("trace", url);
|
|
99
|
-
if (uploadedTraceNames.length)
|
|
100
|
-
params.set("traceFileName", uploadedTraceNames[i]);
|
|
101
|
-
params.set("limit", String(traceURLs.length));
|
|
102
|
-
const response = await fetch(`contexts?${params.toString()}`);
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
if (!isServer)
|
|
105
|
-
setTraceURLs([]);
|
|
106
|
-
setProcessingErrorMessage((await response.json()).error);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
contextEntries.push(...await response.json());
|
|
110
|
-
}
|
|
111
|
-
navigator.serviceWorker.removeEventListener("message", swListener);
|
|
112
|
-
const model2 = new MultiTraceModel(contextEntries);
|
|
113
|
-
setProgress({ done: 0, total: 0 });
|
|
114
|
-
setModel(model2);
|
|
115
|
-
} else {
|
|
116
|
-
setModel(emptyModel);
|
|
117
|
-
}
|
|
118
|
-
})();
|
|
119
|
-
}, [isServer, traceURLs, uploadedTraceNames]);
|
|
120
|
-
const showFileUploadDropArea = !!(!isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage));
|
|
121
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
setDragOver(true);
|
|
124
|
-
}, children: [
|
|
125
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hbox header", ...showFileUploadDropArea ? { inert: "true" } : {}, children: [
|
|
126
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
|
|
127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "product", children: "Playwright" }),
|
|
128
|
-
model.title && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: model.title }),
|
|
129
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "spacer" }),
|
|
130
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
|
|
131
|
-
] }),
|
|
132
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
|
|
133
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model, inert: showFileUploadDropArea, showSettings: true }),
|
|
134
|
-
fileForLocalModeError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
135
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
|
|
136
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { paddingTop: 20 }, children: [
|
|
137
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
138
|
-
"1. Click ",
|
|
139
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: fileForLocalModeError, children: "here" }),
|
|
140
|
-
" to put your trace into the download shelf"
|
|
141
|
-
] }),
|
|
142
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
143
|
-
"2. Go to ",
|
|
144
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://trace.playwright.dev", children: "trace.playwright.dev" })
|
|
145
|
-
] }),
|
|
146
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
|
|
147
|
-
] })
|
|
148
|
-
] }),
|
|
149
|
-
showFileUploadDropArea && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "processing-error", role: "alert", children: processingErrorMessage }),
|
|
151
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", role: "heading", "aria-level": 1, children: "Drop Playwright Trace to load" }),
|
|
152
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "or" }),
|
|
153
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => {
|
|
154
|
-
const input = document.createElement("input");
|
|
155
|
-
input.type = "file";
|
|
156
|
-
input.multiple = true;
|
|
157
|
-
input.click();
|
|
158
|
-
input.addEventListener("change", (e) => handleFileInputChange(e));
|
|
159
|
-
}, type: "button", children: "Select file(s)" }),
|
|
160
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: 400 }, children: "Playwright Trace Viewer is a Progressive Web App, it does not send your trace anywhere, it opens it locally." })
|
|
161
|
-
] }),
|
|
162
|
-
isServer && !traceURLs.length && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Select test to see the trace" }) }),
|
|
163
|
-
dragOver && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164
|
-
"div",
|
|
165
|
-
{
|
|
166
|
-
className: "drop-target",
|
|
167
|
-
onDragLeave: () => {
|
|
168
|
-
setDragOver(false);
|
|
169
|
-
},
|
|
170
|
-
onDrop: (event) => handleDropEvent(event),
|
|
171
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Release to analyse the Playwright Trace" })
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] });
|
|
175
|
-
};
|
|
176
|
-
const emptyModel = new MultiTraceModel([]);
|
|
177
|
-
(async () => {
|
|
178
|
-
applyTheme();
|
|
179
|
-
if (window.location.protocol !== "file:") {
|
|
180
|
-
if (window.location.href.includes("isUnderTest=true"))
|
|
181
|
-
await new Promise((f) => setTimeout(f, 1e3));
|
|
182
|
-
if (!navigator.serviceWorker)
|
|
183
|
-
throw new Error(`Service workers are not supported.
|
|
184
|
-
Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
|
|
185
|
-
navigator.serviceWorker.register("sw.bundle.js");
|
|
186
|
-
if (!navigator.serviceWorker.controller) {
|
|
187
|
-
await new Promise((f) => {
|
|
188
|
-
navigator.serviceWorker.oncontrollerchange = () => f();
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
setInterval(function() {
|
|
192
|
-
fetch("ping");
|
|
193
|
-
}, 1e4);
|
|
194
|
-
}
|
|
195
|
-
createRoot(document.querySelector("#root")).render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}));
|
|
196
|
-
})();
|
|
197
|
-
//# sourceMappingURL=index.CY13pBr8.js.map
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { M as MultiTraceModel, r as reactExports, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, a as applyTheme, c as createRoot } from "./assets/inspectorTab-Ywa000c9.js";
|
|
2
|
-
import { W as Workbench } from "./assets/workbench-CfXOj3eT.js";
|
|
3
|
-
import { T as TestServerConnection, W as WebSocketTestServerTransport } from "./assets/testServerConnection-D-tXL3sj.js";
|
|
4
|
-
const WorkbenchLoader = () => {
|
|
5
|
-
const [isServer, setIsServer] = reactExports.useState(false);
|
|
6
|
-
const [traceURLs, setTraceURLs] = reactExports.useState([]);
|
|
7
|
-
const [uploadedTraceNames, setUploadedTraceNames] = reactExports.useState([]);
|
|
8
|
-
const [model, setModel] = reactExports.useState(emptyModel);
|
|
9
|
-
const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
|
|
10
|
-
const [dragOver, setDragOver] = reactExports.useState(false);
|
|
11
|
-
const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
|
|
12
|
-
const [fileForLocalModeError, setFileForLocalModeError] = reactExports.useState(null);
|
|
13
|
-
const processTraceFiles = reactExports.useCallback((files) => {
|
|
14
|
-
const blobUrls = [];
|
|
15
|
-
const fileNames = [];
|
|
16
|
-
const url = new URL(window.location.href);
|
|
17
|
-
for (let i = 0; i < files.length; i++) {
|
|
18
|
-
const file = files.item(i);
|
|
19
|
-
if (!file)
|
|
20
|
-
continue;
|
|
21
|
-
const blobTraceURL = URL.createObjectURL(file);
|
|
22
|
-
blobUrls.push(blobTraceURL);
|
|
23
|
-
fileNames.push(file.name);
|
|
24
|
-
url.searchParams.append("trace", blobTraceURL);
|
|
25
|
-
url.searchParams.append("traceFileName", file.name);
|
|
26
|
-
}
|
|
27
|
-
const href = url.toString();
|
|
28
|
-
window.history.pushState({}, "", href);
|
|
29
|
-
setTraceURLs(blobUrls);
|
|
30
|
-
setUploadedTraceNames(fileNames);
|
|
31
|
-
setDragOver(false);
|
|
32
|
-
setProcessingErrorMessage(null);
|
|
33
|
-
}, []);
|
|
34
|
-
reactExports.useEffect(() => {
|
|
35
|
-
const listener = async (e) => {
|
|
36
|
-
var _a;
|
|
37
|
-
if (!((_a = e.clipboardData) == null ? void 0 : _a.files.length))
|
|
38
|
-
return;
|
|
39
|
-
for (const file of e.clipboardData.files) {
|
|
40
|
-
if (file.type !== "application/zip")
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
e.preventDefault();
|
|
44
|
-
processTraceFiles(e.clipboardData.files);
|
|
45
|
-
};
|
|
46
|
-
document.addEventListener("paste", listener);
|
|
47
|
-
return () => document.removeEventListener("paste", listener);
|
|
48
|
-
});
|
|
49
|
-
const handleDropEvent = reactExports.useCallback((event) => {
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
processTraceFiles(event.dataTransfer.files);
|
|
52
|
-
}, [processTraceFiles]);
|
|
53
|
-
const handleFileInputChange = reactExports.useCallback((event) => {
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
if (!event.target.files)
|
|
56
|
-
return;
|
|
57
|
-
processTraceFiles(event.target.files);
|
|
58
|
-
}, [processTraceFiles]);
|
|
59
|
-
reactExports.useEffect(() => {
|
|
60
|
-
const params = new URL(window.location.href).searchParams;
|
|
61
|
-
const newTraceURLs = params.getAll("trace");
|
|
62
|
-
setIsServer(params.has("isServer"));
|
|
63
|
-
for (const url of newTraceURLs) {
|
|
64
|
-
if (url.startsWith("file:")) {
|
|
65
|
-
setFileForLocalModeError(url || null);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (params.has("isServer")) {
|
|
70
|
-
const guid = new URLSearchParams(window.location.search).get("ws");
|
|
71
|
-
const wsURL = new URL(`../${guid}`, window.location.toString());
|
|
72
|
-
wsURL.protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
|
|
73
|
-
const testServerConnection = new TestServerConnection(new WebSocketTestServerTransport(wsURL));
|
|
74
|
-
testServerConnection.onLoadTraceRequested(async (params2) => {
|
|
75
|
-
setTraceURLs(params2.traceUrl ? [params2.traceUrl] : []);
|
|
76
|
-
setDragOver(false);
|
|
77
|
-
setProcessingErrorMessage(null);
|
|
78
|
-
});
|
|
79
|
-
testServerConnection.initialize({}).catch(() => {
|
|
80
|
-
});
|
|
81
|
-
} else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
|
|
82
|
-
setTraceURLs(newTraceURLs);
|
|
83
|
-
}
|
|
84
|
-
}, []);
|
|
85
|
-
reactExports.useEffect(() => {
|
|
86
|
-
(async () => {
|
|
87
|
-
if (traceURLs.length) {
|
|
88
|
-
const swListener = (event) => {
|
|
89
|
-
if (event.data.method === "progress")
|
|
90
|
-
setProgress(event.data.params);
|
|
91
|
-
};
|
|
92
|
-
navigator.serviceWorker.addEventListener("message", swListener);
|
|
93
|
-
setProgress({ done: 0, total: 1 });
|
|
94
|
-
const contextEntries = [];
|
|
95
|
-
for (let i = 0; i < traceURLs.length; i++) {
|
|
96
|
-
const url = traceURLs[i];
|
|
97
|
-
const params = new URLSearchParams();
|
|
98
|
-
params.set("trace", url);
|
|
99
|
-
if (uploadedTraceNames.length)
|
|
100
|
-
params.set("traceFileName", uploadedTraceNames[i]);
|
|
101
|
-
params.set("limit", String(traceURLs.length));
|
|
102
|
-
const response = await fetch(`contexts?${params.toString()}`);
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
if (!isServer)
|
|
105
|
-
setTraceURLs([]);
|
|
106
|
-
setProcessingErrorMessage((await response.json()).error);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
contextEntries.push(...await response.json());
|
|
110
|
-
}
|
|
111
|
-
navigator.serviceWorker.removeEventListener("message", swListener);
|
|
112
|
-
const model2 = new MultiTraceModel(contextEntries);
|
|
113
|
-
setProgress({ done: 0, total: 0 });
|
|
114
|
-
setModel(model2);
|
|
115
|
-
} else {
|
|
116
|
-
setModel(emptyModel);
|
|
117
|
-
}
|
|
118
|
-
})();
|
|
119
|
-
}, [isServer, traceURLs, uploadedTraceNames]);
|
|
120
|
-
const showFileUploadDropArea = !!(!isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage));
|
|
121
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
setDragOver(true);
|
|
124
|
-
}, children: [
|
|
125
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hbox header", ...showFileUploadDropArea ? { inert: "true" } : {}, children: [
|
|
126
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
|
|
127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "product", children: "Playwright" }),
|
|
128
|
-
model.title && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: model.title }),
|
|
129
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "spacer" }),
|
|
130
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
|
|
131
|
-
] }),
|
|
132
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
|
|
133
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model, inert: showFileUploadDropArea, showSettings: true }),
|
|
134
|
-
fileForLocalModeError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
135
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
|
|
136
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { paddingTop: 20 }, children: [
|
|
137
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
138
|
-
"1. Click ",
|
|
139
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: fileForLocalModeError, children: "here" }),
|
|
140
|
-
" to put your trace into the download shelf"
|
|
141
|
-
] }),
|
|
142
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
143
|
-
"2. Go to ",
|
|
144
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://trace.playwright.dev", children: "trace.playwright.dev" })
|
|
145
|
-
] }),
|
|
146
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
|
|
147
|
-
] })
|
|
148
|
-
] }),
|
|
149
|
-
showFileUploadDropArea && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "processing-error", role: "alert", children: processingErrorMessage }),
|
|
151
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", role: "heading", "aria-level": 1, children: "Drop Playwright Trace to load" }),
|
|
152
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "or" }),
|
|
153
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => {
|
|
154
|
-
const input = document.createElement("input");
|
|
155
|
-
input.type = "file";
|
|
156
|
-
input.multiple = true;
|
|
157
|
-
input.click();
|
|
158
|
-
input.addEventListener("change", (e) => handleFileInputChange(e));
|
|
159
|
-
}, type: "button", children: "Select file(s)" }),
|
|
160
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { maxWidth: 400 }, children: "Playwright Trace Viewer is a Progressive Web App, it does not send your trace anywhere, it opens it locally." })
|
|
161
|
-
] }),
|
|
162
|
-
isServer && !traceURLs.length && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Select test to see the trace" }) }),
|
|
163
|
-
dragOver && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164
|
-
"div",
|
|
165
|
-
{
|
|
166
|
-
className: "drop-target",
|
|
167
|
-
onDragLeave: () => {
|
|
168
|
-
setDragOver(false);
|
|
169
|
-
},
|
|
170
|
-
onDrop: (event) => handleDropEvent(event),
|
|
171
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Release to analyse the Playwright Trace" })
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
] });
|
|
175
|
-
};
|
|
176
|
-
const emptyModel = new MultiTraceModel([]);
|
|
177
|
-
(async () => {
|
|
178
|
-
applyTheme();
|
|
179
|
-
if (window.location.protocol !== "file:") {
|
|
180
|
-
if (window.location.href.includes("isUnderTest=true"))
|
|
181
|
-
await new Promise((f) => setTimeout(f, 1e3));
|
|
182
|
-
if (!navigator.serviceWorker)
|
|
183
|
-
throw new Error(`Service workers are not supported.
|
|
184
|
-
Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
|
|
185
|
-
navigator.serviceWorker.register("sw.bundle.js");
|
|
186
|
-
if (!navigator.serviceWorker.controller) {
|
|
187
|
-
await new Promise((f) => {
|
|
188
|
-
navigator.serviceWorker.oncontrollerchange = () => f();
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
setInterval(function() {
|
|
192
|
-
fetch("ping");
|
|
193
|
-
}, 1e4);
|
|
194
|
-
}
|
|
195
|
-
createRoot(document.querySelector("#root")).render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}));
|
|
196
|
-
})();
|
|
197
|
-
//# sourceMappingURL=index.DblJtEW_.js.map
|