// frontend/playwright/automation.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("내 규칙: 7개 규칙·6개 켜짐·eyebrow 통계", async ({ page }) => {
  await page.goto("/automation");
  await expect(page.locator(".rl-row")).toHaveCount(7);
  await expect(page.getByText("6/7 켜짐")).toBeVisible();
  await expect(page.getByText("활성 규칙 6개")).toBeVisible();
  await expect(page.getByText("이번 주 31회 실행")).toBeVisible();
  await expect(page.getByText(/1시간 40분 아꼈어요/)).toBeVisible();
});

test("자연어 → 규칙 생성 → 목록 복귀 + 토스트", async ({ page }) => {
  await page.goto("/automation");
  await page.getByRole("button", { name: "새 자동화" }).click();
  await page.getByRole("button", { name: /출장 전날엔 저녁 일정 비워줘/ }).click(); // 예시 칩
  await expect(page.getByText("아리가 이렇게 이해했어요")).toBeVisible();
  await expect(page.getByText("출장 전날이 되면")).toBeVisible(); // 트리거 칩
  await page.getByRole("button", { name: "이 규칙 만들기" }).click();
  await expect(page.locator(".au-toast")).toContainText("‘출장 전날 저녁 비우기’ 규칙을 켰어요.");
  await expect(page.locator(".rl-row.rl-new")).toBeVisible(); // 목록에 새 규칙
});

test("규칙 토글 끄면 off 스타일", async ({ page }) => {
  await page.goto("/automation");
  const row = page.locator(".rl-row", { hasText: "수아님 메일은 바로" });
  await row.getByRole("button").first().click(); // sw 토글
  await expect(row).toHaveClass(/off/);
});

test("아리 제안: 수락 시 규칙 생성 + 목록 복귀", async ({ page }) => {
  await page.goto("/automation");
  await page.getByRole("button", { name: "아리 제안" }).click();
  await expect(page.getByText("반복 패턴을 발견했어요")).toBeVisible();
  await page
    .locator(".sg-card", { hasText: "주간 리포트 미리 준비" })
    .getByRole("button", { name: /규칙 만들기/ })
    .click();
  await expect(page.locator(".au-toast")).toContainText("‘주간 리포트 미리 준비’ 규칙을 켰어요.");
  await expect(page.locator(".rl-row", { hasText: "주간 리포트 미리 준비" })).toBeVisible();
});

test("실행 기록 6건", async ({ page }) => {
  await page.goto("/automation");
  await page.getByRole("button", { name: "실행 기록" }).click();
  await expect(page.locator(".lg-row")).toHaveCount(6);
});
