Files
weval-l99/orchestrator-e2e.py
2026-04-16 17:03:20 +02:00

167 lines
6.4 KiB
Python

#!/usr/bin/env python3
"""
Playwright E2E Test — WEVIA Orchestrator
Tests: page load, stats, agents, tools, sidebar, execute, API
"""
import subprocess, json, sys, time
results = []
def test(name, cmd, check):
try:
r = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=20)
out = r.stdout.strip()
ok = check(out)
results.append({"name": name, "status": "PASS" if ok else "FAIL", "detail": out[:60]})
print(f" {'PASS' if ok else 'FAIL'}: {name}")
return ok
except Exception as e:
results.append({"name": name, "status": "FAIL", "detail": str(e)[:60]})
print(f" FAIL: {name} -> {e}")
return False
print("WEVIA ORCHESTRATOR — PLAYWRIGHT E2E TEST")
print("=" * 50)
# --- SECTION 1: PAGE LOAD ---
print("\n[1] PAGE LOAD")
test("page_status_200",
"curl -sf -o /dev/null -w '%{http_code}' 'https://weval-consulting.com/wevia-orchestrator.html'",
lambda o: o == "200")
test("page_has_godmode",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'GODMODE'",
lambda o: int(o) >= 1)
test("page_has_orchestrator_title",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'WEVIA ORCHESTRATOR'",
lambda o: int(o) >= 1)
# --- SECTION 2: STATS HEADER ---
print("\n[2] STATS HEADER")
test("stat_agents_present",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'st-agents'",
lambda o: int(o) >= 1)
test("stat_tools_present",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'st-tools'",
lambda o: int(o) >= 1)
test("stat_hcps_141K",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c '141K'",
lambda o: int(o) >= 1)
test("stat_nonreg_152",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c '152'",
lambda o: int(o) >= 1)
test("stat_fastpath_31",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c '31/31'",
lambda o: int(o) >= 1)
# --- SECTION 3: API ORCHESTRATOR ---
print("\n[3] API ORCHESTRATOR")
test("api_returns_json",
"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php'",
lambda o: '"ok":true' in o or '"ok": true' in o)
test("api_24_realtime_agents",
"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php'",
lambda o: '"realtime":24' in o.replace(' ',''))
test("api_407_tools",
"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php'",
lambda o: any(str(n) in o for n in range(400, 500)))
test("api_blade_agent_exists",
"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php'",
lambda o: 'blade_agent' in o.lower() or 'Blade' in o)
test("api_141K_hcps",
"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php'",
lambda o: '141K' in o)
# --- SECTION 4: SIDEBAR SERVICES ---
print("\n[4] SIDEBAR SERVICES")
test("sidebar_searxng",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'SearXNG'",
lambda o: int(o) >= 1)
test("sidebar_qdrant",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Qdrant'",
lambda o: int(o) >= 1)
test("sidebar_gitea",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Gitea'",
lambda o: int(o) >= 1)
test("sidebar_dynamic_resolver",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Dynamic Resolver'",
lambda o: int(o) >= 1)
test("sidebar_sentinel_s95",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Sentinel'",
lambda o: int(o) >= 1)
test("sidebar_ethica_hcp",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Ethica HCP'",
lambda o: int(o) >= 1)
test("sidebar_email_pipeline",
"curl -sf 'https://weval-consulting.com/wevia-orchestrator.html' | grep -c 'Email Pipeline'",
lambda o: int(o) >= 1)
# --- SECTION 5: AGENTS LIST ---
print("\n[5] AGENTS LIST")
for agent in ["Infra", "Sovereign", "NonReg", "Ethica", "Git", "Docker", "Blade", "DeerFlow", "Paperclip", "L99"]:
test(f"agent_{agent.lower()}_present",
f"curl -sf 'https://weval-consulting.com/api/orchestrator-agents.php' | grep -c '{agent}'",
lambda o: int(o) >= 1)
# --- SECTION 6: MULTIAGENT EXECUTION ---
print("\n[6] MULTIAGENT EXECUTION")
test("execute_ping",
"curl -sf -X POST 'https://weval-consulting.com/api/wevia-master-api.php' -H 'Content-Type: application/json' -d '{\"message\":\"ping\"}'",
lambda o: 'S95' in o or 'Groq' in o)
test("execute_nonreg",
"curl -sf -X POST 'https://weval-consulting.com/api/wevia-master-api.php' -H 'Content-Type: application/json' -d '{\"message\":\"nonreg\"}'",
lambda o: '152' in o or '153' in o or '154' in o or 'NONREG' in o)
test("execute_ethica",
"curl -sf -X POST 'https://weval-consulting.com/api/wevia-master-api.php' -H 'Content-Type: application/json' -d '{\"message\":\"ethica\"}'",
lambda o: '141' in o)
test("execute_docker",
"curl -sf -X POST 'https://weval-consulting.com/api/wevia-master-api.php' -H 'Content-Type: application/json' -d '{\"message\":\"docker\"}'",
lambda o: 'redis' in o.lower() or 'langfuse' in o.lower() or '"ok":true' in o.replace(' ','') or 'docker' in o.lower())
test("execute_send_status",
"curl -sf -X POST 'https://weval-consulting.com/api/wevia-master-api.php' -H 'Content-Type: application/json' -d '{\"message\":\"send status\"}'",
lambda o: 'PMTA' in o or 'brain' in o.lower())
# --- SECTION 7: CAPABILITIES ---
print("\n[7] CAPABILITIES")
test("capability_cx_endpoint",
"curl -sf -X POST 'https://weval-consulting.com/api/cx' -d 'k=WEVADS2026&c=ZWNobyBPSw==' | head -1",
lambda o: 'OK' in o)
test("capability_consent_api",
"curl -sf 'https://consent.wevup.app/api/ethica-consent-api.php?action=stats'",
lambda o: 'optin' in o)
test("capability_feed_api",
"curl -sf 'https://weval-consulting.com/api/ethica-feed-api.php'",
lambda o: '"feed"' in o and '"msg"' in o)
# --- SUMMARY ---
passed = sum(1 for r in results if r["status"] == "PASS")
total = len(results)
pct = round(passed/total*100) if total else 0
print(f"\n{'='*50}")
print(f"ORCHESTRATOR E2E: {passed}/{total} ({pct}%)")
print(f"{'='*50}")
json.dump({"ts": __import__("datetime").datetime.now().isoformat(), "tests": results, "pass": passed, "total": total, "pct": pct},
open("/opt/weval-l99/orchestrator-e2e-results.json", "w"), indent=2)