plum-e2e 2.8.5 → 2.9.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/backend/_scaffold/utils/browser.ts +184 -30
- package/backend/_scaffold/utils/hooks.ts +37 -8
- package/backend/app.js +0 -5
- package/backend/config/scripts/generate-report.js +2 -2
- package/backend/constants/socketEvents.js +7 -4
- package/backend/lib/reportFilename.js +1 -2
- package/backend/lib/{screenshotPoller.js → rrwebPoller.js} +7 -4
- package/backend/lib/serverBootstrap.js +14 -0
- package/backend/logs/runner-cmtbz5b1l0000mr0110b27w5k.log +8 -0
- package/backend/mcp/server.js +3 -47
- package/backend/package-lock.json +199 -1
- package/backend/package.json +3 -1
- package/backend/prisma/migrations/20260828120000_add_recording_and_split_runner_worker_count/migration.sql +39 -0
- package/backend/prisma/migrations/20260828140000_add_recording_started_ended_at/migration.sql +5 -0
- package/backend/prisma/migrations/20260828150000_strip_screenshot_refs_from_reports/migration.sql +34 -0
- package/backend/prisma/migrations/20260828160000_add_backup_include_reports/migration.sql +4 -0
- package/backend/prisma/schema.prisma +97 -70
- package/backend/routes/backup.routes.js +47 -1
- package/backend/routes/reports.routes.js +23 -0
- package/backend/routes/test-cases.routes.js +7 -2
- package/backend/server.js +1 -1
- package/backend/services/backupCronService.js +1 -1
- package/backend/services/backupService.js +134 -44
- package/backend/services/cronService.js +23 -15
- package/backend/services/nodeExecutionService.js +41 -15
- package/backend/services/nodeStreamRegistry.js +24 -0
- package/backend/services/reportService.js +174 -84
- package/backend/services/runnerService.js +19 -7
- package/backend/services/settingsService.js +6 -3
- package/backend/services/testCaseService.js +3 -2
- package/backend/services/triggerService.js +20 -13
- package/backend/services/userService.js +1 -3
- package/backend/websockets/nodeSocketHandler.js +40 -0
- package/backend/websockets/socketHandler.js +9 -7
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +1 -1
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.C1TbMUws.css +6 -0
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +22 -22
- package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +3 -3
- 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 +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/12.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/2.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/6.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/8.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
- package/frontend/.svelte-kit/ambient.d.ts +4 -0
- package/frontend/.svelte-kit/generated/server/internal.js +1 -1
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +35 -35
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.C1TbMUws.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.C1TbMUws.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DEKAA-Fm.js → DDZw0L0T.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{Dhf4xQKo.js → kkA1mrsH.js} +2 -2
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/{app.B0GH5ONo.js → app.KrtMZ3my.js} +2 -2
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/{start.Bn25CW9X.js → start.4qxHHAcl.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{0.-imXt0f5.js → 0.C8DodwXs.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/1.Dom3CKWF.js → .svelte-kit/output/client/_app/immutable/nodes/1.Df9sLw8b.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/11.DMlayLCK.js → .svelte-kit/output/client/_app/immutable/nodes/11.BViaDK2m.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/12.Bu89A1eX.js → .svelte-kit/output/client/_app/immutable/nodes/12.BMSCSd88.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BCPSg7H4.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{3.B86rlHXU.js → 3.8BFAJoHT.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/5.CqTXvadV.js → .svelte-kit/output/client/_app/immutable/nodes/5.DVeH2eQP.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{6.BJZ62MCd.js → 6.DI7-IJhN.js} +1 -1
- package/frontend/{build/client/_app/immutable/nodes/8.B4fj2Xyu.js → .svelte-kit/output/client/_app/immutable/nodes/8.93Mb3ofT.js} +4 -4
- package/frontend/{build/client/_app/immutable/nodes/9.C57_2xq6.js → .svelte-kit/output/client/_app/immutable/nodes/9.CvfGx3Hu.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +1 -1
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.C1TbMUws.css +6 -0
- package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/_page.svelte.js +22 -22
- package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +3 -3
- 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 +1 -1
- package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/12.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/2.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/3.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/5.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/6.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/8.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
- package/frontend/build/client/_app/immutable/assets/2.C1TbMUws.css +6 -0
- package/frontend/build/client/_app/immutable/assets/2.C1TbMUws.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/2.C1TbMUws.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.C1TbMUws.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.C1TbMUws.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.C1TbMUws.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DEKAA-Fm.js → DDZw0L0T.js} +1 -1
- 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/{Dhf4xQKo.js → kkA1mrsH.js} +2 -2
- 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/entry/{app.B0GH5ONo.js → app.KrtMZ3my.js} +2 -2
- 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/entry/{start.Bn25CW9X.js → start.4qxHHAcl.js} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.Bn25CW9X.js.br → start.4qxHHAcl.js.br} +0 -0
- package/frontend/build/client/_app/immutable/entry/{start.Bn25CW9X.js.gz → start.4qxHHAcl.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/nodes/{0.-imXt0f5.js → 0.C8DodwXs.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/nodes/1.Dom3CKWF.js → build/client/_app/immutable/nodes/1.Df9sLw8b.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/nodes/11.DMlayLCK.js → build/client/_app/immutable/nodes/11.BViaDK2m.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/nodes/12.Bu89A1eX.js → build/client/_app/immutable/nodes/12.BMSCSd88.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/{12.Bu89A1eX.js.gz → 12.BMSCSd88.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js +6 -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.B86rlHXU.js → 3.8BFAJoHT.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/nodes/5.CqTXvadV.js → build/client/_app/immutable/nodes/5.DVeH2eQP.js} +1 -1
- 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.BJZ62MCd.js → 6.DI7-IJhN.js} +1 -1
- 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/{.svelte-kit/output/client/_app/immutable/nodes/8.B4fj2Xyu.js → build/client/_app/immutable/nodes/8.93Mb3ofT.js} +4 -4
- 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/{.svelte-kit/output/client/_app/immutable/nodes/9.C57_2xq6.js → build/client/_app/immutable/nodes/9.CvfGx3Hu.js} +1 -1
- 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/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-DG1Uv07a.js → 0-D5YWFygh.js} +2 -2
- package/frontend/build/server/chunks/{0-DG1Uv07a.js.map → 0-D5YWFygh.js.map} +1 -1
- package/frontend/build/server/chunks/{1-iB0ogJU_.js → 1-Kxn9d30Z.js} +2 -2
- package/frontend/build/server/chunks/{1-iB0ogJU_.js.map → 1-Kxn9d30Z.js.map} +1 -1
- package/frontend/build/server/chunks/{11-Df9vGZ_v.js → 11-CNLerze_.js} +2 -2
- package/frontend/build/server/chunks/{11-Df9vGZ_v.js.map → 11-CNLerze_.js.map} +1 -1
- package/frontend/build/server/chunks/{12-DqvjCln4.js → 12-De6Ol6pu.js} +2 -2
- package/frontend/build/server/chunks/{12-DqvjCln4.js.map → 12-De6Ol6pu.js.map} +1 -1
- package/frontend/build/server/chunks/{2-Cte30Dgy.js → 2-Dc_rKWoK.js} +4 -4
- package/frontend/build/server/chunks/{2-Cte30Dgy.js.map → 2-Dc_rKWoK.js.map} +1 -1
- package/frontend/build/server/chunks/{3-BYKCZi4U.js → 3-DrRqVrcX.js} +2 -2
- package/frontend/build/server/chunks/{3-BYKCZi4U.js.map → 3-DrRqVrcX.js.map} +1 -1
- package/frontend/build/server/chunks/{5-B6Jc1foX.js → 5-CFeE5dPZ.js} +2 -2
- package/frontend/build/server/chunks/{5-B6Jc1foX.js.map → 5-CFeE5dPZ.js.map} +1 -1
- package/frontend/build/server/chunks/{6-dXZKtN86.js → 6-DZk37MZH.js} +2 -2
- package/frontend/build/server/chunks/{6-dXZKtN86.js.map → 6-DZk37MZH.js.map} +1 -1
- package/frontend/build/server/chunks/{8-D-Bp7HzS.js → 8-CKPVFOqJ.js} +3 -3
- package/frontend/build/server/chunks/{8-D-Bp7HzS.js.map → 8-CKPVFOqJ.js.map} +1 -1
- package/frontend/build/server/chunks/{9-BynjuGUO.js → 9-DirZG_Lu.js} +2 -2
- package/frontend/build/server/chunks/{9-BynjuGUO.js.map → 9-DirZG_Lu.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-CpB-fgJl.js → _page.svelte-04WxjOuH.js} +23 -23
- package/frontend/build/server/chunks/_page.svelte-04WxjOuH.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-wKyUmA2e.js → _page.svelte-8gELc_B1.js} +4 -4
- package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js.map +5 -0
- package/frontend/build/server/index.js +1 -1
- package/frontend/build/server/index.js.map +1 -1
- package/frontend/build/server/manifest.js +11 -11
- package/frontend/build/server/manifest.js.map +1 -1
- package/frontend/package-lock.json +121 -32
- package/frontend/package.json +1 -0
- package/frontend/src/lib/api/reports.js +13 -4
- package/frontend/src/lib/api/repository.js +2 -2
- package/frontend/src/lib/api/settings.js +16 -1
- package/frontend/src/lib/components/layout/RunnerPanel.svelte +9 -24
- package/frontend/src/lib/components/reports/ElementInspector.svelte +141 -0
- package/frontend/src/lib/components/reports/LiveReplayer.svelte +110 -0
- package/frontend/src/lib/components/reports/MultiTabTimeline.svelte +115 -0
- package/frontend/src/lib/components/reports/RecordingPlayer.svelte +786 -0
- package/frontend/src/lib/components/reports/StepsRail.svelte +109 -0
- package/frontend/src/lib/components/ui/CodeViewer.svelte +61 -0
- package/frontend/src/lib/constants.js +0 -1
- package/frontend/src/lib/copy/reports.js +18 -8
- package/frontend/src/lib/copy/repository.js +6 -0
- package/frontend/src/lib/copy/settings.js +25 -4
- package/frontend/src/lib/socketEvents.js +7 -4
- package/frontend/src/lib/stores/runner.js +26 -3
- package/frontend/src/lib/styles/tokens.css +7 -0
- package/frontend/src/lib/utils/format.js +108 -2
- package/frontend/src/lib/utils/inspectElement.js +34 -0
- package/frontend/src/routes/+page.svelte +6 -1
- package/frontend/src/routes/reports/+page.svelte +79 -1
- package/frontend/src/routes/reports/[id]/+page.svelte +304 -495
- package/frontend/src/routes/reports/live/+page.svelte +236 -260
- package/frontend/src/routes/settings/+page.svelte +246 -8
- package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +116 -0
- package/package.json +1 -1
- package/backend/playwright.config.js +0 -85
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DvMkmYA-.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.DvMkmYA-.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DvMkmYA-.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BnHalSCi.js +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DvMkmYA-.css +0 -6
- package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css +0 -6
- package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/2.DvMkmYA-.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DvMkmYA-.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DEKAA-Fm.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DEKAA-Fm.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dhf4xQKo.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dhf4xQKo.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.B0GH5ONo.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.B0GH5ONo.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.-imXt0f5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.-imXt0f5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Dom3CKWF.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Dom3CKWF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.DMlayLCK.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.DMlayLCK.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.Bu89A1eX.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BnHalSCi.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B86rlHXU.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B86rlHXU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.CqTXvadV.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.CqTXvadV.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.BJZ62MCd.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.BJZ62MCd.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.B4fj2Xyu.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.B4fj2Xyu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.C57_2xq6.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.C57_2xq6.js.gz +0 -0
- package/frontend/build/server/chunks/_page.svelte-CpB-fgJl.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-wKyUmA2e.js.map +0 -5
|
@@ -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.4qxHHAcl.js",app:"_app/immutable/entry/app.KrtMZ3my.js",imports:["_app/immutable/entry/start.4qxHHAcl.js","_app/immutable/chunks/kkA1mrsH.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/entry/app.KrtMZ3my.js","_app/immutable/chunks/BAACMRH5.js","_app/immutable/chunks/CMBQQ9RZ.js","_app/immutable/chunks/CgnwuKKO.js","_app/immutable/chunks/C8OURRSs.js","_app/immutable/chunks/2zMvi6fR.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-
|
|
20
|
+
__memo(() => import('./chunks/0-D5YWFygh.js')),
|
|
21
|
+
__memo(() => import('./chunks/1-Kxn9d30Z.js')),
|
|
22
|
+
__memo(() => import('./chunks/2-Dc_rKWoK.js')),
|
|
23
|
+
__memo(() => import('./chunks/3-DrRqVrcX.js')),
|
|
24
24
|
__memo(() => import('./chunks/4-Bo04DC5Z.js')),
|
|
25
|
-
__memo(() => import('./chunks/5-
|
|
26
|
-
__memo(() => import('./chunks/6-
|
|
25
|
+
__memo(() => import('./chunks/5-CFeE5dPZ.js')),
|
|
26
|
+
__memo(() => import('./chunks/6-DZk37MZH.js')),
|
|
27
27
|
__memo(() => import('./chunks/7-DiQJZEF_.js')),
|
|
28
|
-
__memo(() => import('./chunks/8-
|
|
29
|
-
__memo(() => import('./chunks/9-
|
|
28
|
+
__memo(() => import('./chunks/8-CKPVFOqJ.js')),
|
|
29
|
+
__memo(() => import('./chunks/9-DirZG_Lu.js')),
|
|
30
30
|
__memo(() => import('./chunks/10-l6_ikL_D.js')),
|
|
31
|
-
__memo(() => import('./chunks/11-
|
|
32
|
-
__memo(() => import('./chunks/12-
|
|
31
|
+
__memo(() => import('./chunks/11-CNLerze_.js')),
|
|
32
|
+
__memo(() => import('./chunks/12-De6Ol6pu.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.4qxHHAcl.js\",app:\"_app/immutable/entry/app.KrtMZ3my.js\",imports:[\"_app/immutable/entry/start.4qxHHAcl.js\",\"_app/immutable/chunks/kkA1mrsH.js\",\"_app/immutable/chunks/BAACMRH5.js\",\"_app/immutable/entry/app.KrtMZ3my.js\",\"_app/immutable/chunks/BAACMRH5.js\",\"_app/immutable/chunks/CMBQQ9RZ.js\",\"_app/immutable/chunks/CgnwuKKO.js\",\"_app/immutable/chunks/C8OURRSs.js\",\"_app/immutable/chunks/2zMvi6fR.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: \"/login\",\n\t\t\t\tpattern: /^\\/login\\/?$/,\n\t\t\t\tparams: [],\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: \"/reports\",\n\t\t\t\tpattern: /^\\/reports\\/?$/,\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/live\",\n\t\t\t\tpattern: /^\\/reports\\/live\\/?$/,\n\t\t\t\tparams: [],\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: \"/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: 5 },\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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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plum-frontend",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "plum-frontend",
|
|
9
|
-
"version": "1.
|
|
9
|
+
"version": "1.4.0",
|
|
10
|
+
"license": "MIT",
|
|
10
11
|
"dependencies": {
|
|
12
|
+
"rrweb-player": "^2.1.1",
|
|
11
13
|
"socket.io-client": "^4.8.1"
|
|
12
14
|
},
|
|
13
15
|
"devDependencies": {
|
|
@@ -986,6 +988,38 @@
|
|
|
986
988
|
"win32"
|
|
987
989
|
]
|
|
988
990
|
},
|
|
991
|
+
"node_modules/@rrweb/packer": {
|
|
992
|
+
"version": "2.1.1",
|
|
993
|
+
"resolved": "https://registry.npmjs.org/@rrweb/packer/-/packer-2.1.1.tgz",
|
|
994
|
+
"integrity": "sha512-xPGT7/Cfn1yHD2MOwQhX/8yTvNculurUxPT6ZKXVW8Wh/LI7Jn19L+e8PYKFhj/M89uwNeoTr6hiUQxgb8SMzQ==",
|
|
995
|
+
"license": "MIT",
|
|
996
|
+
"dependencies": {
|
|
997
|
+
"@rrweb/types": "^2.1.1",
|
|
998
|
+
"fflate": "^0.4.4"
|
|
999
|
+
}
|
|
1000
|
+
},
|
|
1001
|
+
"node_modules/@rrweb/replay": {
|
|
1002
|
+
"version": "2.1.1",
|
|
1003
|
+
"resolved": "https://registry.npmjs.org/@rrweb/replay/-/replay-2.1.1.tgz",
|
|
1004
|
+
"integrity": "sha512-jq64eyJvrh/ioBS1MpDrs/Lj+7QY2TW4xGxp4g4LJKdltSkqMjMbUmhTDcpzaEDZt66S0gasGcgqCulsksSXnw==",
|
|
1005
|
+
"license": "MIT",
|
|
1006
|
+
"dependencies": {
|
|
1007
|
+
"@rrweb/types": "^2.1.1",
|
|
1008
|
+
"rrweb": "^2.1.1"
|
|
1009
|
+
}
|
|
1010
|
+
},
|
|
1011
|
+
"node_modules/@rrweb/types": {
|
|
1012
|
+
"version": "2.1.1",
|
|
1013
|
+
"resolved": "https://registry.npmjs.org/@rrweb/types/-/types-2.1.1.tgz",
|
|
1014
|
+
"integrity": "sha512-g0I3nCNL1S7slDXwhunxOuOoswkY8WVZJQrPFiwixOc6xoD514d1JLTuyAzCKIox8g/PaLKtV5g31Uk42inQSQ==",
|
|
1015
|
+
"license": "MIT"
|
|
1016
|
+
},
|
|
1017
|
+
"node_modules/@rrweb/utils": {
|
|
1018
|
+
"version": "2.1.1",
|
|
1019
|
+
"resolved": "https://registry.npmjs.org/@rrweb/utils/-/utils-2.1.1.tgz",
|
|
1020
|
+
"integrity": "sha512-x2SgJAD3YJ9eVcLZ5l6OqWMtczdA3VfS5XqPeqpZdQgV9oh6Id5GK2cDN4bimnkqryOcIJdz8cTvV0yNvqQ+nA==",
|
|
1021
|
+
"license": "MIT"
|
|
1022
|
+
},
|
|
989
1023
|
"node_modules/@socket.io/component-emitter": {
|
|
990
1024
|
"version": "3.1.2",
|
|
991
1025
|
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
|
@@ -1087,12 +1121,24 @@
|
|
|
1087
1121
|
"vite": "^6.0.0"
|
|
1088
1122
|
}
|
|
1089
1123
|
},
|
|
1124
|
+
"node_modules/@tsconfig/svelte": {
|
|
1125
|
+
"version": "1.0.13",
|
|
1126
|
+
"resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-1.0.13.tgz",
|
|
1127
|
+
"integrity": "sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==",
|
|
1128
|
+
"license": "MIT"
|
|
1129
|
+
},
|
|
1090
1130
|
"node_modules/@types/cookie": {
|
|
1091
1131
|
"version": "0.6.0",
|
|
1092
1132
|
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
|
|
1093
1133
|
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
|
|
1094
1134
|
"dev": true
|
|
1095
1135
|
},
|
|
1136
|
+
"node_modules/@types/css-font-loading-module": {
|
|
1137
|
+
"version": "0.0.7",
|
|
1138
|
+
"resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz",
|
|
1139
|
+
"integrity": "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==",
|
|
1140
|
+
"license": "MIT"
|
|
1141
|
+
},
|
|
1096
1142
|
"node_modules/@types/estree": {
|
|
1097
1143
|
"version": "1.0.9",
|
|
1098
1144
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
|
|
@@ -1107,6 +1153,12 @@
|
|
|
1107
1153
|
"dev": true,
|
|
1108
1154
|
"license": "MIT"
|
|
1109
1155
|
},
|
|
1156
|
+
"node_modules/@xstate/fsm": {
|
|
1157
|
+
"version": "1.6.5",
|
|
1158
|
+
"resolved": "https://registry.npmjs.org/@xstate/fsm/-/fsm-1.6.5.tgz",
|
|
1159
|
+
"integrity": "sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==",
|
|
1160
|
+
"license": "MIT"
|
|
1161
|
+
},
|
|
1110
1162
|
"node_modules/acorn": {
|
|
1111
1163
|
"version": "8.14.0",
|
|
1112
1164
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
|
@@ -1146,6 +1198,15 @@
|
|
|
1146
1198
|
"node": ">= 0.4"
|
|
1147
1199
|
}
|
|
1148
1200
|
},
|
|
1201
|
+
"node_modules/base64-arraybuffer": {
|
|
1202
|
+
"version": "1.0.2",
|
|
1203
|
+
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
|
1204
|
+
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
|
|
1205
|
+
"license": "MIT",
|
|
1206
|
+
"engines": {
|
|
1207
|
+
"node": ">= 0.6.0"
|
|
1208
|
+
}
|
|
1209
|
+
},
|
|
1149
1210
|
"node_modules/clsx": {
|
|
1150
1211
|
"version": "2.1.1",
|
|
1151
1212
|
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
|
|
@@ -1301,6 +1362,12 @@
|
|
|
1301
1362
|
"dev": true,
|
|
1302
1363
|
"license": "MIT"
|
|
1303
1364
|
},
|
|
1365
|
+
"node_modules/fflate": {
|
|
1366
|
+
"version": "0.4.9",
|
|
1367
|
+
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.9.tgz",
|
|
1368
|
+
"integrity": "sha512-zdxgIEddhfsyCaWpJ2SdXEP8ZMrKJ6+5jl4OupODcywU0IhRk6gdXuVGcPICyfx2H97hVK7xmJtRLPjkxAX8Vw==",
|
|
1369
|
+
"license": "MIT"
|
|
1370
|
+
},
|
|
1304
1371
|
"node_modules/fsevents": {
|
|
1305
1372
|
"version": "2.3.3",
|
|
1306
1373
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
|
@@ -1377,17 +1444,6 @@
|
|
|
1377
1444
|
"@types/estree": "^1.0.6"
|
|
1378
1445
|
}
|
|
1379
1446
|
},
|
|
1380
|
-
"node_modules/jiti": {
|
|
1381
|
-
"version": "1.21.7",
|
|
1382
|
-
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
|
|
1383
|
-
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
|
|
1384
|
-
"dev": true,
|
|
1385
|
-
"optional": true,
|
|
1386
|
-
"peer": true,
|
|
1387
|
-
"bin": {
|
|
1388
|
-
"jiti": "bin/jiti.js"
|
|
1389
|
-
}
|
|
1390
|
-
},
|
|
1391
1447
|
"node_modules/kleur": {
|
|
1392
1448
|
"version": "4.1.5",
|
|
1393
1449
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
|
@@ -1412,6 +1468,12 @@
|
|
|
1412
1468
|
"@jridgewell/sourcemap-codec": "^1.5.0"
|
|
1413
1469
|
}
|
|
1414
1470
|
},
|
|
1471
|
+
"node_modules/mitt": {
|
|
1472
|
+
"version": "3.0.1",
|
|
1473
|
+
"resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
|
|
1474
|
+
"integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
|
|
1475
|
+
"license": "MIT"
|
|
1476
|
+
},
|
|
1415
1477
|
"node_modules/mri": {
|
|
1416
1478
|
"version": "1.2.0",
|
|
1417
1479
|
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
|
|
@@ -1439,7 +1501,6 @@
|
|
|
1439
1501
|
"version": "3.3.8",
|
|
1440
1502
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
|
|
1441
1503
|
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
|
|
1442
|
-
"dev": true,
|
|
1443
1504
|
"funding": [
|
|
1444
1505
|
{
|
|
1445
1506
|
"type": "github",
|
|
@@ -1462,14 +1523,12 @@
|
|
|
1462
1523
|
"node_modules/picocolors": {
|
|
1463
1524
|
"version": "1.1.1",
|
|
1464
1525
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
1465
|
-
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
|
1466
|
-
"dev": true
|
|
1526
|
+
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
|
1467
1527
|
},
|
|
1468
1528
|
"node_modules/postcss": {
|
|
1469
1529
|
"version": "8.5.3",
|
|
1470
1530
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
|
|
1471
1531
|
"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
|
|
1472
|
-
"dev": true,
|
|
1473
1532
|
"funding": [
|
|
1474
1533
|
{
|
|
1475
1534
|
"type": "opencollective",
|
|
@@ -1558,6 +1617,51 @@
|
|
|
1558
1617
|
"fsevents": "~2.3.2"
|
|
1559
1618
|
}
|
|
1560
1619
|
},
|
|
1620
|
+
"node_modules/rrdom": {
|
|
1621
|
+
"version": "2.1.1",
|
|
1622
|
+
"resolved": "https://registry.npmjs.org/rrdom/-/rrdom-2.1.1.tgz",
|
|
1623
|
+
"integrity": "sha512-VBkTF3bGNqcZjqnbo/gKi9GVQPIxiG0dofw7CQdAZQFQ2juJdt2YKIf3oS9QudL8HTpGh9bz5TUN+3amBn1Geg==",
|
|
1624
|
+
"license": "MIT",
|
|
1625
|
+
"dependencies": {
|
|
1626
|
+
"rrweb-snapshot": "^2.1.1"
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1629
|
+
"node_modules/rrweb": {
|
|
1630
|
+
"version": "2.1.1",
|
|
1631
|
+
"resolved": "https://registry.npmjs.org/rrweb/-/rrweb-2.1.1.tgz",
|
|
1632
|
+
"integrity": "sha512-ToxhJg3SsrAhw+/DPhI/2iiwZQIrGK5BGkZ0kHn4qUExcvQYRaolkciD1FWX2+r6vf1IxFyhsoRY18h3D+XoCg==",
|
|
1633
|
+
"license": "MIT",
|
|
1634
|
+
"dependencies": {
|
|
1635
|
+
"@rrweb/types": "^2.1.1",
|
|
1636
|
+
"@rrweb/utils": "^2.1.1",
|
|
1637
|
+
"@types/css-font-loading-module": "0.0.7",
|
|
1638
|
+
"@xstate/fsm": "^1.4.0",
|
|
1639
|
+
"base64-arraybuffer": "^1.0.1",
|
|
1640
|
+
"mitt": "^3.0.0",
|
|
1641
|
+
"rrdom": "^2.1.1",
|
|
1642
|
+
"rrweb-snapshot": "^2.1.1"
|
|
1643
|
+
}
|
|
1644
|
+
},
|
|
1645
|
+
"node_modules/rrweb-player": {
|
|
1646
|
+
"version": "2.1.1",
|
|
1647
|
+
"resolved": "https://registry.npmjs.org/rrweb-player/-/rrweb-player-2.1.1.tgz",
|
|
1648
|
+
"integrity": "sha512-oiAWx/m9Pz0DD5jlJdrF8QlotOZZBK0jINNSYAixxhGa2dI1TrzVVmF4eWFSd6AR8f2zjazKXI/PXCqj3PttXQ==",
|
|
1649
|
+
"license": "MIT",
|
|
1650
|
+
"dependencies": {
|
|
1651
|
+
"@rrweb/packer": "^2.1.1",
|
|
1652
|
+
"@rrweb/replay": "^2.1.1",
|
|
1653
|
+
"@tsconfig/svelte": "^1.0.0"
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
"node_modules/rrweb-snapshot": {
|
|
1657
|
+
"version": "2.1.1",
|
|
1658
|
+
"resolved": "https://registry.npmjs.org/rrweb-snapshot/-/rrweb-snapshot-2.1.1.tgz",
|
|
1659
|
+
"integrity": "sha512-al4Kx7Am7YlIn/5Yb2EMr7cdmjGiK+cLhdilJEXqkFXgpnys8t/yMJumXy2Ormgirpg3MBnFha0GTgny+iIL2w==",
|
|
1660
|
+
"license": "MIT",
|
|
1661
|
+
"dependencies": {
|
|
1662
|
+
"postcss": "^8.4.38"
|
|
1663
|
+
}
|
|
1664
|
+
},
|
|
1561
1665
|
"node_modules/sade": {
|
|
1562
1666
|
"version": "1.8.1",
|
|
1563
1667
|
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
|
|
@@ -1652,7 +1756,6 @@
|
|
|
1652
1756
|
"version": "1.2.1",
|
|
1653
1757
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
1654
1758
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
|
1655
|
-
"dev": true,
|
|
1656
1759
|
"engines": {
|
|
1657
1760
|
"node": ">=0.10.0"
|
|
1658
1761
|
}
|
|
@@ -1820,20 +1923,6 @@
|
|
|
1820
1923
|
"node": ">=0.4.0"
|
|
1821
1924
|
}
|
|
1822
1925
|
},
|
|
1823
|
-
"node_modules/yaml": {
|
|
1824
|
-
"version": "2.7.0",
|
|
1825
|
-
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
|
|
1826
|
-
"integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
|
|
1827
|
-
"dev": true,
|
|
1828
|
-
"optional": true,
|
|
1829
|
-
"peer": true,
|
|
1830
|
-
"bin": {
|
|
1831
|
-
"yaml": "bin.mjs"
|
|
1832
|
-
},
|
|
1833
|
-
"engines": {
|
|
1834
|
-
"node": ">= 14"
|
|
1835
|
-
}
|
|
1836
|
-
},
|
|
1837
1926
|
"node_modules/zimmerframe": {
|
|
1838
1927
|
"version": "1.1.2",
|
|
1839
1928
|
"resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
|
package/frontend/package.json
CHANGED
|
@@ -32,16 +32,25 @@ export function reportUrl(id) {
|
|
|
32
32
|
return `/reports/${id}`;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
export function screenshotUrl(filename) {
|
|
36
|
-
return `${API_BASE}/screenshots/${filename}`;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
35
|
export async function fetchReportDetail(id) {
|
|
40
36
|
const res = await fetch(`${API_BASE}/reports/${id}`);
|
|
41
37
|
if (!res.ok) throw new Error('Report not found');
|
|
42
38
|
return res.json();
|
|
43
39
|
}
|
|
44
40
|
|
|
41
|
+
export async function fetchRecordings(reportId) {
|
|
42
|
+
const res = await fetch(`${API_BASE}/reports/${reportId}/recordings`);
|
|
43
|
+
if (!res.ok) throw new Error('Failed to fetch recordings');
|
|
44
|
+
return res.json();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function fetchRecordingEvents(reportId, recordingId) {
|
|
48
|
+
const res = await fetch(`${API_BASE}/reports/${reportId}/recordings/${recordingId}/events`);
|
|
49
|
+
if (!res.ok) throw new Error('Failed to fetch recording events');
|
|
50
|
+
const { events } = await res.json();
|
|
51
|
+
return events;
|
|
52
|
+
}
|
|
53
|
+
|
|
45
54
|
export async function deleteReport(id) {
|
|
46
55
|
const res = await fetch(`${API_BASE}/reports/${id}`, { method: 'DELETE' });
|
|
47
56
|
if (!res.ok) throw new Error('Failed to delete report');
|
|
@@ -100,11 +100,11 @@ export async function createTestCase({ suiteId, title, description, priority })
|
|
|
100
100
|
return data.testCase;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
export async function updateTestCase(id, { title, description, priority }) {
|
|
103
|
+
export async function updateTestCase(id, { title, description, priority, suiteId }) {
|
|
104
104
|
const res = await fetch(`${API_BASE}/test-cases/${id}`, {
|
|
105
105
|
method: 'PUT',
|
|
106
106
|
headers: authHeaders(),
|
|
107
|
-
body: JSON.stringify({ title, description, priority })
|
|
107
|
+
body: JSON.stringify({ title, description, priority, suiteId })
|
|
108
108
|
});
|
|
109
109
|
const data = await res.json();
|
|
110
110
|
if (!res.ok) throw new Error(data.error ?? 'Failed to update test case');
|
|
@@ -53,7 +53,8 @@ export async function fetchBackupConfig() {
|
|
|
53
53
|
backupS3SecretKeySet: false,
|
|
54
54
|
backupS3Prefix: '',
|
|
55
55
|
backupLastRunAt: null,
|
|
56
|
-
backupLastStatus: ''
|
|
56
|
+
backupLastStatus: '',
|
|
57
|
+
backupIncludeReports: false
|
|
57
58
|
};
|
|
58
59
|
return res.json();
|
|
59
60
|
}
|
|
@@ -81,6 +82,20 @@ export async function runBackupNow() {
|
|
|
81
82
|
return res.json();
|
|
82
83
|
}
|
|
83
84
|
|
|
85
|
+
export async function fetchS3Backups() {
|
|
86
|
+
const res = await fetch(`${API_BASE}/backup/s3-backups`, { headers: authHeaders() });
|
|
87
|
+
return res.json();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export async function restoreFromS3(key) {
|
|
91
|
+
const res = await fetch(`${API_BASE}/backup/s3-restore`, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: { 'Content-Type': 'application/json', ...authHeaders() },
|
|
94
|
+
body: JSON.stringify({ key })
|
|
95
|
+
});
|
|
96
|
+
return res.json();
|
|
97
|
+
}
|
|
98
|
+
|
|
84
99
|
export async function fetchIntegrations() {
|
|
85
100
|
const res = await fetch(`${API_BASE}/settings/integrations`, { headers: authHeaders() });
|
|
86
101
|
if (!res.ok) return { discordWebhookUrl: '', slackWebhookUrl: '', notifyPublicUrl: '' };
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
triggerRun,
|
|
18
18
|
reportsVersion,
|
|
19
19
|
runsVersion,
|
|
20
|
-
backgroundRuns
|
|
20
|
+
backgroundRuns,
|
|
21
|
+
appendRRwebBatch,
|
|
22
|
+
mergeRRwebBatch
|
|
21
23
|
} from '$lib/stores/runner';
|
|
22
24
|
import { fetchLatestReportId, reportUrl } from '$lib/api/reports';
|
|
23
25
|
import { fetchRunners } from '$lib/api/runners';
|
|
@@ -121,7 +123,7 @@
|
|
|
121
123
|
runTitle: label,
|
|
122
124
|
startedBy: meta?.startedBy
|
|
123
125
|
},
|
|
124
|
-
|
|
126
|
+
rrwebByLane: {}
|
|
125
127
|
};
|
|
126
128
|
}
|
|
127
129
|
|
|
@@ -236,7 +238,7 @@
|
|
|
236
238
|
s.on(SOCKET_EVENTS.RUNNER_LANES_INIT, (lanes) => {
|
|
237
239
|
runnerState.update((r) => ({
|
|
238
240
|
...r,
|
|
239
|
-
lanes: lanes.map((l) => ({ ...l, status: 'running', logs: ''
|
|
241
|
+
lanes: lanes.map((l) => ({ ...l, status: 'running', logs: '' }))
|
|
240
242
|
}));
|
|
241
243
|
});
|
|
242
244
|
|
|
@@ -254,18 +256,7 @@
|
|
|
254
256
|
}));
|
|
255
257
|
});
|
|
256
258
|
|
|
257
|
-
s.on(SOCKET_EVENTS.
|
|
258
|
-
runnerState.update((r) => ({ ...r, latestScreenshot: { stepName, data } }));
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
s.on(SOCKET_EVENTS.RUNNER_LANE_SCREENSHOT, ({ id, stepName, data }) => {
|
|
262
|
-
runnerState.update((r) => ({
|
|
263
|
-
...r,
|
|
264
|
-
lanes: r.lanes.map((l) =>
|
|
265
|
-
l.id === id ? { ...l, latestScreenshot: { stepName, data } } : l
|
|
266
|
-
)
|
|
267
|
-
}));
|
|
268
|
-
});
|
|
259
|
+
s.on(SOCKET_EVENTS.RUNNER_LANE_RRWEB_BATCH, (batch) => appendRRwebBatch(batch));
|
|
269
260
|
|
|
270
261
|
s.on(SOCKET_EVENTS.REPORT_READY, () => reportsVersion.update((v) => v + 1));
|
|
271
262
|
|
|
@@ -288,7 +279,7 @@
|
|
|
288
279
|
s.on(SOCKET_EVENTS.BG_RUN_LANES_INIT, ({ runId, lanes }) => {
|
|
289
280
|
updateBgRun(runId, (run) => ({
|
|
290
281
|
...run,
|
|
291
|
-
lanes: lanes.map((l) => ({ ...l, status: 'running', logs: ''
|
|
282
|
+
lanes: lanes.map((l) => ({ ...l, status: 'running', logs: '' }))
|
|
292
283
|
}));
|
|
293
284
|
});
|
|
294
285
|
|
|
@@ -306,16 +297,10 @@
|
|
|
306
297
|
}));
|
|
307
298
|
});
|
|
308
299
|
|
|
309
|
-
s.on(SOCKET_EVENTS.
|
|
310
|
-
updateBgRun(runId, (run) => ({ ...run, latestScreenshot: { stepName, data } }));
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
s.on(SOCKET_EVENTS.BG_RUN_LANE_SCREENSHOT, ({ runId, laneId, stepName, data }) => {
|
|
300
|
+
s.on(SOCKET_EVENTS.BG_RUN_LANE_RRWEB_BATCH, ({ runId, ...batch }) => {
|
|
314
301
|
updateBgRun(runId, (run) => ({
|
|
315
302
|
...run,
|
|
316
|
-
|
|
317
|
-
l.id === laneId ? { ...l, latestScreenshot: { stepName, data } } : l
|
|
318
|
-
)
|
|
303
|
+
rrwebByLane: mergeRRwebBatch(run.rrwebByLane, batch)
|
|
319
304
|
}));
|
|
320
305
|
});
|
|
321
306
|
|
|
@@ -0,0 +1,141 @@
|
|
|
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 CodeViewer from '$lib/components/ui/CodeViewer.svelte';
|
|
8
|
+
import {
|
|
9
|
+
INSPECTOR_HEADING,
|
|
10
|
+
NO_ELEMENT_SELECTED,
|
|
11
|
+
ELEMENT_ATTRIBUTES_LABEL,
|
|
12
|
+
ELEMENT_SIZE_LABEL
|
|
13
|
+
} from '$lib/copy/reports';
|
|
14
|
+
|
|
15
|
+
export let selectedElement = null;
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<aside class="inspector-panel">
|
|
19
|
+
<div class="inspector-header">
|
|
20
|
+
<svg
|
|
21
|
+
width="12"
|
|
22
|
+
height="12"
|
|
23
|
+
viewBox="0 0 24 24"
|
|
24
|
+
fill="none"
|
|
25
|
+
stroke="currentColor"
|
|
26
|
+
stroke-width="2"
|
|
27
|
+
stroke-linecap="round"
|
|
28
|
+
stroke-linejoin="round"
|
|
29
|
+
>
|
|
30
|
+
<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z" />
|
|
31
|
+
</svg>
|
|
32
|
+
{INSPECTOR_HEADING}
|
|
33
|
+
</div>
|
|
34
|
+
{#if selectedElement}
|
|
35
|
+
<CodeViewer code={selectedElement.markup} />
|
|
36
|
+
<div class="inspector-section">
|
|
37
|
+
<span class="inspector-section-label">{ELEMENT_SIZE_LABEL}</span>
|
|
38
|
+
<span class="inspector-size">{selectedElement.box.width} × {selectedElement.box.height}</span>
|
|
39
|
+
</div>
|
|
40
|
+
{#if selectedElement.attributes.length > 0}
|
|
41
|
+
<div class="inspector-section">
|
|
42
|
+
<span class="inspector-section-label">{ELEMENT_ATTRIBUTES_LABEL}</span>
|
|
43
|
+
</div>
|
|
44
|
+
<dl class="inspector-attrs">
|
|
45
|
+
{#each selectedElement.attributes as attr}
|
|
46
|
+
<div class="inspector-attr-row">
|
|
47
|
+
<dt>{attr.name}</dt>
|
|
48
|
+
<dd>{attr.value}</dd>
|
|
49
|
+
</div>
|
|
50
|
+
{/each}
|
|
51
|
+
</dl>
|
|
52
|
+
{/if}
|
|
53
|
+
{:else}
|
|
54
|
+
<div class="inspector-empty">{NO_ELEMENT_SELECTED}</div>
|
|
55
|
+
{/if}
|
|
56
|
+
</aside>
|
|
57
|
+
|
|
58
|
+
<style>
|
|
59
|
+
.inspector-panel {
|
|
60
|
+
flex-shrink: 0;
|
|
61
|
+
width: 280px;
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
gap: 0.65rem;
|
|
65
|
+
padding: 0.75rem 0.9rem 0.9rem;
|
|
66
|
+
background: var(--bg-elevated);
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
}
|
|
69
|
+
/* A long attribute list scrolls the panel, doesn't squeeze the code viewer. */
|
|
70
|
+
.inspector-panel > * {
|
|
71
|
+
flex-shrink: 0;
|
|
72
|
+
}
|
|
73
|
+
.inspector-panel :global(.code-viewer) {
|
|
74
|
+
flex-shrink: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.inspector-header {
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
gap: 0.4rem;
|
|
81
|
+
padding-bottom: 0.5rem;
|
|
82
|
+
margin-bottom: 0.1rem;
|
|
83
|
+
border-bottom: 1px solid var(--border);
|
|
84
|
+
font-family: 'JetBrains Mono', monospace;
|
|
85
|
+
font-size: 0.68rem;
|
|
86
|
+
font-weight: 600;
|
|
87
|
+
text-transform: uppercase;
|
|
88
|
+
letter-spacing: 0.06em;
|
|
89
|
+
color: var(--text-muted);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.inspector-empty {
|
|
93
|
+
color: var(--text-muted);
|
|
94
|
+
font-size: 0.8rem;
|
|
95
|
+
padding: 1rem 0.1rem;
|
|
96
|
+
line-height: 1.5;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.inspector-section {
|
|
100
|
+
display: flex;
|
|
101
|
+
align-items: baseline;
|
|
102
|
+
gap: 0.5rem;
|
|
103
|
+
}
|
|
104
|
+
.inspector-section-label {
|
|
105
|
+
font-size: 0.68rem;
|
|
106
|
+
font-weight: 600;
|
|
107
|
+
text-transform: uppercase;
|
|
108
|
+
letter-spacing: 0.05em;
|
|
109
|
+
color: var(--text-muted);
|
|
110
|
+
}
|
|
111
|
+
.inspector-size {
|
|
112
|
+
font-family: 'JetBrains Mono', monospace;
|
|
113
|
+
font-size: 0.75rem;
|
|
114
|
+
color: var(--text);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.inspector-attrs {
|
|
118
|
+
margin: 0;
|
|
119
|
+
display: flex;
|
|
120
|
+
flex-direction: column;
|
|
121
|
+
}
|
|
122
|
+
.inspector-attr-row {
|
|
123
|
+
display: flex;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
gap: 0.1rem;
|
|
126
|
+
padding: 0.35rem 0;
|
|
127
|
+
border-top: 1px solid var(--border);
|
|
128
|
+
}
|
|
129
|
+
.inspector-attr-row dt {
|
|
130
|
+
font-family: 'JetBrains Mono', monospace;
|
|
131
|
+
font-size: 0.7rem;
|
|
132
|
+
color: var(--accent);
|
|
133
|
+
}
|
|
134
|
+
.inspector-attr-row dd {
|
|
135
|
+
margin: 0;
|
|
136
|
+
font-family: 'JetBrains Mono', monospace;
|
|
137
|
+
font-size: 0.72rem;
|
|
138
|
+
color: var(--text-muted);
|
|
139
|
+
word-break: break-all;
|
|
140
|
+
}
|
|
141
|
+
</style>
|