Files
ENI-projet-piscine/tests/e2e/specs/premiere-connexion.spec.ts
T
Johan LEROY c2f360c591 fix(auth): ne plus redemander le mot de passe provisoire à la première connexion
L'écran de changement imposé redemandait le mot de passe provisoire qui venait
d'être vérifié, sans champ identifiant. Un gestionnaire de mots de passe y
collait un ancien mot de passe du site : /auth/password répondait 401
« Identifiants invalides », et le message unique accusait aussi la politique
de mot de passe. Constaté en rec et en dev sur les comptes nominatifs.

- AuthService garde en mémoire le mot de passe d'une connexion qui impose le
  changement, rendu une seule fois par takeProvisionalPassword() et effacé
  avec la session.
- Le champ « Mot de passe actuel » ne s'affiche que si ce mot de passe manque
  (page rechargée) ou vient d'être refusé.
- Champ identifiant masqué pour les gestionnaires de mots de passe.
- Messages distincts pour 401, 422 et le reste, liste des critères en direct.
2026-09-23 14:42:37 +02:00

22 lines
868 B
TypeScript

import { expect, test } from '@playwright/test';
import { creerCompteTemporaire, nouveauMotDePasse } from '../support/api';
import { seConnecter } from '../support/session';
test('impose le changement du mot de passe temporaire avant le tableau de bord', async ({
page,
}) => {
const compte = await creerCompteTemporaire('lecteur');
await seConnecter(page, compte);
await expect(page).toHaveURL(/\/change-password$/);
await expect(page.getByRole('heading', { name: 'Nouveau mot de passe' })).toBeVisible();
await expect(page.getByLabel('Mot de passe actuel')).toHaveCount(0);
await page.getByLabel('Nouveau mot de passe').fill(nouveauMotDePasse());
await page.getByRole('button', { name: 'Valider' }).click();
await expect(page).toHaveURL(/\/dashboard$/);
await expect(page.getByRole('heading', { name: "Vue d'ensemble" })).toBeVisible();
});