openpencil/tests/e2e/settings/tabs.spec.ts
Danila Poyarkov ea4b8e4b97 feat(settings): unify preferences and integration editors
Unify Settings navigation, credential drafts, translated form validation, and appearance controls. Add explicit WebMCP access modes and searchable MCP tool permissions while preserving execution and credential safeguards.
2026-09-15 16:34:05 +03:00

37 lines
1.5 KiB
TypeScript

import { expect, test } from '@playwright/test'
import { CanvasHelper } from '#tests/helpers/canvas'
test('settings tabs associate panels and support vertical keyboard navigation', async ({
page
}) => {
await page.goto('/?test')
await new CanvasHelper(page).waitForInit()
await page.getByTestId('app-settings-trigger').click()
const dialog = page.getByTestId('app-settings-dialog')
const general = dialog.getByRole('tab', { name: 'General', exact: true })
for (const tab of await dialog.getByRole('tab').all()) {
await expect(tab).toHaveCSS('cursor', 'pointer')
}
await expect(general).toHaveAttribute('aria-selected', 'true')
await expect(dialog).toHaveScreenshot('settings-tabs-general.png')
await general.focus()
await general.press('ArrowDown')
const ai = page.getByTestId('settings-section-ai')
await expect(ai).toBeFocused()
await expect(ai).toHaveAttribute('aria-selected', 'true')
await expect(dialog.getByRole('tabpanel')).toHaveCount(1)
await expect(page.getByTestId('settings-ai-panel')).toBeVisible()
await expect(dialog.getByRole('tabpanel')).toHaveAttribute(
'aria-labelledby',
(await ai.getAttribute('id')) ?? ''
)
await ai.press('Home')
await expect(general).toBeFocused()
await expect(page.getByTestId('settings-general-panel')).toBeVisible()
await general.press('End')
await expect(page.getByTestId('settings-section-storage')).toBeFocused()
await page.getByTestId('app-settings-done').click()
await expect(dialog).not.toBeVisible()
})