Files
rpa_vision_v3/visual_workflow_builder/test_real_demo.py
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

290 lines
8.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Test de la Démonstration Réellele
Auteur : Dom, Alice, Kiro - 7 janvier 2026
Script de test pour vérifier que le système de démonstration réelle fonctionne correctement.
Utis.
"
import sys
import time
import requsts
import json
rocess
import os
from path
from typing import Dict, Any, Optiont
# Import des composants réels du système
sys.)
try:
from core
from core.detection.ui_detector import UIDetector
from core.execution.action_executor import ActionExecr
fdge
CORE_AVAILABe
exce
print(f"⚠️ Composants core non dispo{e}")
CORE_AVAe = FalsLABLEInibles: rror as e:pt ImportELE = TruiceionServonIntegratort Executigration impecution_inteices.exnd.servuilder.backeflow_brksual_wom virof, WorkflowEorkflowNodet Wporaph im.workflow_grre.models coromutoapturerport ScreenCurer imaptscreen_ce.tur.capnt.parent)).pareath(__file__str(Ph.insert(0, patal, Lisimport Paib thlort subpimp
def test_demo_server():
"""
Test du serveur de démonstration
"""
print("🧪 Test du serveur de démonstration...")
base_url = "http://localhost:5003/api/demo"
tests = [
("Éléments UI", f"{base_url}/elements", "GET"),
("Capture d'écran", f"{base_url}/screen", "GET"),
]
results = []
for test_name, url, method in tests:
try:
if method == "GET":
response = requests.get(url, timeout=5)
if response.status_code == 200:
print(f"{test_name}: OK")
results.append(True)
else:
print(f"{test_name}: Erreur {response.status_code}")
results.append(False)
except requests.exceptions.RequestException as e:
print(f"{test_name}: Connexion impossible - {e}")
results.append(False)
return all(results)
def test_action_execution():
"""
Test d'exécution d'action
"""
print("🧪 Test d'exécution d'action...")
url = "http://localhost:5003/api/demo/execute"
# Test d'un clic simple
action_data = {
"type": "click",
"target": {"x": 100, "y": 100}
}
try:
response = requests.post(
url,
json=action_data,
headers={"Content-Type": "application/json"},
timeout=5
)
if response.status_code == 200:
result = response.json()
if result.get("success"):
print("✅ Exécution d'action: OK")
return True
else:
print(f"❌ Exécution d'action: {result.get('message')}")
return False
else:
print(f"❌ Exécution d'action: Erreur {response.status_code}")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Exécution d'action: Connexion impossible - {e}")
return False
def test_workflow_execution():
"""
Test d'exécution de workflow
"""
print("🧪 Test d'exécution de workflow...")
url = "http://localhost:5003/api/demo/workflow/execute"
# Workflow de test simple
workflow_data = {
"id": "test_workflow",
"steps": [
{
"type": "wait",
"duration": 0.5
},
{
"type": "click",
"target": {"x": 50, "y": 50}
}
]
}
try:
response = requests.post(
url,
json=workflow_data,
headers={"Content-Type": "application/json"},
timeout=10
)
if response.status_code == 200:
result = response.json()
if result.get("success"):
steps_executed = result.get("steps_executed", 0)
print(f"✅ Exécution de workflow: OK ({steps_executed} étapes)")
return True
else:
print(f"❌ Exécution de workflow: {result.get('message')}")
return False
else:
print(f"❌ Exécution de workflow: Erreur {response.status_code}")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Exécution de workflow: Connexion impossible - {e}")
return False
def test_backend_api():
"""
Test de l'API backend
"""
print("🧪 Test de l'API backend...")
base_url = "http://localhost:5002/api"
tests = [
("Workflows", f"{base_url}/workflows", "GET"),
]
results = []
for test_name, url, method in tests:
try:
if method == "GET":
response = requests.get(url, timeout=5)
if response.status_code in [200, 404]: # 404 est OK si pas de workflows
print(f"{test_name}: OK")
results.append(True)
else:
print(f"{test_name}: Erreur {response.status_code}")
results.append(False)
except requests.exceptions.RequestException as e:
print(f"{test_name}: Connexion impossible - {e}")
results.append(False)
return all(results)
def test_frontend():
"""
Test du frontend
"""
print("🧪 Test du frontend...")
try:
response = requests.get("http://localhost:3000", timeout=5)
if response.status_code == 200:
print("✅ Frontend: OK")
return True
else:
print(f"❌ Frontend: Erreur {response.status_code}")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Frontend: Connexion impossible - {e}")
return False
def test_data_files():
"""
Test des fichiers de données
"""
print("🧪 Test des fichiers de données...")
demo_path = Path("data/demo")
if not demo_path.exists():
print("❌ Dossier data/demo n'existe pas")
return False
# Vérifier les fichiers générés
files_to_check = [
"current_screen.png",
"current_elements.json"
]
results = []
for filename in files_to_check:
file_path = demo_path / filename
if file_path.exists():
print(f"{filename}: Trouvé")
results.append(True)
else:
print(f"⚠️ {filename}: Non trouvé (normal si pas encore généré)")
results.append(True) # Pas critique
return all(results)
def main():
"""
Exécute tous les tests
"""
print("🎭 Test de la Démonstration Réelle du Visual Workflow Builder")
print("=" * 70)
tests = [
("Services Backend", test_backend_api),
("Serveur de Démonstration", test_demo_server),
("Frontend React", test_frontend),
("Fichiers de Données", test_data_files),
("Exécution d'Actions", test_action_execution),
("Exécution de Workflows", test_workflow_execution),
]
results = []
for test_name, test_func in tests:
print(f"\n📋 {test_name}")
print("-" * 40)
try:
result = test_func()
results.append((test_name, result))
except Exception as e:
print(f"❌ Erreur inattendue: {e}")
results.append((test_name, False))
# Résumé des résultats
print("\n" + "=" * 70)
print("📊 RÉSUMÉ DES TESTS")
print("=" * 70)
passed = 0
total = len(results)
for test_name, result in results:
status = "✅ RÉUSSI" if result else "❌ ÉCHEC"
print(f"{test_name:.<40} {status}")
if result:
passed += 1
print("-" * 70)
print(f"Total: {passed}/{total} tests réussis")
if passed == total:
print("\n🎉 Tous les tests sont réussis ! La démonstration est prête.")
return 0
else:
print(f"\n⚠️ {total - passed} test(s) ont échoué. Vérifiez la configuration.")
return 1
if __name__ == "__main__":
sys.exit(main())