# đŸ§Ș Tests Exhaustifs IntĂ©gration Veza MVP > **Suite de tests complĂšte pour valider que l'application Veza est prĂȘte pour le MVP** Cette documentation dĂ©crit comment exĂ©cuter les tests exhaustifs d'intĂ©gration pour valider toutes les fonctionnalitĂ©s de l'application Veza MVP. --- ## 📋 Table des MatiĂšres 1. [Vue d'ensemble](#vue-densemble) 2. [PrĂ©requis](#prĂ©requis) 3. [Setup Environnement](#setup-environnement) 4. [Tests API (curl)](#tests-api-curl) 5. [Tests E2E (Playwright)](#tests-e2e-playwright) 6. [Rapport de Bugs](#rapport-de-bugs) 7. [Troubleshooting](#troubleshooting) --- ## 🎯 Vue d'ensemble Cette suite de tests couvre **TOUTES** les fonctionnalitĂ©s critiques du MVP : ### ✅ FonctionnalitĂ©s TestĂ©es - **Authentification** : Register, Login, Logout, Refresh Token, Route Guards - **Gestion Utilisateur** : Profil, Mise Ă  jour, Recherche - **Tracks** : Liste, Upload, DĂ©tails, Recherche, Suppression - **Playlists** : CRUD complet, Ajout de tracks - **Sessions** : Liste, Stats, RĂ©vocation - **Navigation & UX** : Dashboard, Navigation, Responsive Design - **Gestion d'Erreurs** : 404, Network errors, Validation API ### 📂 Structure des Tests ``` veza/ ├── scripts/ │ ├── setup-mvp-test-env.sh # Setup environnement │ ├── test-mvp-api.sh # Tests API avec curl │ └── generate-bug-report.sh # GĂ©nĂ©rateur rapport bugs └── apps/web/e2e/ └── mvp-integration.spec.ts # Tests E2E Playwright ``` --- ## 🔧 PrĂ©requis ### Commandes Requises - `curl` - Tests API - `jq` - Parsing JSON (optionnel mais recommandĂ©) - `node` & `npm` - Tests frontend - `go` - Backend (pour vĂ©rification) ### Services Ă  DĂ©marrer 1. **Backend Go** sur `http://localhost:8080` 2. **Frontend React** sur `http://localhost:5173` ou `http://localhost:3000` 3. **PostgreSQL** (pour le backend) 4. **Redis** (optionnel, pour le backend) --- ## 🚀 Setup Environnement ### Option 1 : Script Automatique ```bash ./scripts/setup-mvp-test-env.sh ``` Ce script : - ✅ VĂ©rifie que toutes les commandes sont installĂ©es - ✅ VĂ©rifie que les services sont running - ✅ Configure les variables d'environnement - ✅ Donne des instructions si quelque chose manque ### Option 2 : Setup Manuel #### 1. DĂ©marrer le Backend ```bash cd veza-backend-api # VĂ©rifier que PostgreSQL et Redis sont running docker-compose up -d postgres redis # si docker-compose existe # OU vĂ©rifier que les services sont accessibles go run cmd/api/main.go # OU go run cmd/server/main.go ``` #### 2. DĂ©marrer le Frontend ```bash cd apps/web npm install npm run dev ``` #### 3. VĂ©rifier que les services rĂ©pondent ```bash # Backend health check curl -v http://localhost:8080/health curl -v http://localhost:8080/api/v1/health # Frontend curl -v http://localhost:5173 # OU curl -v http://localhost:3000 ``` #### 4. Configurer les variables d'environnement ```bash export API_URL="http://localhost:8080/api/v1" export FRONTEND_URL="http://localhost:5173" export TEST_EMAIL="test-$(date +%s)@example.com" export TEST_PASSWORD="TestPassword123!" export TEST_USERNAME="testuser_$(date +%s)" ``` --- ## đŸ§Ș Tests API (curl) Les tests API utilisent `curl` pour tester directement les endpoints backend. ### ExĂ©cuter tous les tests API ```bash ./scripts/test-mvp-api.sh ``` ### Tests Inclus #### Phase 1 : Authentification - ✅ AUTH-001: Page de Login accessible - ✅ AUTH-002: Page de Register accessible - ✅ AUTH-003: Inscription nouvel utilisateur - ✅ AUTH-004: Login avec nouvel utilisateur - ✅ AUTH-005: AccĂšs route protĂ©gĂ©e avec token - ✅ AUTH-006: AccĂšs route protĂ©gĂ©e SANS token (401) - ✅ AUTH-007: Refresh token - ✅ AUTH-008: Logout - ✅ AUTH-009: Login avec mauvais mot de passe (401) - ✅ AUTH-010: Check username disponibilitĂ© #### Phase 2 : Utilisateur/Profil - ✅ USER-001: Voir son profil - ✅ USER-002: Mettre Ă  jour son profil - ✅ USER-003: Recherche utilisateurs - ✅ USER-004: Ne peut pas modifier le profil d'un autre (403) #### Phase 3 : Tracks - ✅ TRACK-001: Lister les tracks - ✅ TRACK-002: Upload un track (simulĂ©) - ✅ TRACK-003: Voir un track spĂ©cifique - ✅ TRACK-005: Recherche de tracks #### Phase 4 : Playlists - ✅ PLAYLIST-001: CrĂ©er une playlist - ✅ PLAYLIST-002: Lister ses playlists - ✅ PLAYLIST-003: Voir une playlist - ✅ PLAYLIST-004: Mettre Ă  jour une playlist - ✅ PLAYLIST-005: Ajouter un track Ă  la playlist - ✅ PLAYLIST-006: Recherche de playlists - ✅ PLAYLIST-007: Supprimer une playlist #### Phase 5 : Sessions - ✅ SESSION-001: Lister ses sessions - ✅ SESSION-002: Stats sessions - ✅ SESSION-003: RĂ©voquer une session spĂ©cifique ### Sortie du Script Le script affiche : - ✅ Tests passĂ©s (vert) - ❌ Tests Ă©chouĂ©s (rouge) - ⚠ Warnings (jaune) - 📊 Rapport final avec statistiques Exemple de sortie : ``` ============================================================================ RAPPORT FINAL ============================================================================ Tests passĂ©s: 25 Tests Ă©chouĂ©s: 2 Total: 27 [✗] Certains tests ont Ă©chouĂ© ``` --- ## 🎭 Tests E2E (Playwright) Les tests E2E utilisent Playwright pour tester l'application comme un utilisateur rĂ©el. ### ExĂ©cuter tous les tests E2E ```bash cd apps/web npm run test:e2e -- e2e/mvp-integration.spec.ts ``` ### ExĂ©cuter un test spĂ©cifique ```bash # Test d'authentification uniquement npx playwright test e2e/mvp-integration.spec.ts -g "Authentication" # Test de navigation uniquement npx playwright test e2e/mvp-integration.spec.ts -g "Dashboard" # Test en mode headed (voir le navigateur) npx playwright test e2e/mvp-integration.spec.ts --headed # Test avec UI (debug interactif) npx playwright test e2e/mvp-integration.spec.ts --ui ``` ### Tests Inclus #### 1. Authentication Flow - ✅ 1.1: Login page loads correctly - ✅ 1.2: Register page loads correctly - ✅ 1.3: Can register new user - ✅ 1.4: Can login with registered user - ✅ 1.5: Protected route redirects when not logged in - ✅ 1.6: Can logout #### 2. Dashboard & Navigation - ✅ 2.1: Dashboard loads without errors - ✅ 2.2: Navigation works #### 3. Tracks Management - ✅ 3.1: Tracks page loads - ✅ 3.2: Upload track button exists #### 4. Playlists Management - ✅ 4.1: Playlists page loads - ✅ 4.2: Can create playlist #### 5. Profile Management - ✅ 5.1: Profile page loads - ✅ 5.2: Can update profile #### 6. API Response Validation - ✅ 6.1: API returns correct response format - ✅ 6.2: User ID is string UUID - ✅ 6.3: Error responses have correct format #### 7. Error Handling - ✅ 7.1: 404 page exists - ✅ 7.2: Network error handling #### 8. Responsive Design - ✅ 8.1: Mobile viewport (375x667) - ✅ 8.2: Tablet viewport (768x1024) - ✅ 8.3: Desktop viewport (1920x1080) ### GĂ©nĂ©rer un Rapport HTML ```bash npx playwright test e2e/mvp-integration.spec.ts --reporter=html npx playwright show-report ``` --- ## 🐛 Rapport de Bugs ### GĂ©nĂ©rer un Rapport de Bugs ```bash ./scripts/generate-bug-report.sh [output-file.json] ``` Le rapport est au format JSON et contient : - ID du bug - Titre et description - SĂ©vĂ©ritĂ© (critical, high, medium, low) - CatĂ©gorie (auth, tracks, playlists, etc.) - Steps to reproduce - Expected vs Actual behavior - Statut (open, fixed, etc.) ### Exemple de Rapport ```json { "report_date": "2025-01-27T10:30:00Z", "test_suite": "MVP Integration Tests", "bugs": [ { "id": "BUG-001", "title": "Login fails with valid credentials", "description": "User cannot login even with correct email and password", "severity": "critical", "category": "auth", "steps_to_reproduce": "1. Go to /login 2. Enter valid credentials 3. Click submit", "expected_behavior": "User should be redirected to dashboard", "actual_behavior": "Error message appears: 'Invalid credentials'", "status": "open", "created_at": "2025-01-27T10:30:00Z" } ], "summary": { "total_bugs": 1, "critical": 1, "high": 0, "medium": 0, "low": 0 } } ``` ### Ajouter un Bug Manuellement ```bash ./scripts/generate-bug-report.sh report.json "BUG-001" "Title" "Description" "critical" "auth" "Steps" "Expected" "Actual" ``` --- ## 🔍 Troubleshooting ### ProblĂšme : Backend ne rĂ©pond pas ```bash # VĂ©rifier que le backend est running curl http://localhost:8080/health # VĂ©rifier les logs cd veza-backend-api # VĂ©rifier les logs du processus Go ``` ### ProblĂšme : Frontend ne rĂ©pond pas ```bash # VĂ©rifier que le frontend est running curl http://localhost:5173 # VĂ©rifier les logs cd apps/web npm run dev # VĂ©rifier les erreurs dans la console ``` ### ProblĂšme : Tests API Ă©chouent avec 401 - VĂ©rifier que l'utilisateur de test est bien créé - VĂ©rifier que le token est valide - VĂ©rifier que le backend accepte les tokens JWT ### ProblĂšme : Tests E2E Ă©chouent avec timeout - Augmenter le timeout dans `playwright.config.ts` - VĂ©rifier que le frontend rĂ©pond rapidement - VĂ©rifier les erreurs console dans Playwright ### ProblĂšme : Rate Limiting (429) Le backend a un rate limiter. Si vous obtenez des erreurs 429 : - Attendre quelques secondes entre les requĂȘtes - RĂ©duire le nombre de workers dans Playwright (dĂ©jĂ  configurĂ© Ă  1) - DĂ©sactiver le rate limiter en dĂ©veloppement ### ProblĂšme : Tests flaky (parfois passent, parfois Ă©chouent) - VĂ©rifier la stabilitĂ© du backend - VĂ©rifier les timeouts - VĂ©rifier les conditions de course (race conditions) - Utiliser `--retries` dans Playwright --- ## 📊 Checklist de Validation MVP Avant de considĂ©rer le MVP comme prĂȘt, vĂ©rifier que : - [ ] Tous les tests API passent (100%) - [ ] Tous les tests E2E passent (100%) - [ ] Aucun bug critical dans le rapport - [ ] Les fonctionnalitĂ©s principales fonctionnent : - [ ] Inscription/Login - [ ] Upload de tracks - [ ] CrĂ©ation de playlists - [ ] Navigation fluide - [ ] Responsive design - [ ] Performance acceptable (< 2s pour les pages principales) - [ ] Pas d'erreurs console critiques - [ ] Pas d'erreurs rĂ©seau (404, 500, etc.) --- ## 📝 Notes - Les tests crĂ©ent des utilisateurs de test avec des emails uniques (timestamp) - Les donnĂ©es de test sont nettoyĂ©es automatiquement (ou manuellement si nĂ©cessaire) - Les tests sont conçus pour ĂȘtre idempotents (peuvent ĂȘtre exĂ©cutĂ©s plusieurs fois) --- ## 🚀 Prochaines Étapes AprĂšs avoir exĂ©cutĂ© tous les tests : 1. **Analyser le rapport de bugs** : Identifier les problĂšmes critiques 2. **Corriger les bugs** : Prioriser par sĂ©vĂ©ritĂ© 3. **RĂ©-exĂ©cuter les tests** : Valider les corrections 4. **Documenter les changements** : Mettre Ă  jour la documentation 5. **PrĂ©parer le dĂ©ploiement** : Une fois tous les tests passent --- ## 📞 Support Pour toute question ou problĂšme : 1. VĂ©rifier cette documentation 2. VĂ©rifier les logs des tests 3. VĂ©rifier les issues GitHub existantes 4. CrĂ©er une nouvelle issue si nĂ©cessaire --- **Bon testing ! đŸ§Ș**