Files
ozone-tech_owl_prime/scripts/qa_perf_before.py

32 lines
1.5 KiB
Python

from pathlib import Path
from playwright.sync_api import sync_playwright
import time, json
out = Path('docs/performance_physics_fix_screenshots/before')
out.mkdir(parents=True, exist_ok=True)
logs = []
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: logs.append({'type': m.type, 'text': m.text}))
page.on('pageerror', lambda e: logs.append({'type':'pageerror','text':str(e)}))
page.goto('https://arhipovdan.ru/?qa=perf-before', wait_until='networkidle')
page.wait_for_timeout(2000)
page.screenshot(path=str(out/'before_home.png'), full_page=True)
page.get_by_label('Play demo').click()
page.wait_for_timeout(3000)
page.screenshot(path=str(out/'before_play_running.png'), full_page=True)
page.wait_for_timeout(7000)
page.screenshot(path=str(out/'before_b_item_stopped_on_belt.png'), full_page=True)
metrics = page.evaluate('''() => {
const perf = performance.getEntriesByType('navigation')[0];
return {
domContentLoaded: perf ? perf.domContentLoadedEventEnd : null,
loadEvent: perf ? perf.loadEventEnd : null,
longTasks: performance.getEntriesByType('longtask').length,
};
}''')
(out/'before_console.json').write_text(json.dumps({'logs': logs, 'metrics': metrics}, ensure_ascii=False, indent=2))
print('LOGS', len(logs), 'ERRORS', sum(1 for l in logs if l['type']=='error'))
browser.close()