import socketserver
import threading
import sys
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:
    try:
        b = p.chromium.launch(channel="msedge", headless=True)
    except Exception:
        b = p.chromium.launch(headless=True)
    page = b.new_page(viewport={'width': 1920, 'height': 1080})
    page.add_init_script("try { localStorage.setItem('fe_sim_mode', 'fullscreen'); } catch(e){}")
    errors = []
    page.on('pageerror', lambda e: errors.append(f'PageError: {e}'))
    page.on('console', lambda m: errors.append(f'ConsoleError: {m.text}') if m.type == 'error' else None)
    page.goto(f'http://127.0.0.1:{port}/index.html')
    page.wait_for_timeout(500)
    page.mouse.click(960, 540)
    page.keyboard.press('KeyQ')
    page.wait_for_timeout(200)
    print('RAW ERRORS (Page & Console without any filters):', errors)
    b.close()

s.shutdown()
