import asyncio,json,time
from pathlib import Path
from playwright.async_api import async_playwright
async def main():
 async with async_playwright() as p:
  browser=await p.chromium.launch(headless=True,args=['--no-sandbox','--use-angle=swiftshader','--enable-unsafe-swiftshader'])
  page=await browser.new_page(viewport={'width':1920,'height':1080},device_scale_factor=1)
  errors=[];page.on('pageerror',lambda e:errors.append(str(e)))
  await page.goto('http://127.0.0.1:18766/viewer/')
  await page.wait_for_function('window.__KIT_QA__?.ready',timeout=90000)
  results={}
  for view in ['all','window_tall','balcony_steel','planter_concrete','assembly','joints','shelf']:
   await page.evaluate('(v)=>window.kitView(v)',view);await page.wait_for_timeout(800);await page.screenshot(path='runtime_'+view+'.png');results[view]=await page.evaluate('window.kitMetrics()')
  qa=await page.evaluate('window.__KIT_QA__');qa.update(errors=errors,views=results,backend_note='Chromium SwiftShader software WebGL; counters are measured, frame time is not a hardware benchmark.')
  Path('runtime_check.json').write_text(json.dumps(qa,indent=2));print(json.dumps(qa));await browser.close()
asyncio.run(main())
