plum-e2e 2.10.0 → 2.12.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.
- package/.env +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +28 -27
- package/backend/app.js +1 -1
- package/backend/lib/csv.js +21 -0
- package/backend/lib/exportResponse.js +37 -0
- package/backend/lib/serverBootstrap.js +2 -2
- package/backend/lib/serverConfig.js +5 -3
- package/backend/mcp/server.js +44 -0
- package/backend/middleware/runnerOrAdmin.js +1 -1
- package/backend/package.json +1 -1
- package/backend/routes/reports.routes.js +19 -0
- package/backend/routes/runners.routes.js +1 -1
- package/backend/routes/test-cases.routes.js +12 -0
- package/backend/routes/test-runs.routes.js +17 -0
- package/backend/routes/test-suites.routes.js +34 -0
- package/backend/scripts/{manage-runners.mjs → manage-nodes.mjs} +67 -52
- package/backend/services/exportService.js +339 -0
- package/backend/services/testImportService.js +87 -0
- package/bin/plum.js +201 -75
- package/docker-compose.yml +1 -1
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +49 -41
- package/frontend/.svelte-kit/{output/server/_app/immutable/assets/Toast.DENwYn3g.css → adapter-node/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/.svelte-kit/{output/client/_app/immutable/assets/_layout.HkPnpRl9.css → adapter-node/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B3djLY18.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/adapter-node/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/common.js +11 -4
- package/frontend/.svelte-kit/adapter-node/chunks/constants.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/repository.js +21 -17
- package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +9 -2
- package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +2 -5
- package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +300 -253
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +63 -36
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +3 -6
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +15 -17
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +1 -1
- package/frontend/.svelte-kit/adapter-node/manifest.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/11.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/4.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/6.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/7.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
- package/frontend/.svelte-kit/generated/server/internal.js +1 -1
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +451 -414
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/{0.CmJTG5mP.css → 0.DbhNvxzA.css} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.B3djLY18.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/{adapter-node/_app/immutable/assets/Toast.DENwYn3g.css → output/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/{build/client/_app/immutable/assets/_layout.HkPnpRl9.css → .svelte-kit/output/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C2_rQ4aY.js → 3MBVX4Yb.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/CfkUW1vA.js → .svelte-kit/output/client/_app/immutable/chunks/6VDMVB5U.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/B0_HKFXV.js → .svelte-kit/output/client/_app/immutable/chunks/B2lVGNml.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B74j8LrV.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/CboYYxrf.js → .svelte-kit/output/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIDsfWFz.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CeH-RgMb.js → BIf7lHIm.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DAmOMhaf.js → BWGoOYU0.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/DiVmSEJa.js → .svelte-kit/output/client/_app/immutable/chunks/BX-5iVGy.js} +2 -2
- package/frontend/{build/client/_app/immutable/chunks/BAvTKHxT.js → .svelte-kit/output/client/_app/immutable/chunks/BnXsGCy3.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{Ck6C3Fl0.js → CXQhSK1T.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/C00jnSU2.js → .svelte-kit/output/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D72giPTu.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{GDjpV3r7.js → DDx3no2z.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DFZtPGTY.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/C8S7qQjQ.js → .svelte-kit/output/client/_app/immutable/chunks/DeiVAbyn.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/d2K3c8Kx.js → .svelte-kit/output/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/Cgw8TOOy.js → .svelte-kit/output/client/_app/immutable/chunks/gCgJ3Cwu.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/BJ_ypKl3.js → .svelte-kit/output/client/_app/immutable/chunks/htkwR9b-.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/C7uEQ-LH.js → .svelte-kit/output/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CoTEzvLa.js → kFFd6Oo5.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DWzEJYIF.js → prk8PJfA.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{B00vxw57.js → tsOANt55.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/zXSLr47H.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.oEEXlUWx.js +7 -0
- package/frontend/{build/client/_app/immutable/entry/start.BXOLyf9R.js → .svelte-kit/output/client/_app/immutable/entry/start.BtJ124rC.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.BI97il3r.js → 1.C-Zryp-y.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.PLIMGzrY.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BGCTaTPG.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{2.Dr6yugXz.js → 2.Bno00fr8.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{4.DDADylfF.js → 4.ahxFrDUH.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.BXasF8ka.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.iy5VcxjU.js +9 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.BOK0GNF_.js → 9.Bcqk4p04.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +49 -41
- package/frontend/{build/client/_app/immutable/assets/Toast.DENwYn3g.css → .svelte-kit/output/server/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/.svelte-kit/{adapter-node/_app/immutable/assets/_layout.HkPnpRl9.css → output/server/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B3djLY18.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/server/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/common.js +11 -4
- package/frontend/.svelte-kit/output/server/chunks/constants.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/repository.js +21 -17
- package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +9 -2
- package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +2 -5
- package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +300 -253
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +63 -36
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +3 -6
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +15 -17
- package/frontend/.svelte-kit/output/server/manifest-full.js +1 -1
- package/frontend/.svelte-kit/output/server/manifest.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/10.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/11.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/12.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/3.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/4.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/6.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/7.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/8.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
- package/frontend/build/client/_app/immutable/assets/{0.CmJTG5mP.css → 0.DbhNvxzA.css} +1 -1
- package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.DbhNvxzA.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css +6 -0
- package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/10.D2ehp3UL.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css +6 -0
- package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/3.B3djLY18.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css +6 -0
- package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.BofiCOMr.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/assets/Toast.DENwYn3g.css → build/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.gz +0 -0
- package/frontend/{.svelte-kit/output/server/_app/immutable/assets/_layout.HkPnpRl9.css → build/client/_app/immutable/assets/_layout.DWCC-fI9.css} +1 -1
- package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.DWCC-fI9.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.B3djLY18.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BNh9zY8Y.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.D1jbMcpb.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{C2_rQ4aY.js → 3MBVX4Yb.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CfkUW1vA.js → build/client/_app/immutable/chunks/6VDMVB5U.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/B0_HKFXV.js → build/client/_app/immutable/chunks/B2lVGNml.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B74j8LrV.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CboYYxrf.js → build/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.br +6 -0
- package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIDsfWFz.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{CeH-RgMb.js → BIf7lHIm.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/{CeH-RgMb.js.gz → BIf7lHIm.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DAmOMhaf.js → BWGoOYU0.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/DiVmSEJa.js → build/client/_app/immutable/chunks/BX-5iVGy.js} +2 -2
- package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BX-5iVGy.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BAvTKHxT.js → build/client/_app/immutable/chunks/BnXsGCy3.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{Ck6C3Fl0.js → CXQhSK1T.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C00jnSU2.js → build/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/D72giPTu.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{GDjpV3r7.js → DDx3no2z.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFZtPGTY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C8S7qQjQ.js → build/client/_app/immutable/chunks/DeiVAbyn.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.br +6 -0
- package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dn1b1Jgc.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/d2K3c8Kx.js → build/client/_app/immutable/chunks/QwDXcLXz.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/QwDXcLXz.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/Cgw8TOOy.js → build/client/_app/immutable/chunks/gCgJ3Cwu.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BJ_ypKl3.js → build/client/_app/immutable/chunks/htkwR9b-.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C7uEQ-LH.js → build/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{CoTEzvLa.js → kFFd6Oo5.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DWzEJYIF.js → prk8PJfA.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{B00vxw57.js → tsOANt55.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js +7 -0
- package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.oEEXlUWx.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.BXOLyf9R.js → build/client/_app/immutable/entry/start.BtJ124rC.js} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.BXOLyf9R.js.br → start.BtJ124rC.js.br} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.BXOLyf9R.js.gz → start.BtJ124rC.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.coxCxRRE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{1.BI97il3r.js → 1.C-Zryp-y.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.C-Zryp-y.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.CXqf0Rbs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.PLIMGzrY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BGCTaTPG.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{2.Dr6yugXz.js → 2.Bno00fr8.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.HmZmGlze.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{4.DDADylfF.js → 4.ahxFrDUH.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.ahxFrDUH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.BXasF8ka.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js +10 -0
- package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DYiAtU_m.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js +9 -0
- package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.iy5VcxjU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{9.BOK0GNF_.js → 9.Bcqk4p04.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.Bcqk4p04.js.gz +0 -0
- package/frontend/build/client/_app/version.json +1 -1
- package/frontend/build/client/_app/version.json.br +0 -0
- package/frontend/build/client/_app/version.json.gz +0 -0
- package/frontend/build/server/chunks/0-C9vi7MPa.js +22 -0
- package/frontend/build/server/chunks/0-C9vi7MPa.js.map +5 -0
- package/frontend/build/server/chunks/{1-B3HpigzL.js → 1-DzLSP_fj.js} +2 -2
- package/frontend/build/server/chunks/{1-B3HpigzL.js.map → 1-DzLSP_fj.js.map} +1 -1
- package/frontend/build/server/chunks/10-C2C3V4ib.js +14 -0
- package/frontend/build/server/chunks/10-C2C3V4ib.js.map +5 -0
- package/frontend/build/server/chunks/11-TJq4Q43D.js +14 -0
- package/frontend/build/server/chunks/11-TJq4Q43D.js.map +5 -0
- package/frontend/build/server/chunks/12-B1JDiNwh.js +14 -0
- package/frontend/build/server/chunks/12-B1JDiNwh.js.map +5 -0
- package/frontend/build/server/chunks/2-Dalgd2D4.js +14 -0
- package/frontend/build/server/chunks/{2-DioMbKbC.js.map → 2-Dalgd2D4.js.map} +1 -1
- package/frontend/build/server/chunks/3-DZ2GSPqb.js +14 -0
- package/frontend/build/server/chunks/3-DZ2GSPqb.js.map +5 -0
- package/frontend/build/server/chunks/4-C-1FSKpN.js +14 -0
- package/frontend/build/server/chunks/{4-BM-49dbE.js.map → 4-C-1FSKpN.js.map} +1 -1
- package/frontend/build/server/chunks/5-ZN8cEN5r.js +14 -0
- package/frontend/build/server/chunks/{5-Brx_KOzy.js.map → 5-ZN8cEN5r.js.map} +1 -1
- package/frontend/build/server/chunks/6-CInDe8Ui.js +14 -0
- package/frontend/build/server/chunks/6-CInDe8Ui.js.map +5 -0
- package/frontend/build/server/chunks/7-DTNbErSe.js +14 -0
- package/frontend/build/server/chunks/7-DTNbErSe.js.map +5 -0
- package/frontend/build/server/chunks/8-DTzm-G0z.js +14 -0
- package/frontend/build/server/chunks/8-DTzm-G0z.js.map +5 -0
- package/frontend/build/server/chunks/9-CjMorbDi.js +14 -0
- package/frontend/build/server/chunks/{9-BMAKiAem.js.map → 9-CjMorbDi.js.map} +1 -1
- package/frontend/build/server/chunks/{Toast-CHB87F8k.js → Button-B9h9viZX.js} +3 -17
- package/frontend/build/server/chunks/Button-B9h9viZX.js.map +5 -0
- package/frontend/build/server/chunks/{ConfirmModal-CtGWHl0v.js → ConfirmModal-C6Cz898n.js} +2 -2
- package/frontend/build/server/chunks/{ConfirmModal-CtGWHl0v.js.map → ConfirmModal-C6Cz898n.js.map} +1 -1
- package/frontend/build/server/chunks/{EmptyState-Zpm9tJe1.js → EmptyState-CRtsJIv6.js} +2 -2
- package/frontend/build/server/chunks/{EmptyState-Zpm9tJe1.js.map → EmptyState-CRtsJIv6.js.map} +1 -1
- package/frontend/build/server/chunks/{_layout.svelte-C_6nsIpT.js → _layout.svelte-CiX-oQp_.js} +4 -4
- package/frontend/build/server/chunks/{_layout.svelte-C_6nsIpT.js.map → _layout.svelte-CiX-oQp_.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-CTebwzwy.js → _page.svelte-BYYUOBOB.js} +12 -7
- package/frontend/build/server/chunks/_page.svelte-BYYUOBOB.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-DHZhNTPg.js → _page.svelte-BaxqeEYc.js} +68 -42
- package/frontend/build/server/chunks/_page.svelte-BaxqeEYc.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js +898 -0
- package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-Bamoq11m.js → _page.svelte-CP6jA1ex.js} +6 -6
- package/frontend/build/server/chunks/{_page.svelte-Bamoq11m.js.map → _page.svelte-CP6jA1ex.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-CbTrCeeX.js → _page.svelte-D6b-klLK.js} +9 -9
- package/frontend/build/server/chunks/{_page.svelte-CbTrCeeX.js.map → _page.svelte-D6b-klLK.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-DObTHQe2.js → _page.svelte-DAIQT067.js} +8 -8
- package/frontend/build/server/chunks/_page.svelte-DAIQT067.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CmJKt3-H.js → _page.svelte-DBjTpquQ.js} +18 -21
- package/frontend/build/server/chunks/_page.svelte-DBjTpquQ.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CAlhaCzS.js → _page.svelte-mZF4NrfU.js} +9 -12
- package/frontend/build/server/chunks/_page.svelte-mZF4NrfU.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-BNwU9zza.js → _page.svelte-nrlgIFaU.js} +8 -11
- package/frontend/build/server/chunks/_page.svelte-nrlgIFaU.js.map +5 -0
- package/frontend/build/server/chunks/{common-DYYTVHPw.js → common-DS-Z0UFe.js} +7 -2
- package/frontend/build/server/chunks/common-DS-Z0UFe.js.map +5 -0
- package/frontend/build/server/chunks/{constants-BYVkTZ-O.js → constants-OmHysD51.js} +2 -2
- package/frontend/build/server/chunks/{constants-BYVkTZ-O.js.map → constants-OmHysD51.js.map} +1 -1
- package/frontend/build/server/chunks/{format-2pqy61MU.js → format-Bqb0as15.js} +2 -2
- package/frontend/build/server/chunks/{format-2pqy61MU.js.map → format-Bqb0as15.js.map} +1 -1
- package/frontend/build/server/chunks/{reports-WuXG6tj3.js → reports-chCHCDzB.js} +2 -2
- package/frontend/build/server/chunks/{reports-WuXG6tj3.js.map → reports-chCHCDzB.js.map} +1 -1
- package/frontend/build/server/chunks/{reports2-CCpI0xkQ.js → reports2-Dr3zu9CD.js} +2 -2
- package/frontend/build/server/chunks/{reports2-CCpI0xkQ.js.map → reports2-Dr3zu9CD.js.map} +1 -1
- package/frontend/build/server/chunks/{repository-TYWcFuWP.js → repository-DSsWVKEb.js} +5 -3
- package/frontend/build/server/chunks/repository-DSsWVKEb.js.map +5 -0
- package/frontend/build/server/chunks/{runner-D5yCWOsy.js → runner-aaUtOqck.js} +3 -3
- package/frontend/build/server/chunks/{runner-D5yCWOsy.js.map → runner-aaUtOqck.js.map} +1 -1
- package/frontend/build/server/index.js +1 -1
- package/frontend/build/server/index.js.map +1 -1
- package/frontend/build/server/manifest.js +14 -14
- package/frontend/build/server/manifest.js.map +1 -1
- package/frontend/src/lib/api/reports.js +7 -0
- package/frontend/src/lib/api/repository.js +28 -0
- package/frontend/src/lib/components/layout/RunnerPanel.svelte +2 -1
- package/frontend/src/lib/components/reports/LiveReplayer.svelte +0 -6
- package/frontend/src/lib/components/reports/RecordingPlayer.svelte +29 -6
- package/frontend/src/lib/components/ui/ExportMenu.svelte +154 -0
- package/frontend/src/lib/components/ui/NotificationStack.svelte +99 -0
- package/frontend/src/lib/constants.js +1 -1
- package/frontend/src/lib/copy/common.js +9 -0
- package/frontend/src/lib/copy/reports.js +7 -0
- package/frontend/src/lib/copy/repository.js +4 -0
- package/frontend/src/lib/copy/settings.js +15 -0
- package/frontend/src/lib/stores/notifications.js +23 -0
- package/frontend/src/lib/utils/download.js +28 -0
- package/frontend/src/routes/+layout.svelte +2 -0
- package/frontend/src/routes/reports/[id]/+page.svelte +37 -3
- package/frontend/src/routes/scheduled-tests/+page.svelte +9 -17
- package/frontend/src/routes/settings/+page.svelte +140 -56
- package/frontend/src/routes/test-repository/+page.svelte +47 -16
- package/frontend/src/routes/test-repository/runs/[id]/+page.svelte +14 -23
- package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +38 -22
- package/package.json +1 -1
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.COwSGmmy.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
- package/frontend/.svelte-kit/generated/client/nodes/13.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.B9H_IpSU.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BN5XbLUX.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.COwSGmmy.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.COwSGmmy.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/2-KCkWZO.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BbYY_TzB.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Beula-TH.js +0 -11
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CZWchtW8.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CegSvdD-.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cfmt4_tJ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DB3YXVFP.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DgQy0SB2.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dl-F6VCo.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DuAVKaL3.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/K1h4wprj.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.DRjRA71t.js +0 -7
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CRb8Nyce.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.kyazROhw.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.B3vMgT2v.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.DkPcIrgW.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.DUiL7fb5.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.N4CeDeoD.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DWd93Bv5.js +0 -10
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.c8d1cQQM.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.Cvd3MauU.js +0 -9
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.COwSGmmy.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
- package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css +0 -6
- package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +0 -6
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css +0 -6
- package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css +0 -6
- package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Beula-TH.js +0 -11
- package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.br +0 -6
- package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.br +0 -7
- package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js +0 -7
- package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js +0 -10
- package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js +0 -9
- package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.gz +0 -0
- package/frontend/build/server/chunks/0-_rljpEay.js +0 -22
- package/frontend/build/server/chunks/0-_rljpEay.js.map +0 -5
- package/frontend/build/server/chunks/10-BQBBYpxV.js +0 -14
- package/frontend/build/server/chunks/10-BQBBYpxV.js.map +0 -5
- package/frontend/build/server/chunks/11-10xw0TIP.js +0 -14
- package/frontend/build/server/chunks/11-10xw0TIP.js.map +0 -5
- package/frontend/build/server/chunks/12-CZ3_Uw3c.js +0 -14
- package/frontend/build/server/chunks/12-CZ3_Uw3c.js.map +0 -5
- package/frontend/build/server/chunks/2-DioMbKbC.js +0 -14
- package/frontend/build/server/chunks/3-CgiZg_9v.js +0 -14
- package/frontend/build/server/chunks/3-CgiZg_9v.js.map +0 -5
- package/frontend/build/server/chunks/4-BM-49dbE.js +0 -14
- package/frontend/build/server/chunks/5-Brx_KOzy.js +0 -14
- package/frontend/build/server/chunks/6-C5swINND.js +0 -14
- package/frontend/build/server/chunks/6-C5swINND.js.map +0 -5
- package/frontend/build/server/chunks/7-B8e4y3CB.js +0 -14
- package/frontend/build/server/chunks/7-B8e4y3CB.js.map +0 -5
- package/frontend/build/server/chunks/8-BZtkZMIZ.js +0 -14
- package/frontend/build/server/chunks/8-BZtkZMIZ.js.map +0 -5
- package/frontend/build/server/chunks/9-BMAKiAem.js +0 -14
- package/frontend/build/server/chunks/Toast-CHB87F8k.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-BNwU9zza.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CAlhaCzS.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CmJKt3-H.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-DHZhNTPg.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js +0 -852
- package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js.map +0 -5
- package/frontend/build/server/chunks/common-DYYTVHPw.js.map +0 -5
- package/frontend/build/server/chunks/repository-TYWcFuWP.js.map +0 -5
- package/frontend/src/lib/components/ui/Toast.svelte +0 -24
|
@@ -15,21 +15,21 @@ return {
|
|
|
15
15
|
assets: new Set(["favicon-32x32.png","favicon.ico"]),
|
|
16
16
|
mimeTypes: {".png":"image/png"},
|
|
17
17
|
_: {
|
|
18
|
-
client: {start:"_app/immutable/entry/start.
|
|
18
|
+
client: {start:"_app/immutable/entry/start.BtJ124rC.js",app:"_app/immutable/entry/app.oEEXlUWx.js",imports:["_app/immutable/entry/start.BtJ124rC.js","_app/immutable/chunks/BX-5iVGy.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/entry/app.oEEXlUWx.js","_app/immutable/chunks/BIf7lHIm.js","_app/immutable/chunks/6VDMVB5U.js","_app/immutable/chunks/D_thT6pZ.js","_app/immutable/chunks/D72giPTu.js","_app/immutable/chunks/BCh31ecr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
19
19
|
nodes: [
|
|
20
|
-
__memo(() => import('./chunks/0-
|
|
21
|
-
__memo(() => import('./chunks/1-
|
|
22
|
-
__memo(() => import('./chunks/2-
|
|
23
|
-
__memo(() => import('./chunks/3-
|
|
24
|
-
__memo(() => import('./chunks/4-
|
|
25
|
-
__memo(() => import('./chunks/5-
|
|
26
|
-
__memo(() => import('./chunks/6-
|
|
27
|
-
__memo(() => import('./chunks/7-
|
|
28
|
-
__memo(() => import('./chunks/8-
|
|
29
|
-
__memo(() => import('./chunks/9-
|
|
30
|
-
__memo(() => import('./chunks/10-
|
|
31
|
-
__memo(() => import('./chunks/11-
|
|
32
|
-
__memo(() => import('./chunks/12-
|
|
20
|
+
__memo(() => import('./chunks/0-C9vi7MPa.js')),
|
|
21
|
+
__memo(() => import('./chunks/1-DzLSP_fj.js')),
|
|
22
|
+
__memo(() => import('./chunks/2-Dalgd2D4.js')),
|
|
23
|
+
__memo(() => import('./chunks/3-DZ2GSPqb.js')),
|
|
24
|
+
__memo(() => import('./chunks/4-C-1FSKpN.js')),
|
|
25
|
+
__memo(() => import('./chunks/5-ZN8cEN5r.js')),
|
|
26
|
+
__memo(() => import('./chunks/6-CInDe8Ui.js')),
|
|
27
|
+
__memo(() => import('./chunks/7-DTNbErSe.js')),
|
|
28
|
+
__memo(() => import('./chunks/8-DTzm-G0z.js')),
|
|
29
|
+
__memo(() => import('./chunks/9-CjMorbDi.js')),
|
|
30
|
+
__memo(() => import('./chunks/10-C2C3V4ib.js')),
|
|
31
|
+
__memo(() => import('./chunks/11-TJq4Q43D.js')),
|
|
32
|
+
__memo(() => import('./chunks/12-B1JDiNwh.js'))
|
|
33
33
|
],
|
|
34
34
|
routes: [
|
|
35
35
|
{
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
This file is part of Plum.
|
|
3
3
|
Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
4
|
*/
|
|
5
|
-
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"favicon-32x32.png\",\"favicon.ico\"]),\n\tmimeTypes: {\".png\":\"image/png\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.
|
|
5
|
+
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"favicon-32x32.png\",\"favicon.ico\"]),\n\tmimeTypes: {\".png\":\"image/png\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.BtJ124rC.js\",app:\"_app/immutable/entry/app.oEEXlUWx.js\",imports:[\"_app/immutable/entry/start.BtJ124rC.js\",\"_app/immutable/chunks/BX-5iVGy.js\",\"_app/immutable/chunks/BIf7lHIm.js\",\"_app/immutable/entry/app.oEEXlUWx.js\",\"_app/immutable/chunks/BIf7lHIm.js\",\"_app/immutable/chunks/6VDMVB5U.js\",\"_app/immutable/chunks/D_thT6pZ.js\",\"_app/immutable/chunks/D72giPTu.js\",\"_app/immutable/chunks/BCh31ecr.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js')),\n\t\t\t__memo(() => import('./nodes/9.js')),\n\t\t\t__memo(() => import('./nodes/10.js')),\n\t\t\t__memo(() => import('./nodes/11.js')),\n\t\t\t__memo(() => import('./nodes/12.js'))\n\t\t],\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/live/[id]\",\n\t\t\t\tpattern: /^\\/live\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/login\",\n\t\t\t\tpattern: /^\\/login\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/reports\",\n\t\t\t\tpattern: /^\\/reports\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/reports/[id]\",\n\t\t\t\tpattern: /^\\/reports\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/scheduled-tests\",\n\t\t\t\tpattern: /^\\/scheduled-tests\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/settings\",\n\t\t\t\tpattern: /^\\/settings\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/setup\",\n\t\t\t\tpattern: /^\\/setup\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 9 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/test-repository\",\n\t\t\t\tpattern: /^\\/test-repository\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 10 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/test-repository/runs/[id]\",\n\t\t\t\tpattern: /^\\/test-repository\\/runs\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 11 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/test-repository/suites/[id]\",\n\t\t\t\tpattern: /^\\/test-repository\\/suites\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 12 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { API_BASE, REPORTS_PER_PAGE } from '$lib/constants';
|
|
7
|
+
import { downloadFromEndpoint } from '$lib/utils/download';
|
|
7
8
|
|
|
8
9
|
function withDate(r) {
|
|
9
10
|
return { ...r, date: new Date(r.createdAt).toLocaleString() };
|
|
@@ -51,6 +52,12 @@ export async function fetchRecordingEvents(reportId, recordingId) {
|
|
|
51
52
|
return events;
|
|
52
53
|
}
|
|
53
54
|
|
|
55
|
+
export async function downloadReportExport(id, format) {
|
|
56
|
+
await downloadFromEndpoint(`${API_BASE}/reports/${id}/export?format=${format}`, {
|
|
57
|
+
fallbackName: `report-${id}.${format}`
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
54
61
|
export async function deleteReport(id) {
|
|
55
62
|
const res = await fetch(`${API_BASE}/reports/${id}`, { method: 'DELETE' });
|
|
56
63
|
if (!res.ok) throw new Error('Failed to delete report');
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { API_BASE, REPO_PAGE_SIZE } from '$lib/constants';
|
|
7
7
|
import { auth } from '$lib/stores/auth';
|
|
8
|
+
import { downloadFromEndpoint } from '$lib/utils/download';
|
|
8
9
|
|
|
9
10
|
function getToken() {
|
|
10
11
|
return auth.getToken();
|
|
@@ -242,3 +243,30 @@ export async function migratePrefixes({ testCasePrefix, testSuitePrefix }) {
|
|
|
242
243
|
});
|
|
243
244
|
return res.json();
|
|
244
245
|
}
|
|
246
|
+
|
|
247
|
+
// ── Export / import ──────────────────────────────────────────────────────────
|
|
248
|
+
|
|
249
|
+
function testCaseExportUrl(scope, id, format) {
|
|
250
|
+
const q = `?format=${format}`;
|
|
251
|
+
if (scope === 'suite') return `${API_BASE}/test-suites/${id}/export${q}`;
|
|
252
|
+
if (scope === 'run') return `${API_BASE}/test-runs/${id}/export${q}`;
|
|
253
|
+
return `${API_BASE}/test-suites/export${q}`;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export async function downloadTestCaseExport(scope, id, format) {
|
|
257
|
+
await downloadFromEndpoint(testCaseExportUrl(scope, id, format), {
|
|
258
|
+
headers: { Authorization: `Bearer ${getToken()}` },
|
|
259
|
+
fallbackName: `test-cases.${format}`
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export async function importTestCases(payload) {
|
|
264
|
+
const res = await fetch(`${API_BASE}/test-cases/import`, {
|
|
265
|
+
method: 'POST',
|
|
266
|
+
headers: authHeaders(),
|
|
267
|
+
body: JSON.stringify(payload)
|
|
268
|
+
});
|
|
269
|
+
const data = await res.json();
|
|
270
|
+
if (!res.ok) throw new Error(data.error ?? 'Import failed');
|
|
271
|
+
return data;
|
|
272
|
+
}
|
|
@@ -406,6 +406,7 @@
|
|
|
406
406
|
<a
|
|
407
407
|
href={reportUrl(lastFinished.reportId)}
|
|
408
408
|
class="view-report-btn"
|
|
409
|
+
on:click={() => panelExpanded.set(false)}
|
|
409
410
|
transition:fly={{ x: -6, duration: 200 }}
|
|
410
411
|
>
|
|
411
412
|
{VIEW_REPORT_LABEL}
|
|
@@ -751,7 +752,7 @@
|
|
|
751
752
|
class:pulse-accent={run.status === 'running'}
|
|
752
753
|
class:queued-dot={run.status === 'queued'}
|
|
753
754
|
></span>
|
|
754
|
-
<a href="/live/{runId}" class="run-card-main">
|
|
755
|
+
<a href="/live/{runId}" class="run-card-main" on:click={() => panelExpanded.set(false)}>
|
|
755
756
|
<div class="run-card-info">
|
|
756
757
|
<span class="run-card-label">{run.label || MANUAL_RUN_LABEL}</span>
|
|
757
758
|
<span class="run-card-meta">
|
|
@@ -123,10 +123,4 @@
|
|
|
123
123
|
border-radius: 0 !important;
|
|
124
124
|
box-shadow: none !important;
|
|
125
125
|
}
|
|
126
|
-
|
|
127
|
-
/* Sandboxed iframe (no allow-scripts/forms/top-navigation) — safe to always
|
|
128
|
-
allow pointer interaction so a taller live page can still be scrolled. */
|
|
129
|
-
.live-mount :global(iframe) {
|
|
130
|
-
pointer-events: auto !important;
|
|
131
|
-
}
|
|
132
126
|
</style>
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
let livePosition = 0;
|
|
67
67
|
let livePositionRaf = null;
|
|
68
68
|
function tickLivePosition() {
|
|
69
|
+
armClickGuard();
|
|
69
70
|
// Skip while finished: the finish handler snaps livePosition to overallTo
|
|
70
71
|
// (endedAt can sit past the last real event) — polling here would
|
|
71
72
|
// immediately overwrite that.
|
|
@@ -73,6 +74,21 @@
|
|
|
73
74
|
if (replayer && !finished) livePosition = mountedFirst + replayer.getCurrentTime();
|
|
74
75
|
livePositionRaf = requestAnimationFrame(tickLivePosition);
|
|
75
76
|
}
|
|
77
|
+
|
|
78
|
+
// Replays are read-only — block a click on a link/button from navigating the
|
|
79
|
+
// iframe off the recording (inspect mode's own click handler still runs).
|
|
80
|
+
// rrweb swaps the iframe document on each FullSnapshot, so re-arm on change.
|
|
81
|
+
let guardedDoc = null;
|
|
82
|
+
function blockNavigation(e) {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
}
|
|
85
|
+
function armClickGuard() {
|
|
86
|
+
const doc = currentReplayer()?.iframe?.contentDocument;
|
|
87
|
+
if (!doc || doc === guardedDoc) return;
|
|
88
|
+
guardedDoc = doc;
|
|
89
|
+
doc.addEventListener('click', blockNavigation, true);
|
|
90
|
+
doc.addEventListener('submit', blockNavigation, true);
|
|
91
|
+
}
|
|
76
92
|
$: overallFrom = segments[0]?.from ?? 0;
|
|
77
93
|
$: overallTo = segments[segments.length - 1]?.to ?? 0;
|
|
78
94
|
|
|
@@ -559,6 +575,10 @@
|
|
|
559
575
|
|
|
560
576
|
onDestroy(() => {
|
|
561
577
|
if (livePositionRaf !== null) cancelAnimationFrame(livePositionRaf);
|
|
578
|
+
if (guardedDoc) {
|
|
579
|
+
guardedDoc.removeEventListener('click', blockNavigation, true);
|
|
580
|
+
guardedDoc.removeEventListener('submit', blockNavigation, true);
|
|
581
|
+
}
|
|
562
582
|
stopInspectWatch();
|
|
563
583
|
destroyPlayer();
|
|
564
584
|
});
|
|
@@ -632,8 +652,6 @@
|
|
|
632
652
|
class:inspect-fab-active={inspecting}
|
|
633
653
|
on:click={toggleInspect}
|
|
634
654
|
disabled={loading || loadError}
|
|
635
|
-
title={INSPECT_TOGGLE_LABEL}
|
|
636
|
-
aria-label={INSPECT_TOGGLE_LABEL}
|
|
637
655
|
>
|
|
638
656
|
<svg
|
|
639
657
|
width="14"
|
|
@@ -647,6 +665,7 @@
|
|
|
647
665
|
>
|
|
648
666
|
<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z" />
|
|
649
667
|
</svg>
|
|
668
|
+
<span class="inspect-fab-label">{INSPECT_TOGGLE_LABEL}</span>
|
|
650
669
|
</button>
|
|
651
670
|
</div>
|
|
652
671
|
|
|
@@ -794,13 +813,12 @@
|
|
|
794
813
|
right: 0.75rem;
|
|
795
814
|
display: flex;
|
|
796
815
|
align-items: center;
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
height: 30px;
|
|
816
|
+
gap: 0.4rem;
|
|
817
|
+
padding: 0.4rem 0.7rem;
|
|
800
818
|
background: rgb(0 0 0 / 0.55);
|
|
801
819
|
backdrop-filter: blur(6px);
|
|
802
820
|
border: none;
|
|
803
|
-
border-radius:
|
|
821
|
+
border-radius: var(--radius-pill);
|
|
804
822
|
color: #fff;
|
|
805
823
|
cursor: pointer;
|
|
806
824
|
opacity: 0.7;
|
|
@@ -819,4 +837,9 @@
|
|
|
819
837
|
background: var(--accent);
|
|
820
838
|
opacity: 1;
|
|
821
839
|
}
|
|
840
|
+
.inspect-fab-label {
|
|
841
|
+
font-size: 0.72rem;
|
|
842
|
+
line-height: 1;
|
|
843
|
+
white-space: nowrap;
|
|
844
|
+
}
|
|
822
845
|
</style>
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
+
-->
|
|
5
|
+
|
|
6
|
+
<script>
|
|
7
|
+
import { createEventDispatcher } from 'svelte';
|
|
8
|
+
import { EXPORT_LABEL, EXPORT_MENU_ITEMS } from '$lib/copy/common';
|
|
9
|
+
|
|
10
|
+
export let label = EXPORT_LABEL;
|
|
11
|
+
export let items = EXPORT_MENU_ITEMS;
|
|
12
|
+
export let busy = false;
|
|
13
|
+
export let disabled = false;
|
|
14
|
+
export let align = 'right';
|
|
15
|
+
|
|
16
|
+
const dispatch = createEventDispatcher();
|
|
17
|
+
let open = false;
|
|
18
|
+
let root;
|
|
19
|
+
|
|
20
|
+
function toggle() {
|
|
21
|
+
if (!disabled && !busy) open = !open;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function pick(id) {
|
|
25
|
+
open = false;
|
|
26
|
+
dispatch('select', id);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function onWindowClick(e) {
|
|
30
|
+
if (open && root && !root.contains(e.target)) open = false;
|
|
31
|
+
}
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<svelte:window on:click={onWindowClick} on:keydown={(e) => e.key === 'Escape' && (open = false)} />
|
|
35
|
+
|
|
36
|
+
<div class="export-menu" bind:this={root}>
|
|
37
|
+
<button
|
|
38
|
+
type="button"
|
|
39
|
+
class="trigger"
|
|
40
|
+
class:open
|
|
41
|
+
{disabled}
|
|
42
|
+
aria-haspopup="menu"
|
|
43
|
+
aria-expanded={open}
|
|
44
|
+
on:click={toggle}
|
|
45
|
+
>
|
|
46
|
+
<svg
|
|
47
|
+
width="14"
|
|
48
|
+
height="14"
|
|
49
|
+
viewBox="0 0 24 24"
|
|
50
|
+
fill="none"
|
|
51
|
+
stroke="currentColor"
|
|
52
|
+
stroke-width="2"
|
|
53
|
+
stroke-linecap="round"
|
|
54
|
+
stroke-linejoin="round"
|
|
55
|
+
>
|
|
56
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
|
|
57
|
+
<polyline points="7 10 12 15 17 10" />
|
|
58
|
+
<line x1="12" y1="15" x2="12" y2="3" />
|
|
59
|
+
</svg>
|
|
60
|
+
<span>{busy ? '…' : label}</span>
|
|
61
|
+
</button>
|
|
62
|
+
|
|
63
|
+
{#if open}
|
|
64
|
+
<div class="popover" class:left={align === 'left'} role="menu">
|
|
65
|
+
{#each items as item (item.id)}
|
|
66
|
+
<button type="button" class="item" role="menuitem" on:click={() => pick(item.id)}>
|
|
67
|
+
<span class="item-label">{item.label}</span>
|
|
68
|
+
{#if item.hint}<span class="item-hint">{item.hint}</span>{/if}
|
|
69
|
+
</button>
|
|
70
|
+
{/each}
|
|
71
|
+
</div>
|
|
72
|
+
{/if}
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<style>
|
|
76
|
+
.export-menu {
|
|
77
|
+
position: relative;
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.trigger {
|
|
82
|
+
display: inline-flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
gap: 0.4rem;
|
|
85
|
+
font-family: var(--font-body);
|
|
86
|
+
font-size: 0.875rem;
|
|
87
|
+
padding: 0.55rem 1rem;
|
|
88
|
+
background: transparent;
|
|
89
|
+
color: var(--text-muted);
|
|
90
|
+
border: 1px solid var(--border);
|
|
91
|
+
border-radius: var(--radius-md);
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
white-space: nowrap;
|
|
94
|
+
transition:
|
|
95
|
+
background var(--duration-fast) var(--ease-out),
|
|
96
|
+
color var(--duration-fast) var(--ease-out),
|
|
97
|
+
border-color var(--duration-fast) var(--ease-out);
|
|
98
|
+
}
|
|
99
|
+
.trigger:hover:not(:disabled),
|
|
100
|
+
.trigger.open {
|
|
101
|
+
background: var(--bg-subtle);
|
|
102
|
+
color: var(--text);
|
|
103
|
+
border-color: var(--text-muted);
|
|
104
|
+
}
|
|
105
|
+
.trigger:disabled {
|
|
106
|
+
opacity: 0.38;
|
|
107
|
+
cursor: not-allowed;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.popover {
|
|
111
|
+
position: absolute;
|
|
112
|
+
top: calc(100% + 6px);
|
|
113
|
+
right: 0;
|
|
114
|
+
min-width: 12rem;
|
|
115
|
+
padding: 0.3rem;
|
|
116
|
+
background: var(--bg-elevated);
|
|
117
|
+
border: 1px solid var(--border);
|
|
118
|
+
border-radius: var(--radius-md);
|
|
119
|
+
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.13);
|
|
120
|
+
z-index: 50;
|
|
121
|
+
display: flex;
|
|
122
|
+
flex-direction: column;
|
|
123
|
+
gap: 1px;
|
|
124
|
+
}
|
|
125
|
+
.popover.left {
|
|
126
|
+
right: auto;
|
|
127
|
+
left: 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.item {
|
|
131
|
+
display: flex;
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
align-items: flex-start;
|
|
134
|
+
gap: 0.1rem;
|
|
135
|
+
width: 100%;
|
|
136
|
+
padding: 0.5rem 0.65rem;
|
|
137
|
+
background: transparent;
|
|
138
|
+
border: none;
|
|
139
|
+
border-radius: var(--radius-sm);
|
|
140
|
+
cursor: pointer;
|
|
141
|
+
text-align: left;
|
|
142
|
+
}
|
|
143
|
+
.item:hover {
|
|
144
|
+
background: var(--bg-subtle);
|
|
145
|
+
}
|
|
146
|
+
.item-label {
|
|
147
|
+
font-size: 0.85rem;
|
|
148
|
+
color: var(--text);
|
|
149
|
+
}
|
|
150
|
+
.item-hint {
|
|
151
|
+
font-size: 0.72rem;
|
|
152
|
+
color: var(--text-muted);
|
|
153
|
+
}
|
|
154
|
+
</style>
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
+
-->
|
|
5
|
+
|
|
6
|
+
<script>
|
|
7
|
+
import { fly } from 'svelte/transition';
|
|
8
|
+
import { flip } from 'svelte/animate';
|
|
9
|
+
import { notifications, dismissNotification } from '$lib/stores/notifications';
|
|
10
|
+
import { DISMISS_LABEL } from '$lib/copy/reports';
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<div class="stack">
|
|
14
|
+
{#each $notifications as n (n.id)}
|
|
15
|
+
<div class="card" animate:flip={{ duration: 180 }} transition:fly={{ y: 12, duration: 200 }}>
|
|
16
|
+
<div class="row">
|
|
17
|
+
<span class="dot {n.type}"></span>
|
|
18
|
+
<span class="msg">{n.message}</span>
|
|
19
|
+
<button class="link" on:click={() => dismissNotification(n.id)} aria-label={DISMISS_LABEL}>
|
|
20
|
+
<svg width="12" height="12" viewBox="0 0 14 14" fill="none">
|
|
21
|
+
<path
|
|
22
|
+
d="M1 1l12 12M13 1L1 13"
|
|
23
|
+
stroke="currentColor"
|
|
24
|
+
stroke-width="1.6"
|
|
25
|
+
stroke-linecap="round"
|
|
26
|
+
/>
|
|
27
|
+
</svg>
|
|
28
|
+
</button>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
{/each}
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<style>
|
|
35
|
+
.stack {
|
|
36
|
+
position: fixed;
|
|
37
|
+
right: 1rem;
|
|
38
|
+
bottom: 3.25rem;
|
|
39
|
+
/* Above the replay modal (500) so feedback stays visible over it. */
|
|
40
|
+
z-index: 600;
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column-reverse;
|
|
43
|
+
gap: 0.5rem;
|
|
44
|
+
max-width: min(20rem, calc(100vw - 2rem));
|
|
45
|
+
pointer-events: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.card {
|
|
49
|
+
pointer-events: auto;
|
|
50
|
+
padding: 0.7rem 0.85rem;
|
|
51
|
+
background: var(--bg-elevated);
|
|
52
|
+
border: 1px solid var(--border);
|
|
53
|
+
border-radius: var(--radius-md);
|
|
54
|
+
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.16);
|
|
55
|
+
font-size: 0.82rem;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.row {
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
gap: 0.55rem;
|
|
62
|
+
}
|
|
63
|
+
.msg {
|
|
64
|
+
flex: 1;
|
|
65
|
+
color: var(--text);
|
|
66
|
+
line-height: 1.35;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.dot {
|
|
70
|
+
width: 7px;
|
|
71
|
+
height: 7px;
|
|
72
|
+
border-radius: 50%;
|
|
73
|
+
flex-shrink: 0;
|
|
74
|
+
background: var(--text-muted);
|
|
75
|
+
}
|
|
76
|
+
.dot.success {
|
|
77
|
+
background: var(--pass);
|
|
78
|
+
}
|
|
79
|
+
.dot.error {
|
|
80
|
+
background: var(--fail);
|
|
81
|
+
}
|
|
82
|
+
.dot.info {
|
|
83
|
+
background: var(--accent);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.link {
|
|
87
|
+
display: inline-flex;
|
|
88
|
+
align-items: center;
|
|
89
|
+
background: none;
|
|
90
|
+
border: none;
|
|
91
|
+
color: var(--text-muted);
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
padding: 0;
|
|
94
|
+
flex-shrink: 0;
|
|
95
|
+
}
|
|
96
|
+
.link:hover {
|
|
97
|
+
color: var(--accent);
|
|
98
|
+
}
|
|
99
|
+
</style>
|
|
@@ -26,6 +26,15 @@ export const SLACK_LABEL = 'Slack';
|
|
|
26
26
|
export const EMAIL_LABEL = 'Email';
|
|
27
27
|
export const PASSWORD_LABEL = 'Password';
|
|
28
28
|
|
|
29
|
+
export const EXPORT_LABEL = 'Export';
|
|
30
|
+
export const EXPORTING_LABEL = 'Exporting…';
|
|
31
|
+
export const EXPORT_MENU_ITEMS = [
|
|
32
|
+
{ id: 'csv', label: 'CSV', hint: 'Download report' },
|
|
33
|
+
{ id: 'json', label: 'JSON', hint: 'Download JSON. Re-importable' }
|
|
34
|
+
];
|
|
35
|
+
export const exportFailedToast = (what) => `Could not export ${what}.`;
|
|
36
|
+
export const exportedToast = (what) => `${what} exported.`;
|
|
37
|
+
|
|
29
38
|
export const CLEAR_SEARCH_LABEL = 'Clear search';
|
|
30
39
|
export const SORT_BY_LABEL = 'Sort by';
|
|
31
40
|
export const LOADING_LABEL = 'Loading…';
|
|
@@ -55,6 +55,13 @@ export const caseLabel = (index) => `Case ${index}`;
|
|
|
55
55
|
// ── Recording replay ──
|
|
56
56
|
export const PLAYER_LOAD_ERROR = 'Could not load this recording.';
|
|
57
57
|
export const INSPECT_TOGGLE_LABEL = 'Inspect element';
|
|
58
|
+
|
|
59
|
+
export const REPORT_EXPORT_MENU_ITEMS = [
|
|
60
|
+
{ id: 'csv', label: 'CSV', hint: 'Download report' },
|
|
61
|
+
{ id: 'json', label: 'JSON', hint: 'Structured summary' }
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
export const DISMISS_LABEL = 'Dismiss';
|
|
58
65
|
export const RESTART_LABEL = 'Restart replay';
|
|
59
66
|
export const STEPS_RAIL_HEADING = 'Steps';
|
|
60
67
|
export const INSPECTOR_HEADING = 'Inspector';
|
|
@@ -19,6 +19,10 @@ export const HEADING = 'Test Repository';
|
|
|
19
19
|
export const HEADER_DESC = 'Manage test suites, cases, and track manual test runs.';
|
|
20
20
|
export const NEW_SUITE_LABEL = '+ New Suite';
|
|
21
21
|
export const NEW_RUN_LABEL = '+ New Run';
|
|
22
|
+
export const IMPORT_TEST_CASES_LINK = 'Import from file';
|
|
23
|
+
export const IMPORT_TEST_CASES_HREF = '/settings?section=testcases';
|
|
24
|
+
export const EXPORT_TEST_CASES_WHAT = 'Test cases';
|
|
25
|
+
export const EXPORT_SUITE_WHAT = 'Suite';
|
|
22
26
|
export const SUITES_TAB_LABEL = 'Suites';
|
|
23
27
|
export const RUNS_TAB_LABEL = 'Test Runs';
|
|
24
28
|
export const SEARCH_PLACEHOLDER = 'Search by ID or name…';
|
|
@@ -19,6 +19,21 @@ export const PROJECT_LABEL = 'Project';
|
|
|
19
19
|
export const RUNNERS_LABEL = 'Runners';
|
|
20
20
|
export const REPOSITORY_NAV_LABEL = 'Repository';
|
|
21
21
|
export const REPOSITORY_HEADING = 'Test Repository';
|
|
22
|
+
export const TEST_CASES_NAV_LABEL = 'Test Cases';
|
|
23
|
+
export const TEST_CASES_HEADING = 'Test Cases';
|
|
24
|
+
export const TEST_CASES_DESC = 'Bring test cases in from a Plum export file.';
|
|
25
|
+
export const TC_IMPORT_CARD_TITLE = 'Import';
|
|
26
|
+
export const TC_IMPORT_DESC =
|
|
27
|
+
'Upload a JSON file exported from Test Repository. Suites and cases are added as new records.';
|
|
28
|
+
export const TC_IMPORT_HINT =
|
|
29
|
+
'A case is skipped when its ID already exists here. Cases with a different prefix or no ID are imported with a fresh ID.';
|
|
30
|
+
export const TC_IMPORT_FAILED_FALLBACK = 'Could not read that file.';
|
|
31
|
+
export const tcImportLabel = (importing) => (importing ? 'Importing…' : 'Import');
|
|
32
|
+
export const tcImportSummary = ({ importedCases, importedSuites, skippedCases, skippedSuites }) => {
|
|
33
|
+
const imported = `Imported ${importedCases} ${importedCases === 1 ? 'case' : 'cases'} in ${importedSuites} ${importedSuites === 1 ? 'suite' : 'suites'}`;
|
|
34
|
+
const skipped = skippedCases + skippedSuites;
|
|
35
|
+
return skipped > 0 ? `${imported} · skipped ${skippedCases} already here` : imported + '.';
|
|
36
|
+
};
|
|
22
37
|
export const INTEGRATIONS_LABEL = 'Integrations';
|
|
23
38
|
export const MCP_NAV_LABEL = 'MCP';
|
|
24
39
|
export const MCP_HEADING = 'MCP Integration';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { writable } from 'svelte/store';
|
|
7
|
+
import { TOAST_TIMEOUT_MS } from '$lib/constants';
|
|
8
|
+
|
|
9
|
+
// { id, type: 'success' | 'error' | 'info', message, sticky }
|
|
10
|
+
export const notifications = writable([]);
|
|
11
|
+
|
|
12
|
+
let seq = 0;
|
|
13
|
+
|
|
14
|
+
export function notify(type, message, { sticky = false, timeout = TOAST_TIMEOUT_MS } = {}) {
|
|
15
|
+
const id = ++seq;
|
|
16
|
+
notifications.update((list) => [...list, { id, type, message, sticky }]);
|
|
17
|
+
if (!sticky) setTimeout(() => dismissNotification(id), timeout);
|
|
18
|
+
return id;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function dismissNotification(id) {
|
|
22
|
+
notifications.update((list) => list.filter((n) => n.id !== id));
|
|
23
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export function downloadBlob(blob, filename) {
|
|
7
|
+
const url = URL.createObjectURL(blob);
|
|
8
|
+
const a = document.createElement('a');
|
|
9
|
+
a.href = url;
|
|
10
|
+
a.download = filename;
|
|
11
|
+
document.body.appendChild(a);
|
|
12
|
+
a.click();
|
|
13
|
+
a.remove();
|
|
14
|
+
// Revoking synchronously can cancel the download in some browsers.
|
|
15
|
+
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function filenameFromDisposition(header, fallback) {
|
|
19
|
+
const match = /filename="?([^"]+)"?/.exec(header ?? '');
|
|
20
|
+
return match ? match[1] : fallback;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function downloadFromEndpoint(url, { headers = {}, fallbackName = 'export' } = {}) {
|
|
24
|
+
const res = await fetch(url, { headers });
|
|
25
|
+
if (!res.ok) throw new Error('Export failed');
|
|
26
|
+
const blob = await res.blob();
|
|
27
|
+
downloadBlob(blob, filenameFromDisposition(res.headers.get('Content-Disposition'), fallbackName));
|
|
28
|
+
}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import Nav from '$lib/components/layout/Nav.svelte';
|
|
12
12
|
import PageShell from '$lib/components/layout/PageShell.svelte';
|
|
13
13
|
import RunnerPanel from '$lib/components/layout/RunnerPanel.svelte';
|
|
14
|
+
import NotificationStack from '$lib/components/ui/NotificationStack.svelte';
|
|
14
15
|
import { auth } from '$lib/stores/auth';
|
|
15
16
|
import { checkNeedsSetup } from '$lib/api/auth';
|
|
16
17
|
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
<slot />
|
|
52
53
|
</PageShell>
|
|
53
54
|
<RunnerPanel />
|
|
55
|
+
<NotificationStack />
|
|
54
56
|
{/if}
|
|
55
57
|
{:else}
|
|
56
58
|
<div class="boot-loading">Loading…</div>
|