#!/usr/bin/env python3 """ Test de l'API de documentation du Visual Workflow Builder """ import requests import json import sys def test_documentation_api(): """Test de l'API de documentation""" try: print("🚀 Test de l'API de documentation...") # Test 1: VĂ©rifier que l'application frontend est accessible print("\nđŸ“± Test 1: VĂ©rification de l'accĂšs au frontend...") try: response = requests.get("http://localhost:3000", timeout=5) if response.status_code == 200: print("✅ Frontend accessible sur le port 3000") else: print(f"❌ Frontend non accessible: {response.status_code}") return False except Exception as e: print(f"❌ Erreur d'accĂšs au frontend: {e}") return False # Test 2: VĂ©rifier que le backend est accessible print("\n🔧 Test 2: VĂ©rification de l'accĂšs au backend...") try: response = requests.get("http://localhost:5002/api/health", timeout=5) if response.status_code == 200: print("✅ Backend accessible sur le port 5002") else: print(f"❌ Backend non accessible: {response.status_code}") except Exception as e: print(f"⚠ Backend peut-ĂȘtre non dĂ©marrĂ©: {e}") # Test 3: VĂ©rifier les fichiers de documentation cĂŽtĂ© frontend print("\n📚 Test 3: VĂ©rification des donnĂ©es de documentation...") # VĂ©rifier que les fichiers TypeScript de documentation existent import os doc_files = [ "frontend/src/data/toolDocumentation.ts", "frontend/src/services/DocumentationService.ts", "frontend/src/components/DocumentationTab/index.tsx", "frontend/src/components/DocumentationPopup/index.tsx" ] all_files_exist = True for file_path in doc_files: if os.path.exists(file_path): print(f"✅ {file_path} existe") else: print(f"❌ {file_path} manquant") all_files_exist = False if not all_files_exist: print("❌ Certains fichiers de documentation sont manquants") return False # Test 4: VĂ©rifier le contenu du fichier de documentation print("\n🔍 Test 4: VĂ©rification du contenu de documentation...") try: with open("frontend/src/data/toolDocumentation.ts", "r", encoding="utf-8") as f: content = f.read() # VĂ©rifier que les outils de base sont documentĂ©s required_tools = ["click", "type", "wait", "navigate", "extract", "variable"] missing_tools = [] for tool in required_tools: if f'id: \'{tool}\'' in content or f'"{tool}":' in content: print(f"✅ Documentation pour '{tool}' trouvĂ©e") else: print(f"❌ Documentation pour '{tool}' manquante") missing_tools.append(tool) if missing_tools: print(f"❌ Outils manquants dans la documentation: {missing_tools}") return False # VĂ©rifier la structure de base required_sections = ["TOOLS_DOCUMENTATION", "GENERAL_DOCUMENTATION", "getToolDocumentation"] for section in required_sections: if section in content: print(f"✅ Section '{section}' trouvĂ©e") else: print(f"❌ Section '{section}' manquante") return False except Exception as e: print(f"❌ Erreur lors de la lecture du fichier de documentation: {e}") return False # Test 5: VĂ©rifier la compilation TypeScript print("\n🔹 Test 5: VĂ©rification de la compilation...") try: import subprocess result = subprocess.run( ["npx", "tsc", "--noEmit", "--project", "frontend/tsconfig.json"], capture_output=True, text=True, timeout=30 ) if result.returncode == 0: print("✅ Compilation TypeScript rĂ©ussie") else: print(f"❌ Erreurs de compilation TypeScript:") print(result.stderr) return False except subprocess.TimeoutExpired: print("⚠ Timeout lors de la compilation TypeScript") except Exception as e: print(f"⚠ Impossible de vĂ©rifier la compilation: {e}") print("\n🎉 Tous les tests de base sont passĂ©s!") return True except Exception as e: print(f"❌ Erreur gĂ©nĂ©rale lors du test: {e}") return False def test_documentation_structure(): """Test de la structure de documentation""" print("\n📋 Test de la structure de documentation...") try: with open("frontend/src/data/toolDocumentation.ts", "r", encoding="utf-8") as f: content = f.read() # Compter les outils documentĂ©s import re # Chercher les dĂ©finitions d'outils tool_pattern = r'(\w+):\s*\{' tools = re.findall(tool_pattern, content) # Filtrer les vrais outils (exclure les fonctions utilitaires) actual_tools = [tool for tool in tools if tool not in ['overview', 'useCases', 'parameters', 'guides', 'relationships', 'categorySpecific']] print(f"📊 Nombre d'outils documentĂ©s: {len(actual_tools)}") print(f"🔧 Outils trouvĂ©s: {', '.join(actual_tools[:10])}{'...' if len(actual_tools) > 10 else ''}") # VĂ©rifier les catĂ©gories categories = ['actions-web', 'donnees', 'logique', 'controle', 'integrations'] for category in categories: if f"category: '{category}'" in content: print(f"✅ CatĂ©gorie '{category}' documentĂ©e") else: print(f"⚠ CatĂ©gorie '{category}' peut-ĂȘtre manquante") return len(actual_tools) >= 10 # Au moins 10 outils documentĂ©s except Exception as e: print(f"❌ Erreur lors de l'analyse de structure: {e}") return False def main(): """Fonction principale""" print("=" * 70) print("TEST DE LA DOCUMENTATION - VISUAL WORKFLOW BUILDER") print("=" * 70) # Test de l'API api_success = test_documentation_api() # Test de la structure structure_success = test_documentation_structure() print("\n" + "=" * 70) print("RÉSULTATS DES TESTS:") print("=" * 70) if api_success: print("✅ API et fichiers de documentation: OK") else: print("❌ API et fichiers de documentation: ÉCHEC") if structure_success: print("✅ Structure de documentation: OK") else: print("❌ Structure de documentation: ÉCHEC") overall_success = api_success and structure_success print("\n" + "=" * 70) if overall_success: print("🎉 TOUS LES TESTS SONT PASSÉS!") print("La documentation devrait fonctionner correctement.") else: print("❌ CERTAINS TESTS ONT ÉCHOUÉ") print("Il peut y avoir des problĂšmes avec la documentation.") print("=" * 70) return 0 if overall_success else 1 if __name__ == "__main__": exit(main())