from playwright.sync_api import sync_playwright
import os, json

SCREENSHOT_DIR = "/home/jay/workspace/memory/screenshots/insuro-e2e"
BASE_URL = "http://127.0.0.1:5173"
results = []

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(viewport={"width": 1280, "height": 720})
    page = context.new_page()

    # Collect console errors
    console_errors = []
    page.on("console", lambda msg: console_errors.append({"type": msg.type, "text": msg.text, "url": page.url}) if msg.type == "error" else None)

    pages_to_check = [
        ("/login", "01-login-page.png"),
        ("/onboarding", "02-onboarding-page.png"),
        ("/generate", "03-generate.png"),
        ("/crm/dashboard", "03-crm-dashboard.png"),
        ("/ai-automation", "03-ai-automation.png"),
        ("/info-keyword", "03-info-keyword.png"),
        ("/insuwiki-intro", "03-insuwiki-intro.png"),
        ("/settings", "03-settings.png"),
    ]

    for path, screenshot_name in pages_to_check:
        console_errors_before = len(console_errors)
        try:
            page.goto(f"{BASE_URL}{path}", wait_until="networkidle", timeout=15000)
            page.wait_for_timeout(2000)  # Wait for lazy loading
            page.screenshot(path=os.path.join(SCREENSHOT_DIR, screenshot_name), full_page=True)
            new_errors = console_errors[console_errors_before:]
            results.append({
                "path": path,
                "screenshot": screenshot_name,
                "status": "OK",
                "final_url": page.url,
                "title": page.title(),
                "console_errors": len(new_errors),
                "error_details": [e["text"][:200] for e in new_errors]
            })
        except Exception as e:
            results.append({
                "path": path,
                "screenshot": screenshot_name,
                "status": "FAIL",
                "error": str(e)[:300]
            })

    browser.close()

# Save results
with open(os.path.join(SCREENSHOT_DIR, "results_group1.json"), "w") as f:
    json.dump({"results": results, "total_console_errors": len(console_errors), "console_error_details": [{"type": e["type"], "text": e["text"][:200], "url": e["url"]} for e in console_errors]}, f, indent=2, ensure_ascii=False)

print(json.dumps(results, indent=2, ensure_ascii=False))
