"""Playwright E2E verification of Truthful Zero-Mock Invoice Sync and Configuration Management."""

import asyncio
from pathlib import Path

from playwright.async_api import async_playwright

BASE_URL = "http://127.0.0.1:8000"
SCREENSHOT_DIR = Path(
    "C:/Users/Admin/.gemini/antigravity-ide/brain/2b955d32-69a2-4a60-81a7-d945b99b2035"
)


async def run():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(viewport={"width": 1440, "height": 900})
        page = await context.new_page()

        # Step 1: Login via /login
        print("\n[STEP 1] Logging in as SuperAdmin...", flush=True)
        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)
        print("  -> Authenticated successfully.", flush=True)

        # Step 2: Open Invoices Hub
        print("\n[STEP 2] Navigating to /dashboard/invoices...", flush=True)
        await page.goto(f"{BASE_URL}/dashboard/invoices", wait_until="networkidle")
        await page.wait_for_timeout(1500)
        await page.screenshot(
            path=str(SCREENSHOT_DIR / "invoices_main_truthful_view.png")
        )
        print("  -> Saved invoices_main_truthful_view.png", flush=True)

        # Step 3: Open Connection Configuration Modal
        print("\n[STEP 3] Opening Connection Configuration Modal...", flush=True)
        await page.click("#btn-open-config")
        await page.wait_for_timeout(600)
        assert await page.is_visible("#config-modal")
        await page.screenshot(
            path=str(SCREENSHOT_DIR / "invoices_config_modal_gdt.png")
        )
        print("  -> Saved invoices_config_modal_gdt.png", flush=True)

        # Step 4: Switch to Email IMAP Tab
        print("\n[STEP 4] Switching to Email IMAP Tab...", flush=True)
        await page.click("#tab-btn-email")
        await page.wait_for_timeout(500)
        assert await page.is_visible("#form-email-config")
        await page.screenshot(
            path=str(SCREENSHOT_DIR / "invoices_config_modal_email.png")
        )
        print("  -> Saved invoices_config_modal_email.png", flush=True)

        # Step 5: Close Modal
        await page.click("#config-modal .modal-close")
        await page.wait_for_timeout(400)

        # Step 6: Test Unconfigured Sync Dialog
        print(
            "\n[STEP 6] Testing Dialog Trigger for Unconfigured Connector...",
            flush=True,
        )
        dialog_text = []
        page.on(
            "dialog",
            lambda d: (dialog_text.append(d.message), asyncio.create_task(d.accept())),
        )

        await page.click("#btn-sync-gdt")
        await page.wait_for_timeout(1000)
        print(f"  -> Dialog text intercepted: {dialog_text}", flush=True)

        print(
            "\n[SUCCESS] Zero-mock Truthful Invoice Management E2E Verified 100%!",
            flush=True,
        )
        await browser.close()


if __name__ == "__main__":
    asyncio.run(run())
