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
2.0 KiB
TypeScript

// frontend/playwright/mail.spec.ts — 메일 E2E (extract→작업 / 회신→결재함)
// 백엔드는 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("메일 ai 추출 → 작업 페이지 왕복", async ({ page }) => {
await page.goto("/mail");
await page.locator(".mrow", { hasText: "온보딩 시안 v3" }).first().click();
await expect(page.getByText("아리가 분석했어요")).toBeVisible();
await page.getByRole("button", { name: "작업", exact: true }).first().click();
await expect(page.getByText("작업에 추가했어요")).toBeVisible(); // 토스트
await page.goto("/tasks");
await expect(page.getByText("온보딩 시안 v3 피드백 정리").first()).toBeVisible();
});
test("회신 초안 선택 → 결재함 대기", async ({ page }) => {
await page.goto("/mail");
await page.locator(".mrow", { hasText: "온보딩 시안 v3" }).first().click();
await page.locator(".rep", { hasText: "금요일까지 피드백 드릴게요" }).click();
await page.locator(".cp-send").click();
await expect(page.getByText("결재함에서 확인하세요")).toBeVisible();
});
test("m7(빈 ai) → 요약만, AI pill 없음", async ({ page }) => {
await page.goto("/mail");
await page.locator(".mrow", { hasText: "ChatGPT Plus" }).first().click();
await expect(page.getByText("아리가 분석했어요")).toBeVisible();
// 빈 ai → 작업/일정 추가 버튼 없음
await expect(page.getByRole("button", { name: "작업", exact: true })).toHaveCount(0);
});
test("계정 필터 — 사이드(side) 전환", async ({ page }) => {
await page.goto("/mail");
await page.getByText("사이드", { exact: false }).first().click();
await expect(page.locator(".mrow", { hasText: "수요 독서모임" }).first()).toBeVisible();
});