Stabilize e2e suite: rate-limit, spec drift, a11y, visual baselines #1
2 changed files with 9 additions and 0 deletions
|
|
@ -273,6 +273,14 @@ p a, blockquote a {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ---- Nuxt UI placeholder contrast ----
|
||||||
|
Default Nuxt UI placeholder uses `text-dimmed` (#a6a09b) which fails WCAG
|
||||||
|
AA on cream and white backgrounds (≈2.4:1). Override globally to --text-dim
|
||||||
|
so USelect/USelectMenu placeholders meet the 4.5:1 ratio. */
|
||||||
|
[data-slot="placeholder"] {
|
||||||
|
color: var(--text-dim);
|
||||||
|
}
|
||||||
|
|
||||||
/* ---- SHARED USelectMenu STYLES ----
|
/* ---- SHARED USelectMenu STYLES ----
|
||||||
Apply via: <USelectMenu class="zine-select" :ui="{ content: 'tz-content', item: 'tz-item', input: 'tz-input' }" />
|
Apply via: <USelectMenu class="zine-select" :ui="{ content: 'tz-content', item: 'tz-item', input: 'tz-input' }" />
|
||||||
Classes are global (not scoped) because Nuxt UI portals the popup content to body. */
|
Classes are global (not scoped) because Nuxt UI portals the popup content to body. */
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ test.describe('Authentication flows', () => {
|
||||||
test('logout clears auth', async ({ page }) => {
|
test('logout clears auth', async ({ page }) => {
|
||||||
await loginAsAdmin(page)
|
await loginAsAdmin(page)
|
||||||
await page.goto('/admin')
|
await page.goto('/admin')
|
||||||
|
await page.waitForLoadState('networkidle')
|
||||||
await expect(page.locator('.admin-tag')).toBeVisible({ timeout: 15000 })
|
await expect(page.locator('.admin-tag')).toBeVisible({ timeout: 15000 })
|
||||||
|
|
||||||
// Set up response listener BEFORE clicking to avoid race
|
// Set up response listener BEFORE clicking to avoid race
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue