veza/validate_v0101.sh

152 lines
3.8 KiB
Bash
Raw Permalink Normal View History

#!/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