- 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>
172 lines
6.0 KiB
Python
Executable File
172 lines
6.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Test des nouvelles fonctionnalités - Visual Workflow Builder
|
|
|
|
1. Prévisualisation de l'élément sélectionné dans les propriétés
|
|
2. Nœud "Validation (Enter)" dans la palette
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
import sys
|
|
import time
|
|
|
|
def test_backend_health():
|
|
"""Test de santé du backend"""
|
|
print("🔍 Test de santé du backend...")
|
|
|
|
try:
|
|
response = requests.get('http://localhost:5002/health', timeout=5)
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ Backend en bonne santé: {data['status']}")
|
|
return True
|
|
else:
|
|
print(f"❌ Backend pas en bonne santé: {response.status_code}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ Backend inaccessible: {e}")
|
|
return False
|
|
|
|
def test_frontend_access():
|
|
"""Test d'accès au frontend"""
|
|
print("🔍 Test d'accès au frontend...")
|
|
|
|
try:
|
|
response = requests.get('http://localhost:3000', timeout=5)
|
|
|
|
if response.status_code == 200:
|
|
print("✅ Frontend accessible")
|
|
return True
|
|
else:
|
|
print(f"❌ Frontend inaccessible: {response.status_code}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ Frontend inaccessible: {e}")
|
|
return False
|
|
|
|
def test_screen_capture_api():
|
|
"""Test de l'API de capture d'écran"""
|
|
print("🔍 Test de l'API de capture d'écran...")
|
|
|
|
try:
|
|
response = requests.post(
|
|
'http://localhost:5002/api/screen-capture/capture',
|
|
headers={'Content-Type': 'application/json'},
|
|
json={},
|
|
timeout=10
|
|
)
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"✅ Capture d'écran fonctionnelle: {data['width']}x{data['height']}")
|
|
return True
|
|
else:
|
|
print(f"❌ Erreur capture: {response.status_code}")
|
|
return False
|
|
|
|
except Exception as e:
|
|
print(f"❌ Exception lors de la capture: {e}")
|
|
return False
|
|
|
|
def print_test_instructions():
|
|
"""Affiche les instructions de test manuel"""
|
|
print("\n" + "="*60)
|
|
print("📋 INSTRUCTIONS DE TEST MANUEL")
|
|
print("="*60)
|
|
|
|
print("\n🎯 Test 1: Prévisualisation de l'élément sélectionné")
|
|
print("1. Ouvrez http://localhost:3000 dans votre navigateur")
|
|
print("2. Créez un nouveau workflow")
|
|
print("3. Glissez un nœud 'Cliquer' sur le canvas")
|
|
print("4. Double-cliquez sur le nœud pour ouvrir les propriétés")
|
|
print("5. Cliquez sur 'Sélection visuelle' pour l'élément cible")
|
|
print("6. Choisissez 'Capturer Application Externe'")
|
|
print("7. Pendant le countdown, positionnez-vous sur une application")
|
|
print("8. Cliquez sur un élément dans la capture")
|
|
print("9. Confirmez la sélection")
|
|
print("10. ✅ VÉRIFIEZ: Une prévisualisation de l'élément apparaît dans les propriétés")
|
|
|
|
print("\n🎯 Test 2: Nœud Validation (Enter)")
|
|
print("1. Dans la palette de gauche, section 'Actions Web'")
|
|
print("2. ✅ VÉRIFIEZ: Le nœud 'Valider (Enter)' est présent avec une icône ↵")
|
|
print("3. Glissez le nœud 'Valider (Enter)' sur le canvas")
|
|
print("4. ✅ VÉRIFIEZ: Le nœud s'affiche avec l'icône Enter et la couleur verte")
|
|
print("5. Double-cliquez sur le nœud pour ouvrir les propriétés")
|
|
print("6. ✅ VÉRIFIEZ: Les paramètres 'Élément cible' et 'Timeout' sont disponibles")
|
|
|
|
print("\n🎯 Test 3: Workflow complet avec validation")
|
|
print("1. Créez un workflow avec cette séquence :")
|
|
print(" - Nœud 'Saisir du texte' (pour remplir un champ)")
|
|
print(" - Nœud 'Valider (Enter)' (pour valider la saisie)")
|
|
print(" - Nœud 'Cliquer' (pour cliquer sur un bouton)")
|
|
print("2. Connectez les nœuds avec des flèches")
|
|
print("3. ✅ VÉRIFIEZ: Le workflow se construit correctement")
|
|
print("4. Sauvegardez le workflow")
|
|
print("5. ✅ VÉRIFIEZ: Le workflow se sauvegarde avec le nœud validation")
|
|
|
|
def print_expected_results():
|
|
"""Affiche les résultats attendus"""
|
|
print("\n" + "="*60)
|
|
print("🎯 RÉSULTATS ATTENDUS")
|
|
print("="*60)
|
|
|
|
print("\n✅ Prévisualisation de l'élément :")
|
|
print(" - Image miniature de l'élément sélectionné")
|
|
print(" - Informations : Type, Position, Taille")
|
|
print(" - Affichage dans le panneau des propriétés")
|
|
print(" - Bordure verte autour de l'élément dans l'image")
|
|
|
|
print("\n✅ Nœud Validation :")
|
|
print(" - Présent dans la palette 'Actions Web'")
|
|
print(" - Icône : ↵ (KeyboardReturn)")
|
|
print(" - Couleur : Vert (#2e7d32)")
|
|
print(" - Paramètres : Élément cible (optionnel), Timeout")
|
|
|
|
print("\n✅ Intégration :")
|
|
print(" - Drag & drop fonctionnel")
|
|
print(" - Propriétés configurables")
|
|
print(" - Connexions avec autres nœuds")
|
|
print(" - Sauvegarde/chargement de workflow")
|
|
|
|
def main():
|
|
"""Fonction principale de test"""
|
|
print("🚀 Test des Nouvelles Fonctionnalités - Visual Workflow Builder")
|
|
print("=" * 70)
|
|
|
|
# Tests automatiques
|
|
tests = [
|
|
test_backend_health,
|
|
test_frontend_access,
|
|
test_screen_capture_api
|
|
]
|
|
|
|
passed = 0
|
|
total = len(tests)
|
|
|
|
for test in tests:
|
|
if test():
|
|
passed += 1
|
|
|
|
print(f"\n📊 Tests automatiques : {passed}/{total} réussis")
|
|
|
|
if passed == total:
|
|
print("🎉 Tous les tests automatiques sont passés !")
|
|
print_test_instructions()
|
|
print_expected_results()
|
|
|
|
print("\n" + "="*60)
|
|
print("🚀 PRÊT POUR LES TESTS MANUELS")
|
|
print("="*60)
|
|
print("L'application est prête. Suivez les instructions ci-dessus.")
|
|
return 0
|
|
else:
|
|
print("❌ Certains tests automatiques ont échoué.")
|
|
print(" Assurez-vous que l'application est démarrée avec ./start_full.sh")
|
|
return 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |