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>
This commit is contained in:
188
test_frontend_final_08jan2026.py
Normal file
188
test_frontend_final_08jan2026.py
Normal file
@@ -0,0 +1,188 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user