| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python3
- # 浏览器走查: 登录 → 5 页(dashboard/recordings/logs/reports/pipeline) → 0 pageerror/console.error 断言
- # 环境: 需要 playwright + chromium(宿主机/带 GUI 环境);纯 Docker/无浏览器环境请改用 check-online.mjs(零依赖 12 项断言)
- # 环境变量: PLAYWRIGHT_BASE_URL(默认 https://recording.sh-lami.com)、SMARTBADGE_USERNAME、SMARTBADGE_PASSWORD(均必填)
- import asyncio
- import os
- import sys
- try:
- from playwright.async_api import async_playwright
- except ImportError:
- print('playwright 未安装。浏览器走查需在宿主机执行: pip install playwright && playwright install chromium')
- print('Docker/无浏览器环境请跳过本脚本,使用: node scripts/check-online.mjs')
- sys.exit(8)
- BASE = os.environ.get('PLAYWRIGHT_BASE_URL', 'https://recording.sh-lami.com/')
- USER = os.environ.get('SMARTBADGE_USERNAME') or sys.exit('缺少 SMARTBADGE_USERNAME(环境变量),不再有内置默认值')
- PASS = os.environ.get('SMARTBADGE_PASSWORD') or sys.exit('缺少 SMARTBADGE_PASSWORD(环境变量),不再有内置默认值')
- errors = []
- async def main():
- async with async_playwright() as p:
- browser = await p.chromium.launch()
- page = await browser.new_page()
- page.on('pageerror', lambda e: errors.append(f'PAGEERROR: {e}'))
- page.on('console', lambda m: errors.append(f'CONSOLE[{m.type}]: {m.text}') if m.type in ('error', 'warning') else None)
- await page.goto(BASE + 'login', wait_until='networkidle')
- await page.fill('input >> nth=0', USER)
- await page.fill('input >> nth=1', PASS)
- await page.click('button:has-text("登录"), button:has-text("登 录")')
- await page.wait_for_timeout(3000)
- await page.goto(BASE + 'dashboard', wait_until='networkidle')
- await page.wait_for_timeout(4000)
- print('dashboard url:', page.url, 'title:', await page.title())
- for path in ['recordings', 'logs', 'reports', 'pipeline']:
- await page.goto(BASE + path, wait_until='networkidle')
- await page.wait_for_timeout(4000)
- print(path, 'rows:', await page.locator('table tbody tr, .ui-table tbody tr, [role="row"]').count())
- await browser.close()
- asyncio.run(main())
- print('--- 错误捕获 ---')
- print('\n'.join(errors) if errors else '0 errors')
- raise SystemExit(1 if errors else 0)
|