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
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();
|
|
});
|