50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from playwright.sync_api import sync_playwright
|
|
import os
|
|
|
|
OUT = os.path.abspath("shots")
|
|
os.makedirs(OUT, exist_ok=True)
|
|
|
|
def set_slider(page, pct):
|
|
page.evaluate(
|
|
"""(p) => { const el = document.querySelector('[data-ba]'); if (el) { el.style.animation='none'; el.style.setProperty('--pos', p + '%'); } }""",
|
|
pct,
|
|
)
|
|
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
ctx = browser.new_context(viewport={"width": 1440, "height": 900}, device_scale_factor=1)
|
|
page = ctx.new_page()
|
|
page.goto("http://localhost:4321/", wait_until="networkidle", timeout=60000)
|
|
page.wait_for_timeout(2800) # laat entrance-animatie settelen
|
|
|
|
set_slider(page, 50)
|
|
page.wait_for_timeout(300)
|
|
page.screenshot(path=os.path.join(OUT, "home-hero.png"))
|
|
print("OK home-hero.png")
|
|
|
|
set_slider(page, 22)
|
|
page.wait_for_timeout(300)
|
|
page.screenshot(path=os.path.join(OUT, "home-hero-before.png"))
|
|
print("OK home-hero-before.png")
|
|
|
|
# scroll voor lazy images + reveals, dan full page
|
|
height = page.evaluate("document.body.scrollHeight")
|
|
for y in range(0, height, 400):
|
|
page.evaluate(f"window.scrollTo(0, {y})")
|
|
page.wait_for_timeout(110)
|
|
page.evaluate("window.scrollTo(0, 0)")
|
|
page.wait_for_load_state("networkidle")
|
|
page.wait_for_timeout(1000)
|
|
page.screenshot(path=os.path.join(OUT, "home-full.png"), full_page=True)
|
|
print("OK home-full.png")
|
|
|
|
# mobile
|
|
m = browser.new_context(viewport={"width": 390, "height": 844}, device_scale_factor=2)
|
|
mp = m.new_page()
|
|
mp.goto("http://localhost:4321/", wait_until="networkidle", timeout=60000)
|
|
mp.wait_for_timeout(2800)
|
|
mp.screenshot(path=os.path.join(OUT, "home-mobile.png"))
|
|
print("OK home-mobile.png")
|
|
|
|
browser.close()
|