import { expect, test } from "@playwright/test"; test.describe("Timezone Change", () => { test.beforeEach(async ({ page }) => { await page.goto("/"); await page.evaluate(() => { localStorage.clear(); }); }); test("does not show modal on initial load with no previous timezone", async ({ page, }) => { await page.reload(); const modal = page.locator("text=Timezone Change Detected"); await expect(modal).toBeHidden(); }); test("shows modal if stored timezone is different from current timezone", async ({ page, }) => { await page.evaluate(() => localStorage.setItem("previousTimeZone", "Fake/Timezone"), ); await page.reload(); const modal = page.locator("text=Timezone Change Detected"); await expect(modal).toBeVisible(); }); test("accepting timezone change updates preferences and does not show modal again", async ({ page, }) => { await page.evaluate(() => localStorage.setItem("previousTimeZone", "Fake/Timezone"), ); await page.reload(); await page.click("text=Yes, update my timezone"); await page.reload(); const modal = page.locator("text=Timezone Change Detected"); await expect(modal).toBeHidden(); }); test("declining timezone change updates localStorage but does not change preferences", async ({ page, }) => { await page.evaluate(() => localStorage.setItem("previousTimeZone", "Fake/Timezone"), ); await page.reload(); await page.click("text=No, keep the current timezone"); await page.reload(); const modal = page.locator("text=Timezone Change Detected"); await expect(modal).toBeHidden(); }); test("does not show modal if localStorage is not available", async ({ page, }) => { await page.addInitScript(() => { Object.defineProperty(window, "localStorage", { value: undefined, writable: true, }); }); await page.reload(); const modal = page.locator("text=Timezone Change Detected"); await expect(modal).toBeHidden(); }); });