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:
232
visual_workflow_builder/test_compilation_fix.py
Normal file
232
visual_workflow_builder/test_compilation_fix.py
Normal file
@@ -0,0 +1,232 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test de Correction de Compilation TypeScript
|
||||
Auteur : Dom, Alice, Kiro - 7 janvier 2026
|
||||
|
||||
Vérifie que les corrections TypeScript ont résolu les problèmes de compilation
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
def run_command(cmd, cwd=None):
|
||||
"""Exécute une commande et retourne le résultat"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
cmd,
|
||||
shell=True,
|
||||
cwd=cwd,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=60
|
||||
)
|
||||
return result.returncode == 0, result.stdout, result.stderr
|
||||
except subprocess.TimeoutExpired:
|
||||
return False, "", "Timeout"
|
||||
|
||||
def test_typescript_compilation():
|
||||
"""Test la compilation TypeScript avec validation des artefacts"""
|
||||
print("🔧 Test de Compilation TypeScript...")
|
||||
|
||||
frontend_dir = Path(__file__).parent / "frontend"
|
||||
|
||||
# Vérifier que le répertoire existe
|
||||
if not frontend_dir.exists():
|
||||
print("❌ Répertoire frontend non trouvé")
|
||||
return False
|
||||
|
||||
# Vérifier que package.json existe et contient les scripts nécessaires
|
||||
package_json = frontend_dir / "package.json"
|
||||
if not package_json.exists():
|
||||
print("❌ package.json non trouvé")
|
||||
return False
|
||||
|
||||
try:
|
||||
with open(package_json, 'r', encoding='utf-8') as f:
|
||||
package_data = json.load(f)
|
||||
|
||||
if "build" not in package_data.get("scripts", {}):
|
||||
print("❌ Script 'build' non trouvé dans package.json")
|
||||
return False
|
||||
|
||||
except json.JSONDecodeError:
|
||||
print("❌ package.json invalide")
|
||||
return False
|
||||
|
||||
# Nettoyer le répertoire de build précédent
|
||||
dist_dir = frontend_dir / "dist"
|
||||
if dist_dir.exists():
|
||||
import shutil
|
||||
shutil.rmtree(dist_dir)
|
||||
|
||||
# Test de compilation
|
||||
success, stdout, stderr = run_command("npm run build", cwd=frontend_dir)
|
||||
|
||||
if success:
|
||||
print("✅ Compilation TypeScript réussie")
|
||||
|
||||
# Vérifier que les artefacts de build ont été créés
|
||||
if dist_dir.exists():
|
||||
build_files = list(dist_dir.glob("**/*"))
|
||||
if build_files:
|
||||
print(f"✅ {len(build_files)} fichiers générés dans dist/")
|
||||
|
||||
# Vérifier la présence de fichiers essentiels
|
||||
js_files = list(dist_dir.glob("**/*.js"))
|
||||
css_files = list(dist_dir.glob("**/*.css"))
|
||||
|
||||
if js_files:
|
||||
print(f"✅ {len(js_files)} fichiers JavaScript générés")
|
||||
if css_files:
|
||||
print(f"✅ {len(css_files)} fichiers CSS générés")
|
||||
|
||||
return True
|
||||
else:
|
||||
print("⚠️ Compilation réussie mais aucun fichier généré")
|
||||
return False
|
||||
else:
|
||||
print("⚠️ Compilation réussie mais répertoire dist/ non créé")
|
||||
return False
|
||||
else:
|
||||
print("❌ Erreurs de compilation TypeScript:")
|
||||
print(stderr)
|
||||
return False
|
||||
|
||||
def test_type_checking():
|
||||
"""Test le type checking TypeScript"""
|
||||
print("🔍 Test de Vérification des Types...")
|
||||
|
||||
frontend_dir = Path(__file__).parent / "frontend"
|
||||
|
||||
# Test de type checking
|
||||
success, stdout, stderr = run_command("npx tsc --noEmit", cwd=frontend_dir)
|
||||
|
||||
if success:
|
||||
print("✅ Vérification des types réussie")
|
||||
return True
|
||||
else:
|
||||
print("❌ Erreurs de types:")
|
||||
print(stderr)
|
||||
return False
|
||||
|
||||
def check_fixed_files():
|
||||
"""Vérifie que les fichiers corrigés existent et sont valides"""
|
||||
print("📁 Vérification des Fichiers Corrigés...")
|
||||
|
||||
files_to_check = [
|
||||
"frontend/src/components/LanguageSelector/index.tsx",
|
||||
"frontend/src/components/RealDemoTab/index.tsx",
|
||||
"frontend/src/components/RealDemo/index.tsx",
|
||||
"frontend/src/services/LocalizationService.ts"
|
||||
]
|
||||
|
||||
base_dir = Path(__file__).parent
|
||||
all_exist = True
|
||||
|
||||
for file_path in files_to_check:
|
||||
full_path = base_dir / file_path
|
||||
if full_path.exists():
|
||||
print(f"✅ {file_path} existe")
|
||||
else:
|
||||
print(f"❌ {file_path} manquant")
|
||||
all_exist = False
|
||||
|
||||
return all_exist
|
||||
|
||||
def test_localization_files():
|
||||
"""Vérifie que les fichiers de localisation sont présents"""
|
||||
print("🌍 Vérification des Fichiers de Localisation...")
|
||||
|
||||
i18n_dir = Path(__file__).parent.parent / "i18n"
|
||||
|
||||
required_files = [
|
||||
"config.json",
|
||||
"fr.json",
|
||||
"en.json",
|
||||
"es.json",
|
||||
"de.json"
|
||||
]
|
||||
|
||||
all_exist = True
|
||||
|
||||
for file_name in required_files:
|
||||
file_path = i18n_dir / file_name
|
||||
if file_path.exists():
|
||||
print(f"✅ {file_name} existe")
|
||||
|
||||
# Vérifier que c'est du JSON valide
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
json.load(f)
|
||||
print(f"✅ {file_name} est un JSON valide")
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"❌ {file_name} contient du JSON invalide: {e}")
|
||||
all_exist = False
|
||||
else:
|
||||
print(f"❌ {file_name} manquant")
|
||||
all_exist = False
|
||||
|
||||
return all_exist
|
||||
|
||||
def main():
|
||||
"""Fonction principale de test"""
|
||||
print("🚀 Test de Correction des Erreurs TypeScript")
|
||||
print("=" * 50)
|
||||
|
||||
tests = [
|
||||
("Fichiers Corrigés", check_fixed_files),
|
||||
("Fichiers de Localisation", test_localization_files),
|
||||
("Compilation TypeScript", test_typescript_compilation),
|
||||
("Vérification des Types", test_type_checking)
|
||||
]
|
||||
|
||||
results = []
|
||||
|
||||
for test_name, test_func in tests:
|
||||
print(f"\n📋 {test_name}")
|
||||
print("-" * 30)
|
||||
|
||||
try:
|
||||
result = test_func()
|
||||
results.append((test_name, result))
|
||||
except Exception as e:
|
||||
print(f"❌ Erreur lors du test {test_name}: {e}")
|
||||
results.append((test_name, False))
|
||||
|
||||
# Résumé
|
||||
print("\n" + "=" * 50)
|
||||
print("📊 RÉSUMÉ DES TESTS")
|
||||
print("=" * 50)
|
||||
|
||||
passed = 0
|
||||
total = len(results)
|
||||
|
||||
for test_name, result in results:
|
||||
status = "✅ RÉUSSI" if result else "❌ ÉCHOUÉ"
|
||||
print(f"{test_name}: {status}")
|
||||
if result:
|
||||
passed += 1
|
||||
|
||||
print(f"\nRésultat: {passed}/{total} tests réussis")
|
||||
|
||||
if passed == total:
|
||||
print("\n🎉 Toutes les corrections TypeScript sont fonctionnelles!")
|
||||
print("\n📝 Résumé des corrections appliquées:")
|
||||
print("• Correction du type 'size' pour le composant Chip Material-UI")
|
||||
print("• Suppression de l'import VisibilityIcon non utilisé")
|
||||
print("• Correction de la variable 'event' non utilisée")
|
||||
print("• Ajout de l'import React manquant dans LocalizationService")
|
||||
print("• Création du composant RealDemo manquant")
|
||||
|
||||
print("\n🔧 Le Visual Workflow Builder peut maintenant être compilé sans erreurs!")
|
||||
return True
|
||||
else:
|
||||
print(f"\n⚠️ {total - passed} test(s) ont échoué. Vérifiez les erreurs ci-dessus.")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user