meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

certif:procedure:test:playwright [2026/09/22 15:02] – créée nicolascertif:procedure:test:playwright [2026/09/22 17:56] (Version actuelle) nicolas
Ligne 85: Ligne 85:
 npx playwright show-report npx playwright show-report
 </code> </code>
 +
 +Le rapport HTML Playwright (résultats détaillés, captures, traces) est régénéré à **chaque** run,
 +directement dans ''../logeas-cartographie/src/assets/playwright-report/'' (voir
 +''playwright.config.ts'', option ''reporter''), plutôt que dans le dossier par défaut du dépôt — il
 +est donc accessible sans étape de copie manuelle depuis l'écran carto "Univers Tests" (bouton
 +"Dernier rapport Playwright"). ⚠️ Il reflète uniquement le **dernier** ''npx playwright test''
 +lancé, pas un cumul entre plusieurs runs : lancer un seul fichier écrase les résultats des autres
 +specs qui y figuraient avant.
 +
 +À côté, le bouton "Résumé et analyse du dernier rapport Playwright" ouvre un document **différent**
 +et **statique** (''logeas-cartographie/src/assets/rapport-tests-e2e-qualite.html'') : une synthèse
 +qualité rédigée à la main (méthodologie, catalogue de défauts trouvés, fiabilité résiduelle), pas
 +régénérée automatiquement. Voir section 5 ci-dessous pour la maintenir à jour.
  
 ===== 3. Identifiants et fichiers locaux ===== ===== 3. Identifiants et fichiers locaux =====
Ligne 99: Ligne 112:
 S'ils n'existent pas, ''global-setup.ts'' les demande de façon interactive au premier run (et S'ils n'existent pas, ''global-setup.ts'' les demande de façon interactive au premier run (et
 propose de les sauvegarder localement pour les fois suivantes). propose de les sauvegarder localement pour les fois suivantes).
 +
 +''global-setup.ts'' fait plus que créer la base : il pilote aussi le vrai écran "Administration >
 +Gestion des droits > Ajouter un utilisateur" pour donner au compte CIBLE un accès **réel** à la base
 +fraîchement créée (au-delà du simple forçage de "dernière base") — sans ça, tout scénario qui fait
 +agir la cible elle-même via l'UI (pas seulement le compte propriétaire/admin) reste bloqué par le
 +popup "Choix du contexte de travail" (''listeBasesAccessibles'' vide côté serveur).
  
 ===== 4. Écrire un nouveau test ===== ===== 4. Écrire un nouveau test =====
Ligne 114: Ligne 133:
   - Ajouter le fichier à la liste de specs du script ''test-integration'' dans ''package.json''   - Ajouter le fichier à la liste de specs du script ''test-integration'' dans ''package.json''
     pour qu'il tourne en CI.     pour qu'il tourne en CI.
 +
 +Pour vérifier la réception d'un mail réel (confirmation d'inscription, notification de réponse,
 +etc.), utiliser ''tests/helpers/mail-checker.ts'' (''attendreMail({sujetContient, expediteurContient},
 +depuis, timeoutMs)''), qui interroge par IMAP réel la boîte de test (identifiants dans
 +''tests/.local/credentials-mail.json''), plutôt que de se fier à un log serveur.
 +
 +===== 5. Garder le rapport qualité E2E à jour =====
 +
 +Le document de synthèse (''logeas-cartographie/src/assets/rapport-tests-e2e-qualite.html'') est
 +rédigé à la main, section par section — rien ne le régénère automatiquement quand un spec est
 +ajouté. Pour savoir s'il a pris du retard sur les fichiers réels de ''tests/'' :
 +
 +<code>
 +npm run verifier-rapport-qualite
 +</code>
 +
 +Compare la liste des ''tests/*.spec.ts'' réels à ce qui est référencé dans le document (section
 +"3.1 Synthèse des scénarios") et liste les fichiers manquants — sans rien générer automatiquement,
 +le texte de chaque ligne ("Ce qu'il vérifie") restant trop nuancé pour être extrait fiablement d'un
 +commentaire de code. À lancer après tout ajout de spec, puis compléter le tableau à la main (ou via
 +Claude) avec les lignes manquantes.
  
 ===== Pièges connus ===== ===== Pièges connus =====
Ligne 125: Ligne 165:
     droits (erreur "Accès refusé") — redémarrer les serveurs à la main si besoin (fermer la     droits (erreur "Accès refusé") — redémarrer les serveurs à la main si besoin (fermer la
     fenêtre console concernée, relancer le script).     fenêtre console concernée, relancer le script).
 +  * **Envoi de mail fire-and-forget** (''ticket.service.ts::EnvoiMailContactClient'') : déclenché
 +    via un ''subscribe()'' interne, pas chaîné dans l'Observable attendu par
 +    ''setTicketAndReponse'' — naviguer la ''page'' (ex. vers le formulaire de connexion) juste après
 +    avoir reçu le signal de fin d'une action ''test-creation-base-vide'' peut tuer cet envoi encore
 +    en vol. Utiliser un nouvel onglet (''page.context().newPage()'') pour la suite du scénario
 +    plutôt que de réutiliser ''page'' si elle vient de déclencher un envoi de mail asynchrone (voir
 +    ''reponse-assistance-mail.spec.ts'').
 +  * **Popups multi-étapes DevExtreme** (ex. assistant "Inscription à une Formation") : un clic sur
 +    l'élément qui doit faire avancer une étape ne la fait pas toujours avancer de façon fiable —
 +    boucler sur le clic jusqu'à ce que l'étape suivante soit visible, plutôt qu'un simple
 +    ''.click()'' suivi d'une attente fixe (voir ''inscription-formation.spec.ts'').
 +  * **Nettoyage de données de test partagées entre comptes** : une action headless connectée avec un
 +    compte A (ex. propriétaire/admin) qui nettoie un état laissé par un run précédent doit filtrer
 +    sur l'objet métier concerné (ex. l'ID de session), pas sur le compte appelant — sinon l'état
 +    laissé par un AUTRE compte (ex. la cible, qui agit via l'UI dans le même scénario) n'est jamais
 +    nettoyé et bloque silencieusement une réexécution (constaté sur
 +    ''obtenirSessionFormationTest''/''inscription-formation.spec.ts'', "Déjà inscrit." après un
 +    premier run pourtant réussi).