@checkly/playwright-core 1.48.21 → 1.48.22-beta.1

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.
Files changed (185) hide show
  1. package/lib/cli/cli.js +61 -0
  2. package/lib/common/debugLogger.js +90 -0
  3. package/lib/generated/clockSource.js +2 -1
  4. package/lib/generated/consoleApiSource.js +2 -1
  5. package/lib/generated/injectedScriptSource.js +2 -1
  6. package/lib/generated/pollingRecorderSource.js +2 -1
  7. package/lib/generated/recorderSource.js +1 -1
  8. package/lib/generated/utilityScriptSource.js +2 -1
  9. package/lib/generated/webSocketMockSource.js +2 -1
  10. package/lib/server/recorder/java.js +4 -36
  11. package/lib/server/trace/recorder/tracing.js +22 -17
  12. package/lib/vite/{traceViewer/assets/codeMirrorModule-U6XMqGkV.js → recorder/assets/codeMirrorModule--bQcPrZ2.js} +2 -2
  13. package/lib/vite/recorder/assets/codeMirrorModule-Cy8X9Wtw.css +344 -0
  14. package/lib/vite/recorder/assets/index-BMeslH8X.js +9946 -0
  15. package/lib/vite/recorder/assets/index-BjXmTggo.css +2515 -0
  16. package/lib/vite/recorder/index.html +2 -2
  17. package/lib/vite/traceViewer/assets/codeMirrorModule-75b0ca4f.js +24 -0
  18. package/lib/vite/traceViewer/assets/codeMirrorModule-CBokkFJ2.js +16431 -0
  19. package/lib/vite/traceViewer/assets/codeMirrorModule-CNHvVrFd.js +16437 -0
  20. package/lib/vite/traceViewer/assets/{codeMirrorModule-BdBhzV6t.js → codeMirrorModule-CpGx_S8D.js} +2 -2
  21. package/lib/vite/traceViewer/assets/codeMirrorModule-SomGa-Da.js +16443 -0
  22. package/lib/vite/traceViewer/assets/codeMirrorModule-c1454a2e.js +24 -0
  23. package/lib/vite/traceViewer/assets/codeMirrorModule-c9bb9834.js +24 -0
  24. package/lib/vite/traceViewer/assets/{codeMirrorModule-Dx6AXgMV.js → codeMirrorModule-cc2329e4.js} +11 -1256
  25. package/lib/vite/traceViewer/assets/codeMirrorModule-d2cc7db0.js +15579 -0
  26. package/lib/vite/traceViewer/assets/codeMirrorModule-da915a35.js +15586 -0
  27. package/lib/vite/traceViewer/assets/{codeMirrorModule-CcviAl53.js → codeMirrorModule-f03b1a3e.js} +1118 -2370
  28. package/lib/vite/traceViewer/assets/codeMirrorModule-f333a775.js +24 -0
  29. package/lib/vite/traceViewer/assets/{codeMirrorModule-V7N6ppkd.js → codeMirrorModule-uWDlVSQz.js} +2 -2
  30. package/lib/vite/{recorder/assets/codeMirrorModule-d0KhC1qL.js → traceViewer/assets/codeMirrorModule-xvopPhZ4.js} +1 -1
  31. package/lib/vite/traceViewer/assets/{codeMirrorModule-BqcXH1AO.js → codeMirrorModule-yboVpgC0.js} +2 -1248
  32. package/lib/vite/traceViewer/assets/{inspectorTab-DpvLVMq5.js → inspectorTab-B4ynvyY9.js} +18 -8
  33. package/lib/vite/traceViewer/assets/{inspectorTab-BPzVEZSf.js → inspectorTab-BqBvUFio.js} +18 -8
  34. package/lib/vite/traceViewer/assets/{workbench-Bjkiwcr1.js → inspectorTab-Dw0Gnh1T.js} +1847 -3605
  35. package/lib/vite/traceViewer/assets/{inspectorTab-BABZNwlH.js → inspectorTab-Ywa000c9.js} +16 -6
  36. package/lib/vite/traceViewer/assets/{inspectorTab-BHcfR9dD.js → inspectorTab-wfvwpMHs.js} +2 -2
  37. package/lib/vite/traceViewer/assets/{workbench-BcgGQnKb.js → workbench-CROk6Fcc.js} +2 -2
  38. package/lib/vite/traceViewer/assets/{workbench-ByyWxoT8.js → workbench-CfXOj3eT.js} +2 -2
  39. package/lib/vite/traceViewer/assets/{workbench-DhqI6jeL.js → workbench-D9CTkv-4.js} +2 -2
  40. package/lib/vite/traceViewer/assets/{workbench-I4s6sWjN.js → workbench-DNolpp3y.js} +1 -1
  41. package/lib/vite/traceViewer/assets/workbench-DUc2iD0P.js +1473 -0
  42. package/lib/vite/traceViewer/assets/{workbench-B13nfocr.js → workbench-LKskf2Iy.js} +1 -1
  43. package/lib/vite/traceViewer/assets/workbench-dnZM5a7x.js +1473 -0
  44. package/lib/vite/traceViewer/assets/wsPort-54626118.js +18361 -0
  45. package/lib/vite/traceViewer/assets/{workbench-Crj6jzdv.js → wsPort-57f274c6.js} +4308 -5066
  46. package/lib/vite/traceViewer/assets/wsPort-762c6840.js +64 -0
  47. package/lib/vite/traceViewer/assets/wsPort-85286e61.js +18361 -0
  48. package/lib/vite/traceViewer/assets/wsPort-98e00a94.js +64 -0
  49. package/lib/vite/traceViewer/assets/{wsPort-EUvw-dwH.js → wsPort-CAXygIGt.js} +3 -3
  50. package/lib/vite/traceViewer/assets/{workbench-C5OQh9VX.js → wsPort-cc0077b5.js} +4046 -4623
  51. package/lib/vite/traceViewer/assets/wsPort-edfeeb7d.js +64 -0
  52. package/lib/vite/traceViewer/assets/wsPort-ee2830d7.js +64 -0
  53. package/lib/vite/traceViewer/assets/{workbench-BwodYCgl.js → wsPort-peeLnQhT.js} +985 -1540
  54. package/lib/vite/traceViewer/assets/xtermModule-443332e6.js +9 -0
  55. package/lib/vite/traceViewer/assets/xtermModule-60687b6b.js +6410 -0
  56. package/lib/vite/traceViewer/codeMirrorModule.5d0f417c.css +1 -0
  57. package/lib/vite/traceViewer/codeMirrorModule.eb494ea9.css +344 -0
  58. package/lib/vite/traceViewer/codicon.79f233d0.ttf +0 -0
  59. package/lib/vite/traceViewer/{embedded.27BGR_eD.js → embedded.6N1v7bZ1.js} +4 -3
  60. package/lib/vite/traceViewer/{embedded.DTjd2aiy.js → embedded.BOw0jX78.js} +4 -3
  61. package/lib/vite/traceViewer/{embedded.Dxe2heQk.js → embedded.BXYl5zRv.js} +1 -1
  62. package/lib/vite/traceViewer/{embedded.SsjKHrxC.js → embedded.BaqdbLsy.js} +4 -3
  63. package/lib/vite/traceViewer/embedded.CwwTDBzP.js +106 -0
  64. package/lib/vite/traceViewer/{embedded.Zu332ZC1.js → embedded.DeCrOtlO.js} +2 -2
  65. package/lib/vite/traceViewer/embedded.html +6 -6
  66. package/lib/vite/traceViewer/embedded.i_k4ceMJ.js +106 -0
  67. package/lib/vite/traceViewer/index.1a1fe659.css +1 -0
  68. package/lib/vite/traceViewer/index.1b525c1c.js +181 -0
  69. package/lib/vite/traceViewer/index.55e65778.js +181 -0
  70. package/lib/vite/traceViewer/{index.6KJ-JQ0L.js → index.5nqVcfiC.js} +2 -2
  71. package/lib/vite/traceViewer/{index.C0EgJ4oW.js → index.5ooko4n7.js} +21 -36
  72. package/lib/vite/traceViewer/index.76e9f312.css +124 -0
  73. package/lib/vite/traceViewer/{index.Dz3icWJV.js → index.Bugo2TbS.js} +4 -3
  74. package/lib/vite/traceViewer/{index.PqcsvBxQ.js → index.BzvnAP7t.js} +4 -3
  75. package/lib/vite/traceViewer/{index.CLxsp2W_.js → index.CM_h9lHr.js} +2 -2
  76. package/lib/vite/traceViewer/{index.yxAwzeWG.js → index.CY13pBr8.js} +4 -3
  77. package/lib/vite/traceViewer/index.DW2ZzZfL.js +197 -0
  78. package/lib/vite/traceViewer/{index.CB297BuW.js → index.DZkJsFod.js} +1 -1
  79. package/lib/vite/traceViewer/index.DblJtEW_.js +197 -0
  80. package/lib/vite/traceViewer/index.a265fbdb.js +2 -0
  81. package/lib/vite/traceViewer/index.c9f6fa8f.js +2 -0
  82. package/lib/vite/traceViewer/index.d86e70ca.js +181 -0
  83. package/lib/vite/traceViewer/index.decad628.js +2 -0
  84. package/lib/vite/traceViewer/index.e8730524.js +181 -0
  85. package/lib/vite/traceViewer/index.ed9a3c58.js +2 -0
  86. package/lib/vite/traceViewer/index.html +7 -7
  87. package/lib/vite/traceViewer/{recorder.BufKu9Hp.js → recorder.3Xfrl_zV.js} +3 -2
  88. package/lib/vite/traceViewer/{recorder.am-MV-DQ.js → recorder.B76AH9PE.js} +3 -2
  89. package/lib/vite/traceViewer/{recorder.C88JDknq.js → recorder.BVExlUUk.js} +1 -1
  90. package/lib/vite/traceViewer/{recorder.7Wl6HrQl.js → recorder.Db1aK_DY.js} +3 -2
  91. package/lib/vite/traceViewer/recorder.html +4 -4
  92. package/lib/vite/traceViewer/recorder.uj3cfoMf.js +551 -0
  93. package/lib/vite/traceViewer/uiMode.08ab2d90.js +4 -0
  94. package/lib/vite/traceViewer/uiMode.0d0d667b.js +4 -0
  95. package/lib/vite/traceViewer/uiMode.216233d5.js +1484 -0
  96. package/lib/vite/traceViewer/{uiMode.DVWUEIHq.css → uiMode.2c31018f.css} +88 -188
  97. package/lib/vite/traceViewer/uiMode.3ff70f7d.js +4 -0
  98. package/lib/vite/traceViewer/uiMode.4d0a45af.js +1484 -0
  99. package/lib/vite/traceViewer/uiMode.66eb0ce2.js +1484 -0
  100. package/lib/vite/traceViewer/uiMode.8b41a49d.css +1 -0
  101. package/lib/vite/traceViewer/uiMode.8d080c01.js +1486 -0
  102. package/lib/vite/traceViewer/uiMode.BKrDfnAk.js +1725 -0
  103. package/lib/vite/traceViewer/uiMode.BMYUvsRh.js +1725 -0
  104. package/lib/vite/traceViewer/{uiMode.BZoFj6zV.js → uiMode.BVpTBGoe.js} +4 -3
  105. package/lib/vite/traceViewer/uiMode.BWhJCEE9.js +1725 -0
  106. package/lib/vite/traceViewer/uiMode.Bg9fACTB.js +1725 -0
  107. package/lib/vite/traceViewer/{uiMode.CpC2B27N.js → uiMode.CYBsUhm_.js} +2 -2
  108. package/lib/vite/traceViewer/{uiMode.Dlo9s_YX.js → uiMode.DCSdxlAq.js} +4 -3
  109. package/lib/vite/traceViewer/{uiMode.2tr9k625.js → uiMode.DjTS7tqC.js} +1 -1
  110. package/lib/vite/traceViewer/{uiMode.wsGnVMQK.js → uiMode.DtleKuGI.js} +4 -3
  111. package/lib/vite/traceViewer/uiMode.UamAvOMX.js +1725 -0
  112. package/lib/vite/traceViewer/uiMode.bBcXYWNF.js +1725 -0
  113. package/lib/vite/traceViewer/uiMode.ca6ec898.js +4 -0
  114. package/lib/vite/traceViewer/{uiMode.iq7CyYy7.js → uiMode.e-PLonGl.js} +2 -2
  115. package/lib/vite/traceViewer/uiMode.e_-GuqEi.js +1725 -0
  116. package/lib/vite/traceViewer/uiMode.f1YADWIl.js +1724 -0
  117. package/lib/vite/traceViewer/uiMode.html +7 -7
  118. package/lib/vite/traceViewer/uiMode.kHsXCfV8.js +1490 -0
  119. package/lib/vite/traceViewer/uiMode.myF_lyEH.js +1724 -0
  120. package/lib/vite/traceViewer/{workbench.B3X2QtYa.css → wsPort.162042f9.css} +63 -315
  121. package/lib/vite/traceViewer/{workbench.wuxQoE2z.css → wsPort.997c92cf.css} +145 -335
  122. package/lib/vite/traceViewer/wsPort.9c9a6767.css +1 -0
  123. package/lib/vite/traceViewer/xtermModule.125f4259.css +191 -0
  124. package/lib/vite/traceViewer/xtermModule.6428296b.css +32 -0
  125. package/package.json +1 -1
  126. package/lib/vite/recorder/assets/codeMirrorModule-ez37Vkbh.css +0 -1
  127. package/lib/vite/recorder/assets/index-BW-aOBcL.css +0 -1
  128. package/lib/vite/recorder/assets/index-Bxxcmxlu.js +0 -42
  129. package/lib/vite/traceViewer/assets/codeMirrorModule-5yiV-3wl.js +0 -16831
  130. package/lib/vite/traceViewer/assets/codeMirrorModule-B7Z3vq11.js +0 -24
  131. package/lib/vite/traceViewer/assets/codeMirrorModule-C6p3E9Zg.js +0 -24
  132. package/lib/vite/traceViewer/assets/codeMirrorModule-Ca-1BNel.js +0 -24
  133. package/lib/vite/traceViewer/assets/codeMirrorModule-CqYUz5ms.js +0 -24
  134. package/lib/vite/traceViewer/assets/codeMirrorModule-DS3v0XrQ.js +0 -24
  135. package/lib/vite/traceViewer/assets/codeMirrorModule-DZoSgqUd.js +0 -24
  136. package/lib/vite/traceViewer/assets/codeMirrorModule-EhKN7Okm.js +0 -16449
  137. package/lib/vite/traceViewer/assets/codeMirrorModule-MzSmL4X2.js +0 -24
  138. package/lib/vite/traceViewer/assets/codeMirrorModule-T_sdMrbM.js +0 -24
  139. package/lib/vite/traceViewer/assets/inspectorTab-Bbgq0hgt.js +0 -64
  140. package/lib/vite/traceViewer/assets/inspectorTab-DhBbZz8I.js +0 -64
  141. package/lib/vite/traceViewer/assets/workbench-C43LWZEX.js +0 -72
  142. package/lib/vite/traceViewer/assets/workbench-DZqNXdoV.js +0 -9
  143. package/lib/vite/traceViewer/assets/workbench-DrQjKdyE.js +0 -72
  144. package/lib/vite/traceViewer/assets/workbench-Pa1v1Ojh.js +0 -72
  145. package/lib/vite/traceViewer/assets/workbench-caTaZnzx.js +0 -72
  146. package/lib/vite/traceViewer/assets/workbench-gtYcQBNA.js +0 -9
  147. package/lib/vite/traceViewer/assets/workbench-u2lRPMOT.js +0 -72
  148. package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +0 -6529
  149. package/lib/vite/traceViewer/embedded.BBZ9gQEw.js +0 -104
  150. package/lib/vite/traceViewer/embedded.BQq6Psnz.js +0 -104
  151. package/lib/vite/traceViewer/embedded.BVDVQOzc.js +0 -2
  152. package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +0 -2
  153. package/lib/vite/traceViewer/embedded.CorI3dFX.js +0 -104
  154. package/lib/vite/traceViewer/embedded.CvhnUgIi.js +0 -2
  155. package/lib/vite/traceViewer/embedded.D27cnKiB.js +0 -104
  156. package/lib/vite/traceViewer/embedded.D4lqGydT.js +0 -2
  157. package/lib/vite/traceViewer/embedded.DPqrDeET.js +0 -2
  158. package/lib/vite/traceViewer/embedded.DbzY7Q8w.js +0 -2
  159. package/lib/vite/traceViewer/embedded.f-PLGsBT.js +0 -2
  160. package/lib/vite/traceViewer/index.B7aiTMfZ.js +0 -2
  161. package/lib/vite/traceViewer/index.B8dgQwuN.js +0 -2
  162. package/lib/vite/traceViewer/index.BGj8jY3H.js +0 -2
  163. package/lib/vite/traceViewer/index.BSak5QT9.js +0 -2
  164. package/lib/vite/traceViewer/index.BrT2kfuc.js +0 -2
  165. package/lib/vite/traceViewer/index.CUpI-BFe.js +0 -195
  166. package/lib/vite/traceViewer/index.DkRbtWVo.js +0 -195
  167. package/lib/vite/traceViewer/index.DsjmhbB6.js +0 -195
  168. package/lib/vite/traceViewer/index._cX8k4co.js +0 -2
  169. package/lib/vite/traceViewer/index.pMAN88y-.js +0 -2
  170. package/lib/vite/traceViewer/recorder.Ch-WHviK.js +0 -2
  171. package/lib/vite/traceViewer/recorder.POd-toIn.js +0 -2
  172. package/lib/vite/traceViewer/uiMode.BEZVCe5O.js +0 -5
  173. package/lib/vite/traceViewer/uiMode.C4nbcio6.js +0 -1730
  174. package/lib/vite/traceViewer/uiMode.D-tg1Oci.js +0 -1730
  175. package/lib/vite/traceViewer/uiMode.D3cNFP6u.css +0 -1
  176. package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +0 -1730
  177. package/lib/vite/traceViewer/uiMode.DVrL7a1K.js +0 -10
  178. package/lib/vite/traceViewer/uiMode.DdtUZZVS.js +0 -5
  179. package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +0 -10
  180. package/lib/vite/traceViewer/uiMode.DwZAzstF.js +0 -10
  181. package/lib/vite/traceViewer/uiMode.O07awP3T.js +0 -10
  182. package/lib/vite/traceViewer/uiMode.gGHHTsyL.js +0 -1730
  183. package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +0 -10
  184. package/lib/vite/traceViewer/workbench.DjbIuxix.css +0 -1
  185. package/lib/vite/traceViewer/workbench.DyTpxWVb.css +0 -1
