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