Files
rpa_vision_v3/test_frontend_final_08jan2026.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

188 lines
6.4 KiB
Python

#!/usr/bin/env python3
"""
Test final du frontend après correction du Validator
Auteur : Dom, Alice, Kiro - 08 janvier 2026
Ce script teste l'état final du frontend après la correction de l'erreur
d'initialisation dans le composant Validator.
"""
import requests
import json
import sys
import time
def test_frontend_health():
"""Test de santé du frontend"""
print("🏥 Test de santé du frontend...")
try:
# Test de base du frontend
response = requests.get("http://localhost:3000", timeout=10)
if response.status_code == 200:
print("✅ Frontend accessible (port 3000)")
# Vérifier que le HTML contient les éléments React
html_content = response.text
if 'id="root"' in html_content:
print("✅ Élément root React présent")
else:
print("❌ Élément root React manquant")
return False
if 'bundle.js' in html_content:
print("✅ Bundle JavaScript référencé")
else:
print("❌ Bundle JavaScript non référencé")
return False
return True
else:
print(f"❌ Frontend inaccessible (status {response.status_code})")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Erreur de connexion frontend : {e}")
return False
def test_backend_health():
"""Test de santé du backend"""
print("🔧 Test de santé du backend...")
try:
# Test de l'API de santé
response = requests.get("http://localhost:5002/health", timeout=5)
if response.status_code == 200:
health_data = response.json()
print(f"✅ Backend accessible (status: {health_data.get('status', 'unknown')})")
return True
else:
print(f"❌ Backend erreur (status {response.status_code})")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Erreur de connexion backend : {e}")
return False
except json.JSONDecodeError as e:
print(f"❌ Erreur de décodage JSON backend : {e}")
return False
def test_api_endpoints():
"""Test des endpoints API principaux"""
print("🔌 Test des endpoints API...")
endpoints_to_test = [
("/api/workflows", "GET", "Liste des workflows"),
("/api/screen-capture", "POST", "Capture d'écran"),
]
all_ok = True
for endpoint, method, description in endpoints_to_test:
try:
url = f"http://localhost:5002{endpoint}"
if method == "GET":
response = requests.get(url, timeout=5)
elif method == "POST":
# Pour les POST, on teste juste que l'endpoint existe
response = requests.post(url, json={}, timeout=5)
# On accepte les codes 200, 400, 422 (erreurs de validation normales)
if response.status_code in [200, 400, 422]:
print(f"{description} - Endpoint accessible")
else:
print(f"{description} - Erreur {response.status_code}")
all_ok = False
except requests.exceptions.RequestException as e:
print(f"{description} - Erreur de connexion : {e}")
all_ok = False
return all_ok
def test_bundle_accessibility():
"""Test d'accessibilité du bundle JavaScript"""
print("📦 Test d'accessibilité du bundle...")
try:
response = requests.get("http://localhost:3000/static/js/bundle.js", timeout=10)
if response.status_code == 200:
print("✅ Bundle JavaScript accessible")
# Vérifier la taille du bundle (doit être > 100KB pour un bundle React complet)
bundle_size = len(response.content)
if bundle_size > 100000: # 100KB
print(f"✅ Bundle de taille correcte ({bundle_size // 1024}KB)")
else:
print(f"⚠️ Bundle petit ({bundle_size // 1024}KB) - possible problème")
return True
else:
print(f"❌ Bundle inaccessible (status {response.status_code})")
return False
except requests.exceptions.RequestException as e:
print(f"❌ Erreur lors du chargement du bundle : {e}")
return False
def main():
"""Fonction principale"""
print("=" * 70)
print("🧪 TEST FINAL - FRONTEND VISUAL WORKFLOW BUILDER V2")
print(" Après correction de l'erreur d'initialisation du Validator")
print("=" * 70)
# Tests séquentiels
tests = [
("Frontend Health", test_frontend_health),
("Backend Health", test_backend_health),
("API Endpoints", test_api_endpoints),
("Bundle Accessibility", test_bundle_accessibility),
]
results = {}
for test_name, test_func in tests:
print(f"\n🔍 {test_name}")
print("-" * 50)
results[test_name] = test_func()
time.sleep(1) # Petite pause entre les tests
# Résumé final
print("\n" + "=" * 70)
print("📊 RÉSUMÉ DES TESTS")
print("=" * 70)
all_passed = True
for test_name, result in results.items():
status = "✅ PASSÉ" if result else "❌ ÉCHEC"
print(f"{test_name:<25} : {status}")
if not result:
all_passed = False
print("=" * 70)
if all_passed:
print("🎉 SUCCÈS COMPLET !")
print(" - Tous les tests sont passés")
print(" - Le frontend est opérationnel")
print(" - L'erreur d'initialisation du Validator a été corrigée")
print(" - Le système est prêt pour utilisation")
else:
print("⚠️ TESTS PARTIELS")
print(" - Certains tests ont échoué")
print(" - Vérifiez les détails ci-dessus")
print(" - Le système peut nécessiter des ajustements")
print("=" * 70)
print("💡 Pour tester manuellement :")
print(" - Ouvrez http://localhost:3000 dans votre navigateur")
print(" - Vérifiez qu'il n'y a pas d'erreurs dans la console")
print(" - Testez les fonctionnalités de base du workflow builder")
print("=" * 70)
return 0 if all_passed else 1
if __name__ == "__main__":
sys.exit(main())