fix: resolve 7 E2E test failures — badge nav + test selectors (#50)

Fix badge navigation to use cluster-scoped path via Router.createRouteURL
instead of hardcoded '/polaris'. Remove hardcoded RGB color assertions in
badge color test. Scope ambiguous /%/ and 'Resources' selectors in polaris
E2E tests. Fix settings tests to click into plugin settings before asserting.

Fixes: PRI-151

Co-authored-by: gandalf-the-greybeard[bot] <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit was merged in pull request #50.
This commit is contained in:
gandalf-the-greybeard[bot]
2026-03-15 14:04:53 -04:00
committed by GitHub
parent 0f88a9b19f
commit fb3d262eb7
5 changed files with 35 additions and 39 deletions
+21 -25
View File
@@ -1,23 +1,28 @@
import { test, expect } from '@playwright/test';
import { test, expect, Page } from '@playwright/test';
/** Navigate to the Polaris plugin settings page and wait for settings to render. */
async function goToPolarisSettings(page: Page) {
await page.goto('/c/main/settings/plugins');
// Find and click the Polaris plugin entry to open its settings
const pluginEntry = page.locator('text=polaris').first();
await expect(pluginEntry).toBeVisible({ timeout: 15_000 });
await pluginEntry.click();
// Wait for the PolarisSettings component to render
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
}
test.describe('Polaris plugin settings', () => {
test('settings page shows configuration options', async ({ page }) => {
await page.goto('/c/main/settings/plugins');
await goToPolarisSettings(page);
// Find Polaris plugin in the list
const pluginCard = page.locator('text=polaris').first();
await expect(pluginCard).toBeVisible();
// Click to view settings (if settings are displayed inline, they should already be visible)
// Note: Headlamp v0.39.0+ shows settings inline on the plugins page
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
// SectionBox title should be visible
await expect(page.getByText('Polaris Settings')).toBeVisible();
});
test('refresh interval setting is configurable', async ({ page }) => {
await page.goto('/c/main/settings/plugins');
// Navigate to Polaris settings
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
await goToPolarisSettings(page);
// Find the refresh interval dropdown
const intervalSelect = page.locator('select').filter({ hasText: /minute|second/ });
@@ -35,10 +40,7 @@ test.describe('Polaris plugin settings', () => {
});
test('dashboard URL setting is configurable', async ({ page }) => {
await page.goto('/c/main/settings/plugins');
// Navigate to Polaris settings
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
await goToPolarisSettings(page);
// Find the dashboard URL input
const urlInput = page.getByPlaceholder(/polaris-dashboard/);
@@ -54,10 +56,7 @@ test.describe('Polaris plugin settings', () => {
});
test('connection test button is available', async ({ page }) => {
await page.goto('/c/main/settings/plugins');
// Navigate to Polaris settings
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
await goToPolarisSettings(page);
// Find and verify test connection button
const testButton = page.getByRole('button', { name: /test connection/i });
@@ -66,10 +65,7 @@ test.describe('Polaris plugin settings', () => {
});
test('connection test works with valid URL', async ({ page }) => {
await page.goto('/c/main/settings/plugins');
// Navigate to Polaris settings
await expect(page.getByText('Polaris Settings')).toBeVisible({ timeout: 15_000 });
await goToPolarisSettings(page);
// Click test connection
const testButton = page.getByRole('button', { name: /test connection/i });