"""WEVIA Master UI test · selector #input + #sendBtn confirmés""" import time, json from pathlib import Path from playwright.sync_api import sync_playwright TS = time.strftime("%Y%m%d-%H%M%S") OUT = Path(f"/var/www/html/test-report/wevia-ui-{TS}") OUT.mkdir(parents=True, exist_ok=True) results = {"ts": TS, "steps": [], "ui_tests": []} try: with sync_playwright() as p: browser = p.chromium.launch(headless=True, args=["--no-sandbox"]) ctx = browser.new_context( viewport={"width":1500,"height":1100}, ignore_https_errors=True, record_video_dir=str(OUT), record_video_size={"width":1500,"height":1100} ) page = ctx.new_page() page.goto("https://weval-consulting.com/wevia-master.html", wait_until="networkidle", timeout=25000) time.sleep(4) page.screenshot(path=str(OUT/"01-opened.png"), full_page=True) # Wait for input ready page.wait_for_selector("#input", timeout=10000) results["steps"].append({"step":"input_ready", "ok":True}) # Test questions Yacine non-tech test_msgs = [ ("truth", "wevia truth"), ("count", "combien d'agents"), ("multi", "agis en multiagent 5 agents") ] for label, msg in test_msgs: try: page.fill("#input", msg) time.sleep(0.5) page.click("#sendBtn") wait_s = 22 if "multiagent" in msg else 10 time.sleep(wait_s) page.screenshot(path=str(OUT/f"02-{label}.png"), full_page=True) # Try to find response text msgs_text = page.evaluate("document.getElementById('msgs')?.innerText || ''") results["ui_tests"].append({ "label": label, "msg": msg, "msgs_len": len(msgs_text), "preview": msgs_text[-500:] if msgs_text else "" }) print(f" ✓ {label}: msgs_len={len(msgs_text)}") time.sleep(2) except Exception as e: results["ui_tests"].append({"label": label, "err": str(e)}) print(f" ✗ {label}: {e}") ctx.close() browser.close() videos = list(OUT.glob("*.webm")) results["video"] = videos[0].name if videos else None results["screenshots"] = [p.name for p in OUT.glob("*.png")] with open(OUT/"results.json","w") as f: json.dump(results, f, indent=2) print(json.dumps({k: v for k,v in results.items() if k != "ui_tests"}, indent=2, default=str)[:1000]) for t in results["ui_tests"]: print(f" [{t.get('label')}] msgs_len={t.get('msgs_len')} preview[-150]={t.get('preview','')[-150:]}") except Exception as e: print(f"err: {e}")