"""Playwright automation test to verify 'Quản Lý Nhân Sự' and 'Máy & Thiết Bị'
menus in DSCons ERP Enterprise navigation.
"""

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_navigation_menus():
    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)

        # Step 2: Check Sidebar on main dashboard
        print("[2] Checking Sidebar navigation items...")
        await page.wait_for_timeout(1000)

        p_nav = ARTIFACTS_DIR / "sidebar_nav_hr_and_equipment_verified.png"
        await page.screenshot(path=str(p_nav))
        print(f"[2] Saved Dashboard & Sidebar screenshot: {p_nav}")

        # Step 3: Click 'Quản Lý Nhân Sự' in Sidebar
        print("[3] Clicking 'Quản Lý Nhân Sự' menu...")
        hr_link = page.locator("a.erp-sidebar__link:has-text('Quản Lý Nhân Sự')")
        if await hr_link.count() > 0:
            await hr_link.first.click()
            await page.wait_for_url("**/dashboard/employees*", timeout=10000)
            await page.wait_for_timeout(1200)

        # Step 4: Click 'Máy & Thiết Bị' in Sidebar
        print("[4] Clicking 'Máy & Thiết Bị' menu...")
        eq_link = page.locator("a.erp-sidebar__link:has-text('Máy & Thiết Bị')")
        if await eq_link.count() > 0:
            await eq_link.first.click()
            await page.wait_for_timeout(1500)

        # Step 5: Capture Equipment Fleet View
        p_eq = ARTIFACTS_DIR / "equipment_fleet_dashboard_verified.png"
        await page.screenshot(path=str(p_eq))
        print(f"[5] Saved Equipment Fleet screenshot: {p_eq}")

        await browser.close()
        print("[SUCCESS] All navigation verification tests completed!")


if __name__ == "__main__":
    asyncio.run(test_navigation_menus())
