test(18): scope timezone e2e to desktop profile (fix harness cross-profile leak)
CI / changes (pull_request) Successful in 2s
CI / fast-checks (pull_request) Successful in 1m28s
CI / api (pull_request) Successful in 1m6s
CI / harness (pull_request) Successful in 4m22s
CI / security (pull_request) Successful in 41s
CI / gate (pull_request) Successful in 1s

The timezone spec mutates the single household_timezone row, but e2e global-setup
resets it only once per run. Running on all three device profiles (iphone/pixel/
desktop) let one profile's "Save persists" write leak into another profile's
first-run assertions, failing the harness job in CI (workers=1, serial). The admin
timezone UI is desktop-focused, so skip the spec on non-desktop profiles — matching
the layout.spec.ts desktop-only pattern. Full harness: 107 passed, 19 skipped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Lucas Berger
2026-06-15 09:30:55 -04:00
co-authored by Claude Opus 4.8
parent c5b892c3a5
commit 1b4ff3cf93
+6 -1
View File
@@ -12,7 +12,12 @@
import { test, expect } from '@playwright/test'; import { test, expect } from '@playwright/test';
test.describe('Admin Timezone section — 18-04 round-trip', () => { test.describe('Admin Timezone section — 18-04 round-trip', () => {
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ page }, testInfo) => {
// Desktop-only: the admin timezone UI is desktop-focused, and these tests mutate
// the single household_timezone row. global-setup resets that row once per run, so
// running on multiple profiles lets one project's save leak into another project's
// first-run assertions. Restricting to one project keeps the shared state coherent.
test.skip(testInfo.project.name !== 'desktop', 'Admin timezone UI is desktop-only');
await page.goto('/admin'); await page.goto('/admin');
await expect(page.getByRole('heading', { name: 'Admin Settings' })).toBeVisible(); await expect(page.getByRole('heading', { name: 'Admin Settings' })).toBeVisible();
// Wait for the Timezone section to load (requires the 18-02 GET endpoint) // Wait for the Timezone section to load (requires the 18-02 GET endpoint)