#!/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())