import { expect, test } from "@playwright/test"; test("settings keeps session state and reports a persistence failure", async ({ page }) => { await page.addInitScript(() => { const originalSetItem = Storage.prototype.setItem; Storage.prototype.setItem = function setItem(key: string, value: string) { if (key === "eventlens.preferences.v1") { throw new DOMException("Storage is unavailable", "QuotaExceededError"); } return originalSetItem.call(this, key, value); }; }); await page.goto("/#settings"); const compact = page.getByRole("radio", { name: /Compact/i }); await compact.press("Space"); await expect(compact).toBeChecked(); await expect(page.locator(".settings-save-feedback")).toHaveText("Preferences changed for this session only"); await expect(page.getByText("Saved automatically in this browser", { exact: true })).toBeHidden(); await expect(page.getByText("Preferences are available for this session only because browser storage is unavailable.")).toBeVisible(); await expect(page.getByText("Not saved to browser storage")).toBeVisible(); await expect(page.getByText("Interface preferences for this session")).toBeVisible(); await page.waitForTimeout(2_600); await expect(page.getByRole("status")).toHaveText("Preferences changed for this session only"); await expect(page.getByText("Saved automatically in this browser", { exact: true })).toBeHidden(); await page.reload(); await expect(page.getByRole("radio", { name: /Comfortable/i })).toBeChecked(); });