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(1000)
    page.screenshot(path=str(Path(__file__).parent / "pc_client_screenshot.png"))

    icons = page.evaluate("""() => {
        const slots = ['skill-q', 'skill-w', 'skill-e', 'skill-r', 'skill-lmb', 'skill-rmb'];
        return slots.map(id => {
            const el = document.getElementById(id);
            const icon = el?.querySelector('.skill-icon');
            const style = icon ? window.getComputedStyle(icon) : null;
            return {
                id,
                bgImage: style?.backgroundImage,
                bgPosition: style?.backgroundPosition,
                bgSize: style?.backgroundSize
            };
        });
    }""")
    print("SKILL_ICONS:", icons)
    b.close()

s.shutdown()
