#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""HTML 报告渲染验收（playwright）。用法：verify_intel_html.py <html路径>"""
import sys
from playwright.sync_api import sync_playwright

P = sys.argv[1]
out = []
with sync_playwright() as pw:
    b = pw.chromium.launch()
    for w, h, tag in ((1440, 900, 'desktop'), (390, 844, 'mobile')):
        pg = b.new_page(viewport={'width': w, 'height': h})
        errs = []
        pg.on('pageerror', lambda e: errs.append(str(e)))
        pg.on('console', lambda m: errs.append('console:%s' % m.text) if m.type == 'error' else None)
        pg.goto('file://' + P)
        pg.wait_for_timeout(1200)
        a_rows = pg.eval_on_selector_all('#aT tbody tr', 'els=>els.length')
        b_rows = pg.eval_on_selector_all('#bT tbody tr', 'els=>els.length')
        inputs = pg.eval_on_selector_all('.tools input', 'els=>els.length')
        overflow = pg.evaluate('document.documentElement.scrollWidth - document.documentElement.clientWidth')
        brand = pg.evaluate("!!document.querySelector('.bior-brand')||document.body.innerHTML.indexOf('守护生命健康')>=0")
        # 搜索功能测试（桌面端）
        search_ok = None
        if tag == 'desktop' and inputs:
            pg.fill('.tools input', '科华')
            pg.wait_for_timeout(500)
            search_ok = pg.eval_on_selector('#aT tbody', 'el=>el.innerText.indexOf("科华")>=0')
        out.append({'视口': tag, 'A行': a_rows, 'B行': b_rows, '搜索框': inputs,
                    '横向溢出px': overflow, '品牌': brand, '搜索命中': search_ok, 'JS错误': errs[:3]})
        pg.close()
    b.close()

ok = True
for r in out:
    print(r)
    if r['JS错误'] or r['横向溢出px'] > 2 or not r['品牌'] or r['A行'] == 0 or r['B行'] == 0:
        ok = False
print('\n验收:', '✅ 通过' if ok else '❌ 需修')
