From d4ac2b2f23ab51c170fef92f0b4976abb76b5689 Mon Sep 17 00:00:00 2001 From: privilegedescalation-engineer Date: Tue, 24 Mar 2026 23:51:59 +0000 Subject: [PATCH] fix(e2e): expand intel-gpu sidebar before checking child navigation links The 'navigation between plugin views works' test was navigating directly to /c/main/intel-gpu and then immediately trying to find sidebar child links (GPU Nodes, GPU Pods, Metrics). Direct URL navigation does not guarantee that the Headlamp sidebar parent entry is expanded, so the child links may not be rendered yet. Fix: start from the home page and click the 'intel-gpu' sidebar button to explicitly expand the section before asserting on child link visibility. This mirrors the real user flow (tests 1 and 2 already use this approach) and eliminates the race between navigation and sidebar render. Fixes #34 Co-Authored-By: Claude Sonnet 4.6 --- e2e/intel-gpu.spec.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/e2e/intel-gpu.spec.ts b/e2e/intel-gpu.spec.ts index b505965..fd66ccb 100644 --- a/e2e/intel-gpu.spec.ts +++ b/e2e/intel-gpu.spec.ts @@ -57,13 +57,24 @@ test.describe('Intel GPU plugin smoke tests', () => { }); test('navigation between plugin views works', async ({ page }) => { - await page.goto('/c/main/intel-gpu'); + await page.goto('/'); + const sidebar = page.getByRole('navigation', { name: 'Navigation' }); + await expect(sidebar).toBeVisible({ timeout: 15_000 }); + + // Expand the intel-gpu sidebar section by clicking the parent entry. + // Direct URL navigation does not guarantee the sidebar children are rendered; + // clicking the parent entry mimics the real user flow and ensures child links + // are visible before we try to interact with them. + const gpuEntry = sidebar.getByRole('button', { name: 'intel-gpu' }); + await expect(gpuEntry).toBeVisible(); + await gpuEntry.click(); + + await expect(page).toHaveURL(/\/intel-gpu$/); await expect(page.getByRole('heading', { name: /intel.gpu/i })).toBeVisible({ timeout: 15_000, }); // Navigate to GPU Nodes - const sidebar = page.getByRole('navigation', { name: 'Navigation' }); const nodesLink = sidebar.getByRole('link', { name: /gpu nodes/i }); await expect(nodesLink).toBeVisible(); await nodesLink.click();