import { expect, test } from '@playwright/test' test.beforeEach(async ({ page }) => { await page.route('**/api/status/', (route) => route.fulfill({ json: { database: { status: 'OK' }, tasks: { redis_status: 'DISABLED', celery_status: 'DISABLED', index_status: 'OK', classifier_status: 'OK', sanity_check_status: 'OK', }, }, }) ) }) test('should activate / deactivate save button when settings change', async ({ page, }) => { await page.goto('/settings') await expect(page.getByRole('button', { name: 'Save' })).toBeDisabled() await page.getByLabel('Use system setting').click() await page.getByRole('button', { name: 'Save' }).scrollIntoViewIfNeeded() await expect(page.getByRole('button', { name: 'Save' })).toBeEnabled() }) test('should warn on unsaved changes', async ({ page }) => { await page.goto('/settings') await page.getByLabel('Use system setting').click() await page.getByRole('link', { name: 'Dashboard' }).click() await expect(page.getByRole('dialog')).toHaveText(/unsaved changes/) await page.getByRole('button', { name: 'Cancel' }).click() await page.getByLabel('Use system setting').click() await page.getByRole('link', { name: 'Dashboard' }).click() await expect(page.getByRole('dialog')).toHaveCount(0) }) test('should apply appearance changes when set', async ({ page }) => { await page.goto('/settings') await expect(page.locator('html')).toHaveAttribute('data-bs-theme', /auto/) await page.getByLabel('Use system setting').click() await page.getByLabel('Enable dark mode').click() await expect(page.locator('html')).toHaveAttribute('data-bs-theme', /dark/) })