import { expect, test } from '@playwright/test';

async function expectTheme(page: import('@playwright/test').Page, theme: 'light' | 'dark') {
  await expect
    .poll(async () =>
      page.evaluate(() => ({
        attr: document.documentElement.getAttribute('data-theme'),
        stored: localStorage.getItem('headroom_theme')
      }))
    )
    .toEqual({ attr: theme, stored: theme });

}

test.describe('Theme persistence', () => {
  test('applies dark theme from localStorage on reload', async ({ page }) => {
    await page.goto('/login');

    await page.evaluate(() => {
      localStorage.setItem('headroom_theme', 'dark');
    });

    await page.reload();
    await expectTheme(page, 'dark');
  });

  test('applies light theme from localStorage on reload', async ({ page }) => {
    await page.goto('/login');

    await page.evaluate(() => {
      localStorage.setItem('headroom_theme', 'light');
    });

    await page.reload();
    await expectTheme(page, 'light');
  });
});
