plum-e2e 2.8.4 → 2.8.6
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/package-lock.json +3 -3
- package/backend/package.json +1 -1
- package/backend/routes/test-cases.routes.js +7 -2
- package/backend/services/reportService.js +7 -1
- package/backend/services/testCaseService.js +3 -2
- package/backend/services/userService.js +1 -3
- 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/{build/client/_app/immutable/chunks/DEKAA-Fm.js → .svelte-kit/output/client/_app/immutable/chunks/DDZw0L0T.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{Dhf4xQKo.js → kkA1mrsH.js} +2 -2
- package/frontend/{build/client/_app/immutable/entry/app.B0GH5ONo.js → .svelte-kit/output/client/_app/immutable/entry/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/.svelte-kit/output/client/_app/immutable/nodes/{1.Dom3CKWF.js → 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/.svelte-kit/output/client/_app/immutable/nodes/{9.C57_2xq6.js → 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/{.svelte-kit/output/client/_app/immutable/chunks/DEKAA-Fm.js → build/client/_app/immutable/chunks/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/{.svelte-kit/output/client/_app/immutable/entry/app.B0GH5ONo.js → build/client/_app/immutable/entry/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/build/client/_app/immutable/nodes/{1.Dom3CKWF.js → 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/build/client/_app/immutable/nodes/{9.C57_2xq6.js → 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/src/lib/api/repository.js +2 -2
- package/frontend/src/lib/copy/repository.js +6 -0
- package/frontend/src/routes/+page.svelte +6 -1
- package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +116 -0
- package/package.json +1 -1
- 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":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;AAChC,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACjf,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,yBAAe,CAAC,CAAC;AACxC,GAAG,MAAM,CAAC,MAAM,OAAO,yBAAe,CAAC,CAAC;AACxC,GAAG,MAAM,CAAC,MAAM,OAAO,yBAAe,CAAC;AACvC,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,QAAQ;AAChB,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,sBAAsB;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,0BAA0B;AACvC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,kBAAkB;AAC1B,IAAI,OAAO,EAAE,wBAAwB;AACrC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,WAAW;AACnB,IAAI,OAAO,EAAE,iBAAiB;AAC9B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,QAAQ;AAChB,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,kBAAkB;AAC1B,IAAI,OAAO,EAAE,wBAAwB;AACrC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,4BAA4B;AACpC,IAAI,OAAO,EAAE,wCAAwC;AACrD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,8BAA8B;AACtC,IAAI,OAAO,EAAE,0CAA0C;AACvD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACzE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACjC,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,EAAE,CAAC;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
|
|
@@ -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');
|
|
@@ -98,14 +98,20 @@ export const FAILED_TO_DELETE_CASE = 'Failed to delete case.';
|
|
|
98
98
|
export const TEST_CASE_UPDATED_TOAST = 'Test case updated.';
|
|
99
99
|
export const STEPS_SAVED_TOAST = 'Steps saved.';
|
|
100
100
|
export const SUITE_UPDATED_TOAST = 'Suite updated.';
|
|
101
|
+
export const MOVE_CASE_TITLE = 'Move to suite';
|
|
102
|
+
export const MOVE_TEST_CASE_MODAL_TITLE = 'Move Test Case';
|
|
103
|
+
export const MOVE_TO_SUITE_LABEL = 'Move to suite';
|
|
104
|
+
export const FAILED_TO_MOVE_CASE = 'Failed to move case.';
|
|
101
105
|
|
|
102
106
|
export const suiteDetailTitle = (suite) =>
|
|
103
107
|
`${suite ? `${suite.displayId} — ${suite.name}` : 'Suite'} — Plum`;
|
|
104
108
|
export const createdByCapitalized = (name) => `Created by ${name}`;
|
|
105
109
|
export const caseCreatedToast = (displayId) => `${displayId} created.`;
|
|
106
110
|
export const caseDeletedToast = (displayId) => `${displayId} deleted.`;
|
|
111
|
+
export const caseMovedToast = (displayId, suiteName) => `${displayId} moved to ${suiteName}.`;
|
|
107
112
|
export const stepCount = (count) => `${count} ${pluralize(count, 'step')}`;
|
|
108
113
|
export const saveStepsLabel = (saving) => (saving ? 'Saving…' : 'Save Steps');
|
|
114
|
+
export const moveCaseLabel = (saving) => (saving ? 'Moving…' : 'Move');
|
|
109
115
|
export const runLinkLabel = (title) => `${title} ↗`;
|
|
110
116
|
|
|
111
117
|
// ── Run detail ──
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
{@const suiteKey = suiteIds(suite)[0] ?? suite.suiteName}
|
|
243
243
|
{@const suiteOpen = !collapsedSuites.has(suiteKey)}
|
|
244
244
|
<div class="suite" style={stagger(si, 55)}>
|
|
245
|
-
<div class="suite-header">
|
|
245
|
+
<div class="suite-header" class:collapsed={!suiteOpen}>
|
|
246
246
|
<button
|
|
247
247
|
class="suite-toggle"
|
|
248
248
|
on:click={() => toggleSuite(suiteKey)}
|
|
@@ -572,6 +572,11 @@
|
|
|
572
572
|
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
|
|
573
573
|
}
|
|
574
574
|
|
|
575
|
+
.suite-header.collapsed {
|
|
576
|
+
border-bottom: none;
|
|
577
|
+
border-radius: var(--radius-lg);
|
|
578
|
+
}
|
|
579
|
+
|
|
575
580
|
.suite-toggle {
|
|
576
581
|
display: flex;
|
|
577
582
|
align-items: center;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { fly, fade } from 'svelte/transition';
|
|
10
10
|
import {
|
|
11
11
|
fetchSuite,
|
|
12
|
+
fetchAllSuitesWithCases,
|
|
12
13
|
updateSuite,
|
|
13
14
|
createTestCase,
|
|
14
15
|
fetchTestCase,
|
|
@@ -80,13 +81,20 @@
|
|
|
80
81
|
TEST_CASE_UPDATED_TOAST,
|
|
81
82
|
STEPS_SAVED_TOAST,
|
|
82
83
|
SUITE_UPDATED_TOAST,
|
|
84
|
+
MOVE_CASE_TITLE,
|
|
85
|
+
MOVE_TEST_CASE_MODAL_TITLE,
|
|
86
|
+
MOVE_TO_SUITE_LABEL,
|
|
87
|
+
NO_SUITES_AVAILABLE,
|
|
88
|
+
FAILED_TO_MOVE_CASE,
|
|
83
89
|
suiteDetailTitle,
|
|
84
90
|
createdByCapitalized,
|
|
85
91
|
caseCreatedToast,
|
|
86
92
|
caseDeletedToast,
|
|
93
|
+
caseMovedToast,
|
|
87
94
|
caseCount,
|
|
88
95
|
stepCount,
|
|
89
96
|
saveStepsLabel,
|
|
97
|
+
moveCaseLabel,
|
|
90
98
|
runLinkLabel
|
|
91
99
|
} from '$lib/copy/repository';
|
|
92
100
|
|
|
@@ -118,6 +126,13 @@
|
|
|
118
126
|
let confirmDeleteCase = null;
|
|
119
127
|
let confirmDeleteCaseOpen = false;
|
|
120
128
|
|
|
129
|
+
let allSuites = [];
|
|
130
|
+
let moveCaseOpen = false;
|
|
131
|
+
let moveCaseTarget = null;
|
|
132
|
+
let moveCaseSuiteId = '';
|
|
133
|
+
let moveCaseSaving = false;
|
|
134
|
+
$: otherSuites = allSuites.filter((s) => s.id !== suiteId);
|
|
135
|
+
|
|
121
136
|
let caseSearch = '';
|
|
122
137
|
let casesPage = 1;
|
|
123
138
|
let casesSort = (() => {
|
|
@@ -181,6 +196,9 @@
|
|
|
181
196
|
} finally {
|
|
182
197
|
loading = false;
|
|
183
198
|
}
|
|
199
|
+
try {
|
|
200
|
+
allSuites = await fetchAllSuitesWithCases();
|
|
201
|
+
} catch {}
|
|
184
202
|
});
|
|
185
203
|
|
|
186
204
|
async function handleCreateCase() {
|
|
@@ -287,6 +305,34 @@
|
|
|
287
305
|
confirmDeleteCaseOpen = false;
|
|
288
306
|
}
|
|
289
307
|
|
|
308
|
+
function openMoveCase(tc) {
|
|
309
|
+
moveCaseTarget = tc;
|
|
310
|
+
moveCaseSuiteId = otherSuites[0]?.id ?? '';
|
|
311
|
+
moveCaseOpen = true;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
async function handleMoveCase() {
|
|
315
|
+
if (!moveCaseTarget || !moveCaseSuiteId) return;
|
|
316
|
+
moveCaseSaving = true;
|
|
317
|
+
try {
|
|
318
|
+
await updateTestCase(moveCaseTarget.id, { suiteId: moveCaseSuiteId });
|
|
319
|
+
const targetSuite = allSuites.find((s) => s.id === moveCaseSuiteId);
|
|
320
|
+
suite = {
|
|
321
|
+
...suite,
|
|
322
|
+
cases: suite.cases.filter((c) => c.id !== moveCaseTarget.id),
|
|
323
|
+
_count: { cases: suite._count.cases - 1 }
|
|
324
|
+
};
|
|
325
|
+
if (selectedCase?.id === moveCaseTarget.id) selectedCase = null;
|
|
326
|
+
showToast('success', caseMovedToast(moveCaseTarget.displayId, targetSuite?.name ?? ''));
|
|
327
|
+
moveCaseOpen = false;
|
|
328
|
+
moveCaseTarget = null;
|
|
329
|
+
} catch (e) {
|
|
330
|
+
showToast('error', e.message ?? FAILED_TO_MOVE_CASE);
|
|
331
|
+
} finally {
|
|
332
|
+
moveCaseSaving = false;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
290
336
|
async function handleUpdateSuite() {
|
|
291
337
|
editSuiteSaving = true;
|
|
292
338
|
try {
|
|
@@ -409,6 +455,32 @@
|
|
|
409
455
|
</div>
|
|
410
456
|
</Modal>
|
|
411
457
|
|
|
458
|
+
<Modal bind:open={moveCaseOpen} title={MOVE_TEST_CASE_MODAL_TITLE}>
|
|
459
|
+
<div class="form-fields">
|
|
460
|
+
{#if moveCaseTarget}
|
|
461
|
+
<p class="move-case-subtitle">{moveCaseTarget.displayId} — {moveCaseTarget.title}</p>
|
|
462
|
+
{/if}
|
|
463
|
+
{#if otherSuites.length === 0}
|
|
464
|
+
<p class="form-error">{NO_SUITES_AVAILABLE}</p>
|
|
465
|
+
{:else}
|
|
466
|
+
<div class="field">
|
|
467
|
+
<label class="field-label" for="move-suite">{MOVE_TO_SUITE_LABEL}</label>
|
|
468
|
+
<select id="move-suite" class="field-input" bind:value={moveCaseSuiteId}>
|
|
469
|
+
{#each otherSuites as s}
|
|
470
|
+
<option value={s.id}>{s.displayId} — {s.name}</option>
|
|
471
|
+
{/each}
|
|
472
|
+
</select>
|
|
473
|
+
</div>
|
|
474
|
+
{/if}
|
|
475
|
+
<div class="modal-actions">
|
|
476
|
+
<Button on:click={handleMoveCase} disabled={moveCaseSaving || otherSuites.length === 0}>
|
|
477
|
+
{moveCaseLabel(moveCaseSaving)}
|
|
478
|
+
</Button>
|
|
479
|
+
<Button variant="ghost" on:click={() => (moveCaseOpen = false)}>{CANCEL_LABEL}</Button>
|
|
480
|
+
</div>
|
|
481
|
+
</div>
|
|
482
|
+
</Modal>
|
|
483
|
+
|
|
412
484
|
{#if loading}
|
|
413
485
|
<div class="loading-state">{LOADING_LABEL}</div>
|
|
414
486
|
{:else if suite}
|
|
@@ -548,6 +620,26 @@
|
|
|
548
620
|
<span class="auto-badge">{AUTOMATED_LABEL}</span>
|
|
549
621
|
{/if}
|
|
550
622
|
<div class="case-row-actions" on:click|stopPropagation>
|
|
623
|
+
<button
|
|
624
|
+
class="icon-btn small"
|
|
625
|
+
title={MOVE_CASE_TITLE}
|
|
626
|
+
on:click={() => openMoveCase(tc)}
|
|
627
|
+
>
|
|
628
|
+
<svg
|
|
629
|
+
width="11"
|
|
630
|
+
height="11"
|
|
631
|
+
viewBox="0 0 24 24"
|
|
632
|
+
fill="none"
|
|
633
|
+
stroke="currentColor"
|
|
634
|
+
stroke-width="2"
|
|
635
|
+
stroke-linecap="round"
|
|
636
|
+
stroke-linejoin="round"
|
|
637
|
+
>
|
|
638
|
+
<path
|
|
639
|
+
d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z"
|
|
640
|
+
/>
|
|
641
|
+
</svg>
|
|
642
|
+
</button>
|
|
551
643
|
<button
|
|
552
644
|
class="icon-btn danger small"
|
|
553
645
|
on:click={() => {
|
|
@@ -606,6 +698,26 @@
|
|
|
606
698
|
{/if}
|
|
607
699
|
<div class="detail-header-actions">
|
|
608
700
|
{#if !editingCase}
|
|
701
|
+
<button
|
|
702
|
+
class="icon-btn"
|
|
703
|
+
title={MOVE_CASE_TITLE}
|
|
704
|
+
on:click={() => openMoveCase(selectedCase)}
|
|
705
|
+
>
|
|
706
|
+
<svg
|
|
707
|
+
width="13"
|
|
708
|
+
height="13"
|
|
709
|
+
viewBox="0 0 24 24"
|
|
710
|
+
fill="none"
|
|
711
|
+
stroke="currentColor"
|
|
712
|
+
stroke-width="2"
|
|
713
|
+
stroke-linecap="round"
|
|
714
|
+
stroke-linejoin="round"
|
|
715
|
+
>
|
|
716
|
+
<path
|
|
717
|
+
d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z"
|
|
718
|
+
/>
|
|
719
|
+
</svg>
|
|
720
|
+
</button>
|
|
609
721
|
<button class="icon-btn" title={EDIT_CASE_TITLE} on:click={startEditCase}>
|
|
610
722
|
<svg
|
|
611
723
|
width="13"
|
|
@@ -1577,6 +1689,10 @@
|
|
|
1577
1689
|
font-size: 0.8125rem;
|
|
1578
1690
|
color: var(--fail);
|
|
1579
1691
|
}
|
|
1692
|
+
.move-case-subtitle {
|
|
1693
|
+
font-size: 0.8125rem;
|
|
1694
|
+
color: var(--text-muted);
|
|
1695
|
+
}
|
|
1580
1696
|
.modal-actions {
|
|
1581
1697
|
display: flex;
|
|
1582
1698
|
gap: 0.5rem;
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* This file is part of Plum.
|
|
3
|
-
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import{h as xt,a as i,t as c,b as Ge,s as g,e as B}from"../chunks/CMBQQ9RZ.js";import{i as yt}from"../chunks/CKDtmZUQ.js";import{p as wt,m as E,o as St,an as Ct,l as ve,b as Et,f as Lt,g as e,c as kt,s as b,$ as At,d as l,j as n,k as a,t as x,x as w}from"../chunks/BAACMRH5.js";import{i as L}from"../chunks/CgnwuKKO.js";import{e as T,t as ee,i as I,a as je,g as qe}from"../chunks/TOCyHP97.js";import{A as Tt,p as Ce,s as _,r as It,c as $t,S as Bt,w as Nt}from"../chunks/CUC98kMZ.js";import{b as Ot}from"../chunks/t-La0hgu.js";import{e as Mt,t as Rt}from"../chunks/DHM6H-es.js";import{s as Je}from"../chunks/DSLBMEpr.js";import{E as Dt}from"../chunks/BKuh57WU.js";async function Pt(){const o=await fetch(`${Tt}/tests`),{suites:$}=await o.json();return $.suites??[]}const Ht="Automated Tests — Plum",Ut="Tests",Gt="Search suites or tests…",jt="No test suites found.",Ye="Run suite",qt="outline",Jt="Hide",Yt="Steps",zt="Examples",Ft=o=>`No tests matching "${o}"`,Kt=o=>`Copied ${o}`,Vt=o=>`Copy ${o}`,Xt=o=>`Run ${o}`,Qt=o=>`Run ${o}`,Wt=o=>o?"Collapse suite":"Expand suite",Zt=(o,$)=>`${o} of ${$} tests`,es=o=>`${o} ${Ce(o,"test")}`,ts=(o,$)=>`${o} ${Ce(o,"suite")} · ${$} ${Ce($,"test")}`;var ss=c('<button class="search-clear svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 14 14" fill="none" class="svelte-ll28r2"><path d="M1 1l12 12M13 1L1 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="svelte-ll28r2"></path></svg></button>'),as=c('<span class="sort-dir svelte-ll28r2"> </span>'),ls=c('<button class="sort-chip svelte-ll28r2"> <!></button>'),rs=c('<div class="sort-bar svelte-ll28r2"><span class="sort-label svelte-ll28r2"></span> <!></div>'),os=c('<button class="id-pill svelte-ll28r2"> </button>'),ns=c('<button class="id-pill svelte-ll28r2"> </button>'),is=c('<span class="outline-badge svelte-ll28r2"></span>'),vs=c('<button class="steps-toggle svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ll28r2"><polyline points="9 18 15 12 9 6" class="svelte-ll28r2"></polyline></svg> </button>'),cs=c('<li class="step svelte-ll28r2"> </li>'),ds=c('<th class="svelte-ll28r2"> </th>'),us=c('<td class="svelte-ll28r2"> </td>'),ps=c('<tr class="svelte-ll28r2"></tr>'),_s=c('<div class="examples svelte-ll28r2"><span class="examples-label svelte-ll28r2"></span> <div class="examples-table-wrap svelte-ll28r2"><table class="examples-table svelte-ll28r2"><thead class="svelte-ll28r2"><tr class="svelte-ll28r2"></tr></thead><tbody class="svelte-ll28r2"></tbody></table></div></div>'),hs=c('<div class="steps svelte-ll28r2"><ol class="step-list svelte-ll28r2"></ol> <!></div>'),fs=c('<div class="test-row svelte-ll28r2"><div class="test-main svelte-ll28r2"><button class="run-icon-btn svelte-ll28r2"><svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ll28r2"><polygon points="5,3 19,12 5,21" class="svelte-ll28r2"></polygon></svg></button> <div class="test-ids svelte-ll28r2"></div> <span class="test-name svelte-ll28r2"> <!></span> <!></div> <!></div>'),ms=c('<div class="tests svelte-ll28r2"></div>'),gs=c('<div class="suite svelte-ll28r2"><div class="suite-header svelte-ll28r2"><button class="suite-toggle svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ll28r2"><polyline points="9 18 15 12 9 6" class="svelte-ll28r2"></polyline></svg></button> <div class="suite-meta svelte-ll28r2"><div class="suite-badges svelte-ll28r2"></div> <span class="suite-name svelte-ll28r2"> </span> <span class="suite-count svelte-ll28r2"> </span></div> <button class="run-btn suite-run svelte-ll28r2"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ll28r2"><polygon points="5,3 19,12 5,21" class="svelte-ll28r2"></polygon></svg> </button></div> <!></div>'),bs=c('<div class="suites svelte-ll28r2"></div>'),xs=c('<div class="page-header svelte-ll28r2"><div class="header-top svelte-ll28r2"><div class="svelte-ll28r2"><h1 class="svelte-ll28r2"></h1> <p class="subtitle svelte-ll28r2"><!></p></div></div> <div class="search-row svelte-ll28r2"><div class="search-wrap svelte-ll28r2"><svg class="search-icon svelte-ll28r2" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8" class="svelte-ll28r2"></circle><line x1="21" y1="21" x2="16.65" y2="16.65" class="svelte-ll28r2"></line></svg> <input type="text" class="search-input svelte-ll28r2"> <!></div></div></div> <!> <!>',1);function $s(o,$){wt($,!1);const S=E(),V=E(),ce=E(),Ee=E();let U=E([]),N=E(""),G=E(new Set),j=E(new Set),C=E(new Set);const X=new Map;function ze(t,s){try{const v=sessionStorage.getItem(t);if(v)return JSON.parse(v)}catch{}return s}function Fe(t,s){try{sessionStorage.setItem(t,JSON.stringify(s))}catch{}}let h=E(ze("plum:automated-tests:sort",{by:"id",order:"desc"}));function Ke(t){b(h,e(h).by===t?{...e(h),order:e(h).order==="asc"?"desc":"asc"}:{by:t,order:t==="id"?"desc":"asc"}),Fe("plum:automated-tests:sort",e(h))}async function Ve(){try{b(U,await Pt())}catch(t){console.error("Failed to fetch suites",t)}}St(Ve);function q(t){return Array.isArray(t.suiteId)?t.suiteId:[t.suiteId]}function Le(t){return Array.isArray(t.id)?t.id:[t.id]}function de(t){return Array.isArray(t.id)?t.id[0]:t.id}function Xe(t){e(G).has(t)?e(G).delete(t):e(G).add(t),b(G,e(G))}function Qe(t){e(j).has(t)?e(j).delete(t):e(j).add(t),b(j,e(j))}function ke(t){Mt.update(s=>({...s,testID:t})),Rt(t)}function We(t){ke(q(t)[0])}async function Ae(t){await navigator.clipboard.writeText(t),e(C).add(t),b(C,e(C)),X.has(t)&&clearTimeout(X.get(t)),X.set(t,setTimeout(()=>{e(C).delete(t),b(C,e(C)),X.delete(t)},Nt))}Ct(()=>{for(const t of X.values())clearTimeout(t)}),ve(()=>e(N),()=>{b(S,e(N).trim().toLowerCase())}),ve(()=>(e(U),e(S),e(h)),()=>{b(V,e(U).map(t=>{if(!e(S))return t;const s=t.suiteName.toLowerCase().includes(e(S))||q(t).some(d=>d.toLowerCase().includes(e(S))),v=t.tests.filter(d=>d.testCase.toLowerCase().includes(e(S))||Le(d).some(J=>J.toLowerCase().includes(e(S))));return!s&&v.length===0?null:{...t,tests:s?t.tests:v}}).filter(Boolean).map(t=>({...t,tests:[...t.tests].sort((s,v)=>{const d=e(h).by==="name"?s.testCase.localeCompare(v.testCase):(de(s)??"").localeCompare(de(v)??"");return e(h).order==="asc"?d:-d})})).sort((t,s)=>{const v=e(h).by==="name"?t.suiteName.localeCompare(s.suiteName):(q(t)[0]??"").localeCompare(q(s)[0]??"");return e(h).order==="asc"?v:-v}))}),ve(()=>e(U),()=>{b(ce,e(U).reduce((t,s)=>t+s.tests.length,0))}),ve(()=>e(V),()=>{b(Ee,e(V).reduce((t,s)=>t+s.tests.length,0))}),Et(),yt();var Te=xs();xt(t=>{At.title=Ht});var ue=Lt(Te),pe=l(ue),Ie=l(pe),$e=l(Ie);$e.textContent=Ut;var Be=n($e,2),Ze=l(Be);{var et=t=>{var s=Ge();x(v=>g(s,v),[()=>Zt(e(Ee),e(ce))],w),i(t,s)},tt=t=>{var s=Ge();x(v=>g(s,v),[()=>ts(e(U).length,e(ce))],w),i(t,s)};L(Ze,t=>{e(S)?t(et):t(tt,!1)})}a(Be),a(Ie),a(pe);var Ne=n(pe,2),Oe=l(Ne),te=n(l(Oe),2);It(te),_(te,"placeholder",Gt);var st=n(te,2);{var at=t=>{var s=ss();_(s,"aria-label",$t),B("click",s,()=>b(N,"")),i(t,s)};L(st,t=>{e(N)&&t(at)})}a(Oe),a(Ne),a(ue);var Me=n(ue,2);{var lt=t=>{var s=rs(),v=l(s);v.textContent=Bt;var d=n(v,2);T(d,0,()=>[["id","ID"],["name","Name"]],I,(J,O)=>{let Y=()=>O[0],z=()=>O[1];var k=ls(),A=l(k),_e=n(A);{var Q=M=>{var R=as(),he=l(R,!0);a(R),x(()=>g(he,e(h).order==="asc"?"↑":"↓")),i(M,R)};L(_e,M=>{e(h).by===Y()&&M(Q)})}a(k),x(()=>{ee(k,"active",e(h).by===Y()),g(A,`${z()??""} `)}),B("click",k,()=>Ke(Y())),i(J,k)}),a(s),i(t,s)};L(Me,t=>{e(S)||t(lt)})}var rt=n(Me,2);{var ot=t=>{const s=w(()=>e(S)?Ft(e(N)):jt);Dt(t,{get message(){return e(s)}})},nt=t=>{var s=bs();T(s,5,()=>e(V),I,(v,d,J)=>{var O=gs();const Y=w(()=>q(e(d))[0]??e(d).suiteName),z=w(()=>!e(j).has(e(Y)));var k=l(O),A=l(k),_e=l(A);a(A);var Q=n(A,2),M=l(Q);T(M,5,()=>q(e(d)),I,(D,f)=>{var y=os(),m=l(y,!0);a(y),x((ae,F)=>{_(y,"title",ae),_(y,"aria-label",ae),ee(y,"copied",F),g(m,e(f))},[()=>e(C).has(e(f))?Kt(e(f)):Vt(e(f)),()=>e(C).has(e(f))],w),B("click",y,()=>Ae(e(f))),i(D,y)}),a(M);var R=n(M,2),he=l(R,!0);a(R);var Re=n(R,2),it=l(Re,!0);a(Re),a(Q);var se=n(Q,2);_(se,"title",Ye);var vt=n(l(se));vt.nodeValue=` ${Ye}`,a(se),a(k);var ct=n(k,2);{var dt=D=>{var f=ms();T(f,5,()=>e(d).tests,I,(y,m,ae)=>{var F=fs();const le=w(()=>de(e(m))),re=w(()=>e(G).has(e(le)));var fe=l(F),oe=l(fe),me=n(oe,2);T(me,5,()=>Le(e(m)),I,(p,r)=>{var u=ns(),W=l(u,!0);a(u),x((ne,P)=>{_(u,"title",ne),_(u,"aria-label",ne),ee(u,"copied",P),g(W,e(r))},[()=>e(C).has(e(r))?`Copied ${e(r)}`:`Copy ${e(r)}`,()=>e(C).has(e(r))],w),B("click",u,()=>Ae(e(r))),i(p,u)}),a(me);var ge=n(me,2),De=l(ge),ut=n(De);{var pt=p=>{var r=is();r.textContent=qt,i(p,r)};L(ut,p=>{e(m).type==="outline"&&p(pt)})}a(ge);var _t=n(ge,2);{var ht=p=>{var r=vs(),u=l(r),W=n(u);a(r),x(()=>{_(r,"aria-expanded",e(re)),ee(u,"rotated",e(re)),g(W,` ${(e(re)?Jt:Yt)??""}`)}),B("click",r,()=>Xe(e(le))),i(p,r)};L(_t,p=>{var r;((r=e(m).steps)==null?void 0:r.length)>0&&p(ht)})}a(fe);var ft=n(fe,2);{var mt=p=>{var r=hs(),u=l(r);T(u,5,()=>e(m).steps,I,(P,Z)=>{var K=cs(),ie=l(K,!0);a(K),x(()=>g(ie,e(Z))),i(P,K)}),a(u);var W=n(u,2);{var ne=P=>{var Z=_s(),K=l(Z);K.textContent=zt;var ie=n(K,2),Pe=l(ie),be=l(Pe),He=l(be);T(He,5,()=>e(m).examples.headers,I,(xe,ye)=>{var H=ds(),we=l(H,!0);a(H),x(()=>g(we,e(ye))),i(xe,H)}),a(He),a(be);var Ue=n(be);T(Ue,5,()=>e(m).examples.rows,I,(xe,ye)=>{var H=ps();T(H,5,()=>e(ye),I,(we,gt)=>{var Se=us(),bt=l(Se,!0);a(Se),x(()=>g(bt,e(gt))),i(we,Se)}),a(H),i(xe,H)}),a(Ue),a(Pe),a(ie),a(Z),i(P,Z)};L(W,P=>{e(m).examples&&P(ne)})}a(r),je(3,r,()=>qe,()=>({duration:180})),i(p,r)};L(ft,p=>{var r;e(re)&&((r=e(m).steps)==null?void 0:r.length)>0&&p(mt)})}a(F),x((p,r,u)=>{_(F,"style",p),_(oe,"title",r),_(oe,"aria-label",u),g(De,`${e(m).testCase??""} `)},[()=>Je(J*4+ae,30),()=>Xt(e(le)),()=>Qt(e(m).testCase)],w),B("click",oe,()=>ke(e(le))),i(y,F)}),a(f),je(3,f,()=>qe,()=>({duration:180})),i(D,f)};L(ct,D=>{e(z)&&D(dt)})}a(O),x((D,f,y)=>{_(O,"style",D),_(A,"aria-expanded",e(z)),_(A,"aria-label",f),ee(_e,"rotated",e(z)),g(he,e(d).suiteName),g(it,y)},[()=>Je(J,55),()=>Wt(e(z)),()=>es(e(d).tests.length)],w),B("click",A,()=>Qe(e(Y))),B("click",se,()=>We(e(d))),i(v,O)}),a(s),i(t,s)};L(rt,t=>{e(V).length===0?t(ot):t(nt,!1)})}Ot(te,()=>e(N),t=>b(N,t)),i(o,Te),kt()}export{$s as component};
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
.page-header.svelte-ll28r2{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-ll28r2{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-ll28r2{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-ll28r2{color:var(--text-muted);font-size:.875rem}.search-row.svelte-ll28r2{display:flex;gap:.75rem}.search-wrap.svelte-ll28r2{position:relative;flex:1;max-width:480px}.search-icon.svelte-ll28r2{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-ll28r2{width:100%;padding:.55rem .875rem .55rem 2.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-ll28r2:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.sort-bar.svelte-ll28r2{display:flex;align-items:center;gap:.375rem;margin:1.25rem 0;flex-wrap:wrap}.sort-label.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-ll28r2{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.sort-chip.svelte-ll28r2:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-ll28r2{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-ll28r2{font-size:.7rem;opacity:.8}.search-input.svelte-ll28r2::placeholder{color:var(--text-muted)}.search-clear.svelte-ll28r2{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-ll28r2:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-ll28r2{display:flex;flex-direction:column;gap:1rem}.suite.svelte-ll28r2{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-ll28r2{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-toggle.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.suite-toggle.svelte-ll28r2:hover{background:var(--bg-elevated);color:var(--text)}.suite-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.suite-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.suite-meta.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-ll28r2{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-ll28r2{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-ll28r2{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-ll28r2:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-ll28r2{display:flex;flex-direction:column}.test-row.svelte-ll28r2{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-ll28r2:last-child{border-bottom:none}.test-main.svelte-ll28r2{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-ll28r2{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-ll28r2:hover{background:var(--accent);color:var(--white);border-color:var(--accent)}.test-ids.svelte-ll28r2{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-ll28r2{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill);padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-ll28r2:hover{filter:brightness(.92)}.id-pill.copied.svelte-ll28r2{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-ll28r2:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-ll28r2-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-ll28r2{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-ll28r2{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:var(--radius-pill);margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-ll28r2{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-ll28r2:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-ll28r2 svg:where(.svelte-ll28r2){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-ll28r2 svg.rotated:where(.svelte-ll28r2){transform:rotate(90deg)}.steps.svelte-ll28r2{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-ll28r2{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-ll28r2{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-ll28r2:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-ll28r2{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-ll28r2{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-ll28r2{overflow-x:auto}.examples-table.svelte-ll28r2{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-ll28r2 th:where(.svelte-ll28r2){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-ll28r2 td:where(.svelte-ll28r2){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-ll28r2 tbody:where(.svelte-ll28r2) tr:where(.svelte-ll28r2):last-child td:where(.svelte-ll28r2){border-bottom:none}@keyframes svelte-ll28r2-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* This file is part of Plum.
|
|
3
|
-
* Licensed under the MIT License. See LICENSE file in the project root for details.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import{h as xt,a as i,t as c,b as Ge,s as g,e as B}from"../chunks/CMBQQ9RZ.js";import{i as yt}from"../chunks/CKDtmZUQ.js";import{p as wt,m as E,o as St,an as Ct,l as ve,b as Et,f as Lt,g as e,c as kt,s as b,$ as At,d as l,j as n,k as a,t as x,x as w}from"../chunks/BAACMRH5.js";import{i as L}from"../chunks/CgnwuKKO.js";import{e as T,t as ee,i as I,a as je,g as qe}from"../chunks/TOCyHP97.js";import{A as Tt,p as Ce,s as _,r as It,c as $t,S as Bt,w as Nt}from"../chunks/CUC98kMZ.js";import{b as Ot}from"../chunks/t-La0hgu.js";import{e as Mt,t as Rt}from"../chunks/DHM6H-es.js";import{s as Je}from"../chunks/DSLBMEpr.js";import{E as Dt}from"../chunks/BKuh57WU.js";async function Pt(){const o=await fetch(`${Tt}/tests`),{suites:$}=await o.json();return $.suites??[]}const Ht="Automated Tests — Plum",Ut="Tests",Gt="Search suites or tests…",jt="No test suites found.",Ye="Run suite",qt="outline",Jt="Hide",Yt="Steps",zt="Examples",Ft=o=>`No tests matching "${o}"`,Kt=o=>`Copied ${o}`,Vt=o=>`Copy ${o}`,Xt=o=>`Run ${o}`,Qt=o=>`Run ${o}`,Wt=o=>o?"Collapse suite":"Expand suite",Zt=(o,$)=>`${o} of ${$} tests`,es=o=>`${o} ${Ce(o,"test")}`,ts=(o,$)=>`${o} ${Ce(o,"suite")} · ${$} ${Ce($,"test")}`;var ss=c('<button class="search-clear svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 14 14" fill="none" class="svelte-ll28r2"><path d="M1 1l12 12M13 1L1 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="svelte-ll28r2"></path></svg></button>'),as=c('<span class="sort-dir svelte-ll28r2"> </span>'),ls=c('<button class="sort-chip svelte-ll28r2"> <!></button>'),rs=c('<div class="sort-bar svelte-ll28r2"><span class="sort-label svelte-ll28r2"></span> <!></div>'),os=c('<button class="id-pill svelte-ll28r2"> </button>'),ns=c('<button class="id-pill svelte-ll28r2"> </button>'),is=c('<span class="outline-badge svelte-ll28r2"></span>'),vs=c('<button class="steps-toggle svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ll28r2"><polyline points="9 18 15 12 9 6" class="svelte-ll28r2"></polyline></svg> </button>'),cs=c('<li class="step svelte-ll28r2"> </li>'),ds=c('<th class="svelte-ll28r2"> </th>'),us=c('<td class="svelte-ll28r2"> </td>'),ps=c('<tr class="svelte-ll28r2"></tr>'),_s=c('<div class="examples svelte-ll28r2"><span class="examples-label svelte-ll28r2"></span> <div class="examples-table-wrap svelte-ll28r2"><table class="examples-table svelte-ll28r2"><thead class="svelte-ll28r2"><tr class="svelte-ll28r2"></tr></thead><tbody class="svelte-ll28r2"></tbody></table></div></div>'),hs=c('<div class="steps svelte-ll28r2"><ol class="step-list svelte-ll28r2"></ol> <!></div>'),fs=c('<div class="test-row svelte-ll28r2"><div class="test-main svelte-ll28r2"><button class="run-icon-btn svelte-ll28r2"><svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ll28r2"><polygon points="5,3 19,12 5,21" class="svelte-ll28r2"></polygon></svg></button> <div class="test-ids svelte-ll28r2"></div> <span class="test-name svelte-ll28r2"> <!></span> <!></div> <!></div>'),ms=c('<div class="tests svelte-ll28r2"></div>'),gs=c('<div class="suite svelte-ll28r2"><div class="suite-header svelte-ll28r2"><button class="suite-toggle svelte-ll28r2"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" class="svelte-ll28r2"><polyline points="9 18 15 12 9 6" class="svelte-ll28r2"></polyline></svg></button> <div class="suite-meta svelte-ll28r2"><div class="suite-badges svelte-ll28r2"></div> <span class="suite-name svelte-ll28r2"> </span> <span class="suite-count svelte-ll28r2"> </span></div> <button class="run-btn suite-run svelte-ll28r2"><svg width="11" height="11" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-ll28r2"><polygon points="5,3 19,12 5,21" class="svelte-ll28r2"></polygon></svg> </button></div> <!></div>'),bs=c('<div class="suites svelte-ll28r2"></div>'),xs=c('<div class="page-header svelte-ll28r2"><div class="header-top svelte-ll28r2"><div class="svelte-ll28r2"><h1 class="svelte-ll28r2"></h1> <p class="subtitle svelte-ll28r2"><!></p></div></div> <div class="search-row svelte-ll28r2"><div class="search-wrap svelte-ll28r2"><svg class="search-icon svelte-ll28r2" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8" class="svelte-ll28r2"></circle><line x1="21" y1="21" x2="16.65" y2="16.65" class="svelte-ll28r2"></line></svg> <input type="text" class="search-input svelte-ll28r2"> <!></div></div></div> <!> <!>',1);function $s(o,$){wt($,!1);const S=E(),V=E(),ce=E(),Ee=E();let U=E([]),N=E(""),G=E(new Set),j=E(new Set),C=E(new Set);const X=new Map;function ze(t,s){try{const v=sessionStorage.getItem(t);if(v)return JSON.parse(v)}catch{}return s}function Fe(t,s){try{sessionStorage.setItem(t,JSON.stringify(s))}catch{}}let h=E(ze("plum:automated-tests:sort",{by:"id",order:"desc"}));function Ke(t){b(h,e(h).by===t?{...e(h),order:e(h).order==="asc"?"desc":"asc"}:{by:t,order:t==="id"?"desc":"asc"}),Fe("plum:automated-tests:sort",e(h))}async function Ve(){try{b(U,await Pt())}catch(t){console.error("Failed to fetch suites",t)}}St(Ve);function q(t){return Array.isArray(t.suiteId)?t.suiteId:[t.suiteId]}function Le(t){return Array.isArray(t.id)?t.id:[t.id]}function de(t){return Array.isArray(t.id)?t.id[0]:t.id}function Xe(t){e(G).has(t)?e(G).delete(t):e(G).add(t),b(G,e(G))}function Qe(t){e(j).has(t)?e(j).delete(t):e(j).add(t),b(j,e(j))}function ke(t){Mt.update(s=>({...s,testID:t})),Rt(t)}function We(t){ke(q(t)[0])}async function Ae(t){await navigator.clipboard.writeText(t),e(C).add(t),b(C,e(C)),X.has(t)&&clearTimeout(X.get(t)),X.set(t,setTimeout(()=>{e(C).delete(t),b(C,e(C)),X.delete(t)},Nt))}Ct(()=>{for(const t of X.values())clearTimeout(t)}),ve(()=>e(N),()=>{b(S,e(N).trim().toLowerCase())}),ve(()=>(e(U),e(S),e(h)),()=>{b(V,e(U).map(t=>{if(!e(S))return t;const s=t.suiteName.toLowerCase().includes(e(S))||q(t).some(d=>d.toLowerCase().includes(e(S))),v=t.tests.filter(d=>d.testCase.toLowerCase().includes(e(S))||Le(d).some(J=>J.toLowerCase().includes(e(S))));return!s&&v.length===0?null:{...t,tests:s?t.tests:v}}).filter(Boolean).map(t=>({...t,tests:[...t.tests].sort((s,v)=>{const d=e(h).by==="name"?s.testCase.localeCompare(v.testCase):(de(s)??"").localeCompare(de(v)??"");return e(h).order==="asc"?d:-d})})).sort((t,s)=>{const v=e(h).by==="name"?t.suiteName.localeCompare(s.suiteName):(q(t)[0]??"").localeCompare(q(s)[0]??"");return e(h).order==="asc"?v:-v}))}),ve(()=>e(U),()=>{b(ce,e(U).reduce((t,s)=>t+s.tests.length,0))}),ve(()=>e(V),()=>{b(Ee,e(V).reduce((t,s)=>t+s.tests.length,0))}),Et(),yt();var Te=xs();xt(t=>{At.title=Ht});var ue=Lt(Te),pe=l(ue),Ie=l(pe),$e=l(Ie);$e.textContent=Ut;var Be=n($e,2),Ze=l(Be);{var et=t=>{var s=Ge();x(v=>g(s,v),[()=>Zt(e(Ee),e(ce))],w),i(t,s)},tt=t=>{var s=Ge();x(v=>g(s,v),[()=>ts(e(U).length,e(ce))],w),i(t,s)};L(Ze,t=>{e(S)?t(et):t(tt,!1)})}a(Be),a(Ie),a(pe);var Ne=n(pe,2),Oe=l(Ne),te=n(l(Oe),2);It(te),_(te,"placeholder",Gt);var st=n(te,2);{var at=t=>{var s=ss();_(s,"aria-label",$t),B("click",s,()=>b(N,"")),i(t,s)};L(st,t=>{e(N)&&t(at)})}a(Oe),a(Ne),a(ue);var Me=n(ue,2);{var lt=t=>{var s=rs(),v=l(s);v.textContent=Bt;var d=n(v,2);T(d,0,()=>[["id","ID"],["name","Name"]],I,(J,O)=>{let Y=()=>O[0],z=()=>O[1];var k=ls(),A=l(k),_e=n(A);{var Q=M=>{var R=as(),he=l(R,!0);a(R),x(()=>g(he,e(h).order==="asc"?"↑":"↓")),i(M,R)};L(_e,M=>{e(h).by===Y()&&M(Q)})}a(k),x(()=>{ee(k,"active",e(h).by===Y()),g(A,`${z()??""} `)}),B("click",k,()=>Ke(Y())),i(J,k)}),a(s),i(t,s)};L(Me,t=>{e(S)||t(lt)})}var rt=n(Me,2);{var ot=t=>{const s=w(()=>e(S)?Ft(e(N)):jt);Dt(t,{get message(){return e(s)}})},nt=t=>{var s=bs();T(s,5,()=>e(V),I,(v,d,J)=>{var O=gs();const Y=w(()=>q(e(d))[0]??e(d).suiteName),z=w(()=>!e(j).has(e(Y)));var k=l(O),A=l(k),_e=l(A);a(A);var Q=n(A,2),M=l(Q);T(M,5,()=>q(e(d)),I,(D,f)=>{var y=os(),m=l(y,!0);a(y),x((ae,F)=>{_(y,"title",ae),_(y,"aria-label",ae),ee(y,"copied",F),g(m,e(f))},[()=>e(C).has(e(f))?Kt(e(f)):Vt(e(f)),()=>e(C).has(e(f))],w),B("click",y,()=>Ae(e(f))),i(D,y)}),a(M);var R=n(M,2),he=l(R,!0);a(R);var Re=n(R,2),it=l(Re,!0);a(Re),a(Q);var se=n(Q,2);_(se,"title",Ye);var vt=n(l(se));vt.nodeValue=` ${Ye}`,a(se),a(k);var ct=n(k,2);{var dt=D=>{var f=ms();T(f,5,()=>e(d).tests,I,(y,m,ae)=>{var F=fs();const le=w(()=>de(e(m))),re=w(()=>e(G).has(e(le)));var fe=l(F),oe=l(fe),me=n(oe,2);T(me,5,()=>Le(e(m)),I,(p,r)=>{var u=ns(),W=l(u,!0);a(u),x((ne,P)=>{_(u,"title",ne),_(u,"aria-label",ne),ee(u,"copied",P),g(W,e(r))},[()=>e(C).has(e(r))?`Copied ${e(r)}`:`Copy ${e(r)}`,()=>e(C).has(e(r))],w),B("click",u,()=>Ae(e(r))),i(p,u)}),a(me);var ge=n(me,2),De=l(ge),ut=n(De);{var pt=p=>{var r=is();r.textContent=qt,i(p,r)};L(ut,p=>{e(m).type==="outline"&&p(pt)})}a(ge);var _t=n(ge,2);{var ht=p=>{var r=vs(),u=l(r),W=n(u);a(r),x(()=>{_(r,"aria-expanded",e(re)),ee(u,"rotated",e(re)),g(W,` ${(e(re)?Jt:Yt)??""}`)}),B("click",r,()=>Xe(e(le))),i(p,r)};L(_t,p=>{var r;((r=e(m).steps)==null?void 0:r.length)>0&&p(ht)})}a(fe);var ft=n(fe,2);{var mt=p=>{var r=hs(),u=l(r);T(u,5,()=>e(m).steps,I,(P,Z)=>{var K=cs(),ie=l(K,!0);a(K),x(()=>g(ie,e(Z))),i(P,K)}),a(u);var W=n(u,2);{var ne=P=>{var Z=_s(),K=l(Z);K.textContent=zt;var ie=n(K,2),Pe=l(ie),be=l(Pe),He=l(be);T(He,5,()=>e(m).examples.headers,I,(xe,ye)=>{var H=ds(),we=l(H,!0);a(H),x(()=>g(we,e(ye))),i(xe,H)}),a(He),a(be);var Ue=n(be);T(Ue,5,()=>e(m).examples.rows,I,(xe,ye)=>{var H=ps();T(H,5,()=>e(ye),I,(we,gt)=>{var Se=us(),bt=l(Se,!0);a(Se),x(()=>g(bt,e(gt))),i(we,Se)}),a(H),i(xe,H)}),a(Ue),a(Pe),a(ie),a(Z),i(P,Z)};L(W,P=>{e(m).examples&&P(ne)})}a(r),je(3,r,()=>qe,()=>({duration:180})),i(p,r)};L(ft,p=>{var r;e(re)&&((r=e(m).steps)==null?void 0:r.length)>0&&p(mt)})}a(F),x((p,r,u)=>{_(F,"style",p),_(oe,"title",r),_(oe,"aria-label",u),g(De,`${e(m).testCase??""} `)},[()=>Je(J*4+ae,30),()=>Xt(e(le)),()=>Qt(e(m).testCase)],w),B("click",oe,()=>ke(e(le))),i(y,F)}),a(f),je(3,f,()=>qe,()=>({duration:180})),i(D,f)};L(ct,D=>{e(z)&&D(dt)})}a(O),x((D,f,y)=>{_(O,"style",D),_(A,"aria-expanded",e(z)),_(A,"aria-label",f),ee(_e,"rotated",e(z)),g(he,e(d).suiteName),g(it,y)},[()=>Je(J,55),()=>Wt(e(z)),()=>es(e(d).tests.length)],w),B("click",A,()=>Qe(e(Y))),B("click",se,()=>We(e(d))),i(v,O)}),a(s),i(t,s)};L(rt,t=>{e(V).length===0?t(ot):t(nt,!1)})}Ot(te,()=>e(N),t=>b(N,t)),i(o,Te),kt()}export{$s as component};
|
|
Binary file
|