#!/usr/bin/env python3
"""Frontend smoke test pro CyberBrain26 GUI (Fáze 7)."""

import sys
try:
    from playwright.sync_api import sync_playwright
except ImportError:
    print("⚠️  Playwright není nainstalován. Instaluj: pip install playwright && playwright install")
    sys.exit(0)

BASE_URL = "http://localhost:8080"

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()

        # Zachytávání konzolových chyb
        js_errors = []
        def log_handler(msg):
            if msg.type == "error":
                js_errors.append(str(msg))
        page.on("console", log_handler)

        try:
            # Načtení stránky
            response = page.goto(BASE_URL, timeout=10000)
            if response.status != 200:
                print(f"❌ Stránka vrátila status {response.status}")
                return 1

            # Počkáme, až se načtou základní prvky
            page.wait_for_selector("#workspaceSelect", timeout=5000)
            page.wait_for_selector("#convSelect", timeout=5000)

            # Zkontrolujeme, že se načetly prostory
            workspace_options = page.query_selector_all("#workspaceSelect option")
            if len(workspace_options) == 0:
                print("⚠️  Žádné prostory se nenačetly")
            else:
                print(f"✅ Načteno {len(workspace_options)} prostorů")

            # Zkontrolujeme, že se načetly konverzace
            conv_options = page.query_selector_all("#convSelect option")
            if len(conv_options) == 0:
                print("⚠️  Žádné konverzace se nenačetly")
            else:
                print(f"✅ Načteno {len(conv_options)} konverzací (včetně prázdné)")

            # Zkontrolujeme JS chyby
            if js_errors:
                print(f"❌ Nalezeny JS chyby:")
                for err in js_errors[:10]:
                    print(f"   - {err}")
                return 1
            else:
                print("✅ Žádné JS chyby v konzoli")

            print("\n🎉 Frontend smoke test prošel!")
            return 0

        except Exception as e:
            print(f"❌ Chyba při testu: {e}")
            return 1

        finally:
            browser.close()

if __name__ == "__main__":
    sys.exit(main())
