New tests/e2e/ suite covering: - Auth, navigation, player, tracks, playlists - Search, discover, social, marketplace, chat - Accessibility, API, workflows, edge cases - Routes coverage, forms validation, modals - Empty states, responsive, network errors - Error boundary, performance, visual regression - Cross-browser, profile, smoke, upload - Storybook, deep pages, visual bugs - Includes fixtures, helpers, global setup/teardown - Playwright config and coverage map Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
16 KiB
16 KiB
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
# 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 |