#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""渲染 集团维度_增减归因.html → PNG（宽 1440），并取验收证据：
  外部请求数（须为 0）、SVG 节点数（须 >0）。
用法：env -u PYTHONPATH /usr/bin/python3 脚本/render_集团维度_增减归因.py
"""
import os
import sys
from playwright.sync_api import sync_playwright

ROOT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类'
HTML = 'file://' + os.path.join(ROOT, '销售分析', '_集团维度_增减归因.html')
PNG = os.path.join(ROOT, '销售分析', '集团维度_增减归因.png')

ext = []


def main():
    with sync_playwright() as p:
        b = p.chromium.launch(channel='chrome')
        pg = b.new_page(viewport={'width': 1440, 'height': 1000}, device_scale_factor=1)
        pg.on('request', lambda r: ext.append(r.url) if not r.url.startswith('file://') else None)
        pg.goto(HTML, wait_until='networkidle')
        svg_nodes = pg.evaluate("document.querySelectorAll('svg *').length")
        titles = pg.evaluate("document.querySelectorAll('title').length")
        brs = pg.evaluate("document.querySelectorAll('br').length")
        box = pg.evaluate("({w:document.documentElement.scrollWidth,h:document.documentElement.scrollHeight})")
        pg.screenshot(path=PNG, full_page=True)
        b.close()
    print('外部请求数 =', len(ext), ext[:5])
    print('SVG 节点数 =', svg_nodes)
    print('<title> 数 =', titles, ' <br> 数 =', brs)
    print('页面内容尺寸 =', box)
    print('✅ →', PNG)
    assert len(ext) == 0, '存在外部请求'
    assert svg_nodes > 0, 'SVG 为空'
    assert titles == 0 and brs == 0, '含 <title>/<br>'


if __name__ == '__main__':
    main()
