- 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>
232 lines
7.3 KiB
Python
232 lines
7.3 KiB
Python
#!/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) |