@@ -0,0 +1,106 @@
1
+ import { M as MultiTraceModel, r as reactExports, b as currentTheme, t as toggleTheme, j as jsxRuntimeExports, a as applyTheme, c as createRoot } from "./assets/inspectorTab-B4ynvyY9.js";
2
+ import { W as Workbench } from "./assets/workbench-CROk6Fcc.js";
3
+ function openPage(url, target) {
4
+ if (url)
5
+ window.parent.postMessage({ method: "openExternal", params: { url, target } }, "*");
6
+ }
7
+ function openSourceLocation({ file, line, column }) {
8
+ window.parent.postMessage({ method: "openSourceLocation", params: { file, line, column } }, "*");
9
+ }
10
+ const EmbeddedWorkbenchLoader = () => {
11
+ const [traceURLs, setTraceURLs] = reactExports.useState([]);
12
+ const [model, setModel] = reactExports.useState(emptyModel);
13
+ const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
14
+ const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
15
+ reactExports.useEffect(() => {
16
+ window.addEventListener("message", async ({ data: { method, params } }) => {
17
+ if (method === "loadTraceRequested") {
18
+ setTraceURLs(params.traceUrl ? [params.traceUrl] : []);
19
+ setProcessingErrorMessage(null);
20
+ } else if (method === "applyTheme") {
21
+ if (currentTheme() !== params.theme)
22
+ toggleTheme();
23
+ }
24
+ });
25
+ window.parent.postMessage({ type: "loaded" }, "*");
26
+ }, []);
27
+ reactExports.useEffect(() => {
28
+ (async () => {
29
+ if (traceURLs.length) {
30
+ const swListener = (event) => {
31
+ if (event.data.method === "progress")
32
+ setProgress(event.data.params);
33
+ };
34
+ navigator.serviceWorker.addEventListener("message", swListener);
35
+ setProgress({ done: 0, total: 1 });
36
+ const contextEntries = [];
37
+ for (let i = 0; i < traceURLs.length; i++) {
38
+ const url = traceURLs[i];
39
+ const params = new URLSearchParams();
40
+ params.set("trace", url);
41
+ params.set("limit", String(traceURLs.length));
42
+ const response = await fetch(`contexts?${params.toString()}`);
43
+ if (!response.ok) {
44
+ setProcessingErrorMessage((await response.json()).error);
45
+ return;
46
+ }
47
+ contextEntries.push(...await response.json());
48
+ }
49
+ navigator.serviceWorker.removeEventListener("message", swListener);
50
+ const model2 = new MultiTraceModel(contextEntries);
51
+ setProgress({ done: 0, total: 0 });
52
+ setModel(model2);
53
+ } else {
54
+ setModel(emptyModel);
55
+ }
56
+ })();
57
+ }, [traceURLs]);
58
+ reactExports.useEffect(() => {
59
+ var _a;
60
+ if (processingErrorMessage)
61
+ (_a = window.parent) == null ? void 0 : _a.postMessage({ method: "showErrorMessage", params: { message: processingErrorMessage } }, "*");
62
+ }, [processingErrorMessage]);
63
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "vbox workbench-loader", children: [
64
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
65
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model, openPage, onOpenExternally: openSourceLocation, showSettings: true }),
66
+ !traceURLs.length && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "empty-state", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Select test to see the trace" }) })
67
+ ] });
68
+ };
69
+ const emptyModel = new MultiTraceModel([]);
70
+ (async () => {
71
+ applyTheme();
72
+ const handleKeyEvent = (e) => {
73
+ var _a;
74
+ if (!e.isTrusted)
75
+ return;
76
+ (_a = window.parent) == null ? void 0 : _a.postMessage({
77
+ type: e.type,
78
+ key: e.key,
79
+ keyCode: e.keyCode,
80
+ code: e.code,
81
+ shiftKey: e.shiftKey,
82
+ altKey: e.altKey,
83
+ ctrlKey: e.ctrlKey,
84
+ metaKey: e.metaKey,
85
+ repeat: e.repeat
86
+ }, "*");
87
+ };
88
+ window.addEventListener("keydown", handleKeyEvent);
89
+ window.addEventListener("keyup", handleKeyEvent);
90
+ if (window.location.protocol !== "file:") {
91
+ if (!navigator.serviceWorker)
92
+ throw new Error(`Service workers are not supported.
93
+ Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
94
+ navigator.serviceWorker.register("sw.bundle.js");
95
+ if (!navigator.serviceWorker.controller) {
96
+ await new Promise((f) => {
97
+ navigator.serviceWorker.oncontrollerchange = () => f();
98
+ });
99
+ }
100
+ setInterval(function() {
101
+ fetch("ping");
102
+ }, 1e4);
103
+ }
104
+ createRoot(document.querySelector("#root")).render(/* @__PURE__ */ jsxRuntimeExports.jsx(EmbeddedWorkbenchLoader, {}));
105
+ })();
106
+ //# sourceMappingURL=embedded.i_k4ceMJ.js.map
@@ -0,0 +1 @@
1
+ .drop-target{display:flex;align-items:center;justify-content:center;flex:auto;flex-direction:column;background-color:var(--vscode-editor-background);position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;line-height:24px}body .drop-target{background:rgba(255,255,255,.8)}body.dark-mode .drop-target{background:rgba(0,0,0,.8)}.drop-target .title{font-size:24px;font-weight:700;margin-bottom:30px}.drop-target .processing-error{font-size:24px;color:#e74c3c;font-weight:700;text-align:center;margin:30px}.drop-target input{margin-top:50px}.drop-target button{color:#fff;background-color:#007acc;padding:8px 12px;border:none;margin:30px 0;cursor:pointer}.progress{flex:none;width:100%;height:3px;margin-top:-3px;z-index:10}.inner-progress{background-color:var(--vscode-progressBar-background);height:100%}.header{display:flex;background-color:#000;flex:none;flex-basis:48px;line-height:48px;font-size:16px;color:#ccc}.workbench-loader{contain:size}.workbench-loader .header .toolbar-button{margin:12px;padding:8px 4px}.workbench-loader .logo{margin-left:16px;display:flex;align-items:center}.workbench-loader .logo img{height:32px;width:32px;pointer-events:none;flex:none}.workbench-loader .product{font-weight:600;margin-left:16px;flex:none}.workbench-loader .header .title{margin-left:16px;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}
@@ -0,0 +1,181 @@
1
+ import { M as MultiTraceModel, r as reactExports, c as connect, j as jsxs, a as jsx, T as ToolbarButton, t as toggleTheme, W as Workbench, b as applyTheme, d as reactDomExports } from "./assets/wsPort-cc0077b5.js";
2
+ const workbenchLoader = "";
3
+ const WorkbenchLoader = () => {
4
+ const [isServer, setIsServer] = reactExports.useState(false);
5
+ const [traceURLs, setTraceURLs] = reactExports.useState([]);
6
+ const [uploadedTraceNames, setUploadedTraceNames] = reactExports.useState([]);
7
+ const [model, setModel] = reactExports.useState(emptyModel);
8
+ const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
9
+ const [dragOver, setDragOver] = reactExports.useState(false);
10
+ const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
11
+ const [fileForLocalModeError, setFileForLocalModeError] = reactExports.useState(null);
12
+ const processTraceFiles = reactExports.useCallback((files) => {
13
+ const blobUrls = [];
14
+ const fileNames = [];
15
+ const url = new URL(window.location.href);
16
+ for (let i = 0; i < files.length; i++) {
17
+ const file = files.item(i);
18
+ if (!file)
19
+ continue;
20
+ const blobTraceURL = URL.createObjectURL(file);
21
+ blobUrls.push(blobTraceURL);
22
+ fileNames.push(file.name);
23
+ url.searchParams.append("trace", blobTraceURL);
24
+ url.searchParams.append("traceFileName", file.name);
25
+ }
26
+ const href = url.toString();
27
+ window.history.pushState({}, "", href);
28
+ setTraceURLs(blobUrls);
29
+ setUploadedTraceNames(fileNames);
30
+ setDragOver(false);
31
+ setProcessingErrorMessage(null);
32
+ }, []);
33
+ const handleDropEvent = reactExports.useCallback((event) => {
34
+ event.preventDefault();
35
+ processTraceFiles(event.dataTransfer.files);
36
+ }, [processTraceFiles]);
37
+ const handleFileInputChange = reactExports.useCallback((event) => {
38
+ event.preventDefault();
39
+ if (!event.target.files)
40
+ return;
41
+ processTraceFiles(event.target.files);
42
+ }, [processTraceFiles]);
43
+ reactExports.useEffect(() => {
44
+ const params = new URL(window.location.href).searchParams;
45
+ const newTraceURLs = params.getAll("trace");
46
+ setIsServer(params.has("isServer"));
47
+ for (const url of newTraceURLs) {
48
+ if (url.startsWith("file:")) {
49
+ setFileForLocalModeError(url || null);
50
+ return;
51
+ }
52
+ }
53
+ if (params.has("isServer")) {
54
+ connect({
55
+ onEvent(method, params2) {
56
+ if (method === "loadTrace") {
57
+ setTraceURLs(params2.url ? [params2.url] : []);
58
+ setDragOver(false);
59
+ setProcessingErrorMessage(null);
60
+ }
61
+ },
62
+ onClose() {
63
+ }
64
+ }).then((sendMessage) => {
65
+ sendMessage("ready");
66
+ });
67
+ } else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
68
+ setTraceURLs(newTraceURLs);
69
+ }
70
+ }, []);
71
+ reactExports.useEffect(() => {
72
+ (async () => {
73
+ if (traceURLs.length) {
74
+ const swListener = (event) => {
75
+ if (event.data.method === "progress")
76
+ setProgress(event.data.params);
77
+ };
78
+ navigator.serviceWorker.addEventListener("message", swListener);
79
+ setProgress({ done: 0, total: 1 });
80
+ const contextEntries = [];
81
+ for (let i = 0; i < traceURLs.length; i++) {
82
+ const url = traceURLs[i];
83
+ const params = new URLSearchParams();
84
+ params.set("trace", url);
85
+ if (uploadedTraceNames.length)
86
+ params.set("traceFileName", uploadedTraceNames[i]);
87
+ const response = await fetch(`contexts?${params.toString()}`);
88
+ if (!response.ok) {
89
+ if (!isServer)
90
+ setTraceURLs([]);
91
+ setProcessingErrorMessage((await response.json()).error);
92
+ return;
93
+ }
94
+ contextEntries.push(...await response.json());
95
+ }
96
+ navigator.serviceWorker.removeEventListener("message", swListener);
97
+ const model2 = new MultiTraceModel(contextEntries);
98
+ setProgress({ done: 0, total: 0 });
99
+ setModel(model2);
100
+ } else {
101
+ setModel(emptyModel);
102
+ }
103
+ })();
104
+ }, [isServer, traceURLs, uploadedTraceNames]);
105
+ return /* @__PURE__ */ jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
106
+ event.preventDefault();
107
+ setDragOver(true);
108
+ }, children: [
109
+ /* @__PURE__ */ jsxs("div", { className: "hbox header", children: [
110
+ /* @__PURE__ */ jsx("div", { className: "logo", children: /* @__PURE__ */ jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
111
+ /* @__PURE__ */ jsx("div", { className: "product", children: "Playwright" }),
112
+ model.title && /* @__PURE__ */ jsx("div", { className: "title", children: model.title }),
113
+ /* @__PURE__ */ jsx("div", { className: "spacer" }),
114
+ /* @__PURE__ */ jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
115
+ ] }),
116
+ /* @__PURE__ */ jsx("div", { className: "progress", children: /* @__PURE__ */ jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
117
+ /* @__PURE__ */ jsx(Workbench, { model }),
118
+ fileForLocalModeError && /* @__PURE__ */ jsxs("div", { className: "drop-target", children: [
119
+ /* @__PURE__ */ jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
120
+ /* @__PURE__ */ jsxs("div", { style: { paddingTop: 20 }, children: [
121
+ /* @__PURE__ */ jsxs("div", { children: [
122
+ "1. Click ",
123
+ /* @__PURE__ */ jsx("a", { href: fileForLocalModeError, children: "here" }),
124
+ " to put your trace into the download shelf"
125
+ ] }),
126
+ /* @__PURE__ */ jsxs("div", { children: [
127
+ "2. Go to ",
128
+ /* @__PURE__ */ jsx("a", { href: "https://trace.playwright.dev", children: "trace.playwright.dev" })
129
+ ] }),
130
+ /* @__PURE__ */ jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
131
+ ] })
132
+ ] }),
133
+ !isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage) && /* @__PURE__ */ jsxs("div", { className: "drop-target", children: [
134
+ /* @__PURE__ */ jsx("div", { className: "processing-error", children: processingErrorMessage }),
135
+ /* @__PURE__ */ jsx("div", { className: "title", children: "Drop Playwright Trace to load" }),
136
+ /* @__PURE__ */ jsx("div", { children: "or" }),
137
+ /* @__PURE__ */ jsx("button", { onClick: () => {
138
+ const input = document.createElement("input");
139
+ input.type = "file";
140
+ input.multiple = true;
141
+ input.click();
142
+ input.addEventListener("change", (e) => handleFileInputChange(e));
143
+ }, children: "Select file(s)" }),
144
+ /* @__PURE__ */ 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." })
145
+ ] }),
146
+ isServer && !traceURLs.length && /* @__PURE__ */ jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsx("div", { className: "title", children: "Select test to see the trace" }) }),
147
+ dragOver && /* @__PURE__ */ jsx(
148
+ "div",
149
+ {
150
+ className: "drop-target",
151
+ onDragLeave: () => {
152
+ setDragOver(false);
153
+ },
154
+ onDrop: (event) => handleDropEvent(event),
155
+ children: /* @__PURE__ */ jsx("div", { className: "title", children: "Release to analyse the Playwright Trace" })
156
+ }
157
+ )
158
+ ] });
159
+ };
160
+ const emptyModel = new MultiTraceModel([]);
161
+ (async () => {
162
+ applyTheme();
163
+ if (window.location.protocol !== "file:") {
164
+ if (window.location.href.includes("isUnderTest=true"))
165
+ await new Promise((f) => setTimeout(f, 1e3));
166
+ if (!navigator.serviceWorker)
167
+ throw new Error(`Service workers are not supported.
168
+ Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
169
+ navigator.serviceWorker.register("sw.bundle.js");
170
+ if (!navigator.serviceWorker.controller) {
171
+ await new Promise((f) => {
172
+ navigator.serviceWorker.oncontrollerchange = () => f();
173
+ });
174
+ }
175
+ setInterval(function() {
176
+ fetch("ping");
177
+ }, 1e4);
178
+ }
179
+ reactDomExports.render(/* @__PURE__ */ jsx(WorkbenchLoader, {}), document.querySelector("#root"));
180
+ })();
181
+ //# sourceMappingURL=index.1b525c1c.js.map
@@ -0,0 +1,181 @@
1
+ import { M as MultiTraceModel, r as reactExports, c as connect, j as jsxs, a as jsx, T as ToolbarButton, t as toggleTheme, W as Workbench, b as applyTheme, d as reactDomExports } from "./assets/wsPort-54626118.js";
2
+ const workbenchLoader = "";
3
+ const WorkbenchLoader = () => {
4
+ const [isServer, setIsServer] = reactExports.useState(false);
5
+ const [traceURLs, setTraceURLs] = reactExports.useState([]);
6
+ const [uploadedTraceNames, setUploadedTraceNames] = reactExports.useState([]);
7
+ const [model, setModel] = reactExports.useState(emptyModel);
8
+ const [progress, setProgress] = reactExports.useState({ done: 0, total: 0 });
9
+ const [dragOver, setDragOver] = reactExports.useState(false);
10
+ const [processingErrorMessage, setProcessingErrorMessage] = reactExports.useState(null);
11
+ const [fileForLocalModeError, setFileForLocalModeError] = reactExports.useState(null);
12
+ const processTraceFiles = reactExports.useCallback((files) => {
13
+ const blobUrls = [];
14
+ const fileNames = [];
15
+ const url = new URL(window.location.href);
16
+ for (let i = 0; i < files.length; i++) {
17
+ const file = files.item(i);
18
+ if (!file)
19
+ continue;
20
+ const blobTraceURL = URL.createObjectURL(file);
21
+ blobUrls.push(blobTraceURL);
22
+ fileNames.push(file.name);
23
+ url.searchParams.append("trace", blobTraceURL);
24
+ url.searchParams.append("traceFileName", file.name);
25
+ }
26
+ const href = url.toString();
27
+ window.history.pushState({}, "", href);
28
+ setTraceURLs(blobUrls);
29
+ setUploadedTraceNames(fileNames);
30
+ setDragOver(false);
31
+ setProcessingErrorMessage(null);
32
+ }, []);
33
+ const handleDropEvent = reactExports.useCallback((event) => {
34
+ event.preventDefault();
35
+ processTraceFiles(event.dataTransfer.files);
36
+ }, [processTraceFiles]);
37
+ const handleFileInputChange = reactExports.useCallback((event) => {
38
+ event.preventDefault();
39
+ if (!event.target.files)
40
+ return;
41
+ processTraceFiles(event.target.files);
42
+ }, [processTraceFiles]);
43
+ reactExports.useEffect(() => {
44
+ const params = new URL(window.location.href).searchParams;
45
+ const newTraceURLs = params.getAll("trace");
46
+ setIsServer(params.has("isServer"));
47
+ for (const url of newTraceURLs) {
48
+ if (url.startsWith("file:")) {
49
+ setFileForLocalModeError(url || null);
50
+ return;
51
+ }
52
+ }
53
+ if (params.has("isServer")) {
54
+ connect({
55
+ onEvent(method, params2) {
56
+ if (method === "loadTrace") {
57
+ setTraceURLs(params2.url ? [params2.url] : []);
58
+ setDragOver(false);
59
+ setProcessingErrorMessage(null);
60
+ }
61
+ },
62
+ onClose() {
63
+ }
64
+ }).then((sendMessage) => {
65
+ sendMessage("ready");
66
+ });
67
+ } else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
68
+ setTraceURLs(newTraceURLs);
69
+ }
70
+ }, []);
71
+ reactExports.useEffect(() => {
72
+ (async () => {
73
+ if (traceURLs.length) {
74
+ const swListener = (event) => {
75
+ if (event.data.method === "progress")
76
+ setProgress(event.data.params);
77
+ };
78
+ navigator.serviceWorker.addEventListener("message", swListener);
79
+ setProgress({ done: 0, total: 1 });
80
+ const contextEntries = [];
81
+ for (let i = 0; i < traceURLs.length; i++) {
82
+ const url = traceURLs[i];
83
+ const params = new URLSearchParams();
84
+ params.set("trace", url);
85
+ if (uploadedTraceNames.length)
86
+ params.set("traceFileName", uploadedTraceNames[i]);
87
+ const response = await fetch(`contexts?${params.toString()}`);
88
+ if (!response.ok) {
89
+ if (!isServer)
90
+ setTraceURLs([]);
91
+ setProcessingErrorMessage((await response.json()).error);
92
+ return;
93
+ }
94
+ contextEntries.push(...await response.json());
95
+ }
96
+ navigator.serviceWorker.removeEventListener("message", swListener);
97
+ const model2 = new MultiTraceModel(contextEntries);
98
+ setProgress({ done: 0, total: 0 });
99
+ setModel(model2);
100
+ } else {
101
+ setModel(emptyModel);
102
+ }
103
+ })();
104
+ }, [isServer, traceURLs, uploadedTraceNames]);
105
+ return /* @__PURE__ */ jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
106
+ event.preventDefault();
107
+ setDragOver(true);
108
+ }, children: [
109
+ /* @__PURE__ */ jsxs("div", { className: "hbox header", children: [
110
+ /* @__PURE__ */ jsx("div", { className: "logo", children: /* @__PURE__ */ jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
111
+ /* @__PURE__ */ jsx("div", { className: "product", children: "Playwright" }),
112
+ model.title && /* @__PURE__ */ jsx("div", { className: "title", children: model.title }),
113
+ /* @__PURE__ */ jsx("div", { className: "spacer" }),
114
+ /* @__PURE__ */ jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
115
+ ] }),
116
+ /* @__PURE__ */ jsx("div", { className: "progress", children: /* @__PURE__ */ jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
117
+ /* @__PURE__ */ jsx(Workbench, { model }),
118
+ fileForLocalModeError && /* @__PURE__ */ jsxs("div", { className: "drop-target", children: [
119
+ /* @__PURE__ */ jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
120
+ /* @__PURE__ */ jsxs("div", { style: { paddingTop: 20 }, children: [
121
+ /* @__PURE__ */ jsxs("div", { children: [
122
+ "1. Click ",
123
+ /* @__PURE__ */ jsx("a", { href: fileForLocalModeError, children: "here" }),
124
+ " to put your trace into the download shelf"
125
+ ] }),
126
+ /* @__PURE__ */ jsxs("div", { children: [
127
+ "2. Go to ",
128
+ /* @__PURE__ */ jsx("a", { href: "https://trace.playwright.dev", children: "trace.playwright.dev" })
129
+ ] }),
130
+ /* @__PURE__ */ jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
131
+ ] })
132
+ ] }),
133
+ !isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage) && /* @__PURE__ */ jsxs("div", { className: "drop-target", children: [
134
+ /* @__PURE__ */ jsx("div", { className: "processing-error", children: processingErrorMessage }),
135
+ /* @__PURE__ */ jsx("div", { className: "title", children: "Drop Playwright Trace to load" }),
136
+ /* @__PURE__ */ jsx("div", { children: "or" }),
137
+ /* @__PURE__ */ jsx("button", { onClick: () => {
138
+ const input = document.createElement("input");
139
+ input.type = "file";
140
+ input.multiple = true;
141
+ input.click();
142
+ input.addEventListener("change", (e) => handleFileInputChange(e));
143
+ }, children: "Select file(s)" }),
144
+ /* @__PURE__ */ 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." })
145
+ ] }),
146
+ isServer && !traceURLs.length && /* @__PURE__ */ jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsx("div", { className: "title", children: "Select test to see the trace" }) }),
147
+ dragOver && /* @__PURE__ */ jsx(
148
+ "div",
149
+ {
150
+ className: "drop-target",
151
+ onDragLeave: () => {
152
+ setDragOver(false);
153
+ },
154
+ onDrop: (event) => handleDropEvent(event),
155
+ children: /* @__PURE__ */ jsx("div", { className: "title", children: "Release to analyse the Playwright Trace" })
156
+ }
157
+ )
158
+ ] });
159
+ };
160
+ const emptyModel = new MultiTraceModel([]);
161
+ (async () => {
162
+ applyTheme();
163
+ if (window.location.protocol !== "file:") {
164
+ if (window.location.href.includes("isUnderTest=true"))
165
+ await new Promise((f) => setTimeout(f, 1e3));
166
+ if (!navigator.serviceWorker)
167
+ throw new Error(`Service workers are not supported.
168
+ Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.`);
169
+ navigator.serviceWorker.register("sw.bundle.js");
170
+ if (!navigator.serviceWorker.controller) {
171
+ await new Promise((f) => {
172
+ navigator.serviceWorker.oncontrollerchange = () => f();
173
+ });
174
+ }
175
+ setInterval(function() {
176
+ fetch("ping");
177
+ }, 1e4);
178
+ }
179
+ reactDomExports.render(/* @__PURE__ */ jsx(WorkbenchLoader, {}), document.querySelector("#root"));
180
+ })();
181
+ //# sourceMappingURL=index.55e65778.js.map
@@ -1,4 +1,4 @@
1
- import { M as MultiTraceModel, r as reactExports, c as connect, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, W as Workbench, a as applyTheme, b as reactDomExports } from "./assets/wsPort-EUvw-dwH.js";
1
+ import { M as MultiTraceModel, r as reactExports, c as connect, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, W as Workbench, a as applyTheme, b as reactDomExports } from "./assets/wsPort-CAXygIGt.js";
2
2
  const WorkbenchLoader = () => {
3
3
  const [isServer, setIsServer] = reactExports.useState(false);
4
4
  const [traceURLs, setTraceURLs] = reactExports.useState([]);
@@ -177,4 +177,4 @@ Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.
177
177
  }
