plum-e2e 2.9.17 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +7 -7
- package/backend/app.js +1 -1
- package/backend/constants/socketEvents.js +8 -14
- package/backend/lib/csv.js +21 -0
- package/backend/lib/exportResponse.js +37 -0
- package/backend/lib/serverBootstrap.js +6 -6
- package/backend/lib/serverConfig.js +5 -3
- package/backend/mcp/server.js +47 -3
- package/backend/middleware/runnerOrAdmin.js +1 -1
- package/backend/package.json +1 -1
- package/backend/prisma/migrations/20260829000000_add_run_queue/migration.sql +29 -0
- package/backend/prisma/schema.prisma +30 -0
- package/backend/routes/active-runs.routes.js +10 -6
- package/backend/routes/node.routes.js +7 -0
- 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/routes/trigger.routes.js +8 -5
- package/backend/scripts/{manage-runners.mjs → manage-nodes.mjs} +67 -52
- package/backend/server.js +5 -1
- package/backend/services/cronService.js +15 -443
- package/backend/services/exportService.js +339 -0
- package/backend/services/nodeExecutionService.js +13 -1
- package/backend/services/runExecutorService.js +423 -0
- package/backend/services/runQueueService.js +276 -0
- package/backend/services/runnerService.js +22 -4
- package/backend/services/testImportService.js +87 -0
- package/backend/services/triggerService.js +13 -231
- package/backend/websockets/socketHandler.js +32 -590
- package/bin/plum.js +174 -68
- package/docker-compose.yml +1 -1
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +78 -70
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- 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/adapter-node/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.ClS4XkkN.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/BackLink.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +2 -2
- package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +2 -2
- package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/common.js +11 -4
- package/frontend/.svelte-kit/adapter-node/chunks/constants.js +6 -4
- package/frontend/.svelte-kit/adapter-node/chunks/format.js +3 -3
- package/frontend/.svelte-kit/adapter-node/chunks/index.js +4 -4
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/reports.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +38 -40
- package/frontend/.svelte-kit/adapter-node/chunks/repository.js +26 -14
- package/frontend/.svelte-kit/adapter-node/chunks/runner.js +10 -20
- package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +2 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +254 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +39 -25
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +23 -19
- package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +5 -8
- package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +354 -185
- package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +55 -36
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +4 -7
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +66 -16
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +10 -10
- package/frontend/.svelte-kit/adapter-node/manifest.js +10 -10
- 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 +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/4.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/6.js +3 -3
- 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/ambient.d.ts +28 -28
- package/frontend/.svelte-kit/generated/client/app.js +4 -4
- package/frontend/.svelte-kit/generated/client/nodes/3.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/4.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/5.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/6.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/app.js +4 -4
- package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +1 -1
- package/frontend/.svelte-kit/generated/server/internal.js +1 -1
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +462 -403
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BEqlRAtD.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.DC0wD6w_.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.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.DdQVxyZK.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/{build/client/_app/immutable/assets/Toast.DENwYn3g.css → .svelte-kit/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/.svelte-kit/output/client/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.ClS4XkkN.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/3MBVX4Yb.js +175 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/6VDMVB5U.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B2lVGNml.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/2zMvi6fR.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/BIf7lHIm.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIjh3jiU.js +8 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DMZwI8Cj.js → BWGoOYU0.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BdBJfKUi.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{t-La0hgu.js → BnXsGCy3.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BtTNggoY.js +8 -0
- 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/{C1Vid6wz.js → CXQhSK1T.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/CKDtmZUQ.js → .svelte-kit/output/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C8OURRSs.js → D72giPTu.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/BmZ9upwL.js → .svelte-kit/output/client/_app/immutable/chunks/DDx3no2z.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DeiVAbyn.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DiexacSB.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DDZw0L0T.js → Dlymnwnf.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/gCgJ3Cwu.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/htkwR9b-.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/DCgHuuvs.js → .svelte-kit/output/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/kFFd6Oo5.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/pNZogwkM.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{w0D4Uzlq.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/r_d1Iu0W.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/CNdcuGR0.js → .svelte-kit/output/client/_app/immutable/chunks/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.DgdSwPuN.js +7 -0
- package/frontend/{build/client/_app/immutable/entry/start.4qxHHAcl.js → .svelte-kit/output/client/_app/immutable/entry/start.D_lhI48n.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.D2F-i1I5.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.JIF2GfHq.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.A0AHLfOt.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.CVSPxlqY.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.CnAR0AQb.js +6 -0
- package/frontend/{build/client/_app/immutable/nodes/2.BCPSg7H4.js → .svelte-kit/output/client/_app/immutable/nodes/2.Bno00fr8.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.B6KwaCsM.js +6 -0
- package/frontend/{build/client/_app/immutable/nodes/3.8BFAJoHT.js → .svelte-kit/output/client/_app/immutable/nodes/4.BX70m3v6.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.UIFh06yr.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DZ1OV24V.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.CVHgJw-E.js +9 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.DDDQPmMj.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +78 -70
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/.svelte-kit/output/{client/_app/immutable/assets/Toast.DENwYn3g.css → 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/output/server/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.ClS4XkkN.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/BackLink.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/Badge.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +2 -2
- package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +2 -2
- package/frontend/.svelte-kit/output/server/chunks/Modal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/common.js +11 -4
- package/frontend/.svelte-kit/output/server/chunks/constants.js +6 -4
- package/frontend/.svelte-kit/output/server/chunks/format.js +3 -3
- package/frontend/.svelte-kit/output/server/chunks/index.js +4 -4
- package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/reports.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/reports2.js +38 -40
- package/frontend/.svelte-kit/output/server/chunks/repository.js +26 -14
- package/frontend/.svelte-kit/output/server/chunks/runner.js +10 -20
- package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +2 -0
- package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +254 -0
- package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +39 -25
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +23 -19
- package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +5 -8
- package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +354 -185
- package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +55 -36
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +4 -7
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +66 -16
- package/frontend/.svelte-kit/output/server/manifest-full.js +10 -10
- package/frontend/.svelte-kit/output/server/manifest.js +10 -10
- 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 +3 -3
- package/frontend/.svelte-kit/output/server/nodes/4.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/5.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/6.js +3 -3
- 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.BEqlRAtD.css +6 -0
- package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css +6 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.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.Be5c3USL.css +6 -0
- 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/5.ClS4XkkN.css +6 -0
- package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css +6 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.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/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.gz +0 -0
- package/frontend/{.svelte-kit/adapter-node/_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/build/client/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- 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.BwgtEi_a.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.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/3MBVX4Yb.js +175 -0
- 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/build/client/_app/immutable/chunks/6VDMVB5U.js +6 -0
- 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/build/client/_app/immutable/chunks/B2lVGNml.js +6 -0
- 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/{.svelte-kit/output/client/_app/immutable/chunks/2zMvi6fR.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/BIf7lHIm.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js +8 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.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/{DMZwI8Cj.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/build/client/_app/immutable/chunks/BdBJfKUi.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{t-La0hgu.js → 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/BtTNggoY.js +8 -0
- package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BtTNggoY.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/{C1Vid6wz.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/CKDtmZUQ.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/{C8OURRSs.js → D72giPTu.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/chunks/BmZ9upwL.js → build/client/_app/immutable/chunks/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/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/build/client/_app/immutable/chunks/DeiVAbyn.js +6 -0
- 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/DiexacSB.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DDZw0L0T.js → Dlymnwnf.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js +6 -0
- 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/build/client/_app/immutable/chunks/htkwR9b-.js +6 -0
- 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/DCgHuuvs.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/kFFd6Oo5.js +6 -0
- 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/pNZogwkM.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{w0D4Uzlq.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/r_d1Iu0W.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/r_d1Iu0W.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/r_d1Iu0W.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CNdcuGR0.js → build/client/_app/immutable/chunks/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.DgdSwPuN.js +7 -0
- package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.4qxHHAcl.js → build/client/_app/immutable/entry/start.D_lhI48n.js} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.br → start.D_lhI48n.js.br} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.gz → start.D_lhI48n.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.JIF2GfHq.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.br +5 -0
- package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/2.BCPSg7H4.js → build/client/_app/immutable/nodes/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.B6KwaCsM.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/3.8BFAJoHT.js → build/client/_app/immutable/nodes/4.BX70m3v6.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js +10 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.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.CVHgJw-E.js +9 -0
- package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.DDDQPmMj.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.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-38cvTs44.js +22 -0
- package/frontend/build/server/chunks/0-38cvTs44.js.map +5 -0
- package/frontend/build/server/chunks/{1-Kxn9d30Z.js → 1-CcYsajvR.js} +3 -3
- package/frontend/build/server/chunks/{1-Kxn9d30Z.js.map → 1-CcYsajvR.js.map} +1 -1
- package/frontend/build/server/chunks/10-CFR2MUJt.js +14 -0
- package/frontend/build/server/chunks/10-CFR2MUJt.js.map +5 -0
- package/frontend/build/server/chunks/11-BmkiRQ9D.js +14 -0
- package/frontend/build/server/chunks/11-BmkiRQ9D.js.map +5 -0
- package/frontend/build/server/chunks/12-BphJAwnL.js +14 -0
- package/frontend/build/server/chunks/12-BphJAwnL.js.map +5 -0
- package/frontend/build/server/chunks/2-Dalgd2D4.js +14 -0
- package/frontend/build/server/chunks/{2-Dc_rKWoK.js.map → 2-Dalgd2D4.js.map} +1 -1
- package/frontend/build/server/chunks/3-BvsmdXCj.js +14 -0
- package/frontend/build/server/chunks/3-BvsmdXCj.js.map +5 -0
- package/frontend/build/server/chunks/4-CN18WCEn.js +14 -0
- package/frontend/build/server/chunks/4-CN18WCEn.js.map +5 -0
- package/frontend/build/server/chunks/5-BwLYF3xL.js +14 -0
- package/frontend/build/server/chunks/5-BwLYF3xL.js.map +5 -0
- package/frontend/build/server/chunks/6-DTM2N_k3.js +14 -0
- package/frontend/build/server/chunks/6-DTM2N_k3.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-BfCbb7pl.js +14 -0
- package/frontend/build/server/chunks/8-BfCbb7pl.js.map +5 -0
- package/frontend/build/server/chunks/9-CQKepnMw.js +14 -0
- package/frontend/build/server/chunks/{9-DirZG_Lu.js.map → 9-CQKepnMw.js.map} +1 -1
- package/frontend/build/server/chunks/{BackLink-BJ8NaemM.js → BackLink-CMpNTYqE.js} +2 -2
- package/frontend/build/server/chunks/BackLink-CMpNTYqE.js.map +5 -0
- package/frontend/build/server/chunks/{Badge-44ZTDx0V.js → Badge-BTWnF9pA.js} +2 -2
- package/frontend/build/server/chunks/Badge-BTWnF9pA.js.map +5 -0
- package/frontend/build/server/chunks/{Toast-v-q4ZnYq.js → Button-B9h9viZX.js} +3 -17
- package/frontend/build/server/chunks/Button-B9h9viZX.js.map +5 -0
- package/frontend/build/server/chunks/{ConfirmModal-C0EAXcq_.js → ConfirmModal-C6Cz898n.js} +4 -4
- package/frontend/build/server/chunks/ConfirmModal-C6Cz898n.js.map +5 -0
- package/frontend/build/server/chunks/{EmptyState-BA_eXaeR.js → EmptyState-CRtsJIv6.js} +3 -3
- package/frontend/build/server/chunks/EmptyState-CRtsJIv6.js.map +5 -0
- package/frontend/build/server/chunks/{Modal-DChG187n.js → Modal-BJJMnfIg.js} +2 -2
- package/frontend/build/server/chunks/Modal-BJJMnfIg.js.map +5 -0
- package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js +28 -0
- package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-Kg69DDaM.js → _page.svelte-BrYksycU.js} +5 -5
- package/frontend/build/server/chunks/_page.svelte-BrYksycU.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.js +69 -0
- package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.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-04WxjOuH.js → _page.svelte-CP6jA1ex.js} +9 -9
- package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js.map → _page.svelte-CP6jA1ex.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-D3E6Eojd.js → _page.svelte-Cf6bI1Y2.js} +5 -5
- package/frontend/build/server/chunks/_page.svelte-Cf6bI1Y2.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-1as75nPc.js → _page.svelte-D6b-klLK.js} +33 -29
- package/frontend/build/server/chunks/_page.svelte-D6b-klLK.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CWWeZuid.js → _page.svelte-DBjTpquQ.js} +73 -24
- package/frontend/build/server/chunks/_page.svelte-DBjTpquQ.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js → _page.svelte-DM1_y4Oq.js} +61 -42
- package/frontend/build/server/chunks/_page.svelte-DM1_y4Oq.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js +257 -0
- package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-BuFusRK1.js → _page.svelte-mZF4NrfU.js} +14 -17
- package/frontend/build/server/chunks/_page.svelte-mZF4NrfU.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-1jo8MapI.js → _page.svelte-nrlgIFaU.js} +13 -15
- package/frontend/build/server/chunks/_page.svelte-nrlgIFaU.js.map +5 -0
- package/frontend/build/server/chunks/{auth-Chw-wBpI.js → auth-DDPlushv.js} +2 -2
- package/frontend/build/server/chunks/{auth-Chw-wBpI.js.map → auth-DDPlushv.js.map} +1 -1
- package/frontend/build/server/chunks/{client-DEmxR_a-.js → client-CsTiGNZy.js} +2 -2
- package/frontend/build/server/chunks/{client-DEmxR_a-.js.map → client-CsTiGNZy.js.map} +1 -1
- 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-CXTaQaB6.js → constants-OmHysD51.js} +3 -2
- package/frontend/build/server/chunks/constants-OmHysD51.js.map +5 -0
- package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js → error.svelte-BXr4lXlB.js} +3 -3
- package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js.map → error.svelte-BXr4lXlB.js.map} +1 -1
- package/frontend/build/server/chunks/{format-CiNRMfHu.js → format-Bqb0as15.js} +2 -2
- package/frontend/build/server/chunks/{format-CiNRMfHu.js.map → format-Bqb0as15.js.map} +1 -1
- package/frontend/build/server/chunks/{index-server-B3M9vyh2.js → index-server-53nOZg5X.js} +2 -2
- package/frontend/build/server/chunks/{index-server-B3M9vyh2.js.map → index-server-53nOZg5X.js.map} +1 -1
- package/frontend/build/server/chunks/{index2-5R1tbrep.js → index2-DGcbugKe.js} +2 -2
- package/frontend/build/server/chunks/{index2-5R1tbrep.js.map → index2-DGcbugKe.js.map} +1 -1
- package/frontend/build/server/chunks/{reports-D_ApeeNh.js → reports-chCHCDzB.js} +2 -2
- package/frontend/build/server/chunks/{reports-D_ApeeNh.js.map → reports-chCHCDzB.js.map} +1 -1
- package/frontend/build/server/chunks/{reports2-BtElN_53.js → reports2-Dr3zu9CD.js} +8 -9
- package/frontend/build/server/chunks/reports2-Dr3zu9CD.js.map +5 -0
- package/frontend/build/server/chunks/{repository-FYYV_vKE.js → repository-DSsWVKEb.js} +9 -3
- package/frontend/build/server/chunks/repository-DSsWVKEb.js.map +5 -0
- package/frontend/build/server/chunks/runner-aaUtOqck.js +27 -0
- package/frontend/build/server/chunks/runner-aaUtOqck.js.map +5 -0
- package/frontend/build/server/chunks/{stores-BLenR3c1.js → stores-C4ZkywTG.js} +3 -3
- package/frontend/build/server/chunks/{stores-BLenR3c1.js.map → stores-C4ZkywTG.js.map} +1 -1
- package/frontend/build/server/chunks/{theme-nAx-GvX_.js → theme-C81wSe5T.js} +2 -2
- package/frontend/build/server/chunks/{theme-nAx-GvX_.js.map → theme-C81wSe5T.js.map} +1 -1
- package/frontend/build/server/index.js +2 -2
- package/frontend/build/server/index.js.map +1 -1
- package/frontend/build/server/manifest.js +23 -23
- package/frontend/build/server/manifest.js.map +1 -1
- package/frontend/package-lock.json +14 -0
- package/frontend/package.json +2 -0
- 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 +187 -266
- package/frontend/src/lib/components/reports/RecordingPlayer.svelte +172 -2
- package/frontend/src/lib/components/ui/ExportMenu.svelte +154 -0
- package/frontend/src/lib/components/ui/NotificationStack.svelte +177 -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 +29 -0
- package/frontend/src/lib/copy/repository.js +4 -0
- package/frontend/src/lib/copy/runners.js +9 -6
- package/frontend/src/lib/copy/settings.js +15 -0
- package/frontend/src/lib/socketEvents.js +3 -15
- package/frontend/src/lib/stores/notifications.js +23 -0
- package/frontend/src/lib/stores/replayVideo.js +51 -0
- package/frontend/src/lib/stores/runner.js +62 -46
- package/frontend/src/lib/utils/download.js +28 -0
- package/frontend/src/lib/utils/replayCapture.js +91 -0
- package/frontend/src/lib/utils/replayVideo.js +111 -0
- package/frontend/src/routes/+layout.svelte +2 -0
- package/frontend/src/routes/{reports/live → live/[id]}/+page.svelte +112 -183
- package/frontend/src/routes/reports/[id]/+page.svelte +38 -3
- package/frontend/src/routes/scheduled-tests/+page.svelte +11 -19
- package/frontend/src/routes/settings/+page.svelte +140 -56
- package/frontend/src/routes/test-repository/+page.svelte +44 -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/backend/services/activeRunsService.js +0 -55
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +0 -247
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +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.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.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/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.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.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3InFPLvE.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKuh57WU.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMEtqUfQ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CgnwuKKO.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CzlPaHY9.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DHM6H-es.js +0 -7
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +0 -11
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/kkA1mrsH.js +0 -8
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.DEbnxfND.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.BViaDK2m.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +0 -247
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.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.Bj_a_5lv.css +0 -6
- package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.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.BuhMvMUj.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.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.BZfe6nWe.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +0 -5
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js +0 -7
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +0 -11
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js +0 -8
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.gz +0 -0
- package/frontend/build/server/chunks/0-D5YWFygh.js +0 -22
- package/frontend/build/server/chunks/0-D5YWFygh.js.map +0 -5
- package/frontend/build/server/chunks/10-l6_ikL_D.js +0 -14
- package/frontend/build/server/chunks/10-l6_ikL_D.js.map +0 -5
- package/frontend/build/server/chunks/11-CNLerze_.js +0 -14
- package/frontend/build/server/chunks/11-CNLerze_.js.map +0 -5
- package/frontend/build/server/chunks/12-De6Ol6pu.js +0 -14
- package/frontend/build/server/chunks/12-De6Ol6pu.js.map +0 -5
- package/frontend/build/server/chunks/2-Dc_rKWoK.js +0 -14
- package/frontend/build/server/chunks/3-DrRqVrcX.js +0 -14
- package/frontend/build/server/chunks/3-DrRqVrcX.js.map +0 -5
- package/frontend/build/server/chunks/4-Bo04DC5Z.js +0 -14
- package/frontend/build/server/chunks/4-Bo04DC5Z.js.map +0 -5
- package/frontend/build/server/chunks/5-CFeE5dPZ.js +0 -14
- package/frontend/build/server/chunks/5-CFeE5dPZ.js.map +0 -5
- package/frontend/build/server/chunks/6-DZk37MZH.js +0 -14
- package/frontend/build/server/chunks/6-DZk37MZH.js.map +0 -5
- package/frontend/build/server/chunks/7-DiQJZEF_.js +0 -14
- package/frontend/build/server/chunks/7-DiQJZEF_.js.map +0 -5
- package/frontend/build/server/chunks/8-CKPVFOqJ.js +0 -14
- package/frontend/build/server/chunks/8-CKPVFOqJ.js.map +0 -5
- package/frontend/build/server/chunks/9-DirZG_Lu.js +0 -14
- package/frontend/build/server/chunks/BackLink-BJ8NaemM.js.map +0 -5
- package/frontend/build/server/chunks/Badge-44ZTDx0V.js.map +0 -5
- package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js.map +0 -5
- package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js.map +0 -5
- package/frontend/build/server/chunks/Modal-DChG187n.js.map +0 -5
- package/frontend/build/server/chunks/Toast-v-q4ZnYq.js.map +0 -5
- package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js +0 -29
- package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-1as75nPc.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js +0 -729
- package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-BuFusRK1.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js +0 -250
- package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CB8-QBNg.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CWWeZuid.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js +0 -57
- package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js.map +0 -5
- package/frontend/build/server/chunks/common-DYYTVHPw.js.map +0 -5
- package/frontend/build/server/chunks/constants-CXTaQaB6.js.map +0 -5
- package/frontend/build/server/chunks/reports2-BtElN_53.js.map +0 -5
- package/frontend/build/server/chunks/repository-FYYV_vKE.js.map +0 -5
- package/frontend/build/server/chunks/runner-DC7hXbnY.js +0 -37
- package/frontend/build/server/chunks/runner-DC7hXbnY.js.map +0 -5
- package/frontend/src/lib/components/ui/Toast.svelte +0 -24
- /package/frontend/.svelte-kit/output/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
- /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
- /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.br → 4.BR3wgXcZ.css.br} +0 -0
- /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.gz → 4.BR3wgXcZ.css.gz} +0 -0
|
@@ -10,18 +10,18 @@
|
|
|
10
10
|
import { SOCKET_EVENTS } from '$lib/socketEvents';
|
|
11
11
|
import {
|
|
12
12
|
socket,
|
|
13
|
-
runnerState,
|
|
14
13
|
runnerConfig,
|
|
15
14
|
panelExpanded,
|
|
16
15
|
builtInEnabled,
|
|
17
16
|
triggerRun,
|
|
17
|
+
cancelRun,
|
|
18
18
|
reportsVersion,
|
|
19
19
|
runsVersion,
|
|
20
20
|
backgroundRuns,
|
|
21
|
-
|
|
21
|
+
makeRunEntry,
|
|
22
22
|
mergeRRwebBatch
|
|
23
23
|
} from '$lib/stores/runner';
|
|
24
|
-
import {
|
|
24
|
+
import { reportUrl } from '$lib/api/reports';
|
|
25
25
|
import { fetchRunners } from '$lib/api/runners';
|
|
26
26
|
import { fetchRuns, fetchRun } from '$lib/api/repository';
|
|
27
27
|
import { fetchIntegrations } from '$lib/api/settings';
|
|
@@ -33,17 +33,9 @@
|
|
|
33
33
|
WORKERS_MIN,
|
|
34
34
|
WORKERS_MAX,
|
|
35
35
|
RUN_PICKER_LIMIT,
|
|
36
|
-
|
|
37
|
-
REDIRECT_DELAY_MS,
|
|
38
|
-
TRIGGER_TYPES
|
|
36
|
+
REDIRECT_DELAY_MS
|
|
39
37
|
} from '$lib/constants';
|
|
40
|
-
import {
|
|
41
|
-
ALL_TESTS_LABEL,
|
|
42
|
-
BUILTIN_RUNNER_LABEL,
|
|
43
|
-
CLEAR_LABEL,
|
|
44
|
-
DISCORD_LABEL,
|
|
45
|
-
SLACK_LABEL
|
|
46
|
-
} from '$lib/copy/common';
|
|
38
|
+
import { BUILTIN_RUNNER_LABEL, CLEAR_LABEL, DISCORD_LABEL, SLACK_LABEL } from '$lib/copy/common';
|
|
47
39
|
import {
|
|
48
40
|
RUN_ALL_TITLE,
|
|
49
41
|
RUN_ALL_CONFIRM_LABEL,
|
|
@@ -60,18 +52,18 @@
|
|
|
60
52
|
RUNNERS_LABEL,
|
|
61
53
|
NOTIFY_LABEL,
|
|
62
54
|
NO_AUTOMATED_CASES_TITLE,
|
|
63
|
-
RUNNING_LABEL,
|
|
64
55
|
RUN_LABEL,
|
|
65
56
|
MANUAL_RUN_LABEL,
|
|
66
57
|
NO_TESTS_RUNNING,
|
|
67
|
-
|
|
58
|
+
QUEUED_LABEL,
|
|
59
|
+
CANCEL_RUN_LABEL,
|
|
68
60
|
automatedCaseCount,
|
|
69
61
|
discordNotifyTitle,
|
|
70
62
|
slackNotifyTitle,
|
|
71
|
-
runnersCountLabel,
|
|
72
63
|
runKindLabel,
|
|
73
64
|
startedByLabel,
|
|
74
65
|
collapseOrExpandLabel,
|
|
66
|
+
queuePositionLabel,
|
|
75
67
|
statusLabel as computeStatusLabel,
|
|
76
68
|
runnerSummary as computeRunnerSummary
|
|
77
69
|
} from '$lib/copy/runners';
|
|
@@ -104,28 +96,7 @@
|
|
|
104
96
|
}
|
|
105
97
|
|
|
106
98
|
let _unsubConfig, _unsubExpanded, _unsubBuiltIn, _socket;
|
|
107
|
-
|
|
108
|
-
/** Shape shared by the live `bg-run-start` socket handler and the on-mount hydration fetch below. */
|
|
109
|
-
function makeBgRunEntry(kind, label, meta) {
|
|
110
|
-
return {
|
|
111
|
-
kind,
|
|
112
|
-
label,
|
|
113
|
-
output: '',
|
|
114
|
-
running: true,
|
|
115
|
-
testCompleted: false,
|
|
116
|
-
latestReportId: null,
|
|
117
|
-
status: 'running',
|
|
118
|
-
lanes: [],
|
|
119
|
-
currentRun: {
|
|
120
|
-
tag: meta?.tag,
|
|
121
|
-
workers: meta?.workers,
|
|
122
|
-
browser: meta?.browser,
|
|
123
|
-
runTitle: label,
|
|
124
|
-
startedBy: meta?.startedBy
|
|
125
|
-
},
|
|
126
|
-
rrwebByLane: {}
|
|
127
|
-
};
|
|
128
|
-
}
|
|
99
|
+
let lastFinished = null; // { reportId, verdict } — most recent completed run, for the bar's View Report shortcut
|
|
129
100
|
|
|
130
101
|
onMount(() => {
|
|
131
102
|
try {
|
|
@@ -158,17 +129,16 @@
|
|
|
158
129
|
.then((i) => (integrations = i))
|
|
159
130
|
.catch(() => {});
|
|
160
131
|
|
|
161
|
-
// Hydrate
|
|
162
|
-
// loaded/refreshed
|
|
163
|
-
//
|
|
164
|
-
// moment a run begins.
|
|
132
|
+
// Hydrate runs already queued or running on the backend (e.g. this tab just
|
|
133
|
+
// loaded/refreshed) — live socket events alone only reach tabs connected at
|
|
134
|
+
// the moment an event fires.
|
|
165
135
|
fetchActiveRuns()
|
|
166
136
|
.then((runs) => {
|
|
167
137
|
if (runs.length === 0) return;
|
|
168
138
|
backgroundRuns.update((r) => {
|
|
169
139
|
const next = { ...r };
|
|
170
|
-
for (const { runId, kind, label, meta } of runs) {
|
|
171
|
-
if (!next[runId]) next[runId] =
|
|
140
|
+
for (const { runId, kind, label, meta, status } of runs) {
|
|
141
|
+
if (!next[runId]) next[runId] = makeRunEntry({ kind, label, meta, status });
|
|
172
142
|
}
|
|
173
143
|
return next;
|
|
174
144
|
});
|
|
@@ -205,59 +175,6 @@
|
|
|
205
175
|
_socket = s;
|
|
206
176
|
socket.set(s);
|
|
207
177
|
|
|
208
|
-
s.on(SOCKET_EVENTS.LOG, (data) => {
|
|
209
|
-
runnerState.update((r) => ({ ...r, output: r.output + data + '\n' }));
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
s.on(SOCKET_EVENTS.DONE, (payload) => {
|
|
213
|
-
// Distributed runs send { code, reportId }; the built-in path sends a bare code.
|
|
214
|
-
const code = typeof payload === 'object' && payload !== null ? payload.code : payload;
|
|
215
|
-
const providedId =
|
|
216
|
-
typeof payload === 'object' && payload !== null ? payload.reportId : undefined;
|
|
217
|
-
const passed = code === 0 || code === null;
|
|
218
|
-
const cancelled = code === 130;
|
|
219
|
-
const resolveId =
|
|
220
|
-
providedId !== undefined && providedId !== null
|
|
221
|
-
? Promise.resolve(providedId)
|
|
222
|
-
: fetchLatestReportId().catch(() => null);
|
|
223
|
-
resolveId.then((id) => {
|
|
224
|
-
runnerState.update((r) => ({
|
|
225
|
-
...r,
|
|
226
|
-
output:
|
|
227
|
-
r.output +
|
|
228
|
-
(cancelled ? '' : passed ? '\n✓ All tests passed\n' : '\n✗ Some tests failed\n'),
|
|
229
|
-
running: false,
|
|
230
|
-
testCompleted: !cancelled,
|
|
231
|
-
latestReportId: cancelled ? null : id,
|
|
232
|
-
status: cancelled ? 'idle' : passed ? 'pass' : 'fail',
|
|
233
|
-
currentRun: cancelled ? null : r.currentRun
|
|
234
|
-
}));
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
s.on(SOCKET_EVENTS.RUNNER_LANES_INIT, (lanes) => {
|
|
239
|
-
runnerState.update((r) => ({
|
|
240
|
-
...r,
|
|
241
|
-
lanes: lanes.map((l) => ({ ...l, status: 'running', logs: '' }))
|
|
242
|
-
}));
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
s.on(SOCKET_EVENTS.RUNNER_LANE_LOG, ({ id, log }) => {
|
|
246
|
-
runnerState.update((r) => ({
|
|
247
|
-
...r,
|
|
248
|
-
lanes: r.lanes.map((l) => (l.id === id ? { ...l, logs: l.logs + log } : l))
|
|
249
|
-
}));
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
s.on(SOCKET_EVENTS.RUNNER_LANE_STATUS, ({ id, status }) => {
|
|
253
|
-
runnerState.update((r) => ({
|
|
254
|
-
...r,
|
|
255
|
-
lanes: r.lanes.map((l) => (l.id === id ? { ...l, status } : l))
|
|
256
|
-
}));
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
s.on(SOCKET_EVENTS.RUNNER_LANE_RRWEB_BATCH, (batch) => appendRRwebBatch(batch));
|
|
260
|
-
|
|
261
178
|
s.on(SOCKET_EVENTS.REPORT_READY, () => reportsVersion.update((v) => v + 1));
|
|
262
179
|
|
|
263
180
|
function updateBgRun(runId, updater) {
|
|
@@ -267,9 +184,20 @@
|
|
|
267
184
|
});
|
|
268
185
|
}
|
|
269
186
|
|
|
270
|
-
|
|
271
|
-
backgroundRuns.update((r) => ({
|
|
187
|
+
function upsertBgRun(runId, { kind, label, meta }, status) {
|
|
188
|
+
backgroundRuns.update((r) => ({
|
|
189
|
+
...r,
|
|
190
|
+
[runId]: r[runId] ? { ...r[runId], status } : makeRunEntry({ kind, label, meta, status })
|
|
191
|
+
}));
|
|
272
192
|
panelExpanded.set(true);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
s.on(SOCKET_EVENTS.BG_RUN_QUEUED, ({ runId, kind, label, meta }) => {
|
|
196
|
+
upsertBgRun(runId, { kind, label, meta }, 'queued');
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
s.on(SOCKET_EVENTS.BG_RUN_START, ({ runId, kind, label, meta }) => {
|
|
200
|
+
upsertBgRun(runId, { kind, label, meta }, 'running');
|
|
273
201
|
});
|
|
274
202
|
|
|
275
203
|
s.on(SOCKET_EVENTS.BG_RUN_LOG, ({ runId, log }) => {
|
|
@@ -283,18 +211,32 @@
|
|
|
283
211
|
}));
|
|
284
212
|
});
|
|
285
213
|
|
|
214
|
+
// Upsert the lane — a tab that connected mid-run (or after a refresh)
|
|
215
|
+
// missed bg-run-lanes-init, so create the lane on first sight rather than
|
|
216
|
+
// dropping its logs.
|
|
217
|
+
function patchLane(run, laneId, patch) {
|
|
218
|
+
const lanes = run.lanes.some((l) => l.id === laneId)
|
|
219
|
+
? run.lanes.map((l) => (l.id === laneId ? { ...l, ...patch(l) } : l))
|
|
220
|
+
: [
|
|
221
|
+
...run.lanes,
|
|
222
|
+
{
|
|
223
|
+
id: laneId,
|
|
224
|
+
name: laneId,
|
|
225
|
+
testCount: 0,
|
|
226
|
+
status: 'running',
|
|
227
|
+
logs: '',
|
|
228
|
+
...patch({ logs: '' })
|
|
229
|
+
}
|
|
230
|
+
];
|
|
231
|
+
return { ...run, lanes };
|
|
232
|
+
}
|
|
233
|
+
|
|
286
234
|
s.on(SOCKET_EVENTS.BG_RUN_LANE_LOG, ({ runId, laneId, log }) => {
|
|
287
|
-
updateBgRun(runId, (run) => ({
|
|
288
|
-
...run,
|
|
289
|
-
lanes: run.lanes.map((l) => (l.id === laneId ? { ...l, logs: l.logs + log } : l))
|
|
290
|
-
}));
|
|
235
|
+
updateBgRun(runId, (run) => patchLane(run, laneId, (l) => ({ logs: (l.logs || '') + log })));
|
|
291
236
|
});
|
|
292
237
|
|
|
293
238
|
s.on(SOCKET_EVENTS.BG_RUN_LANE_STATUS, ({ runId, laneId, status }) => {
|
|
294
|
-
updateBgRun(runId, (run) => ({
|
|
295
|
-
...run,
|
|
296
|
-
lanes: run.lanes.map((l) => (l.id === laneId ? { ...l, status } : l))
|
|
297
|
-
}));
|
|
239
|
+
updateBgRun(runId, (run) => patchLane(run, laneId, () => ({ status })));
|
|
298
240
|
});
|
|
299
241
|
|
|
300
242
|
s.on(SOCKET_EVENTS.BG_RUN_LANE_RRWEB_BATCH, ({ runId, ...batch }) => {
|
|
@@ -309,14 +251,15 @@
|
|
|
309
251
|
const cancelled = code === 130;
|
|
310
252
|
updateBgRun(runId, (run) => ({
|
|
311
253
|
...run,
|
|
312
|
-
|
|
254
|
+
status: 'done',
|
|
313
255
|
testCompleted: !cancelled,
|
|
314
256
|
latestReportId: cancelled ? null : reportId,
|
|
315
|
-
|
|
257
|
+
verdict: cancelled ? 'cancelled' : passed ? 'pass' : 'fail'
|
|
316
258
|
}));
|
|
259
|
+
if (!cancelled && reportId) lastFinished = { reportId, verdict: passed ? 'pass' : 'fail' };
|
|
317
260
|
if (!cancelled) reportsVersion.update((v) => v + 1);
|
|
318
|
-
// Keep the finished entry around briefly so a viewer on /
|
|
319
|
-
//
|
|
261
|
+
// Keep the finished entry around briefly so a viewer on /live/<id> still
|
|
262
|
+
// sees the completion bar/redirect, then drop it from the bottom bar.
|
|
320
263
|
setTimeout(() => {
|
|
321
264
|
backgroundRuns.update((r) => {
|
|
322
265
|
const next = { ...r };
|
|
@@ -334,22 +277,14 @@
|
|
|
334
277
|
_socket?.disconnect();
|
|
335
278
|
});
|
|
336
279
|
|
|
337
|
-
$: state = $runnerState;
|
|
338
280
|
$: cfg = $runnerConfig;
|
|
339
281
|
|
|
340
|
-
$:
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
` +${parts.length - RUN_TAG_DISPLAY_LIMIT} more`
|
|
347
|
-
);
|
|
348
|
-
})();
|
|
349
|
-
$: runningBgEntries = Object.entries($backgroundRuns).filter(([, r]) => r.running);
|
|
350
|
-
$: anyBgRunning = runningBgEntries.length > 0;
|
|
351
|
-
$: anyBgCronRunning = runningBgEntries.some(([, r]) => r.kind === TRIGGER_TYPES.CRON);
|
|
352
|
-
$: anyRunning = state.running || anyBgRunning;
|
|
282
|
+
$: activeRunEntries = Object.entries($backgroundRuns).filter(
|
|
283
|
+
([, r]) => r.status === 'queued' || r.status === 'running'
|
|
284
|
+
);
|
|
285
|
+
$: runningCount = activeRunEntries.filter(([, r]) => r.status === 'running').length;
|
|
286
|
+
$: queuedCount = activeRunEntries.filter(([, r]) => r.status === 'queued').length;
|
|
287
|
+
$: anyRunning = activeRunEntries.length > 0;
|
|
353
288
|
|
|
354
289
|
$: if ($runsVersion >= 0)
|
|
355
290
|
fetchRuns({ limit: RUN_PICKER_LIMIT })
|
|
@@ -357,17 +292,21 @@
|
|
|
357
292
|
.catch(() => {});
|
|
358
293
|
|
|
359
294
|
$: statusColor =
|
|
360
|
-
|
|
361
|
-
? 'var(--
|
|
362
|
-
:
|
|
363
|
-
? 'var(--
|
|
364
|
-
:
|
|
365
|
-
? 'var(--
|
|
366
|
-
:
|
|
367
|
-
? 'var(--
|
|
295
|
+
runningCount > 0
|
|
296
|
+
? 'var(--accent)'
|
|
297
|
+
: queuedCount > 0
|
|
298
|
+
? 'var(--warn)'
|
|
299
|
+
: lastFinished?.verdict === 'pass'
|
|
300
|
+
? 'var(--pass)'
|
|
301
|
+
: lastFinished?.verdict === 'fail'
|
|
302
|
+
? 'var(--fail)'
|
|
368
303
|
: 'var(--border)';
|
|
369
304
|
|
|
370
|
-
$: statusLabel = computeStatusLabel(
|
|
305
|
+
$: statusLabel = computeStatusLabel({
|
|
306
|
+
running: runningCount,
|
|
307
|
+
queued: queuedCount,
|
|
308
|
+
verdict: lastFinished?.verdict
|
|
309
|
+
});
|
|
371
310
|
|
|
372
311
|
$: currentBrowser = BROWSERS.find((b) => b.id === cfg.browser) ?? BROWSERS[0];
|
|
373
312
|
|
|
@@ -408,7 +347,7 @@
|
|
|
408
347
|
}
|
|
409
348
|
|
|
410
349
|
function handleKeydown(e) {
|
|
411
|
-
if (e.key === 'Enter' && !
|
|
350
|
+
if (e.key === 'Enter' && !selectedRun) handleRunClick();
|
|
412
351
|
}
|
|
413
352
|
|
|
414
353
|
function adjustWorkers(delta) {
|
|
@@ -449,9 +388,9 @@
|
|
|
449
388
|
<div class="panel" class:expanded={$panelExpanded}>
|
|
450
389
|
<div
|
|
451
390
|
class="scan-line"
|
|
452
|
-
class:scanning={
|
|
453
|
-
class:line-pass={
|
|
454
|
-
class:line-fail={
|
|
391
|
+
class:scanning={runningCount > 0}
|
|
392
|
+
class:line-pass={lastFinished?.verdict === 'pass' && !anyRunning}
|
|
393
|
+
class:line-fail={lastFinished?.verdict === 'fail' && !anyRunning}
|
|
455
394
|
></div>
|
|
456
395
|
|
|
457
396
|
<!-- ── Control bar ── -->
|
|
@@ -459,17 +398,15 @@
|
|
|
459
398
|
<!-- Left: status + view report -->
|
|
460
399
|
<div class="bar-left">
|
|
461
400
|
<div class="bar-status">
|
|
462
|
-
<span class="status-dot" class:pulse={
|
|
401
|
+
<span class="status-dot" class:pulse={runningCount > 0} style="background:{statusColor}"
|
|
463
402
|
></span>
|
|
464
403
|
<span class="status-word" style="color:{statusColor}">{statusLabel}</span>
|
|
465
|
-
{#if state.lastRunId || state.currentRun?.runTitle}
|
|
466
|
-
<span class="run-tag">{state.currentRun?.runTitle || state.lastRunId}</span>
|
|
467
|
-
{/if}
|
|
468
404
|
</div>
|
|
469
|
-
{#if
|
|
405
|
+
{#if !anyRunning && lastFinished?.reportId}
|
|
470
406
|
<a
|
|
471
|
-
href={reportUrl(
|
|
407
|
+
href={reportUrl(lastFinished.reportId)}
|
|
472
408
|
class="view-report-btn"
|
|
409
|
+
on:click={() => panelExpanded.set(false)}
|
|
473
410
|
transition:fly={{ x: -6, duration: 200 }}
|
|
474
411
|
>
|
|
475
412
|
{VIEW_REPORT_LABEL}
|
|
@@ -549,7 +486,6 @@
|
|
|
549
486
|
placeholder="@tag or leave blank for all tests"
|
|
550
487
|
on:input={(e) => runnerConfig.update((c) => ({ ...c, testID: e.currentTarget.value }))}
|
|
551
488
|
on:keydown={handleKeydown}
|
|
552
|
-
disabled={state.running}
|
|
553
489
|
/>
|
|
554
490
|
</div>
|
|
555
491
|
{/if}
|
|
@@ -563,9 +499,8 @@
|
|
|
563
499
|
class:open={runPickOpen}
|
|
564
500
|
class:has-remote={!!selectedRun}
|
|
565
501
|
on:click={() => {
|
|
566
|
-
|
|
502
|
+
runPickOpen = !runPickOpen;
|
|
567
503
|
}}
|
|
568
|
-
disabled={state.running}
|
|
569
504
|
>
|
|
570
505
|
<span>{selectedRun ? selectedRun.title : NO_RUN_SELECTED_LABEL}</span>
|
|
571
506
|
<svg
|
|
@@ -618,13 +553,13 @@
|
|
|
618
553
|
<button
|
|
619
554
|
class="step-btn"
|
|
620
555
|
on:click={() => adjustWorkers(-1)}
|
|
621
|
-
disabled={cfg.workers <= WORKERS_MIN
|
|
556
|
+
disabled={cfg.workers <= WORKERS_MIN}>−</button
|
|
622
557
|
>
|
|
623
558
|
<span class="step-val">{cfg.workers}</span>
|
|
624
559
|
<button
|
|
625
560
|
class="step-btn"
|
|
626
561
|
on:click={() => adjustWorkers(1)}
|
|
627
|
-
disabled={cfg.workers >= WORKERS_MAX
|
|
562
|
+
disabled={cfg.workers >= WORKERS_MAX}>+</button
|
|
628
563
|
>
|
|
629
564
|
</div>
|
|
630
565
|
</div>
|
|
@@ -639,9 +574,8 @@
|
|
|
639
574
|
class="dropdown-trigger"
|
|
640
575
|
class:open={browserOpen}
|
|
641
576
|
on:click={() => {
|
|
642
|
-
|
|
577
|
+
browserOpen = !browserOpen;
|
|
643
578
|
}}
|
|
644
|
-
disabled={state.running}
|
|
645
579
|
>
|
|
646
580
|
<span>{currentBrowser.label}</span>
|
|
647
581
|
<svg
|
|
@@ -688,9 +622,8 @@
|
|
|
688
622
|
class:open={runnersOpen}
|
|
689
623
|
class:has-remote={cfg.selectedRunners.some((r) => r !== BUILTIN_RUNNER_ID)}
|
|
690
624
|
on:click={() => {
|
|
691
|
-
|
|
625
|
+
runnersOpen = !runnersOpen;
|
|
692
626
|
}}
|
|
693
|
-
disabled={state.running}
|
|
694
627
|
>
|
|
695
628
|
<span>{runnerSummary}</span>
|
|
696
629
|
<svg
|
|
@@ -748,8 +681,7 @@
|
|
|
748
681
|
class="notify-btn"
|
|
749
682
|
class:active={notifyDiscord}
|
|
750
683
|
on:click={() => (notifyDiscord = !notifyDiscord)}
|
|
751
|
-
title={discordNotifyTitle(notifyDiscord)}
|
|
752
|
-
disabled={state.running}>{DISCORD_LABEL}</button
|
|
684
|
+
title={discordNotifyTitle(notifyDiscord)}>{DISCORD_LABEL}</button
|
|
753
685
|
>
|
|
754
686
|
{/if}
|
|
755
687
|
{#if integrations.slackWebhookUrl}
|
|
@@ -758,8 +690,7 @@
|
|
|
758
690
|
class="notify-btn"
|
|
759
691
|
class:active={notifySlack}
|
|
760
692
|
on:click={() => (notifySlack = !notifySlack)}
|
|
761
|
-
title={slackNotifyTitle(notifySlack)}
|
|
762
|
-
disabled={state.running}>{SLACK_LABEL}</button
|
|
693
|
+
title={slackNotifyTitle(notifySlack)}>{SLACK_LABEL}</button
|
|
763
694
|
>
|
|
764
695
|
{/if}
|
|
765
696
|
</div>
|
|
@@ -768,25 +699,17 @@
|
|
|
768
699
|
|
|
769
700
|
<div class="ctrl-divider"></div>
|
|
770
701
|
|
|
771
|
-
<!-- Run button -->
|
|
702
|
+
<!-- Run button — a run while one is active just queues another -->
|
|
772
703
|
<button
|
|
773
704
|
class="run-btn"
|
|
774
|
-
class:is-running={state.running}
|
|
775
705
|
on:click={handleRunClick}
|
|
776
|
-
disabled={
|
|
777
|
-
selectedRunLoading ||
|
|
778
|
-
(selectedRun && selectedRun.tags?.length === 0)}
|
|
706
|
+
disabled={selectedRunLoading || (selectedRun && selectedRun.tags?.length === 0)}
|
|
779
707
|
title={selectedRun && selectedRun.tags?.length === 0 ? NO_AUTOMATED_CASES_TITLE : undefined}
|
|
780
708
|
>
|
|
781
|
-
|
|
782
|
-
<
|
|
783
|
-
|
|
784
|
-
{
|
|
785
|
-
<svg width="9" height="10" viewBox="0 0 10 12" fill="currentColor" stroke="none">
|
|
786
|
-
<polygon points="0,0 10,6 0,12" />
|
|
787
|
-
</svg>
|
|
788
|
-
{RUN_LABEL}
|
|
789
|
-
{/if}
|
|
709
|
+
<svg width="9" height="10" viewBox="0 0 10 12" fill="currentColor" stroke="none">
|
|
710
|
+
<polygon points="0,0 10,6 0,12" />
|
|
711
|
+
</svg>
|
|
712
|
+
{RUN_LABEL}
|
|
790
713
|
</button>
|
|
791
714
|
</div>
|
|
792
715
|
|
|
@@ -817,72 +740,65 @@
|
|
|
817
740
|
<!-- ── Expanded: active runs only ── -->
|
|
818
741
|
{#if $panelExpanded}
|
|
819
742
|
<div class="body" transition:slide={{ duration: 200 }}>
|
|
820
|
-
{#
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
743
|
+
{#each activeRunEntries as [runId, run], i (runId)}
|
|
744
|
+
<div
|
|
745
|
+
class="run-card"
|
|
746
|
+
class:active-run={run.status === 'running'}
|
|
747
|
+
class:queued-run={run.status === 'queued'}
|
|
748
|
+
transition:fly={{ x: -4, duration: 160 }}
|
|
749
|
+
>
|
|
750
|
+
<span
|
|
751
|
+
class="run-card-dot"
|
|
752
|
+
class:pulse-accent={run.status === 'running'}
|
|
753
|
+
class:queued-dot={run.status === 'queued'}
|
|
754
|
+
></span>
|
|
755
|
+
<a href="/live/{runId}" class="run-card-main" on:click={() => panelExpanded.set(false)}>
|
|
756
|
+
<div class="run-card-info">
|
|
757
|
+
<span class="run-card-label">{run.label || MANUAL_RUN_LABEL}</span>
|
|
827
758
|
<span class="run-card-meta">
|
|
828
|
-
{
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
{
|
|
759
|
+
{run.status === 'queued'
|
|
760
|
+
? queuePositionLabel(
|
|
761
|
+
activeRunEntries.slice(0, i).filter(([, r]) => r.status === 'queued').length +
|
|
762
|
+
1
|
|
763
|
+
)
|
|
764
|
+
: runKindLabel(run.kind)}
|
|
765
|
+
{#if run.currentRun?.startedBy}
|
|
766
|
+
<span class="meta-dot">·</span> {startedByLabel(run.currentRun.startedBy)}
|
|
836
767
|
{/if}
|
|
837
768
|
</span>
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
transition:fly={{ x: -4, duration: 160 }}
|
|
861
|
-
>
|
|
862
|
-
<span class="run-card-dot pulse-pass"></span>
|
|
863
|
-
<div class="run-card-info">
|
|
864
|
-
<span class="run-card-label">{run.label}</span>
|
|
865
|
-
<span class="run-card-meta">
|
|
866
|
-
{runKindLabel(run.kind)}
|
|
867
|
-
{#if run.currentRun?.startedBy}
|
|
868
|
-
<span class="meta-dot">·</span> {startedByLabel(run.currentRun.startedBy)}
|
|
869
|
-
{/if}
|
|
870
|
-
</span>
|
|
871
|
-
</div>
|
|
872
|
-
<Badge variant={triggerVariant(run.kind)}>{triggerLabel(run.kind)}</Badge>
|
|
873
|
-
<svg
|
|
874
|
-
width="13"
|
|
875
|
-
height="13"
|
|
876
|
-
viewBox="0 0 24 24"
|
|
877
|
-
fill="none"
|
|
878
|
-
stroke="currentColor"
|
|
879
|
-
stroke-width="2"
|
|
880
|
-
stroke-linecap="round"
|
|
881
|
-
class="run-card-arrow"
|
|
769
|
+
</div>
|
|
770
|
+
<Badge variant={run.status === 'queued' ? 'tag' : triggerVariant(run.kind)}>
|
|
771
|
+
{run.status === 'queued' ? QUEUED_LABEL : triggerLabel(run.kind)}
|
|
772
|
+
</Badge>
|
|
773
|
+
<svg
|
|
774
|
+
width="13"
|
|
775
|
+
height="13"
|
|
776
|
+
viewBox="0 0 24 24"
|
|
777
|
+
fill="none"
|
|
778
|
+
stroke="currentColor"
|
|
779
|
+
stroke-width="2"
|
|
780
|
+
stroke-linecap="round"
|
|
781
|
+
class="run-card-arrow"
|
|
782
|
+
>
|
|
783
|
+
<line x1="5" y1="12" x2="19" y2="12" /><polyline points="12 5 19 12 12 19" />
|
|
784
|
+
</svg>
|
|
785
|
+
</a>
|
|
786
|
+
<button
|
|
787
|
+
class="run-card-cancel"
|
|
788
|
+
title={CANCEL_RUN_LABEL}
|
|
789
|
+
aria-label={CANCEL_RUN_LABEL}
|
|
790
|
+
on:click={() => cancelRun(runId)}
|
|
882
791
|
>
|
|
883
|
-
<
|
|
884
|
-
|
|
885
|
-
|
|
792
|
+
<svg width="12" height="12" viewBox="0 0 14 14" fill="none">
|
|
793
|
+
<path
|
|
794
|
+
d="M1 1l12 12M13 1L1 13"
|
|
795
|
+
stroke="currentColor"
|
|
796
|
+
stroke-width="1.6"
|
|
797
|
+
stroke-linecap="round"
|
|
798
|
+
/>
|
|
799
|
+
</svg>
|
|
800
|
+
</button>
|
|
801
|
+
</div>
|
|
886
802
|
{/each}
|
|
887
803
|
|
|
888
804
|
{#if !anyRunning}
|
|
@@ -1011,20 +927,6 @@
|
|
|
1011
927
|
white-space: nowrap;
|
|
1012
928
|
}
|
|
1013
929
|
|
|
1014
|
-
.run-tag {
|
|
1015
|
-
font-size: 0.7rem;
|
|
1016
|
-
font-family: 'JetBrains Mono', monospace;
|
|
1017
|
-
color: var(--text-muted);
|
|
1018
|
-
background: var(--bg-subtle);
|
|
1019
|
-
border: 1px solid var(--border);
|
|
1020
|
-
border-radius: var(--radius-pill);
|
|
1021
|
-
padding: 0.1rem 0.45rem;
|
|
1022
|
-
white-space: nowrap;
|
|
1023
|
-
overflow: hidden;
|
|
1024
|
-
text-overflow: ellipsis;
|
|
1025
|
-
max-width: 160px;
|
|
1026
|
-
}
|
|
1027
|
-
|
|
1028
930
|
.view-report-btn {
|
|
1029
931
|
display: inline-flex;
|
|
1030
932
|
align-items: center;
|
|
@@ -1319,22 +1221,11 @@
|
|
|
1319
1221
|
.run-btn:hover:not(:disabled) {
|
|
1320
1222
|
opacity: 0.88;
|
|
1321
1223
|
}
|
|
1322
|
-
.run-btn:disabled
|
|
1323
|
-
.run-btn.is-running {
|
|
1224
|
+
.run-btn:disabled {
|
|
1324
1225
|
opacity: 0.6;
|
|
1325
1226
|
cursor: default;
|
|
1326
1227
|
}
|
|
1327
1228
|
|
|
1328
|
-
.run-spinner {
|
|
1329
|
-
width: 10px;
|
|
1330
|
-
height: 10px;
|
|
1331
|
-
border: 1.5px solid rgba(255, 255, 255, 0.35);
|
|
1332
|
-
border-top-color: var(--white);
|
|
1333
|
-
border-radius: 50%;
|
|
1334
|
-
animation: spin 0.65s linear infinite;
|
|
1335
|
-
flex-shrink: 0;
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
1229
|
@keyframes spin {
|
|
1339
1230
|
to {
|
|
1340
1231
|
transform: rotate(360deg);
|
|
@@ -1429,14 +1320,13 @@
|
|
|
1429
1320
|
border: 1px solid var(--border);
|
|
1430
1321
|
border-radius: var(--radius-md);
|
|
1431
1322
|
background: var(--bg-subtle);
|
|
1432
|
-
text-decoration: none;
|
|
1433
1323
|
color: inherit;
|
|
1434
1324
|
transition:
|
|
1435
1325
|
background var(--duration-fast),
|
|
1436
1326
|
border-color var(--duration-fast);
|
|
1437
1327
|
}
|
|
1438
1328
|
|
|
1439
|
-
|
|
1329
|
+
.run-card:hover {
|
|
1440
1330
|
background: var(--bg-elevated);
|
|
1441
1331
|
border-color: var(--accent);
|
|
1442
1332
|
}
|
|
@@ -1444,15 +1334,47 @@
|
|
|
1444
1334
|
.run-card.active-run {
|
|
1445
1335
|
border-left: 3px solid var(--accent);
|
|
1446
1336
|
}
|
|
1447
|
-
.run-card.
|
|
1337
|
+
.run-card.queued-run {
|
|
1448
1338
|
border-left: 3px solid var(--warn);
|
|
1449
1339
|
}
|
|
1450
1340
|
|
|
1341
|
+
.run-card-main {
|
|
1342
|
+
display: flex;
|
|
1343
|
+
align-items: center;
|
|
1344
|
+
gap: 0.75rem;
|
|
1345
|
+
flex: 1;
|
|
1346
|
+
min-width: 0;
|
|
1347
|
+
text-decoration: none;
|
|
1348
|
+
color: inherit;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
.run-card-cancel {
|
|
1352
|
+
display: flex;
|
|
1353
|
+
align-items: center;
|
|
1354
|
+
justify-content: center;
|
|
1355
|
+
width: 22px;
|
|
1356
|
+
height: 22px;
|
|
1357
|
+
flex-shrink: 0;
|
|
1358
|
+
border: 1px solid var(--border);
|
|
1359
|
+
border-radius: var(--radius-sm);
|
|
1360
|
+
background: transparent;
|
|
1361
|
+
color: var(--text-muted);
|
|
1362
|
+
cursor: pointer;
|
|
1363
|
+
transition:
|
|
1364
|
+
color var(--duration-fast),
|
|
1365
|
+
border-color var(--duration-fast);
|
|
1366
|
+
}
|
|
1367
|
+
.run-card-cancel:hover {
|
|
1368
|
+
color: var(--fail);
|
|
1369
|
+
border-color: var(--fail);
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1451
1372
|
.run-card-dot {
|
|
1452
1373
|
width: 8px;
|
|
1453
1374
|
height: 8px;
|
|
1454
1375
|
border-radius: 50%;
|
|
1455
1376
|
flex-shrink: 0;
|
|
1377
|
+
background: var(--border);
|
|
1456
1378
|
}
|
|
1457
1379
|
|
|
1458
1380
|
.pulse-accent {
|
|
@@ -1460,9 +1382,8 @@
|
|
|
1460
1382
|
animation: dotPulse 1.6s ease-in-out infinite;
|
|
1461
1383
|
}
|
|
1462
1384
|
|
|
1463
|
-
.
|
|
1464
|
-
background: var(--
|
|
1465
|
-
animation: dotPulse 1.6s ease-in-out infinite;
|
|
1385
|
+
.queued-dot {
|
|
1386
|
+
background: var(--warn);
|
|
1466
1387
|
}
|
|
1467
1388
|
|
|
1468
1389
|
.run-card-info {
|
|
@@ -1501,7 +1422,7 @@
|
|
|
1501
1422
|
color var(--duration-fast);
|
|
1502
1423
|
}
|
|
1503
1424
|
|
|
1504
|
-
|
|
1425
|
+
.run-card:hover .run-card-arrow {
|
|
1505
1426
|
transform: translateX(3px);
|
|
1506
1427
|
color: var(--accent);
|
|
1507
1428
|
}
|