import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent.parent))

import socketserver
import threading
from tools.serve_web_pc import FreeExilePCRequestHandler
from playwright.sync_api import sync_playwright

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

failed_urls = []

try:
    with sync_playwright() as p:
        try:
            browser = p.chromium.launch(channel="msedge", headless=True)
        except Exception:
            browser = p.chromium.launch(headless=True)
        page = browser.new_page(viewport={'width': 1920, 'height': 1080})
        page.add_init_script("try { localStorage.setItem('fe_sim_mode', 'fullscreen'); } catch(err){}")
        
        page.on('requestfailed', lambda req: failed_urls.append((req.url, req.failure)))

        page.goto(f'http://127.0.0.1:{port}/index.html')
        page.wait_for_timeout(500)

        print('Failed requests count:', len(failed_urls))
        for url, fail in failed_urls[:10]:
            print(f'Failed: {url} -> {fail}')

        browser.close()
finally:
    server.shutdown()
    server.server_close()
