"""Playwright test to capture exact sidebar layout matching user directive."""

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_sidebar_layout():
    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)

        # Capture main dashboard with sidebar
        p_sidebar = ARTIFACTS_DIR / "sidebar_exact_user_layout_verified.png"
        await page.screenshot(path=str(p_sidebar))
        print(f"[2] Saved Sidebar screenshot: {p_sidebar}")

        # Step 2: Click Nhân Sự under Quản Trị & Hệ Thống
        print("[3] Clicking Nhân Sự under Quản Trị & Hệ Thống...")
        nhan_su_link = page.locator("a.erp-sidebar__link:has-text('Nhân Sự')")
        if await nhan_su_link.count() > 0:
            await nhan_su_link.first.click()
            await page.wait_for_url("**/dashboard/employees*", timeout=10000)
            await page.wait_for_timeout(1200)

        p_hrm = ARTIFACTS_DIR / "nhan_su_under_quan_tri_he_thong_verified.png"
        await page.screenshot(path=str(p_hrm))
        print(f"[3] Saved HRM under Quản Trị & Hệ Thống screenshot: {p_hrm}")

        await browser.close()
        print("[SUCCESS] Sidebar exact user layout verified successfully!")


if __name__ == "__main__":
    asyncio.run(test_sidebar_layout())
