73 lines
2.8 KiB
Python
73 lines
2.8 KiB
Python
"""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}")
|