You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.6 KiB
39 lines
1.6 KiB
# -*- coding: utf-8 -*-
|
|
"""验证 demo/index.html(file:// 双击打开)加载时 console/page 错误与失败请求。"""
|
|
import io
|
|
import sys
|
|
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
URL = 'file:///D:/code/crm-backend-matt/.scratch/opportunity-e2e/demo/index.html'
|
|
SHOT = r'D:\code\crm-backend-matt\.scratch\opportunity-e2e\verify-demo-open.png'
|
|
|
|
console_msgs, page_errors, failed = [], [], []
|
|
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
page = browser.new_page()
|
|
page.on('console', lambda m: console_msgs.append((m.type, m.text))
|
|
if m.type in ('error', 'warning') else None)
|
|
page.on('pageerror', lambda e: page_errors.append(str(e)))
|
|
page.on('requestfailed', lambda r: failed.append(
|
|
(r.url, (r.failure or '?') if isinstance(r.failure, str) else (r.failure and r.failure.get('errorText')) or '?')))
|
|
page.on('response', lambda r: failed.append((r.url, 'HTTP %d' % r.status))
|
|
if r.status >= 400 else None)
|
|
page.goto(URL)
|
|
page.wait_for_load_state('networkidle')
|
|
page.wait_for_timeout(2500)
|
|
page.screenshot(path=SHOT, full_page=False)
|
|
browser.close()
|
|
|
|
print('== console error/warning:', len(console_msgs))
|
|
for t, x in console_msgs[:20]:
|
|
print(' [%s] %s' % (t, x[:300]))
|
|
print('== page errors:', len(page_errors))
|
|
for e in page_errors[:10]:
|
|
print(' ', e[:300])
|
|
print('== failed requests (>=400 或网络失败):', len(failed))
|
|
for u, f in failed[:20]:
|
|
print(' ', f, '←', u[:200])
|
|
print('截图:', SHOT)
|
|
|