import socketserver
import sys
import threading
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parents[3]))
from tools.serve_web_pc import FreeExilePCRequestHandler
from playwright.sync_api import sync_playwright

s = socketserver.TCPServer(('127.0.0.1', 0), FreeExilePCRequestHandler)
port = s.server_address[1]
threading.Thread(target=s.serve_forever, daemon=True).start()

with sync_playwright() as p:
    b = p.chromium.launch(channel="msedge", headless=True)
    page = b.new_page(viewport={"width": 1920, "height": 1080})
    page.goto(f"http://127.0.0.1:{port}/index.html")
    page.wait_for_timeout(600)

    # Click close button on char create modal if present
    page.evaluate("""() => {
        const modal = document.getElementById('modal-char-create');
        if (modal) modal.classList.add('hidden');
    }""")
    page.wait_for_timeout(400)

    page.screenshot(path=str(Path(__file__).parent / "hud_screenshot.png"))
    b.close()

s.shutdown()
