Refactor authentication and account management with modular UI components (#242)

This commit is contained in:
2026-08-23 01:30:58 -04:00
committed by Aaron Po
parent 6a44afd6b6
commit bfd45842fe
109 changed files with 14743 additions and 10792 deletions

View File

@@ -1,49 +1,56 @@
import { expect, test } from '@playwright/test';
const themes = [
'biergarten-lager',
'biergarten-stout',
'biergarten-cassis',
'biergarten-weizen',
'biergarten-lager',
'biergarten-stout',
'biergarten-cassis',
'biergarten-weizen',
] as const;
test.describe('storybook component coverage', () => {
for (const theme of themes) {
test(`SubmitButton idle renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=forms-submitbutton--idle&globals=theme:${theme}`);
await expect(page.getByRole('button', { name: /save changes/i })).toBeVisible();
await expect(page.locator(`[data-theme=\"${theme}\"]`)).toBeVisible();
});
for (const theme of themes) {
test(`SubmitButton idle renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=forms-submitbutton--idle&globals=theme:${theme}`);
await expect(page.getByRole('button', { name: /save changes/i })).toBeVisible();
await expect(page.locator(`[data-theme="${theme}"]`)).toBeVisible();
});
test(`FormField error renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=forms-formfield--with-error&globals=theme:${theme}`);
await expect(page.getByLabel('Email address')).toBeVisible();
await expect(page.getByText(/valid email address/i)).toBeVisible();
await expect(page.locator(`[data-theme=\"${theme}\"]`)).toBeVisible();
});
test(`FormField error renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=forms-formfield--with-error&globals=theme:${theme}`);
await expect(page.getByLabel('Email address')).toBeVisible();
await expect(page.getByText(/valid email address/i)).toBeVisible();
await expect(page.locator(`[data-theme="${theme}"]`)).toBeVisible();
});
test(`Navbar guest renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=navigation-navbar--guest&globals=theme:${theme}`);
await expect(page.getByRole('link', { name: /the biergarten app/i })).toBeVisible();
await expect(page.getByRole('link', { name: /^login$/i })).toBeVisible();
await expect(page.locator(`[data-theme=\"${theme}\"]`)).toBeVisible();
});
}
test(`SectionCard open renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=account-sectioncard--open&globals=theme:${theme}`);
await expect(page.getByRole('heading', { name: 'Password' })).toBeVisible();
await expect(page.getByText('Form fields go here.')).toBeVisible();
await expect(page.locator(`[data-theme="${theme}"]`)).toBeVisible();
});
test('Navbar authenticated state renders', async ({ page }) => {
await page.goto(
`/iframe.html?id=navigation-navbar--authenticated&globals=theme:biergarten-stout`,
);
await expect(page.getByRole('button', { name: /hans/i })).toBeVisible();
});
test(`Navbar guest renders in ${theme}`, async ({ page }) => {
await page.goto(`/iframe.html?id=navigation-navbar--guest&globals=theme:${theme}`);
await expect(page.getByRole('link', { name: /the biergarten app/i })).toBeVisible();
await expect(page.getByRole('link', { name: /^login$/i })).toBeVisible();
await expect(page.locator(`[data-theme="${theme}"]`)).toBeVisible();
});
}
test('Theme gallery shows all themes', async ({ page }) => {
await page.goto(
`/iframe.html?id=themes-biergarten-themes--gallery&globals=theme:biergarten-lager`,
);
await expect(page.getByRole('heading', { name: 'Biergarten Lager' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Stout' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Cassis' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Weizen' })).toBeVisible();
});
test('Navbar authenticated state renders', async ({ page }) => {
await page.goto(
`/iframe.html?id=navigation-navbar--authenticated&globals=theme:biergarten-stout`,
);
await expect(page.getByRole('button', { name: /hans/i })).toBeVisible();
});
test('Theme gallery shows all themes', async ({ page }) => {
await page.goto(
`/iframe.html?id=themes-biergarten-themes--gallery&globals=theme:biergarten-lager`,
);
await expect(page.getByRole('heading', { name: 'Biergarten Lager' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Stout' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Cassis' })).toBeVisible();
await expect(page.getByRole('heading', { name: 'Biergarten Weizen' })).toBeVisible();
});
});