diff --git a/audit-admin-desktop.png b/audit-admin-desktop.png new file mode 100644 index 000000000..07bd493e1 Binary files /dev/null and b/audit-admin-desktop.png differ diff --git a/audit-dashboard-desktop.png b/audit-dashboard-desktop.png new file mode 100644 index 000000000..3d0b47b3b Binary files /dev/null and b/audit-dashboard-desktop.png differ diff --git a/audit-dashboard-mobile.png b/audit-dashboard-mobile.png new file mode 100644 index 000000000..07bd493e1 Binary files /dev/null and b/audit-dashboard-mobile.png differ diff --git a/audit-discover-desktop-1280.png b/audit-discover-desktop-1280.png new file mode 100644 index 000000000..2395f58c0 Binary files /dev/null and b/audit-discover-desktop-1280.png differ diff --git a/audit-discover-desktop.png b/audit-discover-desktop.png new file mode 100644 index 000000000..e1fc3b71d Binary files /dev/null and b/audit-discover-desktop.png differ diff --git a/audit-discover-mobile-375.png b/audit-discover-mobile-375.png new file mode 100644 index 000000000..2a87ea20e Binary files /dev/null and b/audit-discover-mobile-375.png differ diff --git a/audit-favoris-not-found.png b/audit-favoris-not-found.png new file mode 100644 index 000000000..c7f35aeb1 Binary files /dev/null and b/audit-favoris-not-found.png differ diff --git a/audit-feed-desktop-1280.png b/audit-feed-desktop-1280.png new file mode 100644 index 000000000..2109e86b1 Binary files /dev/null and b/audit-feed-desktop-1280.png differ diff --git a/audit-feed-desktop.png b/audit-feed-desktop.png new file mode 100644 index 000000000..b5318165e Binary files /dev/null and b/audit-feed-desktop.png differ diff --git a/audit-feed-mobile-375-content.png b/audit-feed-mobile-375-content.png new file mode 100644 index 000000000..e8080104d Binary files /dev/null and b/audit-feed-mobile-375-content.png differ diff --git a/audit-feed-mobile-375.png b/audit-feed-mobile-375.png new file mode 100644 index 000000000..be1d49ad6 Binary files /dev/null and b/audit-feed-mobile-375.png differ diff --git a/audit-launch-desktop-1280.png b/audit-launch-desktop-1280.png new file mode 100644 index 000000000..3b3a17b8e Binary files /dev/null and b/audit-launch-desktop-1280.png differ diff --git a/audit-launch-desktop.png b/audit-launch-desktop.png new file mode 100644 index 000000000..a15f0f5ca Binary files /dev/null and b/audit-launch-desktop.png differ diff --git a/audit-launch-mobile-375.png b/audit-launch-mobile-375.png new file mode 100644 index 000000000..9277f9d7b Binary files /dev/null and b/audit-launch-mobile-375.png differ diff --git a/audit-launch-mobile.png b/audit-launch-mobile.png new file mode 100644 index 000000000..26057bd2a Binary files /dev/null and b/audit-launch-mobile.png differ diff --git a/audit-library-desktop-1280-artist.png b/audit-library-desktop-1280-artist.png new file mode 100644 index 000000000..0c19e0d76 Binary files /dev/null and b/audit-library-desktop-1280-artist.png differ diff --git a/audit-library-desktop-1280-empty.png b/audit-library-desktop-1280-empty.png new file mode 100644 index 000000000..728008d80 Binary files /dev/null and b/audit-library-desktop-1280-empty.png differ diff --git a/audit-library-desktop-artist-content.png b/audit-library-desktop-artist-content.png new file mode 100644 index 000000000..9f51fbcbb Binary files /dev/null and b/audit-library-desktop-artist-content.png differ diff --git a/audit-library-desktop.png b/audit-library-desktop.png new file mode 100644 index 000000000..5defb1201 Binary files /dev/null and b/audit-library-desktop.png differ diff --git a/audit-marketplace-desktop.png b/audit-marketplace-desktop.png new file mode 100644 index 000000000..07bd493e1 Binary files /dev/null and b/audit-marketplace-desktop.png differ diff --git a/audit-playlist-detail-desktop.png b/audit-playlist-detail-desktop.png new file mode 100644 index 000000000..d4977a7bb Binary files /dev/null and b/audit-playlist-detail-desktop.png differ diff --git a/audit-playlist-detail-mobile-375.png b/audit-playlist-detail-mobile-375.png new file mode 100644 index 000000000..b72a09cc9 Binary files /dev/null and b/audit-playlist-detail-mobile-375.png differ diff --git a/audit-playlists-desktop-1280-empty.png b/audit-playlists-desktop-1280-empty.png new file mode 100644 index 000000000..ae369dd19 Binary files /dev/null and b/audit-playlists-desktop-1280-empty.png differ diff --git a/audit-playlists-desktop.png b/audit-playlists-desktop.png new file mode 100644 index 000000000..0449af7cf Binary files /dev/null and b/audit-playlists-desktop.png differ diff --git a/audit-playlists-mobile-375.png b/audit-playlists-mobile-375.png new file mode 100644 index 000000000..e955abadd Binary files /dev/null and b/audit-playlists-mobile-375.png differ diff --git a/audit-profile-desktop-1280.png b/audit-profile-desktop-1280.png new file mode 100644 index 000000000..357af2557 Binary files /dev/null and b/audit-profile-desktop-1280.png differ diff --git a/audit-profile-desktop-fixed.png b/audit-profile-desktop-fixed.png new file mode 100644 index 000000000..7f1cfa582 Binary files /dev/null and b/audit-profile-desktop-fixed.png differ diff --git a/audit-profile-mobile-375-fixed.png b/audit-profile-mobile-375-fixed.png new file mode 100644 index 000000000..9b0880013 Binary files /dev/null and b/audit-profile-mobile-375-fixed.png differ diff --git a/audit-profile-mobile-375.png b/audit-profile-mobile-375.png new file mode 100644 index 000000000..f41c71935 Binary files /dev/null and b/audit-profile-mobile-375.png differ diff --git a/audit-profile-playlists-tab.png b/audit-profile-playlists-tab.png new file mode 100644 index 000000000..8ec877858 Binary files /dev/null and b/audit-profile-playlists-tab.png differ diff --git a/audit-profile-reposts-tab.png b/audit-profile-reposts-tab.png new file mode 100644 index 000000000..8821c9132 Binary files /dev/null and b/audit-profile-reposts-tab.png differ diff --git a/audit-profile-tablet-768.png b/audit-profile-tablet-768.png new file mode 100644 index 000000000..118097553 Binary files /dev/null and b/audit-profile-tablet-768.png differ diff --git a/audit-queue-desktop-1280-empty.png b/audit-queue-desktop-1280-empty.png new file mode 100644 index 000000000..2280c0590 Binary files /dev/null and b/audit-queue-desktop-1280-empty.png differ diff --git a/audit-queue-desktop-1280-with-tracks.png b/audit-queue-desktop-1280-with-tracks.png new file mode 100644 index 000000000..bd7e29bd1 Binary files /dev/null and b/audit-queue-desktop-1280-with-tracks.png differ diff --git a/audit-queue-desktop.png b/audit-queue-desktop.png new file mode 100644 index 000000000..80238922e Binary files /dev/null and b/audit-queue-desktop.png differ diff --git a/audit-queue-mobile-375-fixed.png b/audit-queue-mobile-375-fixed.png new file mode 100644 index 000000000..68064b6a5 Binary files /dev/null and b/audit-queue-mobile-375-fixed.png differ diff --git a/audit-queue-mobile-375.png b/audit-queue-mobile-375.png new file mode 100644 index 000000000..f21ba4034 Binary files /dev/null and b/audit-queue-mobile-375.png differ diff --git a/audit-queue-save-modal.png b/audit-queue-save-modal.png new file mode 100644 index 000000000..75d2a3e43 Binary files /dev/null and b/audit-queue-save-modal.png differ diff --git a/audit-queue-tablet-768.png b/audit-queue-tablet-768.png new file mode 100644 index 000000000..31e024549 Binary files /dev/null and b/audit-queue-tablet-768.png differ diff --git a/audit-search-crash-luna.png b/audit-search-crash-luna.png new file mode 100644 index 000000000..c4c653ae7 Binary files /dev/null and b/audit-search-crash-luna.png differ diff --git a/audit-search-desktop-1280-empty.png b/audit-search-desktop-1280-empty.png new file mode 100644 index 000000000..8c64ead89 Binary files /dev/null and b/audit-search-desktop-1280-empty.png differ diff --git a/audit-search-desktop.png b/audit-search-desktop.png new file mode 100644 index 000000000..cd063b468 Binary files /dev/null and b/audit-search-desktop.png differ diff --git a/audit-search-mobile-375.png b/audit-search-mobile-375.png new file mode 100644 index 000000000..1e920eda5 Binary files /dev/null and b/audit-search-mobile-375.png differ diff --git a/audit-settings-desktop.png b/audit-settings-desktop.png new file mode 100644 index 000000000..dc540f9bb Binary files /dev/null and b/audit-settings-desktop.png differ diff --git a/audit-shared-playlist-fixed-desktop.png b/audit-shared-playlist-fixed-desktop.png new file mode 100644 index 000000000..db371d002 Binary files /dev/null and b/audit-shared-playlist-fixed-desktop.png differ diff --git a/audit-shared-playlist-fixed-mobile-375.png b/audit-shared-playlist-fixed-mobile-375.png new file mode 100644 index 000000000..8f6b4424d Binary files /dev/null and b/audit-shared-playlist-fixed-mobile-375.png differ diff --git a/audit-shared-playlist-notfound-with-valid-token.png b/audit-shared-playlist-notfound-with-valid-token.png new file mode 100644 index 000000000..e694ca37d Binary files /dev/null and b/audit-shared-playlist-notfound-with-valid-token.png differ diff --git a/audit-social-desktop.png b/audit-social-desktop.png new file mode 100644 index 000000000..fb7af1801 Binary files /dev/null and b/audit-social-desktop.png differ diff --git a/audit-track-detail-desktop.png b/audit-track-detail-desktop.png new file mode 100644 index 000000000..712ddefaa Binary files /dev/null and b/audit-track-detail-desktop.png differ diff --git a/audit-verify-email-bug04-resend-success-in-error-container.png b/audit-verify-email-bug04-resend-success-in-error-container.png new file mode 100644 index 000000000..a0e207e0d Binary files /dev/null and b/audit-verify-email-bug04-resend-success-in-error-container.png differ diff --git a/audit-verify-email-fixed-resend-success.png b/audit-verify-email-fixed-resend-success.png new file mode 100644 index 000000000..a6fc39cd4 Binary files /dev/null and b/audit-verify-email-fixed-resend-success.png differ diff --git a/audit-verify-email-mobile-375.png b/audit-verify-email-mobile-375.png new file mode 100644 index 000000000..b9d8a1206 Binary files /dev/null and b/audit-verify-email-mobile-375.png differ diff --git a/audit-verify-email-no-token-desktop.png b/audit-verify-email-no-token-desktop.png new file mode 100644 index 000000000..16fc13250 Binary files /dev/null and b/audit-verify-email-no-token-desktop.png differ diff --git a/audit-verify-email-tablet-768.png b/audit-verify-email-tablet-768.png new file mode 100644 index 000000000..f3c96eb7c Binary files /dev/null and b/audit-verify-email-tablet-768.png differ diff --git a/design-system-desktop-1280.png b/design-system-desktop-1280.png new file mode 100644 index 000000000..5c0bd7187 Binary files /dev/null and b/design-system-desktop-1280.png differ diff --git a/design-system-fixed-desktop.png b/design-system-fixed-desktop.png new file mode 100644 index 000000000..da6192962 Binary files /dev/null and b/design-system-fixed-desktop.png differ diff --git a/design-system-mobile-375.png b/design-system-mobile-375.png new file mode 100644 index 000000000..2dab579b0 Binary files /dev/null and b/design-system-mobile-375.png differ diff --git a/design-system-tablet-768.png b/design-system-tablet-768.png new file mode 100644 index 000000000..589f11700 Binary files /dev/null and b/design-system-tablet-768.png differ diff --git a/forgot-password-desktop-1280.png b/forgot-password-desktop-1280.png new file mode 100644 index 000000000..b7df26df1 Binary files /dev/null and b/forgot-password-desktop-1280.png differ diff --git a/forgot-password-fixed-desktop.png b/forgot-password-fixed-desktop.png new file mode 100644 index 000000000..f3a4ca600 Binary files /dev/null and b/forgot-password-fixed-desktop.png differ diff --git a/forgot-password-mobile-375.png b/forgot-password-mobile-375.png new file mode 100644 index 000000000..6874a6b6b Binary files /dev/null and b/forgot-password-mobile-375.png differ diff --git a/forgot-password-success-state.png b/forgot-password-success-state.png new file mode 100644 index 000000000..23151b80d Binary files /dev/null and b/forgot-password-success-state.png differ diff --git a/forgot-password-tablet-768.png b/forgot-password-tablet-768.png new file mode 100644 index 000000000..e989a1fd8 Binary files /dev/null and b/forgot-password-tablet-768.png differ diff --git a/generate_page_fix_prompts.sh b/generate_page_fix_prompts.sh new file mode 100644 index 000000000..911d1f5c2 --- /dev/null +++ b/generate_page_fix_prompts.sh @@ -0,0 +1,980 @@ +#!/usr/bin/env python3 +""" +VEZA — Générateur de prompts Claude Code pour audit exhaustif de toutes les pages. +Génère un prompt par route, prêt à être copié-collé dans Claude Code avec Playwright MCP. + +Usage: + python veza-prompt-generator.py # Génère tous les prompts dans ./prompts/ + python veza-prompt-generator.py --route /settings # Génère un seul prompt + python veza-prompt-generator.py --list # Liste toutes les routes + python veza-prompt-generator.py --batch 1 # Génère le batch 1 (routes groupées) + python veza-prompt-generator.py --combined # Un seul fichier avec tous les prompts +""" + +import argparse +import os +import sys +from dataclasses import dataclass, field +from datetime import datetime +from typing import Optional + + +# ───────────────────────────────────────────── +# Configuration +# ───────────────────────────────────────────── + +OUTPUT_DIR = "./prompts" +DOMAIN = "veza.fr" + +TEST_ACCOUNTS = [ + {"role": "admin", "email": "admin@veza.music", "password": "Admin123!"}, + {"role": "creator", "email": "artist@veza.music", "password": "Artist123!"}, + {"role": "user", "email": "user@veza.music", "password": "User123!"}, + {"role": "moderator", "email": "mod@veza.music", "password": "Mod123!"}, + {"role": "user_new", "email": "new@veza.music", "password": "New123!"}, +] + +E2E_TEST_DIR = "veza-e2e/" + + +# ───────────────────────────────────────────── +# Route definitions +# ───────────────────────────────────────────── + +@dataclass +class Route: + number: int + path: str + name: str + category: str + auth_required: bool = True + role: str = "user" + params: str = "" + test_with_accounts: list = field(default_factory=list) + specific_checks: list = field(default_factory=list) + + +ROUTES = [ + # ── Pages publiques ── + Route(1, "/login", "Connexion", "public", auth_required=False, + specific_checks=[ + "Formulaire email + password fonctionnel", + "Validation des champs (email invalide, champs vides)", + "Messages d'erreur (mauvais credentials)", + "Lien 'Mot de passe oublié' fonctionnel", + "Lien 'Inscription' fonctionnel", + "Redirection après login réussi", + "Protection contre brute-force (rate limiting visible)", + "Autocomplete attributes sur les inputs", + "Accessibilité: labels, focus order, aria", + ]), + Route(2, "/register", "Inscription", "public", auth_required=False, + specific_checks=[ + "Tous les champs du formulaire (username, email, password, confirm)", + "Validation temps réel (email format, password strength, username dispo)", + "Messages d'erreur clairs pour chaque règle de validation", + "Soumission et retour serveur (201, 409 duplicate, 422 validation)", + "Lien vers /login fonctionnel", + "CGU / checkbox conditions d'utilisation si présent", + "Accessibilité: labels, focus, aria, autocomplete", + ]), + Route(3, "/forgot-password", "Récupération mot de passe", "public", auth_required=False, + specific_checks=[ + "Formulaire email fonctionnel", + "Message de confirmation après soumission", + "Gestion email inexistant (pas de leak d'info)", + "Lien retour vers /login", + "Rate limiting sur les soumissions", + ]), + Route(4, "/verify-email", "Vérification email", "public", auth_required=False, + specific_checks=[ + "Comportement avec token valide vs invalide vs expiré", + "Message de succès / erreur approprié", + "Redirection après vérification", + "Gestion du cas sans token dans l'URL", + ]), + Route(5, "/reset-password", "Réinitialisation mot de passe", "public", auth_required=False, + specific_checks=[ + "Formulaire nouveau password + confirmation", + "Validation password strength côté client", + "Comportement avec token valide vs invalide vs expiré", + "Message de succès + redirection vers /login", + "Autocomplete attributes", + ]), + Route(6, "/launch", "Landing page pré-lancement", "public", auth_required=False, + specific_checks=[ + "Rendu visuel complet (hero, sections, CTA)", + "Tous les liens/CTA fonctionnels", + "Responsive (mobile/tablet/desktop)", + "Performance de chargement", + "SEO: title, meta description, OG tags", + ]), + Route(7, "/design-system", "Démo du design system", "public", auth_required=False, + specific_checks=[ + "Tous les composants se rendent sans erreur", + "Pas d'erreurs console", + "Interactivité des composants démo (boutons, toggles, modals)", + ]), + Route(8, "/u/:username", "Profil public utilisateur", "public", auth_required=False, + params="username", + specific_checks=[ + "Affichage avec username existant (ex: tester avec chaque compte)", + "Page 404 avec username inexistant", + "Infos publiques affichées (avatar, bio, tracks publiques)", + "Pas de fuite d'infos privées (email, settings)", + "Boutons follow/unfollow si connecté", + "Liste des tracks/playlists publiques", + "Liens fonctionnels vers les tracks", + ]), + Route(9, "/playlists/shared/:token", "Playlist partagée", "public", auth_required=False, + params="token", + specific_checks=[ + "Affichage avec token valide", + "Gestion token invalide / expiré", + "Lecture des tracks depuis le partage", + "Infos playlist (titre, description, nombre de tracks)", + ]), + + # ── Navigation principale ── + Route(10, "/dashboard", "Tableau de bord", "main_nav", + test_with_accounts=["user", "creator", "admin"], + specific_checks=[ + "Widgets / cartes de stats se chargent", + "Données cohérentes avec le rôle (creator voit ses stats artiste)", + "Liens rapides fonctionnels", + "Activité récente / feed", + "Pas d'erreurs réseau dans la console", + "Responsive layout", + ]), + Route(11, "/discover", "Découverte musicale", "main_nav", + specific_checks=[ + "Sections de découverte (trending, new releases, genres)", + "Cartes de tracks/albums cliquables", + "Lecture depuis la page discover", + "Filtres / catégories fonctionnels", + "Infinite scroll ou pagination", + "État vide si aucun contenu", + ]), + Route(12, "/feed", "Fil d'actualité", "main_nav", + specific_checks=[ + "Posts / activités des artistes suivis", + "Infinite scroll ou pagination", + "Interactions (like, comment, share)", + "État vide (aucun artiste suivi)", + "Chargement sans erreurs réseau", + ]), + Route(13, "/library", "Bibliothèque musicale", "main_nav", + test_with_accounts=["user", "creator"], + specific_checks=[ + "Liste des tracks / albums / playlists de l'utilisateur", + "Tri et filtres fonctionnels", + "Recherche dans la bibliothèque", + "Actions sur les items (play, add to playlist, delete)", + "État vide pour un nouveau compte", + "Pagination / infinite scroll", + ]), + Route(14, "/queue", "File de lecture", "main_nav", + specific_checks=[ + "Affichage de la queue actuelle", + "Drag & drop pour réordonner", + "Suppression d'items de la queue", + "Bouton clear queue", + "État vide", + "Persistance après navigation", + ]), + Route(15, "/search", "Recherche globale", "main_nav", + specific_checks=[ + "Barre de recherche fonctionnelle", + "Résultats par catégorie (tracks, artists, playlists, albums)", + "Recherche en temps réel / debounce", + "Résultats cliquables et navigation correcte", + "État 'aucun résultat'", + "Historique de recherche si présent", + ]), + + # ── Playlists & Tracks ── + Route(16, "/playlists", "Liste des playlists", "playlists", + specific_checks=[ + "Liste des playlists de l'utilisateur", + "Bouton créer une playlist", + "Cartes playlist cliquables", + "Infos affichées (titre, nombre de tracks, durée, cover)", + "Actions (edit, delete, share)", + "État vide", + ]), + Route(17, "/playlists/favoris", "Playlist favoris", "playlists", + specific_checks=[ + "Liste des tracks favorites", + "Bouton unfavorite fonctionnel", + "Lecture depuis les favoris", + "Tri (date ajoutée, titre, artiste)", + "État vide", + ]), + Route(18, "/playlists/:id", "Détail playlist", "playlists", + params="id", + specific_checks=[ + "Header playlist (titre, description, cover, auteur)", + "Liste des tracks avec numérotation", + "Boutons play / shuffle", + "Actions par track (play, add to queue, remove)", + "Boutons share / edit / delete (si owner)", + "Playlist inexistante → 404", + "Playlist privée d'un autre user → 403 ou 404", + ]), + Route(19, "/playlists/:id/edit", "Édition playlist", "playlists", + params="id", + specific_checks=[ + "Formulaire pré-rempli (titre, description)", + "Upload / changement de cover", + "Réordonnement des tracks (drag & drop)", + "Ajout / suppression de tracks", + "Sauvegarde fonctionnelle", + "Validation (titre requis)", + "Accès interdit si pas owner → redirect ou 403", + ]), + Route(20, "/tracks/:id", "Détail track", "playlists", + params="id", + specific_checks=[ + "Infos track (titre, artiste, album, durée, cover)", + "Bouton play fonctionnel", + "Boutons like / add to playlist / share", + "Waveform / visualisation audio si présent", + "Commentaires si présent", + "Tracks similaires / recommandations", + "Track inexistante → 404", + "Métadonnées (genre, BPM, key si affichés)", + ]), + + # ── Social & Communication ── + Route(21, "/social", "Communauté", "social", + specific_checks=[ + "Liste des utilisateurs / artistes", + "Recherche / filtres", + "Boutons follow / unfollow", + "Profils cliquables", + "Compteurs followers/following", + "Sections (trending artists, new members, etc.)", + ]), + Route(22, "/chat", "Messagerie", "social", + test_with_accounts=["user", "creator"], + specific_checks=[ + "Liste des conversations", + "Envoi de message", + "Réception en temps réel (WebSocket)", + "Création de nouvelle conversation", + "Recherche dans les conversations", + "État vide (aucune conversation)", + "Indicateurs read/unread", + "Envoi de médias si supporté", + ]), + Route(23, "/chat/join/:token", "Rejoindre un chat", "social", + params="token", + specific_checks=[ + "Token valide → rejoint le chat + redirect", + "Token invalide → message d'erreur", + "Token expiré → message d'erreur", + "Déjà membre → redirect vers le chat existant", + ]), + Route(24, "/live", "Streams en direct", "social", + specific_checks=[ + "Liste des streams en cours", + "Cartes stream (titre, artiste, viewers, thumbnail)", + "Clic → page de visionnage", + "État vide (aucun stream)", + "Compteurs viewers", + ]), + Route(25, "/live/go-live", "Lancer un stream", "social", + role="creator", + test_with_accounts=["creator", "admin"], + specific_checks=[ + "Formulaire de configuration stream (titre, description, catégorie)", + "Prévisualisation caméra/micro", + "Bouton Go Live", + "Vérification permissions (role creator/admin requis)", + "Utilisateur standard → redirect ou message d'erreur", + "Configuration RTMP/HLS si affichée", + ]), + Route(26, "/listen-together/:sessionId", "Écoute collaborative", "social", + params="sessionId", + specific_checks=[ + "Session valide → rejoint l'écoute", + "Session invalide → erreur", + "Synchronisation audio entre participants", + "Liste des participants", + "Chat intégré si présent", + "Contrôles de lecture (host only vs all)", + ]), + + # ── Marketplace & Commerce ── + Route(27, "/marketplace", "Place de marché", "marketplace", + specific_checks=[ + "Grille / liste de produits", + "Filtres (catégorie, prix, type)", + "Recherche produits", + "Cartes produits (image, titre, prix, vendeur)", + "Pagination / infinite scroll", + "Tri (prix, date, popularité)", + ]), + Route(28, "/marketplace/products/:id", "Détail produit", "marketplace", + params="id", + specific_checks=[ + "Infos produit (images, titre, description, prix)", + "Bouton acheter / ajouter au panier", + "Avis / ratings si présent", + "Infos vendeur", + "Produit inexistant → 404", + "Produits similaires", + ]), + Route(29, "/wishlist", "Liste de souhaits", "marketplace", + specific_checks=[ + "Liste des produits wishlistés", + "Bouton retirer de la wishlist", + "Bouton acheter directement", + "État vide", + "Infos produit à jour (prix, disponibilité)", + ]), + Route(30, "/purchases", "Historique d'achats", "marketplace", + specific_checks=[ + "Liste des achats passés", + "Détails par achat (date, montant, produit, statut)", + "Téléchargement si digital", + "État vide", + "Pagination si beaucoup d'achats", + ]), + Route(31, "/checkout/complete", "Confirmation de commande", "marketplace", + specific_checks=[ + "Message de confirmation", + "Récapitulatif de la commande", + "Liens vers les achats / téléchargements", + "Comportement si accès direct sans commande → redirect", + ]), + Route(32, "/sell", "Dashboard vendeur", "marketplace", + role="creator", + test_with_accounts=["creator", "admin"], + specific_checks=[ + "Stats de vente (revenus, nombre de ventes)", + "Liste des produits en vente", + "Bouton ajouter un produit", + "Gestion des produits (edit, delete, toggle visibility)", + "Accès interdit pour les non-creators", + ]), + + # ── Créateur & Analytics ── + Route(33, "/analytics", "Tableau de bord analytics", "creator", + role="creator", + test_with_accounts=["creator", "admin"], + specific_checks=[ + "Graphiques de stats (plays, listeners, revenue)", + "Période sélectionnable (7j, 30j, 90j, 1an)", + "Top tracks / Top playlists", + "Données démographiques si présent", + "Export de données si présent", + "État vide pour un nouveau creator", + "Accès interdit pour user standard", + ]), + Route(34, "/cloud", "Stockage cloud", "creator", + role="creator", + test_with_accounts=["creator"], + specific_checks=[ + "Explorateur de fichiers", + "Upload de fichiers audio", + "Progress bar upload", + "Organisation en dossiers", + "Actions (rename, delete, move, download)", + "Quota de stockage affiché", + "Types de fichiers acceptés / rejetés", + ]), + Route(35, "/gear", "Inventaire équipement", "creator", + role="creator", + specific_checks=[ + "Liste de l'équipement", + "Ajout / édition / suppression d'items", + "Catégories (instruments, software, hardware)", + "Photos d'équipement si supporté", + "État vide", + ]), + Route(36, "/distribution", "Distribution externe", "creator", + role="creator", + specific_checks=[ + "Liste des plateformes de distribution", + "Statut de distribution par track/album", + "Bouton distribuer", + "Configuration des métadonnées requises", + "Historique des distributions", + ]), + + # ── Compte & Paramètres ── + Route(37, "/profile", "Profil (redirect)", "account", + specific_checks=[ + "Redirection vers /u/:username du user connecté", + "Redirection correcte pour chaque rôle", + ]), + Route(38, "/settings", "Paramètres du compte", "account", + test_with_accounts=["user", "creator", "admin"], + specific_checks=[ + "Onglet Account: changement de password fonctionnel", + "Onglet Account: setup/disable 2FA (Authenticator + SMS)", + "Onglet Account: statut 2FA correct", + "Onglet Account: Delete Account (validation 'DELETE', password requis)", + "Onglet Préférences: thème (radio buttons mutuellement exclusifs)", + "Onglet Préférences: langue (changement effectif)", + "Onglet Préférences: timezone", + "Onglet Notifications: tous les toggles fonctionnels", + "Onglet Confidentialité: tous les toggles fonctionnels", + "Onglet Playback: audio quality, crossfade, etc.", + "Bouton Save Config fonctionnel (pas d'erreur validation)", + "Accessibilité: labels sur tous les checkboxes/toggles", + "Pas de mélange i18n (tout FR ou tout EN)", + "Pas de fuite d'infos (email dans search bar, VAPID key)", + ]), + Route(39, "/settings/sessions", "Sessions actives", "account", + specific_checks=[ + "Liste des sessions actives (device, IP, date)", + "Session courante identifiée", + "Bouton révoquer une session", + "Bouton révoquer toutes les autres sessions", + "Confirmation avant révocation", + ]), + Route(40, "/notifications", "Centre de notifications", "account", + specific_checks=[ + "Liste des notifications", + "Marquage lu/non-lu", + "Bouton marquer tout comme lu", + "Filtres par type de notification", + "Clic sur notification → navigation correcte", + "État vide", + "Pagination / infinite scroll", + ]), + Route(41, "/subscription", "Abonnements & plans", "account", + specific_checks=[ + "Affichage des plans disponibles", + "Plan actuel mis en évidence", + "Boutons upgrade / downgrade", + "Comparaison des features par plan", + "Historique de facturation si présent", + "Gestion du moyen de paiement", + ]), + + # ── Apprentissage & Support ── + Route(42, "/education", "Formation & ressources", "learning", + specific_checks=[ + "Liste des cours / ressources", + "Catégories / filtres", + "Progression si présent", + "Contenu vidéo / texte se charge", + "Liens fonctionnels", + ]), + Route(43, "/support", "Support & aide", "learning", + specific_checks=[ + "FAQ / base de connaissances", + "Formulaire de contact / ticket", + "Chat support si présent", + "Recherche dans l'aide", + "Liens vers documentation", + ]), + + # ── Administration ── + Route(44, "/admin", "Dashboard admin", "admin", role="admin", + test_with_accounts=["admin"], + specific_checks=[ + "Stats globales plateforme (users, tracks, revenue)", + "Graphiques / KPIs", + "Accès interdit pour non-admin → redirect ou 403", + "Liens rapides vers sous-sections admin", + ]), + Route(45, "/admin/moderation", "Modération contenu", "admin", role="admin", + test_with_accounts=["admin", "moderator"], + specific_checks=[ + "Queue de modération (signalements)", + "Actions (approve, reject, ban)", + "Filtres par type de contenu / statut", + "Détail du signalement", + "Historique des actions de modération", + ]), + Route(46, "/admin/platform", "Administration plateforme", "admin", role="admin", + test_with_accounts=["admin"], + specific_checks=[ + "Configuration plateforme", + "Gestion des features flags", + "Stats système (storage, bandwidth)", + "Logs si présent", + ]), + Route(47, "/admin/transfers", "Gestion transferts/paiements", "admin", role="admin", + test_with_accounts=["admin"], + specific_checks=[ + "Liste des transferts / paiements", + "Statuts (pending, completed, failed)", + "Détail par transfert", + "Actions (approve, reject, retry)", + "Filtres et recherche", + ]), + Route(48, "/admin/roles", "Gestion des rôles", "admin", role="admin", + test_with_accounts=["admin"], + specific_checks=[ + "Liste des rôles existants", + "Permissions par rôle", + "Assignation de rôles aux utilisateurs", + "Création / modification de rôles", + "Protection contre la suppression du rôle admin", + ]), + + # ── Développeur ── + Route(49, "/developer", "Dashboard développeur", "developer", + specific_checks=[ + "Clés API (création, révocation, copie)", + "Documentation API intégrée ou liens", + "Stats d'utilisation API", + "Webhooks configurés", + "Rate limits affichés", + ]), + Route(50, "/webhooks", "Gestion webhooks", "developer", + specific_checks=[ + "Liste des webhooks configurés", + "Ajout d'un webhook (URL, events, secret)", + "Test de webhook", + "Logs de delivery (succès/échec)", + "Actions (edit, delete, toggle active)", + ]), + + # ── Redirections ── + Route(51, "/", "Redirect → /launch", "redirect", auth_required=False, + specific_checks=[ + "Redirection automatique vers /launch", + "Status code 301/302 approprié", + "Pas de flash de contenu avant redirect", + ]), + Route(52, "/tracks", "Redirect → /library", "redirect", + specific_checks=[ + "Redirection automatique vers /library", + "Fonctionne quand connecté", + ]), + Route(53, "/community", "Redirect → /social", "redirect", + specific_checks=[ + "Redirection automatique vers /social", + ]), + Route(54, "/favorites", "Redirect → /playlists/favoris", "redirect", + specific_checks=[ + "Redirection automatique vers /playlists/favoris", + ]), + Route(55, "/home", "Redirect → /dashboard", "redirect", + specific_checks=[ + "Redirection automatique vers /dashboard", + ]), + + # ── Pages d'erreur ── + Route(56, "/404", "Page non trouvée", "error", auth_required=False, + specific_checks=[ + "Affichage du message 404", + "Lien retour vers l'accueil", + "Design cohérent avec le reste du site", + "Pas d'erreurs console", + ]), + Route(57, "/500", "Erreur serveur", "error", auth_required=False, + specific_checks=[ + "Affichage du message d'erreur serveur", + "Lien retour / bouton réessayer", + "Pas de stack trace exposée", + ]), + Route(58, "/random-nonexistent-path", "Catch-all → /404", "error", auth_required=False, + specific_checks=[ + "Redirection vers la page 404", + "URL arbitraire correctement interceptée", + ]), +] + + +# ───────────────────────────────────────────── +# Prompt template +# ───────────────────────────────────────────── + +def build_test_accounts_block() -> str: + lines = [] + lines.append("Comptes de test :") + lines.append("") + lines.append("┌───────────┬───────────────────┬──────────────┐") + lines.append("│ Rôle │ Email │ Mot de passe │") + lines.append("├───────────┼───────────────────┼──────────────┤") + for i, acc in enumerate(TEST_ACCOUNTS): + role = acc["role"].ljust(9) + email = acc["email"].ljust(17) + pwd = acc["password"].ljust(12) + lines.append(f"│ {role} │ {email} │ {pwd} │") + if i < len(TEST_ACCOUNTS) - 1: + lines.append("├───────────┼───────────────────┼──────────────┤") + lines.append("└───────────┴───────────────────┴──────────────┘") + lines.append(f"Domaine : {DOMAIN}") + return "\n".join(lines) + + +def build_prompt(route: Route) -> str: + """Génère le prompt Claude Code pour une route donnée.""" + + # Déterminer les comptes à utiliser + if route.test_with_accounts: + accounts_to_use = route.test_with_accounts + elif route.role == "admin": + accounts_to_use = ["admin"] + elif route.role == "creator": + accounts_to_use = ["creator"] + elif not route.auth_required: + accounts_to_use = ["(pas de connexion)", "user"] + else: + accounts_to_use = ["user", "creator"] + + accounts_str = ", ".join(accounts_to_use) + + # Checks spécifiques + checks_block = "" + if route.specific_checks: + checks_lines = [f" - {c}" for c in route.specific_checks] + checks_block = "\n".join(checks_lines) + + # Paramètres dynamiques + params_note = "" + if route.params: + params_note = f""" +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `{route.params}`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) +""" + + prompt = f"""ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "{route.name}" ({route.path}). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +{build_test_accounts_block()} + +Comptes à utiliser pour cette page : {accounts_str} +{params_note} +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page {route.path} ("{route.name}"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE +{checks_block} + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur +{" - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect" if route.role != "user" else ""} + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page {route.name} ({route.path}) + Testé avec le(s) compte(s) : {accounts_str} + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page {route.path} en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans {E2E_TEST_DIR}. + + Spécifications des tests : + - Fichier : {E2E_TEST_DIR}tests/{_route_to_filename(route.path)}.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import {{ test, expect }} from '@playwright/test'; + + test.describe('{route.name} ({route.path})', () => {{ + test.describe('Chargement & Rendu', () => {{ + test('la page se charge sans erreur', async ({{ page }}) => {{ + // ... + }}); + }}); + + test.describe('Fonctionnalités', () => {{ + // Un test par fonctionnalité + }}); + + test.describe('Sécurité', () => {{ + // Tests de sécurité + }}); + + test.describe('Accessibilité', () => {{ + // Tests a11y + }}); + + test.describe('Régression', () => {{ + // Un test par bug corrigé + }}); + }}); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. +""" + return prompt.strip() + + +def _route_to_filename(path: str) -> str: + """Convertit un path comme /admin/moderation en admin-moderation.""" + clean = path.strip("/").replace("/", "-").replace(":", "") + if not clean: + clean = "root-redirect" + return clean + + +# ───────────────────────────────────────────── +# Output functions +# ───────────────────────────────────────────── + +def write_single_prompt(route: Route, output_dir: str) -> str: + """Écrit un prompt dans un fichier et retourne le chemin.""" + os.makedirs(output_dir, exist_ok=True) + filename = f"{route.number:02d}-{_route_to_filename(route.path)}.md" + filepath = os.path.join(output_dir, filename) + prompt = build_prompt(route) + + with open(filepath, "w", encoding="utf-8") as f: + f.write(prompt) + + return filepath + + +def write_combined(routes: list[Route], output_dir: str) -> str: + """Écrit tous les prompts dans un seul fichier.""" + os.makedirs(output_dir, exist_ok=True) + filepath = os.path.join(output_dir, "ALL-PROMPTS.md") + + with open(filepath, "w", encoding="utf-8") as f: + f.write(f"# VEZA — Prompts d'audit exhaustif pour les {len(routes)} routes\n") + f.write(f"# Généré le {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n") + f.write(f"# Usage : copier-coller chaque section dans Claude Code une par une.\n\n") + + for route in routes: + f.write(f"\n{'='*80}\n") + f.write(f"# ROUTE {route.number:02d}/{len(routes)} — {route.path} ({route.name})\n") + f.write(f"{'='*80}\n\n") + f.write(build_prompt(route)) + f.write("\n\n") + + return filepath + + +def list_routes(routes: list[Route]): + """Affiche toutes les routes.""" + categories = {} + for r in routes: + categories.setdefault(r.category, []).append(r) + + cat_names = { + "public": "Pages publiques", + "main_nav": "Navigation principale", + "playlists": "Playlists & Tracks", + "social": "Social & Communication", + "marketplace": "Marketplace & Commerce", + "creator": "Créateur & Analytics", + "account": "Compte & Paramètres", + "learning": "Apprentissage & Support", + "admin": "Administration", + "developer": "Développeur", + "redirect": "Redirections", + "error": "Pages d'erreur", + } + + for cat, cat_routes in categories.items(): + print(f"\n ── {cat_names.get(cat, cat)} ──") + for r in cat_routes: + auth = "🔓" if not r.auth_required else f"🔒 {r.role}" + print(f" {r.number:2d}. {r.path:<30s} {r.name:<35s} {auth}") + + print(f"\n Total : {len(routes)} routes") + + +def get_batch(routes: list[Route], batch_num: int, batch_size: int = 5) -> list[Route]: + """Retourne un sous-ensemble de routes par batch.""" + start = (batch_num - 1) * batch_size + end = start + batch_size + return routes[start:end] + + +# ───────────────────────────────────────────── +# CLI +# ───────────────────────────────────────────── + +def main(): + parser = argparse.ArgumentParser( + description="VEZA — Générateur de prompts Claude Code pour audit exhaustif", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Exemples : + python veza-prompt-generator.py # Tous les prompts → ./prompts/ + python veza-prompt-generator.py --route /settings # Un seul prompt + python veza-prompt-generator.py --route /admin # Un seul prompt + python veza-prompt-generator.py --list # Liste les routes + python veza-prompt-generator.py --batch 3 # Routes 11-15 + python veza-prompt-generator.py --batch 3 --size 10 # Routes 21-30 + python veza-prompt-generator.py --combined # Tout dans un fichier + python veza-prompt-generator.py --category admin # Toutes les routes admin + python veza-prompt-generator.py --out ./my-prompts # Dossier custom + python veza-prompt-generator.py --print /settings # Affiche dans le terminal + """, + ) + parser.add_argument("--route", type=str, help="Génère le prompt pour une route spécifique (ex: /settings)") + parser.add_argument("--list", action="store_true", help="Liste toutes les routes") + parser.add_argument("--batch", type=int, help="Numéro de batch (1-indexed)") + parser.add_argument("--size", type=int, default=5, help="Taille d'un batch (défaut: 5)") + parser.add_argument("--combined", action="store_true", help="Génère un seul fichier avec tous les prompts") + parser.add_argument("--category", type=str, help="Filtre par catégorie (public, admin, social, ...)") + parser.add_argument("--out", type=str, default=OUTPUT_DIR, help=f"Dossier de sortie (défaut: {OUTPUT_DIR})") + parser.add_argument("--print", dest="print_route", type=str, help="Affiche le prompt dans le terminal au lieu de l'écrire") + parser.add_argument("--critical-only", action="store_true", help="Uniquement les routes avec auth/rôle spécifique") + + args = parser.parse_args() + + # ── List ── + if args.list: + list_routes(ROUTES) + return + + # ── Print single ── + if args.print_route: + route = next((r for r in ROUTES if r.path == args.print_route), None) + if not route: + print(f"❌ Route '{args.print_route}' non trouvée.", file=sys.stderr) + print(" Utilise --list pour voir toutes les routes.", file=sys.stderr) + sys.exit(1) + print(build_prompt(route)) + return + + # ── Single route ── + if args.route: + route = next((r for r in ROUTES if r.path == args.route), None) + if not route: + print(f"❌ Route '{args.route}' non trouvée.", file=sys.stderr) + print(" Utilise --list pour voir toutes les routes.", file=sys.stderr) + sys.exit(1) + filepath = write_single_prompt(route, args.out) + print(f"✅ Prompt généré : {filepath}") + return + + # ── Filter by category ── + routes = ROUTES + if args.category: + routes = [r for r in ROUTES if r.category == args.category] + if not routes: + print(f"❌ Catégorie '{args.category}' non trouvée.", file=sys.stderr) + cats = sorted(set(r.category for r in ROUTES)) + print(f" Catégories disponibles : {', '.join(cats)}", file=sys.stderr) + sys.exit(1) + + if args.critical_only: + routes = [r for r in routes if r.role != "user" or not r.auth_required] + + # ── Batch ── + if args.batch: + routes = get_batch(routes, args.batch, args.size) + if not routes: + total_batches = (len(ROUTES) + args.size - 1) // args.size + print(f"❌ Batch {args.batch} vide. Batches disponibles : 1-{total_batches}", file=sys.stderr) + sys.exit(1) + print(f"📦 Batch {args.batch} ({len(routes)} routes)") + + # ── Combined ── + if args.combined: + filepath = write_combined(routes, args.out) + print(f"✅ Fichier combiné généré : {filepath} ({len(routes)} prompts)") + return + + # ── All individual files ── + os.makedirs(args.out, exist_ok=True) + for route in routes: + filepath = write_single_prompt(route, args.out) + print(f" ✅ {route.number:2d}. {route.path:<30s} → {filepath}") + + print(f"\n🎉 {len(routes)} prompts générés dans {args.out}/") + print(f" Copie chaque prompt dans Claude Code un par un.") + total_batches = (len(routes) + args.size - 1) // args.size + print(f" Ou utilise --batch N (1-{total_batches}) pour y aller par groupes de {args.size}.") + + +if __name__ == "__main__": + main() diff --git a/prompts/01-login.md b/prompts/01-login.md new file mode 100644 index 000000000..b960a84a6 --- /dev/null +++ b/prompts/01-login.md @@ -0,0 +1,173 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Connexion" (/login). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /login ("Connexion"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Formulaire email + password fonctionnel + - Validation des champs (email invalide, champs vides) + - Messages d'erreur (mauvais credentials) + - Lien 'Mot de passe oublié' fonctionnel + - Lien 'Inscription' fonctionnel + - Redirection après login réussi + - Protection contre brute-force (rate limiting visible) + - Autocomplete attributes sur les inputs + - Accessibilité: labels, focus order, aria + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Connexion (/login) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /login en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/login.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Connexion (/login)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/02-register.md b/prompts/02-register.md new file mode 100644 index 000000000..5071291e8 --- /dev/null +++ b/prompts/02-register.md @@ -0,0 +1,171 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Inscription" (/register). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /register ("Inscription"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Tous les champs du formulaire (username, email, password, confirm) + - Validation temps réel (email format, password strength, username dispo) + - Messages d'erreur clairs pour chaque règle de validation + - Soumission et retour serveur (201, 409 duplicate, 422 validation) + - Lien vers /login fonctionnel + - CGU / checkbox conditions d'utilisation si présent + - Accessibilité: labels, focus, aria, autocomplete + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Inscription (/register) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /register en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/register.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Inscription (/register)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/03-forgot-password.md b/prompts/03-forgot-password.md new file mode 100644 index 000000000..5c2eaf121 --- /dev/null +++ b/prompts/03-forgot-password.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Récupération mot de passe" (/forgot-password). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /forgot-password ("Récupération mot de passe"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Formulaire email fonctionnel + - Message de confirmation après soumission + - Gestion email inexistant (pas de leak d'info) + - Lien retour vers /login + - Rate limiting sur les soumissions + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Récupération mot de passe (/forgot-password) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /forgot-password en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/forgot-password.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Récupération mot de passe (/forgot-password)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/04-verify-email.md b/prompts/04-verify-email.md new file mode 100644 index 000000000..d8082be83 --- /dev/null +++ b/prompts/04-verify-email.md @@ -0,0 +1,168 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Vérification email" (/verify-email). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /verify-email ("Vérification email"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Comportement avec token valide vs invalide vs expiré + - Message de succès / erreur approprié + - Redirection après vérification + - Gestion du cas sans token dans l'URL + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Vérification email (/verify-email) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /verify-email en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/verify-email.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Vérification email (/verify-email)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/05-reset-password.md b/prompts/05-reset-password.md new file mode 100644 index 000000000..696b84d1d --- /dev/null +++ b/prompts/05-reset-password.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Réinitialisation mot de passe" (/reset-password). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /reset-password ("Réinitialisation mot de passe"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Formulaire nouveau password + confirmation + - Validation password strength côté client + - Comportement avec token valide vs invalide vs expiré + - Message de succès + redirection vers /login + - Autocomplete attributes + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Réinitialisation mot de passe (/reset-password) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /reset-password en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/reset-password.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Réinitialisation mot de passe (/reset-password)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/06-launch.md b/prompts/06-launch.md new file mode 100644 index 000000000..26ca39b88 --- /dev/null +++ b/prompts/06-launch.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Landing page pré-lancement" (/launch). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /launch ("Landing page pré-lancement"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Rendu visuel complet (hero, sections, CTA) + - Tous les liens/CTA fonctionnels + - Responsive (mobile/tablet/desktop) + - Performance de chargement + - SEO: title, meta description, OG tags + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Landing page pré-lancement (/launch) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /launch en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/launch.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Landing page pré-lancement (/launch)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/07-design-system.md b/prompts/07-design-system.md new file mode 100644 index 000000000..0cfa48e47 --- /dev/null +++ b/prompts/07-design-system.md @@ -0,0 +1,167 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Démo du design system" (/design-system). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /design-system ("Démo du design system"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Tous les composants se rendent sans erreur + - Pas d'erreurs console + - Interactivité des composants démo (boutons, toggles, modals) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Démo du design system (/design-system) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /design-system en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/design-system.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Démo du design system (/design-system)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/08-u-username.md b/prompts/08-u-username.md new file mode 100644 index 000000000..fb5d86bb1 --- /dev/null +++ b/prompts/08-u-username.md @@ -0,0 +1,177 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Profil public utilisateur" (/u/:username). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `username`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /u/:username ("Profil public utilisateur"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage avec username existant (ex: tester avec chaque compte) + - Page 404 avec username inexistant + - Infos publiques affichées (avatar, bio, tracks publiques) + - Pas de fuite d'infos privées (email, settings) + - Boutons follow/unfollow si connecté + - Liste des tracks/playlists publiques + - Liens fonctionnels vers les tracks + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Profil public utilisateur (/u/:username) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /u/:username en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/u-username.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Profil public utilisateur (/u/:username)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/09-playlists-shared-token.md b/prompts/09-playlists-shared-token.md new file mode 100644 index 000000000..1d09e284a --- /dev/null +++ b/prompts/09-playlists-shared-token.md @@ -0,0 +1,174 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Playlist partagée" (/playlists/shared/:token). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `token`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /playlists/shared/:token ("Playlist partagée"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage avec token valide + - Gestion token invalide / expiré + - Lecture des tracks depuis le partage + - Infos playlist (titre, description, nombre de tracks) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Playlist partagée (/playlists/shared/:token) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /playlists/shared/:token en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/playlists-shared-token.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Playlist partagée (/playlists/shared/:token)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/10-dashboard.md b/prompts/10-dashboard.md new file mode 100644 index 000000000..9c6f39cc3 --- /dev/null +++ b/prompts/10-dashboard.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Tableau de bord" (/dashboard). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator, admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /dashboard ("Tableau de bord"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Widgets / cartes de stats se chargent + - Données cohérentes avec le rôle (creator voit ses stats artiste) + - Liens rapides fonctionnels + - Activité récente / feed + - Pas d'erreurs réseau dans la console + - Responsive layout + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Tableau de bord (/dashboard) + Testé avec le(s) compte(s) : user, creator, admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /dashboard en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/dashboard.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Tableau de bord (/dashboard)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/11-discover.md b/prompts/11-discover.md new file mode 100644 index 000000000..b807cb3bb --- /dev/null +++ b/prompts/11-discover.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Découverte musicale" (/discover). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /discover ("Découverte musicale"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Sections de découverte (trending, new releases, genres) + - Cartes de tracks/albums cliquables + - Lecture depuis la page discover + - Filtres / catégories fonctionnels + - Infinite scroll ou pagination + - État vide si aucun contenu + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Découverte musicale (/discover) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /discover en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/discover.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Découverte musicale (/discover)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/12-feed.md b/prompts/12-feed.md new file mode 100644 index 000000000..e25d104fd --- /dev/null +++ b/prompts/12-feed.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Fil d'actualité" (/feed). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /feed ("Fil d'actualité"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Posts / activités des artistes suivis + - Infinite scroll ou pagination + - Interactions (like, comment, share) + - État vide (aucun artiste suivi) + - Chargement sans erreurs réseau + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Fil d'actualité (/feed) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /feed en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/feed.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Fil d'actualité (/feed)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/13-library.md b/prompts/13-library.md new file mode 100644 index 000000000..b8b8c20c4 --- /dev/null +++ b/prompts/13-library.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Bibliothèque musicale" (/library). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /library ("Bibliothèque musicale"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des tracks / albums / playlists de l'utilisateur + - Tri et filtres fonctionnels + - Recherche dans la bibliothèque + - Actions sur les items (play, add to playlist, delete) + - État vide pour un nouveau compte + - Pagination / infinite scroll + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Bibliothèque musicale (/library) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /library en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/library.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Bibliothèque musicale (/library)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/14-queue.md b/prompts/14-queue.md new file mode 100644 index 000000000..67a82ccf9 --- /dev/null +++ b/prompts/14-queue.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "File de lecture" (/queue). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /queue ("File de lecture"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage de la queue actuelle + - Drag & drop pour réordonner + - Suppression d'items de la queue + - Bouton clear queue + - État vide + - Persistance après navigation + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page File de lecture (/queue) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /queue en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/queue.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('File de lecture (/queue)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/15-search.md b/prompts/15-search.md new file mode 100644 index 000000000..8c5bfccb2 --- /dev/null +++ b/prompts/15-search.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Recherche globale" (/search). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /search ("Recherche globale"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Barre de recherche fonctionnelle + - Résultats par catégorie (tracks, artists, playlists, albums) + - Recherche en temps réel / debounce + - Résultats cliquables et navigation correcte + - État 'aucun résultat' + - Historique de recherche si présent + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Recherche globale (/search) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /search en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/search.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Recherche globale (/search)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/16-playlists.md b/prompts/16-playlists.md new file mode 100644 index 000000000..d0a68f47b --- /dev/null +++ b/prompts/16-playlists.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Liste des playlists" (/playlists). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /playlists ("Liste des playlists"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des playlists de l'utilisateur + - Bouton créer une playlist + - Cartes playlist cliquables + - Infos affichées (titre, nombre de tracks, durée, cover) + - Actions (edit, delete, share) + - État vide + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Liste des playlists (/playlists) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /playlists en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/playlists.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Liste des playlists (/playlists)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/17-playlists-favoris.md b/prompts/17-playlists-favoris.md new file mode 100644 index 000000000..b59353b39 --- /dev/null +++ b/prompts/17-playlists-favoris.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Playlist favoris" (/playlists/favoris). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /playlists/favoris ("Playlist favoris"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des tracks favorites + - Bouton unfavorite fonctionnel + - Lecture depuis les favoris + - Tri (date ajoutée, titre, artiste) + - État vide + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Playlist favoris (/playlists/favoris) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /playlists/favoris en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/playlists-favoris.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Playlist favoris (/playlists/favoris)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/18-playlists-id.md b/prompts/18-playlists-id.md new file mode 100644 index 000000000..04bd585c6 --- /dev/null +++ b/prompts/18-playlists-id.md @@ -0,0 +1,177 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Détail playlist" (/playlists/:id). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `id`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /playlists/:id ("Détail playlist"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Header playlist (titre, description, cover, auteur) + - Liste des tracks avec numérotation + - Boutons play / shuffle + - Actions par track (play, add to queue, remove) + - Boutons share / edit / delete (si owner) + - Playlist inexistante → 404 + - Playlist privée d'un autre user → 403 ou 404 + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Détail playlist (/playlists/:id) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /playlists/:id en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/playlists-id.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Détail playlist (/playlists/:id)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/19-playlists-id-edit.md b/prompts/19-playlists-id-edit.md new file mode 100644 index 000000000..4f5bea9bb --- /dev/null +++ b/prompts/19-playlists-id-edit.md @@ -0,0 +1,177 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Édition playlist" (/playlists/:id/edit). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `id`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /playlists/:id/edit ("Édition playlist"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Formulaire pré-rempli (titre, description) + - Upload / changement de cover + - Réordonnement des tracks (drag & drop) + - Ajout / suppression de tracks + - Sauvegarde fonctionnelle + - Validation (titre requis) + - Accès interdit si pas owner → redirect ou 403 + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Édition playlist (/playlists/:id/edit) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /playlists/:id/edit en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/playlists-id-edit.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Édition playlist (/playlists/:id/edit)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/20-tracks-id.md b/prompts/20-tracks-id.md new file mode 100644 index 000000000..b847b2740 --- /dev/null +++ b/prompts/20-tracks-id.md @@ -0,0 +1,178 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Détail track" (/tracks/:id). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `id`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /tracks/:id ("Détail track"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Infos track (titre, artiste, album, durée, cover) + - Bouton play fonctionnel + - Boutons like / add to playlist / share + - Waveform / visualisation audio si présent + - Commentaires si présent + - Tracks similaires / recommandations + - Track inexistante → 404 + - Métadonnées (genre, BPM, key si affichés) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Détail track (/tracks/:id) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /tracks/:id en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/tracks-id.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Détail track (/tracks/:id)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/21-social.md b/prompts/21-social.md new file mode 100644 index 000000000..3b22663e1 --- /dev/null +++ b/prompts/21-social.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Communauté" (/social). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /social ("Communauté"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des utilisateurs / artistes + - Recherche / filtres + - Boutons follow / unfollow + - Profils cliquables + - Compteurs followers/following + - Sections (trending artists, new members, etc.) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Communauté (/social) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /social en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/social.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Communauté (/social)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/22-chat.md b/prompts/22-chat.md new file mode 100644 index 000000000..9a621b8d1 --- /dev/null +++ b/prompts/22-chat.md @@ -0,0 +1,172 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Messagerie" (/chat). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /chat ("Messagerie"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des conversations + - Envoi de message + - Réception en temps réel (WebSocket) + - Création de nouvelle conversation + - Recherche dans les conversations + - État vide (aucune conversation) + - Indicateurs read/unread + - Envoi de médias si supporté + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Messagerie (/chat) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /chat en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/chat.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Messagerie (/chat)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/23-chat-join-token.md b/prompts/23-chat-join-token.md new file mode 100644 index 000000000..e05d81030 --- /dev/null +++ b/prompts/23-chat-join-token.md @@ -0,0 +1,174 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Rejoindre un chat" (/chat/join/:token). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `token`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /chat/join/:token ("Rejoindre un chat"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Token valide → rejoint le chat + redirect + - Token invalide → message d'erreur + - Token expiré → message d'erreur + - Déjà membre → redirect vers le chat existant + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Rejoindre un chat (/chat/join/:token) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /chat/join/:token en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/chat-join-token.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Rejoindre un chat (/chat/join/:token)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/24-live.md b/prompts/24-live.md new file mode 100644 index 000000000..a2764f85e --- /dev/null +++ b/prompts/24-live.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Streams en direct" (/live). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /live ("Streams en direct"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des streams en cours + - Cartes stream (titre, artiste, viewers, thumbnail) + - Clic → page de visionnage + - État vide (aucun stream) + - Compteurs viewers + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Streams en direct (/live) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /live en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/live.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Streams en direct (/live)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/25-live-go-live.md b/prompts/25-live-go-live.md new file mode 100644 index 000000000..bb9f81f65 --- /dev/null +++ b/prompts/25-live-go-live.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Lancer un stream" (/live/go-live). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator, admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /live/go-live ("Lancer un stream"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Formulaire de configuration stream (titre, description, catégorie) + - Prévisualisation caméra/micro + - Bouton Go Live + - Vérification permissions (role creator/admin requis) + - Utilisateur standard → redirect ou message d'erreur + - Configuration RTMP/HLS si affichée + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Lancer un stream (/live/go-live) + Testé avec le(s) compte(s) : creator, admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /live/go-live en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/live-go-live.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Lancer un stream (/live/go-live)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/26-listen-together-sessionId.md b/prompts/26-listen-together-sessionId.md new file mode 100644 index 000000000..29b84764d --- /dev/null +++ b/prompts/26-listen-together-sessionId.md @@ -0,0 +1,176 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Écoute collaborative" (/listen-together/:sessionId). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `sessionId`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /listen-together/:sessionId ("Écoute collaborative"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Session valide → rejoint l'écoute + - Session invalide → erreur + - Synchronisation audio entre participants + - Liste des participants + - Chat intégré si présent + - Contrôles de lecture (host only vs all) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Écoute collaborative (/listen-together/:sessionId) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /listen-together/:sessionId en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/listen-together-sessionId.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Écoute collaborative (/listen-together/:sessionId)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/27-marketplace.md b/prompts/27-marketplace.md new file mode 100644 index 000000000..f5cff40ff --- /dev/null +++ b/prompts/27-marketplace.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Place de marché" (/marketplace). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /marketplace ("Place de marché"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Grille / liste de produits + - Filtres (catégorie, prix, type) + - Recherche produits + - Cartes produits (image, titre, prix, vendeur) + - Pagination / infinite scroll + - Tri (prix, date, popularité) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Place de marché (/marketplace) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /marketplace en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/marketplace.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Place de marché (/marketplace)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/28-marketplace-products-id.md b/prompts/28-marketplace-products-id.md new file mode 100644 index 000000000..dd295813f --- /dev/null +++ b/prompts/28-marketplace-products-id.md @@ -0,0 +1,176 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Détail produit" (/marketplace/products/:id). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +Note sur les paramètres dynamiques : + Cette route utilise le paramètre `id`. + - Teste avec une valeur VALIDE (existante en base) + - Teste avec une valeur INVALIDE (inexistante) → comportement d'erreur attendu + - Teste avec une valeur malformée (injection, caractères spéciaux) + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /marketplace/products/:id ("Détail produit"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Infos produit (images, titre, description, prix) + - Bouton acheter / ajouter au panier + - Avis / ratings si présent + - Infos vendeur + - Produit inexistant → 404 + - Produits similaires + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Détail produit (/marketplace/products/:id) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /marketplace/products/:id en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/marketplace-products-id.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Détail produit (/marketplace/products/:id)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/29-wishlist.md b/prompts/29-wishlist.md new file mode 100644 index 000000000..ce1735a57 --- /dev/null +++ b/prompts/29-wishlist.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Liste de souhaits" (/wishlist). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /wishlist ("Liste de souhaits"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des produits wishlistés + - Bouton retirer de la wishlist + - Bouton acheter directement + - État vide + - Infos produit à jour (prix, disponibilité) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Liste de souhaits (/wishlist) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /wishlist en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/wishlist.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Liste de souhaits (/wishlist)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/30-purchases.md b/prompts/30-purchases.md new file mode 100644 index 000000000..6b3e895a1 --- /dev/null +++ b/prompts/30-purchases.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Historique d'achats" (/purchases). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /purchases ("Historique d'achats"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des achats passés + - Détails par achat (date, montant, produit, statut) + - Téléchargement si digital + - État vide + - Pagination si beaucoup d'achats + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Historique d'achats (/purchases) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /purchases en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/purchases.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Historique d'achats (/purchases)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/31-checkout-complete.md b/prompts/31-checkout-complete.md new file mode 100644 index 000000000..9f5123fa4 --- /dev/null +++ b/prompts/31-checkout-complete.md @@ -0,0 +1,168 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Confirmation de commande" (/checkout/complete). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /checkout/complete ("Confirmation de commande"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Message de confirmation + - Récapitulatif de la commande + - Liens vers les achats / téléchargements + - Comportement si accès direct sans commande → redirect + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Confirmation de commande (/checkout/complete) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /checkout/complete en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/checkout-complete.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Confirmation de commande (/checkout/complete)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/32-sell.md b/prompts/32-sell.md new file mode 100644 index 000000000..64223dddb --- /dev/null +++ b/prompts/32-sell.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Dashboard vendeur" (/sell). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator, admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /sell ("Dashboard vendeur"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Stats de vente (revenus, nombre de ventes) + - Liste des produits en vente + - Bouton ajouter un produit + - Gestion des produits (edit, delete, toggle visibility) + - Accès interdit pour les non-creators + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Dashboard vendeur (/sell) + Testé avec le(s) compte(s) : creator, admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /sell en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/sell.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Dashboard vendeur (/sell)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/33-analytics.md b/prompts/33-analytics.md new file mode 100644 index 000000000..2316b5e3b --- /dev/null +++ b/prompts/33-analytics.md @@ -0,0 +1,171 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Tableau de bord analytics" (/analytics). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator, admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /analytics ("Tableau de bord analytics"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Graphiques de stats (plays, listeners, revenue) + - Période sélectionnable (7j, 30j, 90j, 1an) + - Top tracks / Top playlists + - Données démographiques si présent + - Export de données si présent + - État vide pour un nouveau creator + - Accès interdit pour user standard + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Tableau de bord analytics (/analytics) + Testé avec le(s) compte(s) : creator, admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /analytics en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/analytics.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Tableau de bord analytics (/analytics)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/34-cloud.md b/prompts/34-cloud.md new file mode 100644 index 000000000..d600024e2 --- /dev/null +++ b/prompts/34-cloud.md @@ -0,0 +1,171 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Stockage cloud" (/cloud). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /cloud ("Stockage cloud"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Explorateur de fichiers + - Upload de fichiers audio + - Progress bar upload + - Organisation en dossiers + - Actions (rename, delete, move, download) + - Quota de stockage affiché + - Types de fichiers acceptés / rejetés + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Stockage cloud (/cloud) + Testé avec le(s) compte(s) : creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /cloud en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/cloud.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Stockage cloud (/cloud)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/35-gear.md b/prompts/35-gear.md new file mode 100644 index 000000000..b91483ec0 --- /dev/null +++ b/prompts/35-gear.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Inventaire équipement" (/gear). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /gear ("Inventaire équipement"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste de l'équipement + - Ajout / édition / suppression d'items + - Catégories (instruments, software, hardware) + - Photos d'équipement si supporté + - État vide + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Inventaire équipement (/gear) + Testé avec le(s) compte(s) : creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /gear en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/gear.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Inventaire équipement (/gear)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/36-distribution.md b/prompts/36-distribution.md new file mode 100644 index 000000000..8e48c81cf --- /dev/null +++ b/prompts/36-distribution.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Distribution externe" (/distribution). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /distribution ("Distribution externe"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des plateformes de distribution + - Statut de distribution par track/album + - Bouton distribuer + - Configuration des métadonnées requises + - Historique des distributions + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Distribution externe (/distribution) + Testé avec le(s) compte(s) : creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /distribution en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/distribution.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Distribution externe (/distribution)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/37-profile.md b/prompts/37-profile.md new file mode 100644 index 000000000..8831af75e --- /dev/null +++ b/prompts/37-profile.md @@ -0,0 +1,166 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Profil (redirect)" (/profile). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /profile ("Profil (redirect)"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection vers /u/:username du user connecté + - Redirection correcte pour chaque rôle + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Profil (redirect) (/profile) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /profile en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/profile.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Profil (redirect) (/profile)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/38-settings.md b/prompts/38-settings.md new file mode 100644 index 000000000..ecca3cb19 --- /dev/null +++ b/prompts/38-settings.md @@ -0,0 +1,178 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Paramètres du compte" (/settings). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator, admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /settings ("Paramètres du compte"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Onglet Account: changement de password fonctionnel + - Onglet Account: setup/disable 2FA (Authenticator + SMS) + - Onglet Account: statut 2FA correct + - Onglet Account: Delete Account (validation 'DELETE', password requis) + - Onglet Préférences: thème (radio buttons mutuellement exclusifs) + - Onglet Préférences: langue (changement effectif) + - Onglet Préférences: timezone + - Onglet Notifications: tous les toggles fonctionnels + - Onglet Confidentialité: tous les toggles fonctionnels + - Onglet Playback: audio quality, crossfade, etc. + - Bouton Save Config fonctionnel (pas d'erreur validation) + - Accessibilité: labels sur tous les checkboxes/toggles + - Pas de mélange i18n (tout FR ou tout EN) + - Pas de fuite d'infos (email dans search bar, VAPID key) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Paramètres du compte (/settings) + Testé avec le(s) compte(s) : user, creator, admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /settings en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/settings.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Paramètres du compte (/settings)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/39-settings-sessions.md b/prompts/39-settings-sessions.md new file mode 100644 index 000000000..802189575 --- /dev/null +++ b/prompts/39-settings-sessions.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Sessions actives" (/settings/sessions). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /settings/sessions ("Sessions actives"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des sessions actives (device, IP, date) + - Session courante identifiée + - Bouton révoquer une session + - Bouton révoquer toutes les autres sessions + - Confirmation avant révocation + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Sessions actives (/settings/sessions) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /settings/sessions en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/settings-sessions.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Sessions actives (/settings/sessions)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/40-notifications.md b/prompts/40-notifications.md new file mode 100644 index 000000000..9e04346f8 --- /dev/null +++ b/prompts/40-notifications.md @@ -0,0 +1,171 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Centre de notifications" (/notifications). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /notifications ("Centre de notifications"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des notifications + - Marquage lu/non-lu + - Bouton marquer tout comme lu + - Filtres par type de notification + - Clic sur notification → navigation correcte + - État vide + - Pagination / infinite scroll + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Centre de notifications (/notifications) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /notifications en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/notifications.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Centre de notifications (/notifications)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/41-subscription.md b/prompts/41-subscription.md new file mode 100644 index 000000000..21e4886c4 --- /dev/null +++ b/prompts/41-subscription.md @@ -0,0 +1,170 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Abonnements & plans" (/subscription). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /subscription ("Abonnements & plans"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage des plans disponibles + - Plan actuel mis en évidence + - Boutons upgrade / downgrade + - Comparaison des features par plan + - Historique de facturation si présent + - Gestion du moyen de paiement + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Abonnements & plans (/subscription) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /subscription en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/subscription.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Abonnements & plans (/subscription)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/42-education.md b/prompts/42-education.md new file mode 100644 index 000000000..18eee1d6f --- /dev/null +++ b/prompts/42-education.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Formation & ressources" (/education). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /education ("Formation & ressources"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des cours / ressources + - Catégories / filtres + - Progression si présent + - Contenu vidéo / texte se charge + - Liens fonctionnels + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Formation & ressources (/education) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /education en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/education.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Formation & ressources (/education)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/43-support.md b/prompts/43-support.md new file mode 100644 index 000000000..5b3f3e1fd --- /dev/null +++ b/prompts/43-support.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Support & aide" (/support). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /support ("Support & aide"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - FAQ / base de connaissances + - Formulaire de contact / ticket + - Chat support si présent + - Recherche dans l'aide + - Liens vers documentation + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Support & aide (/support) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /support en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/support.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Support & aide (/support)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/44-admin.md b/prompts/44-admin.md new file mode 100644 index 000000000..0b1fce324 --- /dev/null +++ b/prompts/44-admin.md @@ -0,0 +1,168 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Dashboard admin" (/admin). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /admin ("Dashboard admin"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Stats globales plateforme (users, tracks, revenue) + - Graphiques / KPIs + - Accès interdit pour non-admin → redirect ou 403 + - Liens rapides vers sous-sections admin + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Dashboard admin (/admin) + Testé avec le(s) compte(s) : admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /admin en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/admin.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Dashboard admin (/admin)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/45-admin-moderation.md b/prompts/45-admin-moderation.md new file mode 100644 index 000000000..129cb4660 --- /dev/null +++ b/prompts/45-admin-moderation.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Modération contenu" (/admin/moderation). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : admin, moderator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /admin/moderation ("Modération contenu"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Queue de modération (signalements) + - Actions (approve, reject, ban) + - Filtres par type de contenu / statut + - Détail du signalement + - Historique des actions de modération + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Modération contenu (/admin/moderation) + Testé avec le(s) compte(s) : admin, moderator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /admin/moderation en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/admin-moderation.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Modération contenu (/admin/moderation)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/46-admin-platform.md b/prompts/46-admin-platform.md new file mode 100644 index 000000000..d9f55d1bd --- /dev/null +++ b/prompts/46-admin-platform.md @@ -0,0 +1,168 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Administration plateforme" (/admin/platform). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /admin/platform ("Administration plateforme"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Configuration plateforme + - Gestion des features flags + - Stats système (storage, bandwidth) + - Logs si présent + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Administration plateforme (/admin/platform) + Testé avec le(s) compte(s) : admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /admin/platform en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/admin-platform.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Administration plateforme (/admin/platform)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/47-admin-transfers.md b/prompts/47-admin-transfers.md new file mode 100644 index 000000000..27c6ba2d4 --- /dev/null +++ b/prompts/47-admin-transfers.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Gestion transferts/paiements" (/admin/transfers). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /admin/transfers ("Gestion transferts/paiements"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des transferts / paiements + - Statuts (pending, completed, failed) + - Détail par transfert + - Actions (approve, reject, retry) + - Filtres et recherche + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Gestion transferts/paiements (/admin/transfers) + Testé avec le(s) compte(s) : admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /admin/transfers en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/admin-transfers.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Gestion transferts/paiements (/admin/transfers)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/48-admin-roles.md b/prompts/48-admin-roles.md new file mode 100644 index 000000000..e2527deb7 --- /dev/null +++ b/prompts/48-admin-roles.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Gestion des rôles" (/admin/roles). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : admin + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /admin/roles ("Gestion des rôles"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des rôles existants + - Permissions par rôle + - Assignation de rôles aux utilisateurs + - Création / modification de rôles + - Protection contre la suppression du rôle admin + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + - Vérifier que les rôles non-autorisés reçoivent bien un 403 ou redirect + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Gestion des rôles (/admin/roles) + Testé avec le(s) compte(s) : admin + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /admin/roles en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/admin-roles.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Gestion des rôles (/admin/roles)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/49-developer.md b/prompts/49-developer.md new file mode 100644 index 000000000..7f7ebbb70 --- /dev/null +++ b/prompts/49-developer.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Dashboard développeur" (/developer). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /developer ("Dashboard développeur"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Clés API (création, révocation, copie) + - Documentation API intégrée ou liens + - Stats d'utilisation API + - Webhooks configurés + - Rate limits affichés + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Dashboard développeur (/developer) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /developer en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/developer.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Dashboard développeur (/developer)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/50-webhooks.md b/prompts/50-webhooks.md new file mode 100644 index 000000000..8eef6e1b7 --- /dev/null +++ b/prompts/50-webhooks.md @@ -0,0 +1,169 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Gestion webhooks" (/webhooks). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /webhooks ("Gestion webhooks"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Liste des webhooks configurés + - Ajout d'un webhook (URL, events, secret) + - Test de webhook + - Logs de delivery (succès/échec) + - Actions (edit, delete, toggle active) + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Gestion webhooks (/webhooks) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /webhooks en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/webhooks.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Gestion webhooks (/webhooks)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/51-root-redirect.md b/prompts/51-root-redirect.md new file mode 100644 index 000000000..b2876e0e3 --- /dev/null +++ b/prompts/51-root-redirect.md @@ -0,0 +1,167 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Redirect → /launch" (/). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page / ("Redirect → /launch"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection automatique vers /launch + - Status code 301/302 approprié + - Pas de flash de contenu avant redirect + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Redirect → /launch (/) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page / en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/root-redirect.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Redirect → /launch (/)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/52-tracks.md b/prompts/52-tracks.md new file mode 100644 index 000000000..cd1d0b055 --- /dev/null +++ b/prompts/52-tracks.md @@ -0,0 +1,166 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Redirect → /library" (/tracks). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /tracks ("Redirect → /library"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection automatique vers /library + - Fonctionne quand connecté + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Redirect → /library (/tracks) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /tracks en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/tracks.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Redirect → /library (/tracks)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/53-community.md b/prompts/53-community.md new file mode 100644 index 000000000..968fc8447 --- /dev/null +++ b/prompts/53-community.md @@ -0,0 +1,165 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Redirect → /social" (/community). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /community ("Redirect → /social"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection automatique vers /social + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Redirect → /social (/community) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /community en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/community.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Redirect → /social (/community)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/54-favorites.md b/prompts/54-favorites.md new file mode 100644 index 000000000..5bb4b0992 --- /dev/null +++ b/prompts/54-favorites.md @@ -0,0 +1,165 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Redirect → /playlists/favoris" (/favorites). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /favorites ("Redirect → /playlists/favoris"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection automatique vers /playlists/favoris + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Redirect → /playlists/favoris (/favorites) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /favorites en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/favorites.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Redirect → /playlists/favoris (/favorites)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/55-home.md b/prompts/55-home.md new file mode 100644 index 000000000..202031649 --- /dev/null +++ b/prompts/55-home.md @@ -0,0 +1,165 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Redirect → /dashboard" (/home). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : user, creator + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /home ("Redirect → /dashboard"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection automatique vers /dashboard + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Redirect → /dashboard (/home) + Testé avec le(s) compte(s) : user, creator + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /home en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/home.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Redirect → /dashboard (/home)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/56-404.md b/prompts/56-404.md new file mode 100644 index 000000000..fe8887830 --- /dev/null +++ b/prompts/56-404.md @@ -0,0 +1,168 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Page non trouvée" (/404). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /404 ("Page non trouvée"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage du message 404 + - Lien retour vers l'accueil + - Design cohérent avec le reste du site + - Pas d'erreurs console + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Page non trouvée (/404) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /404 en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/404.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Page non trouvée (/404)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/57-500.md b/prompts/57-500.md new file mode 100644 index 000000000..3ea69e71b --- /dev/null +++ b/prompts/57-500.md @@ -0,0 +1,167 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Erreur serveur" (/500). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /500 ("Erreur serveur"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Affichage du message d'erreur serveur + - Lien retour / bouton réessayer + - Pas de stack trace exposée + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Erreur serveur (/500) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /500 en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/500.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Erreur serveur (/500)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/58-random-nonexistent-path.md b/prompts/58-random-nonexistent-path.md new file mode 100644 index 000000000..c9dfcf60a --- /dev/null +++ b/prompts/58-random-nonexistent-path.md @@ -0,0 +1,166 @@ +ok maintenant il faut dresser une liste exhaustive de toutes les erreurs qui existent dans la page "Catch-all → /404" (/random-nonexistent-path). +Il faut tester chaque fonctionnalité une par une avec le MCP Playwright pour simuler un utilisateur réel. + +Comptes de test : + +┌───────────┬───────────────────┬──────────────┐ +│ Rôle │ Email │ Mot de passe │ +├───────────┼───────────────────┼──────────────┤ +│ admin │ admin@veza.music │ Admin123! │ +├───────────┼───────────────────┼──────────────┤ +│ creator │ artist@veza.music │ Artist123! │ +├───────────┼───────────────────┼──────────────┤ +│ user │ user@veza.music │ User123! │ +├───────────┼───────────────────┼──────────────┤ +│ moderator │ mod@veza.music │ Mod123! │ +├───────────┼───────────────────┼──────────────┤ +│ user_new │ new@veza.music │ New123! │ +└───────────┴───────────────────┴──────────────┘ +Domaine : veza.fr + +Comptes à utiliser pour cette page : (pas de connexion), user + +─── INSTRUCTIONS ─── + +1. AUDIT EXHAUSTIF avec Playwright MCP : + + Pour la page /random-nonexistent-path ("Catch-all → /404"), teste systématiquement : + + a) CHARGEMENT & RENDU + - La page se charge sans erreur (pas de crash, pas de blank screen) + - Pas d'erreurs dans la console navigateur (JS errors, failed network requests) + - Tous les éléments visuels attendus sont présents et visibles + - Le layout est correct (pas d'overflow, pas d'éléments qui se chevauchent) + + b) FONCTIONNALITÉS SPÉCIFIQUES À CETTE PAGE + - Redirection vers la page 404 + - URL arbitraire correctement interceptée + + c) RÉSEAU & API + - Tous les appels API réussissent (pas de 4xx/5xx inattendus) + - Les données affichées correspondent aux réponses API + - Gestion correcte du loading state + - Gestion correcte des erreurs réseau + + d) SÉCURITÉ + - Pas de fuite d'informations sensibles (tokens, emails dans l'URL, clés API) + - Les données d'un autre utilisateur ne sont pas accessibles + - Les actions protégées nécessitent bien l'authentification + - CSRF / XSS : vérifier les inputs utilisateur + + + e) ACCESSIBILITÉ (a11y) + - Tous les éléments interactifs ont un accessible name descriptif (pas juste "Checkbox" ou "Button") + - Les labels sont associés aux inputs + - Le focus order est logique (Tab navigation) + - Les aria-labels/aria-describedby sont présents et pertinents + - Contraste suffisant sur les textes + + f) INTERNATIONALISATION (i18n) + - Pas de mélange de langues (tout FR ou tout EN, pas les deux) + - Les traductions sont complètes (pas de clés i18n brutes affichées) + + g) RESPONSIVE + - Tester en viewport mobile (375px), tablet (768px), desktop (1280px) + - Pas d'éléments qui débordent + - Navigation mobile fonctionnelle + +2. FORMAT DU RAPPORT : + + Produis un rapport structuré exactement comme suit : + + ``` + Rapport exhaustif des erreurs — Page Catch-all → /404 (/random-nonexistent-path) + Testé avec le(s) compte(s) : (pas de connexion), user + Date : [date du test] + + ─── + ERREURS CRITIQUES (bloquantes) + + BUG #1 — [Titre court] + - Sévérité: CRITIQUE + - Section: [section de la page] + - Repro: [étapes de reproduction] + - Erreur: [description technique] + - Source: [fichier:ligne si identifiable] + - Impact: [impact utilisateur] + + ─── + ERREURS HAUTES + + ... + + ─── + ERREURS MOYENNES + + ... + + ─── + ERREURS FAIBLES + + ... + + ─── + RÉSUMÉ + + ┌────────────────────────────┬─────────┬──────────────┐ + │ Catégorie │ Nombre │ Sévérité max │ + ├────────────────────────────┼─────────┼──────────────┤ + │ ... │ ... │ ... │ + └────────────────────────────┴─────────┴──────────────┘ + ``` + +3. CORRECTION DES BUGS : + + Après avoir dressé la liste, corrige TOUS les problèmes trouvés pour que la page soit + entièrement fonctionnelle. Pour chaque fix : + - Identifie le fichier source exact + - Applique le correctif + - Vérifie avec Playwright que le bug est résolu + +4. TRANSFORMATION EN TESTS E2E : + + Transforme toute la suite de vérification que tu viens de faire pour la page /random-nonexistent-path en suite de + tests Playwright que tu peux ajouter directement à ceux existants dans veza-e2e/. + + Spécifications des tests : + - Fichier : veza-e2e/tests/random-nonexistent-path.spec.ts + - Framework : Playwright Test (@playwright/test) + - Pattern : Page Object Model si la page est complexe + - Chaque bug trouvé ET corrigé = au moins 1 test de non-régression + - Chaque fonctionnalité testée manuellement = 1 test automatisé + - Tests organisés par describe() : "Chargement", "Fonctionnalités", "Sécurité", "a11y", "i18n" + - Les tests doivent être indépendants (setup/teardown propre) + - Utiliser les test accounts définis ci-dessus pour l'auth dans les fixtures + + Structure attendue : + ```typescript + import { test, expect } from '@playwright/test'; + + test.describe('Catch-all → /404 (/random-nonexistent-path)', () => { + test.describe('Chargement & Rendu', () => { + test('la page se charge sans erreur', async ({ page }) => { + // ... + }); + }); + + test.describe('Fonctionnalités', () => { + // Un test par fonctionnalité + }); + + test.describe('Sécurité', () => { + // Tests de sécurité + }); + + test.describe('Accessibilité', () => { + // Tests a11y + }); + + test.describe('Régression', () => { + // Un test par bug corrigé + }); + }); + ``` + + Assure-toi que les nouveaux tests s'intègrent avec la config Playwright existante + et ne dupliquent pas des tests déjà présents. \ No newline at end of file diff --git a/prompts/last_is_twelve b/prompts/last_is_twelve new file mode 100644 index 000000000..e69de29bb diff --git a/register-desktop-1280.png b/register-desktop-1280.png new file mode 100644 index 000000000..7d35d3219 Binary files /dev/null and b/register-desktop-1280.png differ diff --git a/register-mobile-375.png b/register-mobile-375.png new file mode 100644 index 000000000..61ce7fe6a Binary files /dev/null and b/register-mobile-375.png differ diff --git a/reset-password-error-desktop.png b/reset-password-error-desktop.png new file mode 100644 index 000000000..e6bf80e1f Binary files /dev/null and b/reset-password-error-desktop.png differ diff --git a/reset-password-fixed-desktop.png b/reset-password-fixed-desktop.png new file mode 100644 index 000000000..b54aa1ac3 Binary files /dev/null and b/reset-password-fixed-desktop.png differ diff --git a/run-audit.sh b/run-audit.sh new file mode 100755 index 000000000..60b269bc4 --- /dev/null +++ b/run-audit.sh @@ -0,0 +1,502 @@ +#!/usr/bin/env bash +# +# VEZA — Script d'audit automatique overnight +# Lance Claude Code sur chaque prompt d'audit, avec reprise sur erreur. +# +# Usage: +# ./run-audit.sh # Lance depuis le début (ou reprend) +# ./run-audit.sh --reset # Repart de zéro +# ./run-audit.sh --from 15 # Force le démarrage au prompt 15 +# ./run-audit.sh --only 38 # N'exécute qu'un seul prompt +# ./run-audit.sh --dry-run # Affiche ce qui serait fait sans exécuter +# ./run-audit.sh --status # Affiche l'état actuel +# ./run-audit.sh --model sonnet # Utilise Sonnet au lieu d'Opus (moins cher) +# +# Coût estimé (Opus): ~$150–400 pour les 58 prompts +# Coût estimé (Sonnet): ~$30–80 pour les 58 prompts +# Durée estimée: 4–8 heures selon le modèle et la charge API +# +set -euo pipefail + +# ───────────────────────────────────────────── +# Configuration +# ───────────────────────────────────────────── + +REPO_ROOT="$(cd "$(dirname "$0")" && pwd)" +PROMPTS_DIR="$REPO_ROOT/prompts" +STATE_DIR="$REPO_ROOT/.audit-state" +STATE_FILE="$STATE_DIR/progress.json" +LOG_DIR="$STATE_DIR/logs" +BRANCH_NAME="audit/full-page-audit-$(date +%Y%m%d)" + +# Claude CLI settings +MODEL="${VEZA_AUDIT_MODEL:-opus}" +MAX_BUDGET_PER_PROMPT="${VEZA_AUDIT_BUDGET_PER_PROMPT:-8}" # USD par prompt +MAX_RETRIES=3 +RETRY_BACKOFF_BASE=60 # secondes, doublé à chaque retry +COOLDOWN_BETWEEN_PROMPTS=10 # secondes entre chaque prompt +RATE_LIMIT_PAUSE=300 # 5 min de pause si rate limit détecté + +# Couleurs +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +NC='\033[0m' + +# ───────────────────────────────────────────── +# Fonctions utilitaires +# ───────────────────────────────────────────── + +log() { echo -e "${CYAN}[$(date '+%H:%M:%S')]${NC} $*"; } +info() { echo -e "${GREEN}[$(date '+%H:%M:%S')] ✓${NC} $*"; } +warn() { echo -e "${YELLOW}[$(date '+%H:%M:%S')] ⚠${NC} $*"; } +error() { echo -e "${RED}[$(date '+%H:%M:%S')] ✗${NC} $*"; } + +die() { error "$*"; exit 1; } + +# ───────────────────────────────────────────── +# State management (fichier JSON simple via jq) +# ───────────────────────────────────────────── + +ensure_deps() { + command -v claude >/dev/null 2>&1 || die "claude CLI non trouvé. Installe-le d'abord." + command -v jq >/dev/null 2>&1 || die "jq non trouvé. Installe: sudo dnf install jq" + command -v git >/dev/null 2>&1 || die "git non trouvé." +} + +init_state() { + mkdir -p "$STATE_DIR" "$LOG_DIR" + + if [[ ! -f "$STATE_FILE" ]]; then + cat > "$STATE_FILE" <<'ENDJSON' +{ + "started_at": null, + "branch": null, + "prompts": {}, + "current": null, + "total_cost_estimate_usd": 0, + "total_prompts": 0, + "completed": 0, + "failed": 0, + "skipped": 0 +} +ENDJSON + log "State file initialisé: $STATE_FILE" + fi +} + +state_get() { + jq -r "$1" "$STATE_FILE" +} + +state_set() { + local tmp + tmp=$(mktemp) + jq "$1" "$STATE_FILE" > "$tmp" && mv "$tmp" "$STATE_FILE" +} + +get_prompt_status() { + local num="$1" + jq -r ".prompts[\"$num\"].status // \"pending\"" "$STATE_FILE" +} + +set_prompt_status() { + local num="$1" status="$2" detail="${3:-}" + state_set ".prompts[\"$num\"] = { + \"status\": \"$status\", + \"updated_at\": \"$(date -Iseconds)\", + \"detail\": \"$detail\" + }" + # Update counters + local completed failed + completed=$(jq '[.prompts[] | select(.status == "done")] | length' "$STATE_FILE") + failed=$(jq '[.prompts[] | select(.status == "failed")] | length' "$STATE_FILE") + state_set ".completed = $completed | .failed = $failed" +} + +# ───────────────────────────────────────────── +# Git helpers +# ───────────────────────────────────────────── + +setup_branch() { + cd "$REPO_ROOT" + local current_branch + current_branch=$(git branch --show-current) + local existing_branch + existing_branch=$(state_get '.branch // empty') + + if [[ -n "$existing_branch" ]] && git rev-parse --verify "$existing_branch" >/dev/null 2>&1; then + # Reprendre sur la branche existante + if [[ "$current_branch" != "$existing_branch" ]]; then + log "Reprise sur branche existante: $existing_branch" + git checkout "$existing_branch" + fi + BRANCH_NAME="$existing_branch" + else + # Créer nouvelle branche depuis l'état actuel + if git rev-parse --verify "$BRANCH_NAME" >/dev/null 2>&1; then + BRANCH_NAME="${BRANCH_NAME}-$(date +%H%M%S)" + fi + log "Création branche: $BRANCH_NAME" + git checkout -b "$BRANCH_NAME" + state_set ".branch = \"$BRANCH_NAME\"" + fi + + state_set ".started_at = \"$(date -Iseconds)\"" +} + +commit_prompt_changes() { + local num="$1" name="$2" path="$3" + cd "$REPO_ROOT" + + # Vérifier s'il y a des changements + if git diff --quiet && git diff --cached --quiet && [[ -z "$(git ls-files --others --exclude-standard)" ]]; then + warn "Prompt $num ($path): aucun changement à committer" + return 0 + fi + + # Stage tous les changements (sauf les fichiers d'état de l'audit) + git add -A -- ':!.audit-state' + + # Vérifier à nouveau après staging + if git diff --cached --quiet; then + warn "Prompt $num ($path): rien dans le staging" + return 0 + fi + + git commit -m "$(cat < "$log_file" 2>&1 \ + || exit_code=$? + + if [[ $exit_code -eq 0 ]]; then + success=true + break + fi + + # Analyser l'erreur + local last_lines + last_lines=$(tail -20 "$log_file" 2>/dev/null || echo "") + + if echo "$last_lines" | grep -qi "rate.limit\|429\|too many requests\|overloaded"; then + warn "Rate limit détecté. Pause de ${RATE_LIMIT_PAUSE}s..." + sleep "$RATE_LIMIT_PAUSE" + elif echo "$last_lines" | grep -qi "context.window\|token.limit\|max.*token\|session.*limit"; then + warn "Limite de session/contexte atteinte. Prompt trop lourd, on continue." + break + elif echo "$last_lines" | grep -qi "network\|connection\|ECONNRESET\|ETIMEDOUT\|fetch failed"; then + local backoff=$((RETRY_BACKOFF_BASE * (2 ** (attempt - 1)))) + warn "Erreur réseau. Backoff ${backoff}s..." + sleep "$backoff" + elif [[ $exit_code -eq 124 ]]; then + warn "Timeout (30min). Le prompt a pris trop de temps." + break + else + local backoff=$((RETRY_BACKOFF_BASE * (2 ** (attempt - 1)))) + warn "Erreur inconnue (code $exit_code). Backoff ${backoff}s..." + sleep "$backoff" + fi + done + + if $success; then + # Commit les changements + commit_prompt_changes "$num" "$route_name" "$(head -1 "$prompt_file" | grep -oP '/[a-z/:-]+')" || true + set_prompt_status "$num" "done" + info "Prompt $num terminé avec succès" + else + set_prompt_status "$num" "failed" "after $attempt attempts, exit code $exit_code" + error "Prompt $num échoué après $attempt tentatives" + # On continue quand même avec le suivant + fi + + # Cooldown entre les prompts + if (( COOLDOWN_BETWEEN_PROMPTS > 0 )); then + log "Cooldown ${COOLDOWN_BETWEEN_PROMPTS}s..." + sleep "$COOLDOWN_BETWEEN_PROMPTS" + fi +} + +# ───────────────────────────────────────────── +# Collecte des prompts +# ───────────────────────────────────────────── + +get_prompt_files() { + find "$PROMPTS_DIR" -name '*.md' -not -name 'ALL-PROMPTS.md' | sort +} + +# ───────────────────────────────────────────── +# Commandes principales +# ───────────────────────────────────────────── + +cmd_status() { + if [[ ! -f "$STATE_FILE" ]]; then + log "Aucun audit en cours." + return + fi + + echo "" + echo -e "${CYAN}═══ VEZA Audit Status ═══${NC}" + echo "" + echo -e " Branche: $(state_get '.branch // "non démarrée"')" + echo -e " Démarré: $(state_get '.started_at // "—"')" + echo -e " Complétés: ${GREEN}$(state_get '.completed')${NC}" + echo -e " Échoués: ${RED}$(state_get '.failed')${NC}" + echo -e " En cours: $(state_get '.current // "—"')" + echo "" + + # Détail par prompt + local total=0 done=0 failed=0 pending=0 + for f in $(get_prompt_files); do + total=$((total + 1)) + local num + num=$((10#$(basename "$f" | grep -oP '^\d+'))) + local st + st=$(get_prompt_status "$num") + local icon="⏳" + case "$st" in + done) icon="✅"; done=$((done + 1)) ;; + failed) icon="❌"; failed=$((failed + 1)) ;; + running) icon="🔄" ;; + *) pending=$((pending + 1)) ;; + esac + printf " %s %02d. %s\n" "$icon" "$num" "$(basename "$f" .md | sed 's/^[0-9]*-//')" + done + + echo "" + echo -e " Total: $total | ✅ $done | ❌ $failed | ⏳ $pending" + echo "" +} + +cmd_reset() { + warn "Reset de l'état d'audit..." + rm -rf "$STATE_DIR" + info "État supprimé. Relance ./run-audit.sh pour recommencer." +} + +cmd_run() { + local start_from="${1:-0}" + local only="${2:-0}" + + ensure_deps + init_state + + local prompt_files + mapfile -t prompt_files < <(get_prompt_files) + local total=${#prompt_files[@]} + + state_set ".total_prompts = $total" + + log "═══════════════════════════════════════════════════════" + log " VEZA — Audit automatique de $total pages" + log " Modèle: $MODEL" + log " Budget max par prompt: \$${MAX_BUDGET_PER_PROMPT}" + log " Budget max total estimé: \$$(echo "$total * $MAX_BUDGET_PER_PROMPT" | bc)" + log "═══════════════════════════════════════════════════════" + + setup_branch + + for prompt_file in "${prompt_files[@]}"; do + local num + num=$((10#$(basename "$prompt_file" | grep -oP '^\d+'))) + + # --from: sauter les prompts avant + if (( start_from > 0 && num < start_from )); then + continue + fi + + # --only: n'exécuter qu'un seul + if (( only > 0 && num != only )); then + continue + fi + + run_single_prompt "$prompt_file" + done + + state_set ".current = null" + + # Résumé final + echo "" + log "═══════════════════════════════════════════════════════" + log " AUDIT TERMINÉ" + log "═══════════════════════════════════════════════════════" + cmd_status + + local failed_count + failed_count=$(state_get '.failed') + if (( failed_count > 0 )); then + warn "$failed_count prompts ont échoué. Relance pour retenter uniquement les échecs." + warn "Les logs sont dans: $LOG_DIR/" + fi + + info "Branche: $BRANCH_NAME" + info "Commits: $(git log --oneline "$BRANCH_NAME" --not main | wc -l) commits" + info "Logs: $LOG_DIR/" +} + +cmd_dry_run() { + init_state + local prompt_files + mapfile -t prompt_files < <(get_prompt_files) + + echo "" + log "═══ DRY RUN — Voici ce qui serait exécuté ═══" + echo "" + + for prompt_file in "${prompt_files[@]}"; do + local num + num=$((10#$(basename "$prompt_file" | grep -oP '^\d+'))) + local st + st=$(get_prompt_status "$num") + local action="EXÉCUTER" + [[ "$st" == "done" ]] && action="SKIP (déjà fait)" + printf " %02d. %-40s → %s\n" "$num" "$(basename "$prompt_file")" "$action" + done + + local pending + pending=$(jq '[.prompts[] | select(.status == "done")] | length' "$STATE_FILE" 2>/dev/null || echo 0) + local total=${#prompt_files[@]} + local to_run=$((total - pending)) + + echo "" + echo " À exécuter: $to_run / $total prompts" + echo " Modèle: $MODEL" + echo " Budget max: \$$(echo "$to_run * $MAX_BUDGET_PER_PROMPT" | bc)" + echo " Durée estimée: $(echo "$to_run * 8" | bc) min (≈$(echo "$to_run * 8 / 60" | bc)h)" + echo "" +} + +# ───────────────────────────────────────────── +# CLI parsing +# ───────────────────────────────────────────── + +main() { + cd "$REPO_ROOT" + + local start_from=0 + local only=0 + local dry_run=false + + while [[ $# -gt 0 ]]; do + case "$1" in + --reset) + cmd_reset + exit 0 + ;; + --status) + cmd_status + exit 0 + ;; + --dry-run) + dry_run=true + shift + ;; + --from) + start_from="$2" + shift 2 + ;; + --only) + only="$2" + shift 2 + ;; + --model) + MODEL="$2" + shift 2 + ;; + --budget) + MAX_BUDGET_PER_PROMPT="$2" + shift 2 + ;; + -h|--help) + echo "Usage: $0 [options]" + echo "" + echo "Options:" + echo " --reset Supprime l'état et repart de zéro" + echo " --status Affiche la progression actuelle" + echo " --dry-run Montre ce qui serait fait sans exécuter" + echo " --from N Commence au prompt N" + echo " --only N N'exécute que le prompt N" + echo " --model MODEL Modèle Claude (opus|sonnet|haiku) [défaut: opus]" + echo " --budget N Budget max USD par prompt [défaut: 8]" + echo "" + echo "Variables d'environnement:" + echo " VEZA_AUDIT_MODEL Modèle par défaut" + echo " VEZA_AUDIT_BUDGET_PER_PROMPT Budget par prompt" + exit 0 + ;; + *) + die "Option inconnue: $1 (utilise --help)" + ;; + esac + done + + if $dry_run; then + cmd_dry_run + else + cmd_run "$start_from" "$only" + fi +} + +main "$@" diff --git a/settings-dark-theme.png b/settings-dark-theme.png new file mode 100644 index 000000000..9cfd8aa58 Binary files /dev/null and b/settings-dark-theme.png differ diff --git a/settings-dual-theme-bug.png b/settings-dual-theme-bug.png new file mode 100644 index 000000000..01426d407 Binary files /dev/null and b/settings-dual-theme-bug.png differ diff --git a/settings-save-config-error.png b/settings-save-config-error.png new file mode 100644 index 000000000..6605f2a3e Binary files /dev/null and b/settings-save-config-error.png differ diff --git a/storybook-button-a11y.png b/storybook-button-a11y.png new file mode 100644 index 000000000..9b164cc95 Binary files /dev/null and b/storybook-button-a11y.png differ diff --git a/storybook-button-docs.png b/storybook-button-docs.png new file mode 100644 index 000000000..bc49a96db Binary files /dev/null and b/storybook-button-docs.png differ diff --git a/storybook-button-light-final.png b/storybook-button-light-final.png new file mode 100644 index 000000000..a2e6ad5ad Binary files /dev/null and b/storybook-button-light-final.png differ diff --git a/storybook-button-light-fixed.png b/storybook-button-light-fixed.png new file mode 100644 index 000000000..0a8cb2297 Binary files /dev/null and b/storybook-button-light-fixed.png differ diff --git a/storybook-button-light.png b/storybook-button-light.png new file mode 100644 index 000000000..c4b5f9866 Binary files /dev/null and b/storybook-button-light.png differ diff --git a/storybook-home.png b/storybook-home.png new file mode 100644 index 000000000..9e994e5cd Binary files /dev/null and b/storybook-home.png differ diff --git a/storybook-welcome.png b/storybook-welcome.png new file mode 100644 index 000000000..0bbfe5eec Binary files /dev/null and b/storybook-welcome.png differ