// frontend/playwright/tasks.spec.ts // phase-16+: 작업 mock 시드 제거 → 빈 칸반에서 시작. UI 로 만들 수 있는 흐름만 검증. import { expect, test } from "@playwright/test"; import { resetSeed } from "./fixtures/seed-reset"; test.describe.configure({ mode: "serial" }); test.beforeEach(resetSeed); test("초기 진입: 업무 스코프 + 칸반 5컬럼(빈) + 리스크 레이더", async ({ page }) => { await page.goto("/tasks"); await expect(page.locator(".tree-row.folder.on .tree-name")).toHaveText("업무"); await expect(page.locator(".kboard .kcol")).toHaveCount(5); await expect(page.locator(".kcard")).toHaveCount(0); // 작업 시드 제거 → 빈 보드 // 리스크 레이더는 위험이 있을 때만 렌더(빈 보드 → 없음) await expect(page.locator(".rradar")).toHaveCount(0); }); test("뷰 전환 칸반 ↔ 리스트", async ({ page }) => { await page.goto("/tasks"); await page.locator(".view-seg button", { hasText: "리스트" }).click(); await expect(page.locator(".lgroups")).toBeVisible(); await page.locator(".view-seg button", { hasText: "칸반" }).click(); await expect(page.locator(".kboard")).toBeVisible(); }); test("새 프로젝트 생성 → 서버 영속(새로고침 유지)", async ({ page }) => { await page.goto("/tasks"); await page.locator(".tree-add", { hasText: "새 프로젝트" }).first().click(); await page.locator(".tree-addrow input").fill("신규 프로젝트 E2E"); await page.locator(".tree-addrow input").press("Enter"); await expect(page.locator(".tree-name", { hasText: "신규 프로젝트 E2E" })).toBeVisible(); await page.reload(); await expect(page.locator(".tree-name", { hasText: "신규 프로젝트 E2E" })).toBeVisible(); });