#!/usr/bin/env python3
from __future__ import annotations
import re, subprocess
from pathlib import Path
from weasyprint import HTML
ROOT=Path(__file__).resolve().parents[1]
QA=ROOT/'qa_screenshots'; QA.mkdir(exist_ok=True)
source=(ROOT/'preview.html').read_text(encoding='utf-8')
# Strip scripts so WeasyPrint gets static DOM only.
source=re.sub(r'<script[^>]*>.*?</script>','',source,flags=re.S|re.I)
# Activate test center screen and nav item in static DOM.
source=source.replace('<body>','<body data-screen="testCenterScreen" class="screen-testcenter">')
source=source.replace('<section id="startScreen" class="screen active', '<section id="startScreen" class="screen')
source=source.replace('<section id="testCenterScreen" class="screen ', '<section id="testCenterScreen" class="screen active ')
source=source.replace('data-target="testCenterScreen" onclick="showTestCenter();return false;"', 'data-target="testCenterScreen" class="active" onclick="showTestCenter();return false;"')
# Add page sizing override.
def render(name,w,h):
    html=source.replace('</head>',f'<style>@page{{size:{w}px {h}px;margin:0}} html,body{{width:{w}px;min-height:{h}px;}} .screen:not(.active){{display:none!important}}</style></head>')
    p=QA/f'rc52_{name}_app_static.html'; pdf=QA/f'rc52_{name}_app_static.pdf'; base=QA/f'rc52_{name}_app_static'
    p.write_text(html,encoding='utf-8')
    HTML(filename=str(p),base_url=str(ROOT)).write_pdf(str(pdf))
    subprocess.run(['pdftoppm','-png','-singlefile','-r','120',str(pdf),str(base)],check=True)
for name,w,h in [('mobile',390,844),('ipad',820,1180),('desktop',1180,820)]: render(name,w,h)
print(QA)
