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:
207
visual_workflow_builder/test_documentation_api.py
Normal file
207
visual_workflow_builder/test_documentation_api.py
Normal file
@@ -0,0 +1,207 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user