You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.8 KiB
TypeScript

// frontend/playwright/approvals.spec.ts — 결재함 E2E
// 백엔드는 ARI_ALLOW_TEST_RESET=1 LLM_PROVIDER=heuristic 로 기동 가정.
import { expect, test } from "@playwright/test";
import { resetSeed } from "./fixtures/seed-reset";
test.describe.configure({ mode: "serial" });
test.beforeEach(async () => {
await resetSeed();
});
test("mixed: low 자동(되돌리기) / high 승인 대기", async ({ page }) => {
await page.goto("/approvals");
await expect(page.getByText("아리 결재함").first()).toBeVisible();
await expect(page.locator(".appr-list .ap-row")).toHaveCount(4); // high 3 + 심부름 게이트(phase-14)
await expect(page.locator(".appr-done .ad-row")).toHaveCount(3); // low 3 처리됨
await expect(page.getByRole("button", { name: "보내기", exact: true })).toBeVisible();
await expect(page.getByText(/오늘 47분 아껴드렸어요/).first()).toBeVisible();
});
test("되돌리기 → 대기로 이동", async ({ page }) => {
await page.goto("/approvals");
await page
.locator(".ad-row", { hasText: "치과 예약을 16:00로" })
.getByRole("button")
.click();
await expect(page.locator(".ap-row", { hasText: "치과 예약을 16:00로" })).toBeVisible();
});
test("자율성 레벨 변경 → 큐 재구성", async ({ page }) => {
await page.goto("/approvals");
await page.getByText("승인 우선").click();
await expect(page.locator(".appr-list .ap-row")).toHaveCount(7); // 전부 대기(+심부름 게이트)
await page.getByText("완전 자율").click();
await expect(page.getByText(/결재할 게 없어요/)).toBeVisible(); // 빈 큐
});
test("모두 승인 → 빈 큐", async ({ page }) => {
await page.goto("/approvals");
await page.getByRole("button", { name: /모두 승인 \(4건\)/ }).click();
await expect(page.getByText(/결재할 게 없어요/)).toBeVisible();
});