63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
import time
|
|
from pathlib import Path
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
out = Path('docs/final_physics_fix_screenshots/after')
|
|
out.mkdir(parents=True, exist_ok=True)
|
|
|
|
# (absolute_ms_from_play, filename)
|
|
TARGETS = [
|
|
(1300, '02_belt_sync_t0.png'),
|
|
(2300, '03_belt_sync_t1_delta_1m.png'),
|
|
(2600, '01_stl_box_on_belt.png'),
|
|
(3800, '10_no_overlay_overlap.png'),
|
|
(9500, '04_b_receiver_item_settled.png'),
|
|
(10500, '09_all_zones_physical.png'),
|
|
(26800, '05_chute_c_motion.png'),
|
|
(28900, '06_item_inside_c_cage.png'),
|
|
(46400, '07_chute_d_motion.png'),
|
|
(48500, '08_item_inside_d_cage.png'),
|
|
]
|
|
|
|
errs = []
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
page = browser.new_page(viewport={"width": 1440, "height": 900})
|
|
page.on('console', lambda m: errs.append(f"{m.type}: {m.text}") if m.type == 'error' else None)
|
|
page.on('pageerror', lambda e: errs.append(f"pageerror: {e}"))
|
|
page.goto('https://arhipovdan.ru/?qa=after', wait_until='networkidle')
|
|
page.wait_for_timeout(1500)
|
|
page.get_by_label('Play demo').click()
|
|
t0 = time.monotonic()
|
|
for abs_ms, name in TARGETS:
|
|
target_s = abs_ms / 1000.0
|
|
while True:
|
|
elapsed = time.monotonic() - t0
|
|
if elapsed >= target_s:
|
|
break
|
|
page.wait_for_timeout(int(min(200, (target_s - elapsed) * 1000)))
|
|
page.screenshot(path=str(out / name))
|
|
print(f"captured {name} at ~{int((time.monotonic()-t0)*1000)}ms")
|
|
browser.close()
|
|
|
|
# Mobile + details in a fresh context
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
m = browser.new_page(viewport={"width": 390, "height": 844})
|
|
m.on('console', lambda msg: errs.append(f"mobile {msg.type}: {msg.text}") if msg.type == 'error' else None)
|
|
m.goto('https://arhipovdan.ru/', wait_until='networkidle')
|
|
m.wait_for_timeout(2500)
|
|
m.screenshot(path=str(out / '11_mobile.png'), full_page=True)
|
|
scroll_w = m.evaluate("document.documentElement.scrollWidth")
|
|
client_w = m.evaluate("document.documentElement.clientWidth")
|
|
print(f"MOBILE scrollWidth={scroll_w} clientWidth={client_w} horizontal_scroll={scroll_w > client_w}")
|
|
|
|
d = browser.new_page(viewport={"width": 1440, "height": 900})
|
|
d.on('console', lambda msg: errs.append(f"details {msg.type}: {msg.text}") if msg.type == 'error' else None)
|
|
d.goto('https://arhipovdan.ru/details', wait_until='networkidle')
|
|
d.wait_for_timeout(2000)
|
|
d.screenshot(path=str(out / '12_details.png'), full_page=False)
|
|
browser.close()
|
|
|
|
print("CONSOLE_ERRORS:" + ("\n".join(errs) if errs else "NONE"))
|