learning_ai_clock/web/e2e/settings-detail.spec.ts

44 lines
1.9 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Settings — Sections', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/settings');
await page.waitForLoadState('networkidle');
await expect(page.getByText('Settings').first()).toBeVisible({ timeout: 30_000 });
});
test('appearance section shows theme toggle', async ({ page }) => {
await expect(page.getByText('Appearance')).toBeVisible();
await expect(page.getByText(/theme/i).first()).toBeVisible();
await expect(page.getByRole('button', { name: /switch to/i })).toBeVisible();
});
test('appearance section shows compact mode toggle', async ({ page }) => {
await expect(page.getByText('Compact Mode')).toBeVisible();
});
test('notifications section shows permission status', async ({ page }) => {
await expect(page.getByText('Notifications')).toBeVisible();
await expect(page.getByText('Browser Notifications')).toBeVisible();
await expect(page.getByText(/status:/i)).toBeVisible();
});
test('sound preview section shows urgency levels', async ({ page }) => {
await expect(page.getByText('Sound Preview')).toBeVisible();
await expect(page.getByText(/critical|important|standard|gentle|passive/i).first()).toBeVisible();
// Should have Preview buttons for each urgency
const previewButtons = page.getByRole('button', { name: 'Preview' });
expect(await previewButtons.count()).toBeGreaterThanOrEqual(3);
});
test('data section shows clear history option', async ({ page }) => {
await expect(page.getByText('Data')).toBeVisible();
await expect(page.getByText('Clear Completed Timers')).toBeVisible();
await expect(page.getByRole('button', { name: 'Clear' })).toBeVisible();
});
test('about section shows version', async ({ page }) => {
await expect(page.getByText(/chronomind v/i)).toBeVisible();
});
});