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

const BASE_URL = process.env.BASE_URL!;

const runTest = async (page: Page) => {
  const pw = new PW(page);

  await test.step("1. Truy cập màn hình Đăng ký khởi tạo BHS", async () => {
    await page.goto(`${BASE_URL}/my-request/dang-ky-khoi-tao`);
  });

  await test.step("2. Mở form Tạo mới phiếu yêu cầu", async () => {
    await pw.isVisible("btn-create", TIMEOUT.PAGE_LOADING);
    await pw.clickButton("btn-create");
  });

  await test.step("3. Chọn Loại hồ sơ = Hồ sơ dự án rồi đổi sang Hồ sơ phòng ban", async () => {
    await pw.inputDropDownList("sel-loaibohoso", "Hồ sơ dự án");
    await pw.isVisible("sel-duan");
    await pw.inputDropDownList("sel-loaibohoso", "Hồ sơ phòng ban");
  });

  await test.step("Kết quả", async () => {
    await expect(pw.getElement("sel-duan"), {
      message:
        "Lỗi: Ô Dự án vẫn hiển thị sau khi đổi sang Loại hồ sơ phòng ban",
    }).toBeHidden({ timeout: TIMEOUT.VALIDATE_WAITING });
  });
};

test(
  "UC88 1.2.2.13 - Loại hồ sơ: chọn Dự án hiển thị ô Dự án, đổi Lại ẩn ô Dự án - Thủ thư " +
    ACCOUNT.LIBRARIAN,
  async ({ librarian }) => {
    await runTest(librarian);
  },
);
test(
  "UC88 1.2.2.13 - Loại hồ sơ: chọn Dự án hiển thị ô Dự án, đổi Lại ẩn ô Dự án - Admin " +
    ACCOUNT.ADMIN,
  async ({ admin }) => {
    await runTest(admin);
  },
);
test(
  "UC88 1.2.2.13 - Loại hồ sơ: chọn Dự án hiển thị ô Dự án, đổi Lại ẩn ô Dự án - End user " +
    ACCOUNT.END_USER,
  async ({ end_user }) => {
    await runTest(end_user);
  },
);
