[Majeur] Une erreur API (409, 422, 404, 500) remplace toute l'application par un écran d'erreur plein écran #148
Labels
No labels
bug
enhancement
feature
groupe/admin-ui
groupe/chat-ui
groupe/error-handling
groupe/event-composer
groupe/i18n-forms
groupe/ui-polish
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/frontend#148
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Majeur
Rapports QA d'origine : CHAT-13, PROFILE-10, ADMIN-14, EVENTS-19, AUTH-22, SECURITY_UX-22
Nom de channel en double, mauvais mot de passe, rôle en double, event complet… : l'erreur devrait s'afficher dans la modale ou en toast, sans perdre la saisie.
Détails des rapports
[CHAT-13] Une erreur 409/422 à la création/édition d'un channel ou d'une catégorie remplace TOUTE l'application par une page d'erreur plein écran — Gravité : Majeur
/categoryet/channels.qa_chat_ui_catexistant déjà, valider. 2. Idem pour "Create a channel" avec le nomQA_Upper_Chan(majuscules) ouqa_chat_pub(existant). 3. Idem catégoriebad<name>.sanitizeChannelSlugexiste danschat/utils/channel.util.tsmais n'est utilisé nulle part), donc taper "My Channel" ou "General" (très naturel) mène à cet écran d'erreur.screens/chat_cat_dup_ui.png,chat_ch_422_ui.png,chat_ch_409_ui.png; consoleCategory name already used ... at clientAction (category.route.tsx:29).frontend/src/chat/routes/channel.route.tsx(bloc catch) etcategory.route.tsx: seuls lesstatus === 400sont retournés viadata(err), les 409/422 sontthrow err-> ErrorBoundary de route.[PROFILE-10] Toute erreur serveur d'une action du profil remplace TOUTE l'application par une page d'erreur plein écran — Gravité : Majeur
/me/:actiondavid(nom déjà pris) > Validate. (Idem : nom composé d'espaces" "-> 400 ; mauvais mot de passe actuel dans "Change password" -> 406.)Username already used: 'david' is already used by an other user. at request (src/api/request.ts:11). Même rendu pour 400 (« One or more validation errors occurred. / The server rejected the request. ») et 406 (mauvais mdp).screens/profile_04_username_dup.png,profile_06_rename_spaces.png,profile_08_password_wrong.pngfrontend/src/users/routes/me.ts:14-40(clientActionlaisse remonter l'APIError) +Profile.tsx:111-123/useModalFetchern'intercepte pas l'erreur ; capté parroutes/dashboard.tsx:89ErrorBoundary. Aucune validationtrim()côté UI pour le nom (Profile.tsx:111-123, seulementrequired/minLength=1HTML : " " passe).[ADMIN-14] Toute erreur API d'une action admin remplace la page par un écran d'erreur plein écran (ex. rôle en double) — Gravité : Mineur
Unexpected end of JSON input).screens/admin_roles_02_duplicate.png; console :Role Name already used: 'qa_admin_ui_3ncs' is already used by an other role. at createRole.frontend/src/admin/api/roles.ts(throw new APIError(...)) +frontend/src/admin/routes/RolesAction.ts/UsersAction.tssans try/catch : l'erreur levée parclientActionremonte à l'ErrorBoundary de route au lieu d'être renvoyée viadata()(alors queuseModalFetchersait afficher un toast quandfetcher.data instanceof Error).frontend/src/api/request.ts:response.json()sur une réponse vide (401 du middleware).[EVENTS-19] Toute erreur non-400 (ex. 409 taille < inscrits) dans le composer remplace la page par un écran d'erreur plein écran et perd la saisie — Gravité : Mineur
frontend/src/events/routes/events.route.tsx:250-257(seul le statut 400 est renvoyé à la modale, le reste estthrow).screens/events_edit_size_below.png.screens/events_stale_after.png) au lieu d'un toast/erreur dans la modale ; idem pour "already registered" (409), event supprimé (404) :frontend/src/events/routes/registrations.route.tsx:279-294ne capture aucune erreur.registeredCount(SizeSlot.tsxne reçoitregisteredCountque pour l'affichage).[AUTH-22] "Remove" d'une invitation déjà supprimée remplace toute la page par une page d'erreur 404 — Gravité : Mineur
/admin/users(liste des invitations)RegisterUserCommand.cs:22-27). 3. Cliquer "Remove" sur la ligne périmée.DELETE /api/auth/invitation/<id> -> 404et la page entière est remplacée par la carte "Error 404 — Invitation not found" (Go Back / Home).screens/auth_27_stale_remove.pngfrontend/src/invitations/routes/invitations.route.tsx:20+frontend/src/api/request.ts:19(l'APIError remonte à l'ErrorBoundary du dashboard).[SECURITY_UX-22] Erreur backend 500 : message technique interne de React Router affiché à l'utilisateur — Gravité : Cosmétique
/calendarquandGET /api/eventsrépond 500 (simulé avecpage.route)screens/security_ux_calendar_500.pngTrouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.