# COVERAGE MAP — Suite E2E Veza > Dernière mise à jour : 2026-03-16 ## Vue d'ensemble | Fichier | Tests | Domaine | Tags | |---------|-------|---------|------| | 01-auth.spec.ts | 15 | Authentification | @critical | | 02-navigation.spec.ts | 15 | Navigation & Layout | @critical, @mobile | | 03-player.spec.ts | 10 | Lecteur audio | @critical | | 04-tracks.spec.ts | 12 | Tracks & Upload | @critical | | 05-playlists.spec.ts | 8 | Playlists CRUD | @critical | | 06-search-discover.spec.ts | 13 | Recherche & Découverte | @critical, @ethical | | 07-social.spec.ts | 9 | Social & Profils | @critical, @ethical | | 08-marketplace.spec.ts | 10 | Marketplace & Commerce | @critical | | 09-chat-notifications-settings.spec.ts | 21 | Chat, Notifs, Paramètres | @critical | | 10-features.spec.ts | 23 | Features variées | @critical | | 11-accessibility-ethics.spec.ts | 19 | WCAG AA & Éthique | @a11y, @ethical, @critical | | 12-api.spec.ts | 10 | API Backend | @critical | | 13-workflows.spec.ts | 14 | Parcours complets | @critical | | 14-edge-cases.spec.ts | 33 | Edge cases & Négatifs | — | | 15-routes-coverage.spec.ts | 44 | Couverture routes | @feature-routes | | 16-forms-validation.spec.ts | 47 | Validation formulaires | @feature-forms, @critical | | 17-modals-dialogs.spec.ts | 22 | Modales & Dialogs | @feature-modals | | 18-empty-states.spec.ts | 14 | États vides | @feature-empty-states | | 19-responsive.spec.ts | 14 | Responsive mobile | @mobile, @feature-responsive | | 20-network-errors.spec.ts | 10 | Erreurs réseau | @feature-errors | | **TOTAL** | **374** | 20 domaines | 5 browsers | ### Exécution ```bash # Lancer tous les tests npm run e2e # Lancer et générer le rapport d'audit npm run e2e:audit # Tests critiques uniquement (~30 tests, <2min) npm run e2e:critical # Lister sans exécuter npm run e2e:list ``` --- ## Couverture par feature ### AUTH (`/features/auth/`) | Aspect | Couvert | Fichier(s) | Notes | |--------|---------|------------|-------| | Login UI (email/password) | ✅ | 01, 13 | Vrais sélecteurs (#register-email, label="Email") | | Login erreurs (mauvais mot de passe) | ✅ | 01 | Vérifie rôle alert | | Register (tous champs) | ✅ | 01 | #register-username/email/password/password_confirm/terms | | Register validation (email invalide) | ✅ | 01 | | | Register validation (mot de passe court) | ✅ | 01 | | | Register email existant | ✅ | 01 | | | Forgot password page | ✅ | 01 | Lien et page /forgot-password | | OAuth boutons | ✅ | 01 | Google, GitHub, Discord, Spotify | | Redirection si non-auth | ✅ | 01, 14 | /dashboard → /login | | Token JWT (httpOnly cookie) | ✅ | 01 | Vérifie auth-storage Zustand | | Déconnexion | ✅ | 01, 13 | Menu user → logout | | 2FA setup | ✅ | 09 | Section dans settings | | Session persistence | ✅ | 13 | Page refresh | | Login formulaire vide | ✅ | 14 | Edge case | | Register formulaire vide | ✅ | 14 | Edge case | | Verify email page | ❌ | — | Nécessite token email | | Reset password page | ❌ | — | Nécessite token email | | Account lockout (5 tentatives) | ❌ | — | Nécessite 5 requêtes rapides | ### PLAYER (`/features/player/`) | Aspect | Couvert | Fichier(s) | Notes | |--------|---------|------------|-------| | Play/Pause toggle | ✅ | 03 | aria-label="Lire"/"Mettre en pause" | | Track info (titre/artiste) | ✅ | 03 | section aria-label="Track info" | | Progress bar (seek) | ✅ | 03 | role="slider" aria-label="Progression" | | Volume control | ✅ | 03 | role="slider" aria-label="Volume" | | Mute/Unmute | ✅ | 03 | | | Next/Previous | ✅ | 03 | data-testid="next-button"/"prev-button" | | Queue panel | ✅ | 03 | aria-label="Show queue" | | Keyboard (Espace) | ✅ | 03 | | | Player persiste entre pages | ✅ | 13 | | | Shuffle toggle | ❌ | — | Pas de sélecteur unique fiable | | Repeat modes | ❌ | — | Pas de sélecteur unique fiable | | Crossfade | ❌ | — | Nécessite audio réel | | Picture-in-Picture | ❌ | — | API navigateur requise | | AirPlay/Cast | ❌ | — | Hardware requis | ### TRACKS (`/features/tracks/`) | Aspect | Couvert | Fichier(s) | Notes | |--------|---------|------------|-------| | Track cards (découverte) | ✅ | 04 | role="article" | | Track detail page | ✅ | 04 | /tracks/:id | | Like/Unlike toggle | ✅ | 04 | aria-label="Ajouter aux favoris" | | Commentaires | ✅ | 04 | | | Upload (modal library) | ✅ | 04 | /library avec modal upload | | Métadonnées (genre, durée) | ✅ | 04 | | | Waveform | ✅ | 04 | Barres div dans progress bar | | Repost | ✅ | 04 | Bouton repost | | Track inexistant (404) | ✅ | 14 | /tracks/nonexistent | | Upload validation | ✅ | 04 | Soumettre sans fichier | | Upload fichier invalide | ❌ | — | Nécessite fixture audio | | Download track | ❌ | — | | ### PLAYLISTS (`/features/playlists/`) | Aspect | Couvert | Fichier(s) | Notes | |--------|---------|------------|-------| | Liste playlists | ✅ | 05 | /playlists | | Créer playlist | ✅ | 05 | Formulaire create | | Ouvrir playlist | ✅ | 05 | /playlists/:id | | Modifier playlist | ✅ | 05 | Bouton edit | | Supprimer playlist | ✅ | 05 | Bouton delete | | Collaboration/partage | ✅ | 05 | Bouton share | | Drag & drop réordonnement | ✅ | 05 | Handles GripVertical | | Playlist inexistante (404) | ✅ | 14 | /playlists/nonexistent | | Export (JSON/CSV/M3U) | ✅ | 05 | Menu options | | Ajouter track | ❌ | — | Nécessite workflow complexe | | Playlist collaborative temps réel | ❌ | — | Nécessite WebSocket | ### SEARCH (`/features/search/`) | Aspect | Couvert | Fichier(s) | Notes | |--------|---------|------------|-------| | Input recherche header | ✅ | 06 | [role="search"] input | | Recherche avec résultats | ✅ | 06 | ?q=... | | Onglets catégories | ✅ | 06 | All, Tracks, Artists, Playlists | | Recherche vide | ✅ | 06, 14 | Pas de crash | | Autocomplete | ✅ | 06 | Suggestions dropdown | | Caractères spéciaux (XSS) | ✅ | 14 |