import { expect, test } from "@playwright/test"; test("validates and reports the common text-field flow", async ({ page }) => { await page.goto("/examples/ui"); await page.getByRole("button", { name: "입력 확인" }).click(); const field = page.getByRole("textbox", { name: "프로젝트 이름" }); await expect(field).toHaveAttribute("aria-invalid", "true"); await expect(field).toHaveAccessibleDescription( /프로젝트 이름을 입력해 주세요/, ); await field.fill("Starter"); await page.getByRole("button", { name: "입력 확인" }).click(); await expect(page.getByText("“Starter” 입력을 확인했습니다.")).toBeVisible(); }); test("traps modal interaction and restores focus to the trigger", async ({ page, }) => { await page.goto("/examples/ui"); const trigger = page.getByRole("button", { name: "모달 열기" }); await trigger.click(); const dialog = page.getByRole("dialog", { name: "연동 확인" }); await expect(dialog).toBeVisible(); await expect( dialog.getByRole("button", { name: "연동 확인 닫기" }), ).toBeFocused(); await page.keyboard.press("Escape"); await expect(dialog).toBeHidden(); await expect(trigger).toBeFocused(); });