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\1792ecf6-90bc-4f3d-b8ab-2b680d6b356b"
)


async def capture_verification():
    print(f"[*] Starting Playwright Real Browser Verification on {BASE_URL}...")
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(
            viewport={"width": 1440, "height": 900},
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0 Safari/537.36 DSConsVerifier",
        )
        page = await context.new_page()

        # 1. Login
        print("  -> Logging into ERP...")
        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(1500)

        # 2. Capture Sidebar on Dashboard showing Khach Hang, Doi Tac, Nha Cung Cap
        print("  -> Capturing Dashboard Home with full Sidebar...")
        await page.screenshot(
            path=str(ARTIFACTS_DIR / "01_sidebar_partners_customers_vendors.png")
        )
        print("     ✓ Saved 01_sidebar_partners_customers_vendors.png")

        # 3. Navigate to Khach Hang (/dashboard/customers)
        print("  -> Navigating to /dashboard/customers...")
        await page.goto(f"{BASE_URL}/dashboard/customers", wait_until="networkidle")
        await page.wait_for_timeout(1500)
        await page.screenshot(path=str(ARTIFACTS_DIR / "02_customers_hub_verified.png"))
        print("     ✓ Saved 02_customers_hub_verified.png")

        # 4. Navigate to Doi Tac (/dashboard/partners)
        print("  -> Navigating to /dashboard/partners...")
        await page.goto(f"{BASE_URL}/dashboard/partners", wait_until="networkidle")
        await page.wait_for_timeout(1500)
        await page.screenshot(path=str(ARTIFACTS_DIR / "03_partners_hub_verified.png"))
        print("     ✓ Saved 03_partners_hub_verified.png")

        # 5. Navigate to Nha Cung Cap (/dashboard/vendors)
        print("  -> Navigating to /dashboard/vendors...")
        await page.goto(f"{BASE_URL}/dashboard/vendors", wait_until="networkidle")
        await page.wait_for_timeout(1500)
        await page.screenshot(path=str(ARTIFACTS_DIR / "04_vendors_hub_verified.png"))
        print("     ✓ Saved 04_vendors_hub_verified.png")

        # 6. Open History Modal on first partner with history
        print("  -> Opening Historical Change Modal...")
        hist_badge = page.locator(".badge-history").first
        if await hist_badge.count() > 0:
            await hist_badge.click()
            await page.wait_for_timeout(600)
            await page.screenshot(
                path=str(ARTIFACTS_DIR / "05_partner_history_timeline_modal.png")
            )
            print("     ✓ Saved 05_partner_history_timeline_modal.png")

        await browser.close()
        print("\n[SUCCESS] ALL VERIFICATION SCREENSHOTS CAPTURED 100%!")


if __name__ == "__main__":
    asyncio.run(capture_verification())
