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