From 9d05f8a9d29d996d76898d4988ce3676da0d2678 Mon Sep 17 00:00:00 2001 From: Louis Chan Date: Wed, 1 Apr 2026 18:02:27 +0800 Subject: [PATCH 1/3] Add graph with metadata to test dataset --- test_server.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test_server.py b/test_server.py index 242562f..1df8351 100644 --- a/test_server.py +++ b/test_server.py @@ -144,6 +144,13 @@ def random_created_at(): return int(created.timestamp() * 1000) +def setup_graph_with_metadata(graph): + setup_graph(graph) + for i in range(0, 20): + graph.add_metadata({ f"prop{i}": 100 }) + return graph + + def setup_large_graph(graph): graph.add_node(0, "center") for i in range(0, 500): @@ -193,6 +200,9 @@ def __main__(): graph.save_to_file(f"{work_dir}/new_folder/persistent_second_filler") graph.save_to_file(f"{work_dir}/vanilla/persistent_second_filler") + graph = setup_graph_with_metadata(Graph()) + graph.save_to_file(f"{work_dir}/vanilla/graph_with_metadata") + server = graphql.GraphServer(work_dir=work_dir) server.run(port=port) From 5a6429c7c940df61b662a0ef749aae14f4be20de Mon Sep 17 00:00:00 2001 From: Louis Chan Date: Wed, 1 Apr 2026 18:02:45 +0800 Subject: [PATCH 2/3] Add test that overview can be scrolled when overflowing --- tests/e2e/graph.spec.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/e2e/graph.spec.ts b/tests/e2e/graph.spec.ts index 653580f..d28ed57 100644 --- a/tests/e2e/graph.spec.ts +++ b/tests/e2e/graph.spec.ts @@ -150,6 +150,17 @@ test('Click on Ben node in graph', async ({ page }) => { await expect(page.getByText('Age', { exact: true })).toBeVisible(); }); +test('Overflowing elements can be scrolled into view', async ({ page }) => { + await navigateToSavedGraphBySavedGraphsTable( + page, + 'vanilla', + 'graph_with_metadata', + ); + await expect(page.getByText('Relationships')).not.toBeInViewport(); + await page.getByText('Relationships').scrollIntoViewIfNeeded(); + await expect(page.getByText('Relationships')).toBeInViewport(); +}); + test('Double click expand node and delete by floating actions button', async ({ page, }) => { From 173fbded94b6e877bc79c9ef8d5724859bfde12d Mon Sep 17 00:00:00 2001 From: Louis Chan Date: Wed, 1 Apr 2026 18:33:17 +0800 Subject: [PATCH 3/3] Change test to check tooltip is entirely inside viewport --- tests/e2e/temporalview.spec.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/e2e/temporalview.spec.ts b/tests/e2e/temporalview.spec.ts index 4335260..175b480 100644 --- a/tests/e2e/temporalview.spec.ts +++ b/tests/e2e/temporalview.spec.ts @@ -36,7 +36,7 @@ async function hoverEdgeAndExpectTooltip( const box = await line.boundingBox(); if (!box) throw new Error(`Element ${selector} is not visible or rendered`); await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); - await expect(page.getByText(expectedText)).toBeVisible(); + await expect(page.getByText(expectedText)).toBeInViewport({ ratio: 1 }); await page.mouse.move(0, 0); } @@ -48,7 +48,9 @@ test('Close temporal view button and open again', async ({ page }) => { await expect(page.locator('text="Ben"')).toBeVisible(); }); -test('Temporal view hover over edges', async ({ page }) => { +test('Temporal view hover over edges and ensure tooltips in viewport', async ({ + page, +}) => { await setupGraphPage(page); await hoverEdgeAndExpectTooltip(