Apparence
Mot de passe oublié
Le parcours de réinitialisation : demander un lien depuis l'écran de connexion, choisir un nouveau mot de passe, et ce qui se passe quand le lien ne vaut plus.
Prérequis communs : make seed-demo. Le lien de réinitialisation part par courriel ; en développement il s'affiche dans les journaux du backend (make logs), rien n'est réellement envoyé.
1. Demander un lien de réinitialisation
Tickets : — · Rôle : n'importe lequel · Prérequis : make seed-demo
Depuis
/login, cliquez sur Mot de passe oublié ?.✅ Résultat attendu : l'écran Mot de passe oublié s'ouvre, avec le champ Adresse email et le bouton Envoyer le lien.
Saisissez l'adresse du compte de démonstration et validez.
✅ Résultat attendu : l'écran Email envoyé confirme l'envoi par une phrase commençant par « Si un compte… ».
Recommencez avec une adresse qui n'existe pas.
✅ Résultat attendu : exactement la même confirmation. C'est intentionnel — une réponse différente permettrait de savoir quelles adresses ont un compte.
Couverture automatique : e2e/password-reset.spec.ts → « le lien depuis /login mène à la demande de réinitialisation » et « une demande affiche une confirmation neutre ». Côté serveur, backend/tests/test_password_reset.py.
2. Choisir un nouveau mot de passe
Tickets : — · Rôle : n'importe lequel · Prérequis : un lien obtenu au scénario 1
Récupérez le lien dans les journaux du backend et ouvrez-le.
✅ Résultat attendu : les champs Nouveau mot de passe et Confirmer le mot de passe s'affichent, avec le bouton Réinitialiser.
Saisissez deux mots de passe différents et validez.
✅ Résultat attendu : un message signale qu'ils ne correspondent pas. Rien n'est envoyé au serveur.
Saisissez deux fois le même mot de passe et validez.
✅ Résultat attendu : l'écran Mot de passe modifié s'affiche, avec le bouton Aller à la connexion. Le nouveau mot de passe permet de se connecter ; l'ancien ne fonctionne plus.
Couverture automatique : e2e/password-reset.spec.ts → « un lien valide permet de choisir un nouveau mot de passe » et « deux mots de passe différents sont refusés côté client ».
3. Se heurter à un lien invalide ou expiré
Tickets : — · Rôle : n'importe lequel · Prérequis : aucun
Ouvrez un lien de réinitialisation déjà consommé, ou dont vous avez modifié un caractère du jeton.
✅ Résultat attendu : l'écran Lien invalide s'affiche, avec la mention « invalide ou expiré » et le lien Demander un nouveau lien.
Ouvrez
/reset-passwordsans aucun paramètre dans l'adresse.✅ Résultat attendu : l'écran oriente vers une nouvelle demande plutôt que d'afficher un formulaire inutilisable.
Couverture automatique : e2e/password-reset.spec.ts → « un lien invalide/expiré affiche une erreur » et « un lien sans uid/token oriente vers une nouvelle demande ».
4. Vérifier le rendu sur téléphone
Tickets : — · Rôle : n'importe lequel · Prérequis : aucun
En 390 × 844, ouvrez
/forgot-password.✅ Résultat attendu : le formulaire occupe la largeur, reste entièrement lisible, et la page ne défile pas horizontalement.
Couverture automatique : e2e/password-reset.spec.ts → « rendu sur mobile ».
Points d'attention
- Le lien contient un identifiant et un jeton. Il vaut pour un seul usage : une seconde ouverture affiche Lien invalide, ce qui est le comportement voulu et non un bug à signaler.
- L'adresse du lien envoyé est construite à partir de l'origine déclarée dans
.env. Sur un environnement où elle est mal renseignée, le courriel part avec un lien qui ne mène nulle part — vérifiez-la avant de conclure à une panne.