fix(e2e): load main page before settings to ensure plugin list is populated
Headlamp's PluginSettings component initializes its state from localStorage on mount and never syncs when props.plugins updates later. If the settings page loads before fetchAndExecutePlugins completes, the plugin list stays empty and the test can't find "headlamp-polaris". Fix: navigate to the main page first, wait for the Polaris sidebar entry to confirm the plugin is loaded (which populates localStorage), then navigate to the settings page. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
@@ -2,6 +2,18 @@ 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) {
|
||||
// Load the main page first so Headlamp fetches the plugin list and stores
|
||||
// it in localStorage (headlampPluginSettings). The PluginSettings component
|
||||
// initializes its state from localStorage on mount, so the data must already
|
||||
// be there before we navigate to the settings page.
|
||||
await page.goto('/');
|
||||
const sidebar = page.getByRole('navigation', { name: 'Navigation' });
|
||||
await expect(sidebar).toBeVisible({ timeout: 15_000 });
|
||||
await expect(sidebar.getByRole('button', { name: 'Polaris' })).toBeVisible({
|
||||
timeout: 15_000,
|
||||
});
|
||||
|
||||
// Now navigate to plugin settings — localStorage has the plugin list
|
||||
await page.goto('/c/main/settings/plugins');
|
||||
|
||||
// Find and click the Polaris plugin entry to open its settings
|
||||
|
||||
Reference in New Issue
Block a user