All checks were successful
Build & Deploy Web / build-and-deploy (push) Successful in 40s
Bug UX rapporté par Arthur : quand on crée une facture pour un nouveau
client via le combobox du dialog "+ Saisir" (option "Créer le client
« X »"), aucun champ email n'apparaissait. Au submit, l'API renvoyait
422 client_email_required mais le toast affiché était générique
("Création impossible. Vérifiez les champs.") sans guidance sur le
champ manquant. L'utilisateur se retrouvait coincé sans savoir
qu'il devait quitter le dialog et créer le client d'abord via /clients.
Friction quotidienne, jamais visible en démo (où on sélectionne un
client existant).
Fix :
- Nouveau champ `clientEmail` (string, default "") dans FormValues
- Validator zod email + max 254 char
- Render conditionnel via form.Subscribe : visible UNIQUEMENT quand
`clientId === null && clientName.trim().length >= 2` (= création
à la volée). Disparait dès que l'user sélectionne un client
existant ou vide le combobox.
- Validation finale : requis seulement si clientId null
- mutationFn envoie `clientEmail || null` au backend uniquement en
mode création à la volée (pour client existant, l'email est déjà
en DB)
TDD : le test E2E "client inconnu — fournit l'email" a été écrit AVANT
le fix, échouait sur `getByLabel(/email du client/i) not found` (champ
inexistant), passe maintenant en 3.9 s. Empêche la régression future.
Le test vérifie aussi la chaîne complète :
- Facture créée + apparaît dans /factures
- Client créé en même temps + apparaît dans /clients avec son email
visible
État après ce commit : 27/27 tests Playwright verts.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>