"""Playwright automation test to verify Enterprise HRM (Office, Engineers, Site Workforce)
and Enterprise Fleet & Machinery Management.
"""

import asyncio
import os
import sys
from pathlib import Path

from playwright.async_api import async_playwright

if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8")

BASE_URL = os.environ.get("TEST_BASE_URL", "http://127.0.0.1:8000")
ARTIFACTS_DIR = Path(
    r"C:\Users\Admin\.gemini\antigravity-ide\brain\7a484f5f-1abe-4f97-84de-ac6b53252110"
)


async def test_hrm_and_fleet():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(viewport={"width": 1440, "height": 960})
        page = await context.new_page()

        page.on("dialog", lambda dialog: asyncio.create_task(dialog.accept()))

        # Step 1: Login
        print("[1] Logging in...")
        await page.goto(f"{BASE_URL}/login", wait_until="networkidle")
        await page.click("button:has-text('SuperAdmin')")
        await page.wait_for_url("**/dashboard", timeout=10000)
        await page.wait_for_timeout(1000)

        # Step 2: Navigate to HRM
        print("[2] Navigating to Quản Trị Nhân Sự (HRM)...")
        hrm_link = page.locator("a.erp-sidebar__link:has-text('Quản Trị Nhân Sự')")
        if await hrm_link.count() > 0:
            await hrm_link.first.click()
        else:
            await page.goto(f"{BASE_URL}/dashboard/employees", wait_until="networkidle")

        await page.wait_for_timeout(1200)
        p_hrm_office = ARTIFACTS_DIR / "hrm_office_and_corporate_staff_verified.png"
        await page.screenshot(path=str(p_hrm_office))
        print(f"[2] Saved HRM Office screenshot: {p_hrm_office}")

        # Step 3: Switch to Engineers and Site Workforce tabs
        print("[3] Switching to Engineers tab...")
        await page.click("#subtab-engineers-btn")
        await page.wait_for_timeout(600)

        print("[3] Switching to Workforce tab...")
        await page.click("#subtab-workers-btn")
        await page.wait_for_timeout(600)

        p_hrm_field = ARTIFACTS_DIR / "hrm_engineers_and_site_workforce_verified.png"
        await page.screenshot(path=str(p_hrm_field))
        print(f"[3] Saved HRM Field screenshot: {p_hrm_field}")

        # Step 4: Navigate to Machinery & Vehicles Fleet
        print("[4] Navigating to Máy & Phương Tiện...")
        eq_link = page.locator("a.erp-sidebar__link:has-text('Máy & Phương Tiện')")
        if await eq_link.count() > 0:
            await eq_link.first.click()
        else:
            await page.goto(f"{BASE_URL}/dashboard/equipment", wait_until="networkidle")

        await page.wait_for_timeout(1200)

        # Switch to vehicles tab
        print("[4] Switching to Transport Vehicles & Office Cars tab...")
        await page.click("#subtab-vehicles-btn")
        await page.wait_for_timeout(800)

        p_fleet = ARTIFACTS_DIR / "equipment_machinery_and_vehicles_fleet_verified.png"
        await page.screenshot(path=str(p_fleet))
        print(f"[4] Saved Fleet & Vehicles screenshot: {p_fleet}")

        await browser.close()
        print("[SUCCESS] All HRM and Fleet verification tests completed!")


if __name__ == "__main__":
    asyncio.run(test_hrm_and_fleet())
