#!/bin/bash # Validation Finale v0.101 # Lance tous les tests pour confirmer que la version est prête set -e echo "🎯 VALIDATION FINALE v0.101" echo "===========================" echo "" PASSED=0 FAILED=0 RESULTS=() # Fonction pour logger les résultats log_result() { local name=$1 local status=$2 if [ "$status" -eq 0 ]; then RESULTS+=("✅ $name") ((PASSED++)) else RESULTS+=("❌ $name") ((FAILED++)) fi } # 1. Backend Tests echo "1️⃣ Tests Backend (Go)" echo "----------------------" cd backend 2>/dev/null || cd ../backend 2>/dev/null || { echo "❌ Dossier backend non trouvé"; exit 1; } if go test ./... -short -count=1 2>&1 | tee /tmp/go_tests.txt; then log_result "Tests Backend" 0 else log_result "Tests Backend" 1 fi echo "" # 2. Frontend Build echo "2️⃣ Build Frontend" echo "------------------" cd ../frontend 2>/dev/null || cd frontend 2>/dev/null if npm run build 2>&1 | tail -5; then log_result "Build Frontend" 0 else log_result "Build Frontend" 1 fi echo "" # 3. Tests E2E (optionnel) echo "3️⃣ Tests E2E" echo "-------------" if [ -f "playwright.config.ts" ]; then if npm run test:e2e -- --reporter=dot 2>&1 | tail -10; then log_result "Tests E2E" 0 else log_result "Tests E2E" 1 fi else echo "⚠️ Playwright non configuré, skip" RESULTS+=("⚠️ Tests E2E (skipped)") fi echo "" # 4. API Health Check echo "4️⃣ API Health Check" echo "--------------------" API_URL="${API_URL:-http://localhost:8080}" if curl -sf "$API_URL/health" > /dev/null 2>&1; then log_result "API Health" 0 echo "API répond sur $API_URL" else echo "⚠️ API non accessible sur $API_URL" RESULTS+=("⚠️ API Health (server not running)") fi echo "" # 5. Parcours Utilisateur echo "5️⃣ Parcours Utilisateur" echo "------------------------" if [ -f "../test_user_journey.sh" ]; then cd .. if bash test_user_journey.sh 2>&1 | tail -20; then log_result "Parcours Utilisateur" 0 else log_result "Parcours Utilisateur" 1 fi elif [ -f "test_user_journey.sh" ]; then if bash test_user_journey.sh 2>&1 | tail -20; then log_result "Parcours Utilisateur" 0 else log_result "Parcours Utilisateur" 1 fi else echo "⚠️ Script test_user_journey.sh non trouvé" RESULTS+=("⚠️ Parcours Utilisateur (script missing)") fi echo "" # 6. Vérification JSON State echo "6️⃣ État v0.101" echo "---------------" if [ -f "V0101_STATE.json" ]; then SCORE=$(jq -r '.objective.current_score' V0101_STATE.json) TODO_COUNT=$(jq '[.phases[].tasks[] | select(.status == "TODO")] | length' V0101_STATE.json) BLOCKED_COUNT=$(jq '[.phases[].tasks[] | select(.status == "BLOCKED")] | length' V0101_STATE.json) echo "Score actuel: $SCORE/100" echo "Tâches TODO: $TODO_COUNT" echo "Tâches BLOCKED: $BLOCKED_COUNT" if [ "$TODO_COUNT" -eq 0 ] && [ "$BLOCKED_COUNT" -eq 0 ]; then log_result "Toutes tâches complétées" 0 else log_result "Tâches restantes" 1 fi else echo "⚠️ V0101_STATE.json non trouvé" RESULTS+=("⚠️ État v0.101 (file missing)") fi echo "" # Résumé echo "==============================" echo "📊 RÉSUMÉ" echo "==============================" for result in "${RESULTS[@]}"; do echo "$result" done echo "" echo "Passés: $PASSED" echo "Échoués: $FAILED" echo "" # Verdict final if [ "$FAILED" -eq 0 ]; then echo "🎉 v0.101 EST PRÊTE POUR LA RELEASE!" echo "" echo "Prochaines étapes:" echo " 1. git add -A" echo " 2. git commit -m 'Release v0.101 - Proof of Concept'" echo " 3. git tag -a v0.101 -m 'First stable POC without Rust modules'" echo " 4. git push origin main --tags" echo " 5. Créer la release sur GitHub" exit 0 else echo "❌ Des corrections sont encore nécessaires" echo "" echo "Consulte le fichier V0101_STATE.json pour voir les tâches restantes." exit 1 fi