Files
html/api/l99-deep-test.py
2026-04-12 22:57:03 +02:00

115 lines
4.3 KiB
Python
Executable File

#!/usr/bin/env python3
import json, time, os
from playwright.sync_api import sync_playwright
results = {'pages':[],'buttons':[],'apis':[],'sso':[],'errors':[]}
with sync_playwright() as p:
b = p.chromium.launch(headless=True)
ctx = b.new_context(record_video_dir='/tmp/pw-deep/', viewport={'width':1920,'height':1080})
pg = ctx.new_page()
errs = []
pg.on('pageerror', lambda e: errs.append(str(e)[:80]))
# TEST ALL KEY PAGES
pages = {
'l99-brain': {'click':'.sug','expect_msgs':True},
'wevia-master': {'check_cards':True},
'sovereign-claude': {},
'claw-chat': {},
'openclaw': {},
'wevcode': {},
'l99-saas': {},
'enterprise-model': {'check_agents':True},
'wevia-meeting-rooms': {'check_rooms':True},
'wevia-console': {},
'wevia-cortex': {},
'ai-benchmark': {'check_leaderboard':True},
'admin': {'check_buttons':True},
'oss-discovery': {},
'realtime-monitor-v3': {},
}
for name, opts in pages.items():
try:
errs.clear()
pg.goto(f'https://weval-consulting.com/{name}.html', wait_until='domcontentloaded', timeout=10000)
time.sleep(1.5)
je = len(errs)
title = pg.title()[:40]
body = len(pg.content())
r = {'name':name,'title':title,'js_errors':je,'body_size':body,'status':'PASS'}
# Click test
if opts.get('click'):
sel = opts['click']
cnt = pg.locator(sel).count()
r['buttons'] = cnt
if cnt > 0:
pg.locator(sel).first.click()
time.sleep(5)
if opts.get('expect_msgs'):
msgs = pg.locator('.msg').count()
r['msgs_after_click'] = msgs
r['click_works'] = msgs > 0
# Enterprise agents
if opts.get('check_agents'):
ag = pg.evaluate('() => typeof AG !== "undefined" ? AG.length : 0')
r['agents'] = ag
# Meeting rooms
if opts.get('check_rooms'):
rooms = pg.evaluate('() => typeof rooms !== "undefined" ? rooms.length : (typeof RM !== "undefined" ? RM.length : 0)')
r['rooms'] = rooms
# AI Benchmark leaderboard
if opts.get('check_leaderboard'):
has_err = pg.locator('text=TypeError').count()
has_obj = pg.locator('text=[object Object]').count()
r['leaderboard_clean'] = has_err == 0 and has_obj == 0
# Admin buttons
if opts.get('check_buttons'):
btns = pg.locator('button').count()
r['total_buttons'] = btns
# Check cards (WEVIA Master)
if opts.get('check_cards'):
cards = pg.locator('.card, [class*=card]').count()
r['cards'] = cards
if je > 0:
r['status'] = 'WARN'
r['errors'] = [e[:60] for e in errs[:3]]
results['pages'].append(r)
pg.screenshot(path=f'/tmp/pw-deep/ss-{name}.png')
except Exception as e:
results['pages'].append({'name':name,'status':'FAIL','error':str(e)[:60]})
ctx.close()
b.close()
# Summary
p = sum(1 for x in results['pages'] if x['status'] in ('PASS','WARN'))
f = sum(1 for x in results['pages'] if x['status'] == 'FAIL')
w = sum(1 for x in results['pages'] if x['status'] == 'WARN')
total = len(results['pages'])
print(f'DEEP TEST: {p}/{total} PASS | {w} WARN | {f} FAIL')
for r in results['pages']:
s = '' if r['status']=='PASS' else '⚠️' if r['status']=='WARN' else ''
extras = []
if 'buttons' in r: extras.append(f"{r['buttons']}btns")
if 'msgs_after_click' in r: extras.append(f"{r['msgs_after_click']}msgs")
if 'agents' in r: extras.append(f"{r['agents']}ag")
if 'leaderboard_clean' in r: extras.append('LB:'+('clean' if r['leaderboard_clean'] else 'DIRTY'))
if 'total_buttons' in r: extras.append(f"{r['total_buttons']}btns")
ex = ' | '.join(extras)
print(f" {s} {r['name']}: {r.get('js_errors',0)}err {r.get('body_size',0)//1024}KB {ex}")
with open('/var/www/html/api/l99-deep-test.json','w') as f:
json.dump(results, f, indent=2)