178
178
  reactDomExports.render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}), document.querySelector("#root"));
179
179
  })();
180
- //# sourceMappingURL=index.6KJ-JQ0L.js.map
180
+ //# sourceMappingURL=index.5nqVcfiC.js.map
@@ -1,5 +1,4 @@
1
- import { M as MultiTraceModel, r as reactExports, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, W as Workbench, a as applyTheme, c as createRoot } from "./assets/workbench-C5OQh9VX.js";
2
- import { T as TestServerConnection, W as WebSocketTestServerTransport } from "./assets/testServerConnection-D-tXL3sj.js";
1
+ import { M as MultiTraceModel, r as reactExports, c as connect, j as jsxRuntimeExports, T as ToolbarButton, t as toggleTheme, W as Workbench, a as applyTheme, b as reactDomExports } from "./assets/wsPort-peeLnQhT.js";
3
2
  const WorkbenchLoader = () => {
4
3
  const [isServer, setIsServer] = reactExports.useState(false);
5
4
  const [traceURLs, setTraceURLs] = reactExports.useState([]);
@@ -30,21 +29,6 @@ const WorkbenchLoader = () => {
30
29
  setDragOver(false);
31
30
  setProcessingErrorMessage(null);
32
31
  }, []);
33
- reactExports.useEffect(() => {
34
- const listener = async (e) => {
35
- var _a;
36
- if (!((_a = e.clipboardData) == null ? void 0 : _a.files.length))
37
- return;
38
- for (const file of e.clipboardData.files) {
39
- if (file.type !== "application/zip")
40
- return;
41
- }
42
- e.preventDefault();
43
- processTraceFiles(e.clipboardData.files);
44
- };
45
- document.addEventListener("paste", listener);
46
- return () => document.removeEventListener("paste", listener);
47
- });
48
32
  const handleDropEvent = reactExports.useCallback((event) => {
49
33
  event.preventDefault();
50
34
  processTraceFiles(event.dataTransfer.files);
@@ -66,16 +50,18 @@ const WorkbenchLoader = () => {
66
50
  }
67
51
  }
68
52
  if (params.has("isServer")) {
69
- const guid = new URLSearchParams(window.location.search).get("ws");
70
- const wsURL = new URL(`../${guid}`, window.location.toString());
71
- wsURL.protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
72
- const testServerConnection = new TestServerConnection(new WebSocketTestServerTransport(wsURL));
73
- testServerConnection.onLoadTraceRequested(async (params2) => {
74
- setTraceURLs(params2.traceUrl ? [params2.traceUrl] : []);
75
- setDragOver(false);
76
- setProcessingErrorMessage(null);
77
- });
78
- testServerConnection.initialize({}).catch(() => {
53
+ connect({
54
+ onEvent(method, params2) {
55
+ if (method === "loadTrace") {
56
+ setTraceURLs(params2.url ? [params2.url] : []);
57
+ setDragOver(false);
58
+ setProcessingErrorMessage(null);
59
+ }
60
+ },
61
+ onClose() {
62
+ }
63
+ }).then((sendMessage) => {
64
+ sendMessage("ready");
79
65
  });
80
66
  } else if (!newTraceURLs.some((url) => url.startsWith("blob:"))) {
81
67
  setTraceURLs(newTraceURLs);
@@ -115,12 +101,11 @@ const WorkbenchLoader = () => {
115
101
  }
116
102
  })();
117
103
  }, [isServer, traceURLs, uploadedTraceNames]);
