test: add more E2E tests for UI components

- Chat panel tests (interactive elements, iframe)
- Settings tests (dark mode, language, draw.io theme)
- Save dialog tests (buttons exist)
- History dialog tests
- Model config tests
- Keyboard interaction tests
- Upload area tests

Total: 15 E2E tests, all passing
This commit is contained in:
dayuan.jiang
2026-01-04 19:46:37 +09:00
parent 74fbb629e7
commit ca86c9ebc6
7 changed files with 237 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
import { expect, test } from "@playwright/test"
test.describe("Keyboard Interactions", () => {
test.beforeEach(async ({ page }) => {
await page.goto("/", { waitUntil: "networkidle" })
await page
.locator("iframe")
.waitFor({ state: "visible", timeout: 30000 })
})
test("Escape closes settings dialog", async ({ page }) => {
// Find and click settings button
const buttons = page
.locator("button")
.filter({ has: page.locator("svg") })
const settingsBtn = buttons.nth(1) // Usually second button is settings
if (await settingsBtn.isVisible()) {
await settingsBtn.click()
await page.waitForTimeout(500)
const dialog = page.locator('[role="dialog"]')
if (await dialog.isVisible()) {
await page.keyboard.press("Escape")
await expect(dialog).not.toBeVisible({ timeout: 2000 })
}
}
})
test("page responds to keyboard events", async ({ page }) => {
// Just verify the page is interactive
await page.keyboard.press("Tab")
// No error means success
})
})