From b9e661060d47a9cf1b1dac599c0b297fb38c285c Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 19 May 2025 15:41:50 +0200 Subject: [PATCH 1/9] Add e2e test for dataset paths --- .../__snapshots__/datasets.e2e.ts.snap | 28 +++++++++++++++++++ .../backend-snapshot-tests/datasets.e2e.ts | 8 ++++++ 2 files changed, 36 insertions(+) diff --git a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap index 10d2aef3caf..918031035ab 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap +++ b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap @@ -1,5 +1,33 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +exports[`Dataset API (E2E) > Dataset Paths 1`] = ` +[ + { + "layerName": "segmentation", + "magLinkInfos": [ + { + "linkedMags": [], + "mag": { + "dataLayerName": "segmentation", + "dataSourceId": { + "name": "test-dataset", + "team": "Organization_X", + }, + "hasLocalData": true, + "mag": [ + 1, + 1, + 1, + ], + "path": "file:///home/felix/scm/webknossos/binaryData/Organization_X/test-dataset/segmentation/1/", + "realPath": "file:///home/felix/scm/webknossos/binaryData/Organization_X/test-dataset/segmentation/1/", + }, + }, + ], + }, +] +`; + exports[`Dataset API (E2E) > Zarr 3 streaming 1`] = `"{"zarr_format":3,"node_type":"group","attributes":{"ome":{"version":"0.5","multiscales":[{"name":"segmentation","axes":[{"name":"c","type":"channel"},{"name":"x","type":"space","unit":"nanometer"},{"name":"y","type":"space","unit":"nanometer"},{"name":"z","type":"space","unit":"nanometer"}],"datasets":[{"path":"1","coordinateTransformations":[{"type":"scale","scale":[1,11.24,11.24,28]}]}]}]}}}"`; exports[`Dataset API (E2E) > Zarr 3 streaming 2`] = `"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA="`; diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index 4fac4a09248..992ec999f60 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -138,6 +138,14 @@ describe("Dataset API (E2E)", () => { expect(base64).toMatchSnapshot(); }); + it("Dataset Paths", async () => { + const paths = await fetch( + "/api/datastores/localhost/datasources/Organization_X/test-dataset/paths?key=something-secure" + ); + const pathsJson = await paths.json(); + expect(pathsJson).toMatchSnapshot(); + }); + /** * WARNING: This test creates a side effect by uploading and saving a dataset in your binaryData folder. * There is no clean up after the test, and the dataset will remain after each test run. From 1422e543eb4e3bfc6b9b6250e9236dc82d6f1ab7 Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 19 May 2025 15:44:46 +0200 Subject: [PATCH 2/9] Lint --- .../javascripts/test/backend-snapshot-tests/datasets.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index 992ec999f60..a1dfee1d57d 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -140,7 +140,7 @@ describe("Dataset API (E2E)", () => { it("Dataset Paths", async () => { const paths = await fetch( - "/api/datastores/localhost/datasources/Organization_X/test-dataset/paths?key=something-secure" + "/api/datastores/localhost/datasources/Organization_X/test-dataset/paths?key=something-secure", ); const pathsJson = await paths.json(); expect(pathsJson).toMatchSnapshot(); From a50928d3975316c7badcc609a42c1cd9aabbf0bb Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 19 May 2025 16:07:14 +0200 Subject: [PATCH 3/9] Make path and real path volatile --- .../backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap | 4 ++-- .../javascripts/test/backend-snapshot-tests/datasets.e2e.ts | 2 +- frontend/javascripts/test/e2e-setup.ts | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap index 918031035ab..1b77e818e55 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap +++ b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap @@ -19,8 +19,8 @@ exports[`Dataset API (E2E) > Dataset Paths 1`] = ` 1, 1, ], - "path": "file:///home/felix/scm/webknossos/binaryData/Organization_X/test-dataset/segmentation/1/", - "realPath": "file:///home/felix/scm/webknossos/binaryData/Organization_X/test-dataset/segmentation/1/", + "path": "path", + "realPath": "realPath", }, }, ], diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index a1dfee1d57d..e2d91a560df 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -143,7 +143,7 @@ describe("Dataset API (E2E)", () => { "/api/datastores/localhost/datasources/Organization_X/test-dataset/paths?key=something-secure", ); const pathsJson = await paths.json(); - expect(pathsJson).toMatchSnapshot(); + expect(replaceVolatileValues(pathsJson)).toMatchSnapshot(); }); /** diff --git a/frontend/javascripts/test/e2e-setup.ts b/frontend/javascripts/test/e2e-setup.ts index 2e671b77bac..47fa0264e9c 100644 --- a/frontend/javascripts/test/e2e-setup.ts +++ b/frontend/javascripts/test/e2e-setup.ts @@ -53,6 +53,8 @@ const volatileKeys: Array = [ "tracingTime", "tracingId", "sortingKey", + "path", + "realPath", ]; /** From f293c0dcfb78c49391e903c8a2539a65f391ca0a Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:14:11 +0200 Subject: [PATCH 4/9] Readd paths to snapshot --- .../__snapshots__/datasets.e2e.ts.snap | 4 ++-- .../test/backend-snapshot-tests/datasets.e2e.ts | 10 +++++++++- frontend/javascripts/test/e2e-setup.ts | 2 -- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap index 1b77e818e55..c215b278556 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap +++ b/frontend/javascripts/test/backend-snapshot-tests/__snapshots__/datasets.e2e.ts.snap @@ -19,8 +19,8 @@ exports[`Dataset API (E2E) > Dataset Paths 1`] = ` 1, 1, ], - "path": "path", - "realPath": "realPath", + "path": "Organization_X/test-dataset/segmentation/1/", + "realPath": "Organization_X/test-dataset/segmentation/1/", }, }, ], diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index e2d91a560df..10cb712001c 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -143,7 +143,15 @@ describe("Dataset API (E2E)", () => { "/api/datastores/localhost/datasources/Organization_X/test-dataset/paths?key=something-secure", ); const pathsJson = await paths.json(); - expect(replaceVolatileValues(pathsJson)).toMatchSnapshot(); + + // Dataset paths are absolute, we will relativize them here to make the snapshot stable + const makeRelative = (path: string) => path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; + pathsJson.forEach(pathInfo => pathInfo.magLinkInfos.forEach(magLink => { + magLink.mag.path = makeRelative(magLink.mag.path); + magLink.mag.realPath = makeRelative(magLink.mag.realPath); + })); + + expect(pathsJson).toMatchSnapshot(); }); /** diff --git a/frontend/javascripts/test/e2e-setup.ts b/frontend/javascripts/test/e2e-setup.ts index 47fa0264e9c..2e671b77bac 100644 --- a/frontend/javascripts/test/e2e-setup.ts +++ b/frontend/javascripts/test/e2e-setup.ts @@ -53,8 +53,6 @@ const volatileKeys: Array = [ "tracingTime", "tracingId", "sortingKey", - "path", - "realPath", ]; /** From d5c10656934c652ad0cc56c00729113d2a54aee1 Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:15:44 +0200 Subject: [PATCH 5/9] lint --- .../test/backend-snapshot-tests/datasets.e2e.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index 10cb712001c..0e5daf4df66 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -145,11 +145,14 @@ describe("Dataset API (E2E)", () => { const pathsJson = await paths.json(); // Dataset paths are absolute, we will relativize them here to make the snapshot stable - const makeRelative = (path: string) => path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; - pathsJson.forEach(pathInfo => pathInfo.magLinkInfos.forEach(magLink => { - magLink.mag.path = makeRelative(magLink.mag.path); - magLink.mag.realPath = makeRelative(magLink.mag.realPath); - })); + const makeRelative = (path: string) => + path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; + pathsJson.forEach((pathInfo) => + pathInfo.magLinkInfos.forEach((magLink) => { + magLink.mag.path = makeRelative(magLink.mag.path); + magLink.mag.realPath = makeRelative(magLink.mag.realPath); + }), + ); expect(pathsJson).toMatchSnapshot(); }); From 17d40f1e191a34e36cc1abba33d9633d2186da1b Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:18:01 +0200 Subject: [PATCH 6/9] ignore --- .../javascripts/test/backend-snapshot-tests/datasets.e2e.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index 0e5daf4df66..ca8bb6ff849 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -149,7 +149,9 @@ describe("Dataset API (E2E)", () => { path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; pathsJson.forEach((pathInfo) => pathInfo.magLinkInfos.forEach((magLink) => { + // @ts-ignore magLink.mag.path = makeRelative(magLink.mag.path); + // @ts-ignore magLink.mag.realPath = makeRelative(magLink.mag.realPath); }), ); From aacddb6c038b51936e622aca56470c376e366d93 Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:26:55 +0200 Subject: [PATCH 7/9] ignore --- .../javascripts/test/backend-snapshot-tests/datasets.e2e.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index ca8bb6ff849..c52bf16d378 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -147,11 +147,11 @@ describe("Dataset API (E2E)", () => { // Dataset paths are absolute, we will relativize them here to make the snapshot stable const makeRelative = (path: string) => path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; + // @ts-ignore pathsJson.forEach((pathInfo) => + // @ts-ignore pathInfo.magLinkInfos.forEach((magLink) => { - // @ts-ignore magLink.mag.path = makeRelative(magLink.mag.path); - // @ts-ignore magLink.mag.realPath = makeRelative(magLink.mag.realPath); }), ); From 3913f70c26227f0db4da65342b8dbdb6544353e4 Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:32:11 +0200 Subject: [PATCH 8/9] use actual types --- .../backend-snapshot-tests/datasets.e2e.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index c52bf16d378..7d1e3eb5db5 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -147,10 +147,20 @@ describe("Dataset API (E2E)", () => { // Dataset paths are absolute, we will relativize them here to make the snapshot stable const makeRelative = (path: string) => path.split("Organization_X")[1] ? "Organization_X" + path.split("Organization_X")[1] : path; - // @ts-ignore - pathsJson.forEach((pathInfo) => - // @ts-ignore - pathInfo.magLinkInfos.forEach((magLink) => { + + interface MagLink { + mag: { + path: string, + realPath: string; + } + } + + interface PathInfo { + magLinkInfos: MagLink[]; + } + + pathsJson.forEach((pathInfo: PathInfo) => + pathInfo.magLinkInfos.forEach((magLink: MagLink) => { magLink.mag.path = makeRelative(magLink.mag.path); magLink.mag.realPath = makeRelative(magLink.mag.realPath); }), From 91332a93f358c70abdb5418ede37ae3165a9ca55 Mon Sep 17 00:00:00 2001 From: frcroth Date: Mon, 2 Jun 2025 15:34:24 +0200 Subject: [PATCH 9/9] lint --- .../javascripts/test/backend-snapshot-tests/datasets.e2e.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts index 7d1e3eb5db5..643984a3cbd 100644 --- a/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts +++ b/frontend/javascripts/test/backend-snapshot-tests/datasets.e2e.ts @@ -150,9 +150,9 @@ describe("Dataset API (E2E)", () => { interface MagLink { mag: { - path: string, + path: string; realPath: string; - } + }; } interface PathInfo {