verify-online.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python3
  2. # 浏览器走查: 登录 → 5 页(dashboard/recordings/logs/reports/pipeline) → 0 pageerror/console.error 断言
  3. # 环境变量: PLAYWRIGHT_BASE_URL(默认 https://recording.sh-lami.com)、SMARTBADGE_USERNAME/PASSWORD(默认 lami123456)
  4. import asyncio
  5. import os
  6. from playwright.async_api import async_playwright
  7. BASE = os.environ.get('PLAYWRIGHT_BASE_URL', 'https://recording.sh-lami.com/')
  8. USER = os.environ.get('SMARTBADGE_USERNAME', 'lami123456')
  9. PASS = os.environ.get('SMARTBADGE_PASSWORD', 'lami123456')
  10. errors = []
  11. async def main():
  12. async with async_playwright() as p:
  13. browser = await p.chromium.launch()
  14. page = await browser.new_page()
  15. page.on('pageerror', lambda e: errors.append(f'PAGEERROR: {e}'))
  16. page.on('console', lambda m: errors.append(f'CONSOLE[{m.type}]: {m.text}') if m.type in ('error', 'warning') else None)
  17. await page.goto(BASE + 'login', wait_until='networkidle')
  18. await page.fill('input >> nth=0', USER)
  19. await page.fill('input >> nth=1', PASS)
  20. await page.click('button:has-text("登录"), button:has-text("登 录")')
  21. await page.wait_for_timeout(3000)
  22. await page.goto(BASE + 'dashboard', wait_until='networkidle')
  23. await page.wait_for_timeout(4000)
  24. print('dashboard url:', page.url, 'title:', await page.title())
  25. for path in ['recordings', 'logs', 'reports', 'pipeline']:
  26. await page.goto(BASE + path, wait_until='networkidle')
  27. await page.wait_for_timeout(4000)
  28. print(path, 'rows:', await page.locator('table tbody tr, .ui-table tbody tr, [role="row"]').count())
  29. await browser.close()
  30. asyncio.run(main())
  31. print('--- 错误捕获 ---')
  32. print('\n'.join(errors) if errors else '0 errors')
  33. raise SystemExit(1 if errors else 0)