import { test, expect, Page } from '@playwright/test';
import { strictEqual } from 'assert';

let page: Page;

test.beforeAll(async ({ browser }) => {
  page = await browser.newPage();
});

test.afterAll(async () => {
  if (page !== undefined) {
    await page.close();
  }
});

test('Login', async () => {
  // Login
  await page.goto('http://192.168.1.90:20001/');
  await expect(page).toHaveTitle(/^Sign in to /);
  await page.fill("input[name='username']", 'admin');
  await page.fill("input[name='password']", '1234');
  await page.click('id=kc-login');
  await page.waitForTimeout(2000);
  //   await page.click('id=acceptBtn');
});

test('View Deatil Personnel Employee', async () => {
  await page.click('id=menu-icon-personnel-management');
  await page.click("(//div[@role='tab'])[2]");

  try {
    await page.waitForSelector('id=btn-kebab-action-employeem', {
      state: 'visible',
    });
    await page.click('id=btn-kebab-action-employeem');
    await page.click('id=btn-kebab-view-detail-employeem');

    const detailTitle = page.locator("//span[text()='ธรรมรงด์ ดำรงธรรม']");

    await expect(detailTitle).toHaveText('ธรรมรงด์ ดำรงธรรม');
    console.log('ตรวจสอบรายละเอียดพนักงานถูกต้อง');
  } catch (error) {
    console.log('เกิดข้อผิดพลาดในการทดสอบ');
    throw error;
  }

  await page.waitForTimeout(2000);
  await page.click('id=btn-info-close');
});

test('View Deatil Personnel Courier', async () => {
  try {
    await page.click("(//div[@role='tab'])[3]");
    await page.click('id=btn-kebab-action-courierw');
    await page.click('id=btn-kebab-view-detail-courierw');

    const detailTitle = page.locator("//span[text()='มาตา ลดา']");

    await expect(detailTitle).toHaveText('มาตา ลดา');
    console.log('ตรวจสอบรายละเอียดพนักงานส่งเอกสารถูกต้อง');
  } catch (error) {
    console.log('เกิดข้อผิดพลาดในการทดสอบ');
    throw error;
  }

  await page.waitForTimeout(2000);
  await page.click('id=btn-info-close');
});

test('View Deatil Personnel Delegate', async () => {
  try {
    await page.click("(//div[@role='tab'])[4]");
    await page.click('id=btn-kebab-action-delegatem');
    await page.click('id=btn-kebab-view-detail-delegatem');

    const detailTitle = page.locator("//span[text()='อาคม พลัง']");

    await expect(detailTitle).toHaveText('อาคม พลัง');
    console.log('ตรวจสอบรายละเอียดตัวแทนถูกต้อง');
  } catch (error) {
    console.log('เกิดข้อผิดพลาดในการทดสอบ');
    throw error;
  }

  await page.waitForTimeout(2000);
  await page.click('id=btn-info-close');
});

test('View Deatil Personnel Agency', async () => {
  try {
    await page.click("(//div[@role='tab'])[5]");
    await page.click('id=btn-kebab-action-agencyw');
    await page.waitForSelector('id=btn-kebab-view-detail-agencyw', {
      state: 'visible',
    });
    await page.click('id=btn-kebab-view-detail-agencyw');

    const detailTitle = await page.locator("//span[text()='ธิดา งามตา']");

    await expect(detailTitle).toHaveText('ธิดา งามตา');
    console.log('ตรวจสอบรายละเอียดเอเจนซี่ถูกต้อง');
  } catch (error) {
    console.log('เกิดข้อผิดพลาดในการทดสอบ');
    throw error;
  }

  await page.waitForTimeout(2000);
  await page.click('id=btn-info-close');
});
