From 8f5c9a3c722255137ab021c48cd4fa681a745b95 Mon Sep 17 00:00:00 2001 From: oyi77 Date: Tue, 31 Mar 2026 10:54:07 +0700 Subject: [PATCH] test(e2e): add Playwright tests for settings toggles Tests cover: - Debug mode toggle on/off - Sidebar visibility toggle - Settings persistence after page reload --- tests/e2e/settings-toggles.spec.ts | 62 ++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tests/e2e/settings-toggles.spec.ts diff --git a/tests/e2e/settings-toggles.spec.ts b/tests/e2e/settings-toggles.spec.ts new file mode 100644 index 0000000000..96ed7587d0 --- /dev/null +++ b/tests/e2e/settings-toggles.spec.ts @@ -0,0 +1,62 @@ +import { test, expect } from "@playwright/test"; + +test.describe("Settings Toggles", () => { + test.describe("Debug Mode Toggle", () => { + test("should toggle debug mode on and off", async ({ page }) => { + await page.goto("/dashboard/settings"); + await page.waitForLoadState("networkidle"); + await page.click("text=Advanced"); + + const debugToggle = page.locator('[aria-label*="debug" i], [data-testid*="debug" i]').first(); + + if (await debugToggle.isVisible({ timeout: 3000 }).catch(() => false)) { + const initialState = await debugToggle.isChecked(); + await debugToggle.click(); + await page.waitForTimeout(500); + const newState = await debugToggle.isChecked(); + expect(newState).not.toBe(initialState); + } + }); + }); + + test.describe("Sidebar Visibility Toggle", () => { + test("should toggle sidebar items visibility", async ({ page }) => { + await page.goto("/dashboard/settings"); + await page.waitForLoadState("networkidle"); + await page.click("text=General"); + + const sidebarToggle = page + .locator('[aria-label*="sidebar" i], [data-testid*="sidebar" i]') + .first(); + + if (await sidebarToggle.isVisible({ timeout: 3000 }).catch(() => false)) { + const initialState = await sidebarToggle.isChecked(); + await sidebarToggle.click(); + await page.waitForTimeout(500); + const newState = await sidebarToggle.isChecked(); + expect(newState).not.toBe(initialState); + } + }); + }); + + test.describe("Settings Persistence", () => { + test("should persist debug mode after page reload", async ({ page }) => { + await page.goto("/dashboard/settings"); + await page.waitForLoadState("networkidle"); + await page.click("text=Advanced"); + + const debugToggle = page.locator('[aria-label*="debug" i], [data-testid*="debug" i]').first(); + + if (await debugToggle.isVisible({ timeout: 3000 }).catch(() => false)) { + const wasChecked = await debugToggle.isChecked(); + await debugToggle.click(); + await page.waitForTimeout(500); + await page.reload(); + await page.waitForLoadState("networkidle"); + await page.click("text=Advanced"); + const isChecked = await debugToggle.isChecked(); + expect(isChecked).not.toBe(wasChecked); + } + }); + }); +});