import { test, expect } from "../../../src/fixture/base-test";
import { TIMEOUT } from "../../../src/constant/timeout";
import { PW } from "../../../src/utils/PW";

const BASE_URL = process.env.BASE_URL!;

test("UC89 2.3.40 - Kiểm tra popup Phê duyệt khởi tạo", async ({ ecm03 }) => {
  const pw = new PW(ecm03);

  await test.step("1. Truy cập màn hình Cần xử lý của người duyệt", async () => {
    await ecm03.goto(`${BASE_URL}/rfas/todo`);
    await pw.isVisible("lbl-page-title", TIMEOUT.PAGE_LOADING);
  });

  await test.step("2. Mở chi tiết phiếu đầu tiên trong danh sách", async () => {
    const url = await ecm03
      .locator("tr.ant-table-row.ant-table-row-level-0.group")
      .first()
      .locator(".ant-table-cell a")
      .nth(1)
      .getAttribute("href");
    await ecm03.goto(`${url}`);
  });

  await test.step("3. Bấm nút Phê duyệt", async () => {
    await pw.clickButton("btn-approval");
  });

  await test.step("Kết quả", async () => {
    await expect(
      ecm03.locator(".ant-modal-body").getByTestId("txt-workflow-action-comment"),
      { message: "Lỗi: Không hiển thị ô nhập bình luận trong popup" },
    ).toBeVisible({ timeout: TIMEOUT.ACTION_LOADING });
    await expect(
      ecm03.locator(".ant-modal-body").getByTestId("btn-workflow-action-modal-ok"),
      { message: 'Lỗi: Nút xác nhận không có chữ "Gửi"' },
    ).toHaveText("Gửi", { timeout: TIMEOUT.VALIDATE_WAITING });
    await expect(
      ecm03.locator(".ant-modal-body").getByTestId("btn-workflow-action-modal-cancel"),
      { message: 'Lỗi: Nút hủy không có chữ "Hủy bỏ"' },
    ).toHaveText("Hủy bỏ", { timeout: TIMEOUT.VALIDATE_WAITING });
  });
});