118
- const showFileUploadDropArea = !!(!isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage));
119
104
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "vbox workbench-loader", onDragOver: (event) => {
120
105
  event.preventDefault();
121
106
  setDragOver(true);
122
107
  }, children: [
123
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hbox header", ...showFileUploadDropArea ? { inert: "true" } : {}, children: [
108
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hbox header", children: [
124
109
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "playwright-logo.svg", alt: "Playwright logo" }) }),
125
110
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "product", children: "Playwright" }),
126
111
  model.title && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: model.title }),
@@ -128,7 +113,7 @@ const WorkbenchLoader = () => {
128
113
  /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarButton, { icon: "color-mode", title: "Toggle color mode", toggled: false, onClick: () => toggleTheme() })
129
114
  ] }),
130
115
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "inner-progress", style: { width: progress.total ? 100 * progress.done / progress.total + "%" : 0 } }) }),
131
- /* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model, inert: showFileUploadDropArea, showSettings: true }),
116
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Workbench, { model }),
132
117
  fileForLocalModeError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
133
118
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Trace Viewer uses Service Workers to show traces. To view trace:" }),
134
119
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { paddingTop: 20 }, children: [
@@ -144,9 +129,9 @@ const WorkbenchLoader = () => {
144
129
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "3. Drop the trace from the download shelf into the page" })
145
130
  ] })
146
131
  ] }),
147
- showFileUploadDropArea && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
148
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "processing-error", role: "alert", children: processingErrorMessage }),
149
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", role: "heading", "aria-level": 1, children: "Drop Playwright Trace to load" }),
132
+ !isServer && !dragOver && !fileForLocalModeError && (!traceURLs.length || processingErrorMessage) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "drop-target", children: [
133
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "processing-error", children: processingErrorMessage }),
134
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Drop Playwright Trace to load" }),
150
135
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "or" }),
151
136
  /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => {
152
137
  const input = document.createElement("input");
@@ -154,7 +139,7 @@ const WorkbenchLoader = () => {
154
139
  input.multiple = true;
155
140
  input.click();
156
141
  input.addEventListener("change", (e) => handleFileInputChange(e));
157
- }, type: "button", children: "Select file(s)" }),
142
+ }, children: "Select file(s)" }),
158
143
  /* @__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." })
159
144
  ] }),
160
145
  isServer && !traceURLs.length && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "drop-target", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "title", children: "Select test to see the trace" }) }),
@@ -190,6 +175,6 @@ Make sure to serve the Trace Viewer (${window.location}) via HTTPS or localhost.
190
175
  fetch("ping");
191
176
  }, 1e4);
192
177
  }
193
- createRoot(document.querySelector("#root")).render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}));
178
+ reactDomExports.render(/* @__PURE__ */ jsxRuntimeExports.jsx(WorkbenchLoader, {}), document.querySelector("#root"));
194
179
  })();
195
- //# sourceMappingURL=index.C0EgJ4oW.js.map
180
+ //# sourceMappingURL=index.5ooko4n7.js.map