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.

52 lines
2.0 KiB
TypeScript

// frontend/playwright/notify.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("트리아지 기본 + 이유 칩", async ({ page }) => {
await page.goto("/notifications");
await expect(page.getByText("수아님 — 분기 리포트 피드백")).toBeVisible();
await expect(page.getByText("VIP 발신자")).toBeVisible(); // 이유 칩
await expect(page.getByText(/오늘 47건 도착/)).toBeVisible(); // eyebrow
});
test("나중에 미루기 → '내가 미룸' 이유 칩", async ({ page }) => {
await page.goto("/notifications");
await page
.locator(".nt-row", { hasText: "수아님 — 분기 리포트 피드백" })
.getByRole("button", { name: "나중에" })
.click();
await page.locator(".nt-tab", { hasText: "나중에" }).click();
await expect(page.getByText("내가 미룸")).toBeVisible();
});
test("되돌리기 → '되돌림' 이유 칩", async ({ page }) => {
await page.goto("/notifications");
await page.locator(".nt-tab", { hasText: "아리가 처리" }).click();
await page
.locator(".nt-row", { hasText: "회의 초대 자동 수락" })
.getByRole("button", { name: "되돌리기" })
.click();
await page.locator(".nt-tab", { hasText: "지금" }).click();
await expect(page.getByText("되돌림")).toBeVisible();
});
test("발신자 규칙 뷰", async ({ page }) => {
await page.goto("/notifications");
await page.getByRole("button", { name: "발신자 규칙" }).click();
await expect(page.getByText("수아님")).toBeVisible();
await expect(page.getByText("항상 즉시")).toBeVisible();
});
test("집중 보호 토글", async ({ page }) => {
await page.goto("/notifications");
await page.getByRole("button", { name: "집중 보호 · 묶음" }).click();
await expect(page.getByText(/딥 워크 보호/).first()).toBeVisible();
});