Files
rpa_vision_v3/visual_workflow_builder/test_documentation_browser.py
Dom a27b74cf22 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>
2026-01-29 11:23:51 +01:00

235 lines
7.8 KiB
Python

#!/usr/bin/env python3
"""
Test simple de la documentation avec un navigateur headless
"""
import time
import subprocess
import sys
import os
def test_with_curl():
"""Test simple avec curl pour vérifier l'application"""
print("🌐 Test de l'application avec curl...")
try:
# Test de l'accès à l'application
result = subprocess.run([
'curl', '-s', '-o', '/dev/null', '-w', '%{http_code}',
'http://localhost:3000'
], capture_output=True, text=True, timeout=10)
if result.returncode == 0 and result.stdout.strip() == '200':
print("✅ Application accessible sur http://localhost:3000")
return True
else:
print(f"❌ Application non accessible: code {result.stdout.strip()}")
return False
except Exception as e:
print(f"❌ Erreur lors du test curl: {e}")
return False
def test_with_browser():
"""Test avec un navigateur simple"""
print("🌐 Test avec navigateur...")
# Vérifier si chromium ou chrome est disponible
browsers = ['chromium-browser', 'google-chrome', 'chromium', 'chrome']
browser_cmd = None
for browser in browsers:
try:
result = subprocess.run(['which', browser], capture_output=True, text=True)
if result.returncode == 0:
browser_cmd = browser
break
except:
continue
if not browser_cmd:
print("⚠️ Aucun navigateur Chrome/Chromium trouvé")
return False
print(f"🔍 Utilisation de {browser_cmd}")
try:
# Lancer le navigateur en mode headless pour capturer les erreurs console
cmd = [
browser_cmd,
'--headless',
'--disable-gpu',
'--no-sandbox',
'--disable-dev-shm-usage',
'--enable-logging',
'--log-level=0',
'--dump-dom',
'http://localhost:3000'
]
print("🚀 Lancement du navigateur...")
result = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
if result.returncode == 0:
# Analyser le DOM récupéré
dom_content = result.stdout
# Vérifier la présence d'éléments clés
checks = {
'Application chargée': 'Visual Workflow Builder' in dom_content,
'React chargé': 'react' in dom_content.lower() or 'div id="root"' in dom_content,
'Palette présente': 'palette' in dom_content.lower(),
'Canvas présent': 'canvas' in dom_content.lower() or 'workflow' in dom_content.lower(),
}
print("\n📋 Analyse du contenu:")
for check_name, check_result in checks.items():
status = "" if check_result else ""
print(f" {status} {check_name}")
# Vérifier s'il y a des erreurs JavaScript dans stderr
if result.stderr:
print(f"\n⚠️ Erreurs/Avertissements du navigateur:")
print(result.stderr[:500] + "..." if len(result.stderr) > 500 else result.stderr)
return all(checks.values())
else:
print(f"❌ Erreur du navigateur: {result.stderr}")
return False
except subprocess.TimeoutExpired:
print("⏰ Timeout lors du chargement de la page")
return False
except Exception as e:
print(f"❌ Erreur lors du test navigateur: {e}")
return False
def check_documentation_files():
"""Vérifier que les fichiers de documentation existent"""
print("📁 Vérification des fichiers de documentation...")
files_to_check = [
'frontend/src/data/toolDocumentation.ts',
'frontend/src/services/DocumentationService.ts',
'frontend/src/components/DocumentationTab/index.tsx',
'frontend/src/components/DocumentationPopup/index.tsx',
'frontend/src/types/documentation.ts'
]
all_exist = True
for file_path in files_to_check:
if os.path.exists(file_path):
# Vérifier la taille du fichier
size = os.path.getsize(file_path)
print(f"{file_path} ({size} bytes)")
else:
print(f"{file_path} manquant")
all_exist = False
return all_exist
def check_build_status():
"""Vérifier le statut de build du frontend"""
print("🔨 Vérification du build frontend...")
# Vérifier si le dossier dist existe
if os.path.exists('frontend/dist'):
print("✅ Dossier dist trouvé")
# Lister les fichiers principaux
dist_files = os.listdir('frontend/dist')
js_files = [f for f in dist_files if f.endswith('.js')]
css_files = [f for f in dist_files if f.endswith('.css')]
print(f" 📄 Fichiers JS: {len(js_files)}")
print(f" 🎨 Fichiers CSS: {len(css_files)}")
# Vérifier la taille du bundle principal
main_js = None
for js_file in js_files:
if 'main' in js_file or 'bundle' in js_file:
main_js = js_file
break
if main_js:
size = os.path.getsize(f'frontend/dist/{main_js}')
print(f" 📦 Bundle principal: {main_js} ({size} bytes)")
if size > 100000: # Plus de 100KB
print(" ✅ Bundle semble correct")
return True
else:
print(" ⚠️ Bundle très petit, peut-être incomplet")
return False
else:
print(" ❌ Aucun bundle principal trouvé")
return False
else:
print("❌ Dossier dist non trouvé")
return False
def main():
"""Fonction principale"""
print("=" * 70)
print("TEST DE DIAGNOSTIC - DOCUMENTATION VISUAL WORKFLOW BUILDER")
print("=" * 70)
# Changer vers le bon répertoire
if not os.path.exists('frontend'):
print("❌ Répertoire frontend non trouvé. Exécutez depuis visual_workflow_builder/")
return 1
# Tests
tests = [
("Fichiers de documentation", check_documentation_files),
("Build frontend", check_build_status),
("Accès application", test_with_curl),
("Test navigateur", test_with_browser),
]
results = []
for test_name, test_func in tests:
print(f"\n🧪 {test_name}...")
try:
result = test_func()
results.append((test_name, result))
status = "✅ RÉUSSI" if result else "❌ ÉCHOUÉ"
print(f" {status}")
except Exception as e:
print(f" ❌ ERREUR: {e}")
results.append((test_name, False))
# Résumé
print("\n" + "=" * 70)
print("RÉSUMÉ DES TESTS:")
print("=" * 70)
passed = sum(1 for _, result in results if result)
total = len(results)
for test_name, result in results:
status = "" if result else ""
print(f"{status} {test_name}")
print(f"\n📊 Résultat global: {passed}/{total} tests réussis")
if passed == total:
print("\n🎉 Tous les tests sont passés!")
print("La documentation devrait fonctionner. Si elle ne s'affiche pas:")
print("1. Ouvrez les outils de développement (F12)")
print("2. Vérifiez la console pour des erreurs JavaScript")
print("3. Vérifiez l'onglet Network pour des ressources non chargées")
else:
print(f"\n⚠️ {total - passed} test(s) ont échoué")
print("Vérifiez les erreurs ci-dessus pour diagnostiquer le problème")
return 0 if passed == total else 1
if __name__ == "__main__":
exit(main())