fix(e2e): test route accessibility via direct URL instead of sidebar child links
Headlamp sidebar child links (GPU Nodes, GPU Pods, Metrics) do not render after clicking the parent intel-gpu sidebar button — they only appear when already on a child route. Replace the sidebar-link assertion approach with direct URL navigation, matching the pattern used by the device-plugins test. Closes #34 Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
+10
-31
@@ -57,43 +57,22 @@ test.describe('Intel GPU plugin smoke tests', () => {
|
||||
});
|
||||
|
||||
test('navigation between plugin views works', async ({ page }) => {
|
||||
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$/);
|
||||
// Headlamp sidebar child links only appear when already on a child route,
|
||||
// not after clicking the parent entry from the overview. Test route
|
||||
// accessibility via direct navigation — each route must render its heading.
|
||||
await page.goto('/c/main/intel-gpu');
|
||||
await expect(page.getByRole('heading', { name: /intel.gpu/i })).toBeVisible({
|
||||
timeout: 15_000,
|
||||
});
|
||||
|
||||
// Navigate to GPU Nodes
|
||||
const nodesLink = sidebar.getByRole('link', { name: /gpu nodes/i });
|
||||
await expect(nodesLink).toBeVisible();
|
||||
await nodesLink.click();
|
||||
await expect(page).toHaveURL(/\/intel-gpu\/nodes$/);
|
||||
await expect(page.getByRole('heading', { name: /node/i })).toBeVisible();
|
||||
await page.goto('/c/main/intel-gpu/nodes');
|
||||
await expect(page.getByRole('heading', { name: /node/i })).toBeVisible({ timeout: 15_000 });
|
||||
|
||||
// Navigate to GPU Pods
|
||||
const podsLink = sidebar.getByRole('link', { name: /gpu pods/i });
|
||||
await expect(podsLink).toBeVisible();
|
||||
await podsLink.click();
|
||||
await expect(page).toHaveURL(/\/intel-gpu\/pods$/);
|
||||
await expect(page.getByRole('heading', { name: /pod/i })).toBeVisible();
|
||||
await page.goto('/c/main/intel-gpu/pods');
|
||||
await expect(page.getByRole('heading', { name: /pod/i })).toBeVisible({ timeout: 15_000 });
|
||||
|
||||
// Navigate to Metrics
|
||||
const metricsLink = sidebar.getByRole('link', { name: /metrics/i });
|
||||
await expect(metricsLink).toBeVisible();
|
||||
await metricsLink.click();
|
||||
await expect(page).toHaveURL(/\/intel-gpu\/metrics$/);
|
||||
await expect(page.getByRole('heading', { name: /metric/i })).toBeVisible();
|
||||
await page.goto('/c/main/intel-gpu/metrics');
|
||||
await expect(page.getByRole('heading', { name: /metric/i })).toBeVisible({ timeout: 15_000 });
|
||||
});
|
||||
|
||||
test('plugin settings page shows intel-gpu plugin entry', async ({ page }) => {
|
||||
|
||||
Reference in New Issue
Block a user