from playwright.sync_api import sync_playwright import os OUT = os.path.abspath("shots") with sync_playwright() as p: b = p.chromium.launch(headless=True) # /diensten overzicht ctx = b.new_context(viewport={"width": 1440, "height": 900}) pg = ctx.new_page() pg.goto("http://localhost:4321/diensten", wait_until="networkidle", timeout=60000) pg.wait_for_timeout(800) h = pg.evaluate("document.body.scrollHeight") for y in range(0, h, 420): pg.evaluate(f"window.scrollTo(0,{y})"); pg.wait_for_timeout(80) pg.evaluate("window.scrollTo(0,0)"); pg.wait_for_timeout(500) pg.screenshot(path=os.path.join(OUT, "diensten-index.png"), full_page=True) try: pg.add_script_tag(url="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.10.2/axe.min.js") pg.wait_for_timeout(400) res = pg.evaluate("""async()=>{const r=await axe.run(document,{runOnly:['wcag2a','wcag2aa','wcag21aa']});return r.violations.map(v=>v.impact+':'+v.id+' x'+v.nodes.length);}""") print("diensten-index axe:", "clean" if not res else res) except Exception as e: print("axe failed", e) sw = pg.evaluate("document.documentElement.scrollWidth"); cw = pg.evaluate("document.documentElement.clientWidth") print("diensten-index overflow:", "JA" if sw > cw+1 else "nee") ctx.close() # breadcrumb op een dienstpagina c2 = b.new_context(viewport={"width": 1440, "height": 700}) p2 = c2.new_page() p2.goto("http://localhost:4321/diensten/voegwerk", wait_until="networkidle", timeout=60000) p2.wait_for_timeout(700) crumbs = p2.eval_on_selector_all(".crumbs a, .crumbs [aria-current]", "els=>els.map(e=>e.textContent.trim())") print("voegwerk breadcrumb:", crumbs) p2.screenshot(path=os.path.join(OUT, "crumb-voegwerk.png"), clip={"x":0,"y":80,"width":760,"height":260}) c2.close() b.close()