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 <noreply@anthropic.com>
This commit is contained in:
privilegedescalation-engineer
2026-03-24 23:51:59 +00:00
parent 15320dbcba
commit d4ac2b2f23
+13 -2
View File
@@ -57,13 +57,24 @@ test.describe('Intel GPU plugin smoke tests', () => {
}); });
test('navigation between plugin views works', async ({ page }) => { 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({ await expect(page.getByRole('heading', { name: /intel.gpu/i })).toBeVisible({
timeout: 15_000, timeout: 15_000,
}); });
// Navigate to GPU Nodes // Navigate to GPU Nodes
const sidebar = page.getByRole('navigation', { name: 'Navigation' });
const nodesLink = sidebar.getByRole('link', { name: /gpu nodes/i }); const nodesLink = sidebar.getByRole('link', { name: /gpu nodes/i });
await expect(nodesLink).toBeVisible(); await expect(nodesLink).toBeVisible();
await nodesLink.click(); await nodesLink.click();