#!/usr/bin/env python3 """ Test d'intégration - EnrichedScreenCapture dans Orchestrator Vérifie que l'intégration est correcte. """ import sys from pathlib import Path # Ajouter le répertoire parent au path sys.path.insert(0, str(Path(__file__).parent)) print("="*70) print("TEST D'INTÉGRATION - EnrichedScreenCapture dans Orchestrator") print("="*70) # Test 1: Vérifier que la configuration est correcte print("\n1. Test Configuration...") try: from geniusia2.core.config import get_config config = get_config() assert "ui_detection" in config, "ui_detection manquant dans config" assert "multimodal_embedding" in config, "multimodal_embedding manquant dans config" assert "enhanced_matcher" in config, "enhanced_matcher manquant dans config" print(f" ✓ Configuration UI Detection:") print(f" - Mode: {config['ui_detection']['mode']}") print(f" - Enabled: {config['ui_detection']['enabled']}") print(f" ✓ Configuration Multimodal Embedding:") print(f" - Enabled: {config['multimodal_embedding']['enabled']}") print(f" - Weights: {config['multimodal_embedding']['weights']}") print(f" ✓ Configuration Enhanced Matcher:") print(f" - Screen weight: {config['enhanced_matcher']['screen_weight']}") print(f" - Elements weight: {config['enhanced_matcher']['elements_weight']}") print(" ✅ Configuration OK") except Exception as e: print(f" ❌ Erreur configuration: {e}") sys.exit(1) # Test 2: Vérifier que les imports fonctionnent print("\n2. Test Imports...") try: from geniusia2.core.enriched_screen_capture import EnrichedScreenCapture print(" ✓ EnrichedScreenCapture importé") from geniusia2.core.multimodal_embedding_manager import MultiModalEmbeddingManager print(" ✓ MultiModalEmbeddingManager importé") from geniusia2.core.enhanced_workflow_matcher import EnhancedWorkflowMatcher print(" ✓ EnhancedWorkflowMatcher importé") from geniusia2.core.ui_element_models import EnrichedScreenState, UIElement print(" ✓ UI Element Models importés") print(" ✅ Imports OK") except Exception as e: print(f" ❌ Erreur imports: {e}") sys.exit(1) # Test 3: Vérifier que EnrichedScreenCapture peut être instancié print("\n3. Test Instanciation EnrichedScreenCapture...") try: from geniusia2.core.logger import Logger logger = Logger(log_dir="test_logs") # Test mode light capture_light = EnrichedScreenCapture( logger=logger, data_dir="test_data", mode="light" ) print(f" ✓ Mode light: {capture_light.get_mode()}") # Test mode enriched capture_enriched = EnrichedScreenCapture( logger=logger, data_dir="test_data", mode="enriched" ) print(f" ✓ Mode enriched: {capture_enriched.get_mode()}") # Test mode complete capture_complete = EnrichedScreenCapture( logger=logger, data_dir="test_data", mode="complete" ) print(f" ✓ Mode complete: {capture_complete.get_mode()}") print(" ✅ Instanciation OK") except Exception as e: print(f" ❌ Erreur instanciation: {e}") import traceback traceback.print_exc() sys.exit(1) # Test 4: Vérifier la structure de l'Orchestrator (sans l'instancier) print("\n4. Test Structure Orchestrator...") try: import inspect # On ne peut pas importer Orchestrator à cause des dépendances torch # Mais on peut vérifier que le fichier est syntaxiquement correct with open("geniusia2/core/orchestrator.py", "r") as f: content = f.read() # Vérifier que les imports sont présents assert "from .enriched_screen_capture import EnrichedScreenCapture" in content print(" ✓ Import EnrichedScreenCapture présent") # Vérifier que l'initialisation est présente assert "self.enriched_capture = EnrichedScreenCapture(" in content print(" ✓ Initialisation enriched_capture présente") # Vérifier que capture_and_enrich est utilisé assert "self.enriched_capture.capture_and_enrich(" in content print(" ✓ Utilisation de capture_and_enrich présente") print(" ✅ Structure Orchestrator OK") except Exception as e: print(f" ❌ Erreur structure: {e}") sys.exit(1) # Test 5: Vérifier que la configuration est chargée correctement print("\n5. Test Chargement Configuration...") try: config = get_config() # Vérifier les valeurs par défaut assert config["ui_detection"]["mode"] == "light" print(" ✓ Mode par défaut: light") assert config["ui_detection"]["enabled"] == True print(" ✓ UI Detection enabled par défaut") assert config["multimodal_embedding"]["enabled"] == False print(" ✓ Multimodal embedding disabled par défaut (activé en mode complete)") assert config["enhanced_matcher"]["enabled"] == True print(" ✓ Enhanced matcher enabled par défaut") print(" ✅ Configuration chargée correctement") except Exception as e: print(f" ❌ Erreur chargement config: {e}") sys.exit(1) # Nettoyage print("\n6. Nettoyage...") import shutil if Path("test_data").exists(): shutil.rmtree("test_data") if Path("test_logs").exists(): shutil.rmtree("test_logs") print(" ✓ Nettoyage terminé") # Résumé print("\n" + "="*70) print("✅ TOUS LES TESTS D'INTÉGRATION RÉUSSIS!") print("="*70) print("\nRésumé:") print(" ✓ Configuration ajoutée (ui_detection, multimodal_embedding, enhanced_matcher)") print(" ✓ EnrichedScreenCapture importé dans orchestrator.py") print(" ✓ enriched_capture initialisé dans Orchestrator.__init__") print(" ✓ capture_and_enrich utilisé dans find_matching_workflows_enhanced") print(" ✓ Tous les modes fonctionnent (light, enriched, complete)") print("\n🎉 L'intégration est complète et fonctionnelle!") print("\nProchaines étapes:") print(" 1. Tester avec l'application réelle") print(" 2. Activer le mode 'enriched' ou 'complete' dans config.py si besoin") print(" 3. Monitorer les logs pour vérifier le bon fonctionnement") sys.exit(0)