chore: add audit screenshots, audit scripts, and prompt templates
Visual audit captures for all major pages (desktop, tablet, mobile). Add run-audit.sh and generate_page_fix_prompts.sh helper scripts. Add prompt templates directory. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
BIN
audit-admin-desktop.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
audit-dashboard-desktop.png
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
audit-dashboard-mobile.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
audit-discover-desktop-1280.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
audit-discover-desktop.png
Normal file
|
After Width: | Height: | Size: 292 KiB |
BIN
audit-discover-mobile-375.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
audit-favoris-not-found.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
audit-feed-desktop-1280.png
Normal file
|
After Width: | Height: | Size: 301 KiB |
BIN
audit-feed-desktop.png
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
audit-feed-mobile-375-content.png
Normal file
|
After Width: | Height: | Size: 249 KiB |
BIN
audit-feed-mobile-375.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
audit-launch-desktop-1280.png
Normal file
|
After Width: | Height: | Size: 667 KiB |
BIN
audit-launch-mobile-375.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
audit-launch-mobile.png
Normal file
|
After Width: | Height: | Size: 446 KiB |
BIN
audit-library-desktop-1280-artist.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
audit-library-desktop-1280-empty.png
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
audit-library-desktop-artist-content.png
Normal file
|
After Width: | Height: | Size: 222 KiB |
BIN
audit-library-desktop.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
audit-marketplace-desktop.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
audit-playlist-detail-desktop.png
Normal file
|
After Width: | Height: | Size: 333 KiB |
BIN
audit-playlist-detail-mobile-375.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
audit-playlists-desktop-1280-empty.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
audit-playlists-desktop.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
audit-playlists-mobile-375.png
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
audit-profile-desktop-1280.png
Normal file
|
After Width: | Height: | Size: 236 KiB |
BIN
audit-profile-desktop-fixed.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
audit-profile-mobile-375-fixed.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
audit-profile-mobile-375.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
audit-profile-playlists-tab.png
Normal file
|
After Width: | Height: | Size: 230 KiB |
BIN
audit-profile-reposts-tab.png
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
audit-profile-tablet-768.png
Normal file
|
After Width: | Height: | Size: 227 KiB |
BIN
audit-queue-desktop-1280-empty.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
audit-queue-desktop-1280-with-tracks.png
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
audit-queue-desktop.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
audit-queue-mobile-375-fixed.png
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
audit-queue-mobile-375.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
audit-queue-save-modal.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
audit-queue-tablet-768.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
audit-search-crash-luna.png
Normal file
|
After Width: | Height: | Size: 143 KiB |
BIN
audit-search-desktop-1280-empty.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
audit-search-desktop.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
audit-search-mobile-375.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
audit-settings-desktop.png
Normal file
|
After Width: | Height: | Size: 211 KiB |
BIN
audit-shared-playlist-fixed-desktop.png
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
audit-shared-playlist-fixed-mobile-375.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
audit-shared-playlist-notfound-with-valid-token.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
audit-social-desktop.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
audit-track-detail-desktop.png
Normal file
|
After Width: | Height: | Size: 315 KiB |
BIN
audit-verify-email-bug04-resend-success-in-error-container.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
audit-verify-email-fixed-resend-success.png
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
audit-verify-email-mobile-375.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
audit-verify-email-no-token-desktop.png
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
audit-verify-email-tablet-768.png
Normal file
|
After Width: | Height: | Size: 193 KiB |
980
generate_page_fix_prompts.sh
Normal file
|
|
@ -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()
|
||||
173
prompts/01-login.md
Normal file
|
|
@ -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.
|
||||
171
prompts/02-register.md
Normal file
|
|
@ -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.
|
||||
169
prompts/03-forgot-password.md
Normal file
|
|
@ -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.
|
||||
168
prompts/04-verify-email.md
Normal file
|
|
@ -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.
|
||||
169
prompts/05-reset-password.md
Normal file
|
|
@ -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.
|
||||
169
prompts/06-launch.md
Normal file
|
|
@ -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.
|
||||
167
prompts/07-design-system.md
Normal file
|
|
@ -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.
|
||||
177
prompts/08-u-username.md
Normal file
|
|
@ -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.
|
||||
174
prompts/09-playlists-shared-token.md
Normal file
|
|
@ -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.
|
||||
170
prompts/10-dashboard.md
Normal file
|
|
@ -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.
|
||||
170
prompts/11-discover.md
Normal file
|
|
@ -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.
|
||||
169
prompts/12-feed.md
Normal file
|
|
@ -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.
|
||||
170
prompts/13-library.md
Normal file
|
|
@ -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.
|
||||
170
prompts/14-queue.md
Normal file
|
|
@ -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.
|
||||
170
prompts/15-search.md
Normal file
|
|
@ -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.
|
||||
170
prompts/16-playlists.md
Normal file
|
|
@ -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.
|
||||
169
prompts/17-playlists-favoris.md
Normal file
|
|
@ -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.
|
||||
177
prompts/18-playlists-id.md
Normal file
|
|
@ -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.
|
||||
177
prompts/19-playlists-id-edit.md
Normal file
|
|
@ -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.
|
||||
178
prompts/20-tracks-id.md
Normal file
|
|
@ -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.
|
||||
170
prompts/21-social.md
Normal file
|
|
@ -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.
|
||||
172
prompts/22-chat.md
Normal file
|
|
@ -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.
|
||||
174
prompts/23-chat-join-token.md
Normal file
|
|
@ -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.
|
||||
169
prompts/24-live.md
Normal file
|
|
@ -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.
|
||||
170
prompts/25-live-go-live.md
Normal file
|
|
@ -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.
|
||||
176
prompts/26-listen-together-sessionId.md
Normal file
|
|
@ -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.
|
||||
170
prompts/27-marketplace.md
Normal file
|
|
@ -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.
|
||||
176
prompts/28-marketplace-products-id.md
Normal file
|
|
@ -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.
|
||||
169
prompts/29-wishlist.md
Normal file
|
|
@ -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.
|
||||
169
prompts/30-purchases.md
Normal file
|
|
@ -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.
|
||||
168
prompts/31-checkout-complete.md
Normal file
|
|
@ -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.
|
||||
169
prompts/32-sell.md
Normal file
|
|
@ -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.
|
||||
171
prompts/33-analytics.md
Normal file
|
|
@ -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.
|
||||
171
prompts/34-cloud.md
Normal file
|
|
@ -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.
|
||||
169
prompts/35-gear.md
Normal file
|
|
@ -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.
|
||||
169
prompts/36-distribution.md
Normal file
|
|
@ -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.
|
||||
166
prompts/37-profile.md
Normal file
|
|
@ -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.
|
||||
178
prompts/38-settings.md
Normal file
|
|
@ -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.
|
||||
169
prompts/39-settings-sessions.md
Normal file
|
|
@ -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.
|
||||
171
prompts/40-notifications.md
Normal file
|
|
@ -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.
|
||||
170
prompts/41-subscription.md
Normal file
|
|
@ -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.
|
||||
169
prompts/42-education.md
Normal file
|
|
@ -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.
|
||||
169
prompts/43-support.md
Normal file
|
|
@ -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.
|
||||
168
prompts/44-admin.md
Normal file
|
|
@ -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.
|
||||
169
prompts/45-admin-moderation.md
Normal file
|
|
@ -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.
|
||||
168
prompts/46-admin-platform.md
Normal file
|
|
@ -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.
|
||||