"""Open AniList search on a phone-sized viewport and measure where long titles get cut off.
Saves screenshots to screens/ (video material) and prints the visible characters of each truncated title."""
import json, sys
from pathlib import Path
from playwright.sync_api import sync_playwright

SCREENS = Path(__file__).resolve().parent.parent / "screens"
url = sys.argv[1] if len(sys.argv) > 1 else "https://anilist.co/search/anime?search=reincarnated"
name = sys.argv[2] if len(sys.argv) > 2 else "anilist_mobile_search_reincarnated"
with sync_playwright() as p:
    b = p.chromium.launch(channel="msedge")
    pg = b.new_page(viewport={"width": 390, "height": 844}, device_scale_factor=3, is_mobile=True, has_touch=True,
                    user_agent="Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1")
    pg.goto(url, wait_until="networkidle")
    pg.wait_for_timeout(2500)
    pg.screenshot(path=str(SCREENS / f"{name}_2026-10-16.png"))
    info = pg.evaluate("""() => [...document.querySelectorAll('a.title, .title')].slice(0,40).map(e => {
        const cs = getComputedStyle(e);
        return {text: e.innerText, scrollH: e.scrollHeight, clientH: e.clientHeight, scrollW: e.scrollWidth, clientW: e.clientWidth,
                clamp: cs.webkitLineClamp, overflow: cs.textOverflow, lh: cs.lineHeight, font: cs.fontSize + ' ' + cs.fontFamily}
    })""")
    print(json.dumps(info, ensure_ascii=False, indent=0)[:4000])
    b.close()
