Objectif : Vérifier le bon fonctionnement de toutes les interfaces utilisateur face à une mise à jour (Angular, dépendances, refactoring). Ce protocole couvre ce que les tests unitaires backend ne couvrent pas : l'affichage, les interactions, les mises à jour de listes, les formulaires, les retours visuels.
Prérequis : Environnement de test avec données de démonstration (fixtures RERO ILS). Comptes disponibles : visiteur anonyme, lecteur, bibliothécaire de succursale, bibliothécaire système, admin.
Convention :
[ ] — case à cocher pour chaque étape
- ⚠️ — point souvent raté lors de migrations, vérifier attentivement
- 🔒 — nécessite un rôle spécifique
- 🔄 — vérifier que la liste/vue se met à jour sans rechargement manuel de la page
- Transversal & infrastructure
- Recherche (interface publique et admin)
- Interface publique — Détail document
- Interface publique — Profil lecteur
- Administration — Circulation (checkout/checkin)
- Administration — Gestion des lecteurs
- Administration — Catalogue (documents, exemplaires, holdings)
- Administration — Acquisitions
- Administration — Configuration
- Administration — Rapports & monitoring
- Administration — Migrations
| # | Étape | OK |
|---|
| 1.1.1 | Login avec identifiants valides → redirection vers page d'accueil | [ ] |
| 1.1.2 | Login avec identifiants invalides → message d'erreur affiché | [ ] |
| 1.1.3 | Logout → session terminée, redirection vers login | [ ] |
| 1.1.4 | ⚠️ Accès direct à une URL protégée sans session → redirection login, puis retour à l'URL d'origine | [ ] |
| 1.1.5 | Session expirée : ouvrir DevTools → Application → Cookies → supprimer tous les cookies du domaine, puis tenter une action (ex. sauvegarder un formulaire) → redirection vers login, pas de crash silencieux ni page blanche | [ ] |
| # | Étape | OK |
|---|
| 1.2.1 | Menu principal visible avec ses 5 catégories : Services aux usagers, Catalogue, Acquisitions, Rapports, Admin | [ ] |
| 1.2.2 | Sous-menus s'ouvrent au clic | [ ] |
| 1.2.3 | ⚠️ Les raccourcis clavier fonctionnent (c → checkout, p → lecteurs, etc.) | [ ] |
| 1.2.4 | 🔒 Les entrées de menu masquées selon le rôle (bibliothécaire système = tous les menus VS rôle pro_circulation = pas de menus acquisitions par exemple) | [ ] |
| 1.2.5 | Sélecteur de bibliothèque active présent et fonctionnel | [ ] |
| # | Étape | OK |
|---|
| 1.3.1 | Après un checkin réussi : toast de confirmation affiché. Après un checkin en erreur (exemplaire inconnu) : toast d'erreur avec message explicite | [ ] |
| 1.3.2 | Après sauvegarde d'un formulaire (enregistrement lecteur ou notice bibliographique) : toast de succès affiché | [ ] |
| 1.3.3 | Formulaire de création de lecteur : saisir un email déjà existant → message d'erreur inline sous le champ email. Saisir un nom d'utilisateur existant → message d'erreur inline sous ce champ | [ ] |
| 1.3.4 | Formulaire de changement de mot de passe : saisir deux mots de passe différents → erreur inline visible. Après correction → erreur disparaît | [ ] |
| 1.3.5 | Console navigateur : aucune erreur JavaScript critique (vérifier au moins 1× par module) | [ ] |
| # | Étape | OK |
|---|
| 1.4.1 | Sélecteur de langue accessible et fonctionnel | [ ] |
| 1.4.2 | ⚠️ Après changement de langue, les labels d'interface sont bien traduits (pas de clé brute visible, ex. translate.key.path) | [ ] |
La plupart des comportements de cette section s'appliquent à la fois à l'interface publique et aux listes de ressources de l'interface admin (documents, lecteurs, exemplaires, commandes…). La recherche avancée (§ 2.3) est spécifique à l'admin.
| # | Étape | OK |
|---|
| 2.1.1 | Page d'accueil charge sans erreur | [ ] |
| 2.1.2 | Barre de recherche présente et focalisable | [ ] |
| 2.1.3 | Saisie d'un terme et soumission → résultats affichés | [ ] |
S'applique à la recherche publique et aux listes de l'admin.
| # | Étape | OK |
|---|
| 2.2.1 | Liste de résultats affichée avec les données attendues (titre, auteur, date, disponibilité pour les documents) | [ ] |
| 2.2.2 | Facettes (filtres) affichées, cliquables | [ ] |
| 2.2.3 | ⚠️ Caractères spéciaux dans la recherche (*, ?, +) → résultats affichés sans encodage parasite visible dans l'URL (%2A ou équivalent), sans message d'erreur | [ ] |
| 2.2.4 | Pagination fonctionne (page suivante, précédente, saut direct) | [ ] |
| 2.2.5 | Tri des résultats change l'ordre affiché | [ ] |
| 2.2.6 | Filtre par facette → liste se restreint, facette cochée visible | [ ] |
| 2.2.7 | Retrait d'un filtre (croix) → liste revient à l'état précédent | [ ] |
| 2.2.8 | Combinaison de plusieurs facettes actives simultanément | [ ] |
| 2.2.9 | Recherche sans résultat → message "aucun résultat" affiché, pas d'erreur | [ ] |
Accessible depuis les listes de ressources admin (documents, lecteurs…) via le lien "Recherche experte" / mode expert.
| # | Étape | OK |
|---|
| 2.3.1 | Accès à la recherche experte depuis la liste des documents admin | [ ] |
| 2.3.2 | Saisie d'une requête Elasticsearch/Lucene → résultats corrects | [ ] |
| 2.3.3 | Retour en recherche simple → interface normale | [ ] |
| # | Étape | OK |
|---|
| 3.1.1 | Onglet "Obtenir" affiché par défaut | [ ] |
| 3.1.2 | Holdings de l'organisation affichés avec bibliothèque et localisation | [ ] |
| 3.1.3 | ⚠️ Filtre par bibliothèque (multi-select) fonctionne et réduit la liste | [ ] |
| 3.1.4 | Accordéon holding : clic sur l'en-tête ouvre/ferme le détail | [ ] |
| 3.1.5 | Exemplaires listés avec statut de disponibilité, cote, localisation | [ ] |
| 3.1.6 | Badge de disponibilité correct (disponible/emprunté/en transit) | [ ] |
| 3.1.7 | Notes publiques des exemplaires affichées | [ ] |
| 3.1.8 | Liens URL (texte intégral électronique) cliquables | [ ] |
| 3.1.9 | ⚠️ Holdings d'autres organisations affichés dans une section séparée | [ ] |
| 3.1.10 | Pagination des exemplaires si nombreux | [ ] |
| # | Étape | OK |
|---|
| 3.2.1 | Cote, énumération/chronologie affichées | [ ] |
| 3.2.2 | ⚠️ Contenus supplémentaires, index, lacunes affichés si présents | [ ] |
| 3.2.3 | ⚠️ "Ajouter une réclamation" → action déclenchée (bouton fonctionnel) | [ ] |
| # | Étape | OK |
|---|
| 3.3.1 | 🔒 Bouton "Demander" visible pour usager connecté | [ ] |
| 3.3.2 | ⚠️ Bouton "Demander" disabled avec tooltip explicatif si demande impossible | [ ] |
| 3.3.3 | Clic "Demander" → sélecteur de lieu de retrait affiché | [ ] |
| 3.3.4 | Confirmation de la demande → message de succès, bouton change d'état | [ ] |
| 3.3.5 | 🔒 Bouton PEB visible depuis la vue globale pour usager connecté | [ ] |
| # | Étape | OK |
|---|
| 3.4.1 | Résumé, sujets, auteurs, éditeur affichés | [ ] |
| 3.4.2 | ⚠️ Les champs conditionnels (spécifiques à certains types de documents) s'affichent pour les documents qui les ont et sont absents pour les autres (ex. informations de fiction pour les romans, notes de musique pour les partitions) | [ ] |
| 3.4.3 | Liens vers les entités (auteurs, sujets) cliquables | [ ] |
| # | Étape | OK |
|---|
| 3.5.1 | Boutons d'export présents | [ ] |
| 3.5.2 | Export fonctionne et télécharge le fichier | [ ] |
Accès : usager connecté, interface publique
| # | Étape | OK |
|---|
| 4.1.1 | Page profil accessible après login | [ ] |
| 4.1.2 | ⚠️ Onglets visibles : Prêts, Demandes, Frais, Historique (si activé), PEB, Données personnelles | [ ] |
| 4.1.3 | Code-barres usager affiché en haut | [ ] |
| 4.1.4 | 🔒 Sélecteur d'organisation pour usager multi-affilié | [ ] |
| # | Étape | OK |
|---|
| 4.2.1 | Liste des prêts en cours avec titre, bibliothèque, date d'échéance | [ ] |
| 4.2.2 | ⚠️ Badge "En retard" affiché si date dépassée | [ ] |
| 4.2.3 | ⚠️ Badge "Bientôt dû" affiché si proche échéance | [ ] |
| 4.2.4 | Bouton "Prolonger" actif si renouvellement possible | [ ] |
| 4.2.5 | ⚠️ Bouton "Prolonger" disabled avec tooltip explicatif si impossible | [ ] |
| 4.2.6 | 🔄 Après renouvellement : nouvelle date d'échéance affichée sans rechargement | [ ] |
| 4.2.7 | Compteur de renouvellements mis à jour | [ ] |
| # | Étape | OK |
|---|
| 4.3.1 | Liste des demandes avec titre, statut, lieu de retrait | [ ] |
| 4.3.2 | Statuts affichés : En attente, Disponible au guichet, En transit | [ ] |
| 4.3.3 | Rang dans la file d'attente affiché si applicable | [ ] |
| 4.3.4 | Date limite de retrait affichée si disponible | [ ] |
| 4.3.5 | Bouton "Annuler" visible pour demandes annulables | [ ] |
| 4.3.6 | 🔄 Après annulation : demande disparaît de la liste sans rechargement | [ ] |
| # | Étape | OK |
|---|
| 4.4.1 | Liste des frais avec montant, date, document concerné | [ ] |
| 4.4.2 | Détail expandable par frais : historique des transactions | [ ] |
| 4.4.3 | Montant total affiché dans l'en-tête de l'onglet | [ ] |
| # | Étape | OK |
|---|
| 4.5.1 | ⚠️ Onglet visible seulement si keep_history activé pour l'usager | [ ] |
| 4.5.2 | Liste des prêts passés avec document, date de retour | [ ] |
| 4.5.3 | Chargement progressif ("Afficher plus") fonctionnel | [ ] |
| # | Étape | OK |
|---|
| 4.6.1 | Liste des demandes PEB avec statut, document, lieu de retrait | [ ] |
| 4.6.2 | Champs spécifiques : portée (copie/prêt), pages, URL source | [ ] |
| 4.6.3 | Section expandable "Informations supplémentaires" | [ ] |
| # | Étape | OK |
|---|
| 4.7.1 | Informations personnelles affichées (nom, adresse, email, tél.) | [ ] |
| 4.7.2 | Date d'expiration du compte affichée | [ ] |
| 4.7.3 | ⚠️ Indicateur "Conserver l'historique" affiché | [ ] |
| 4.7.4 | Bouton "Modifier" ouvre le formulaire d'édition | [ ] |
| 4.7.5 | ⚠️ Champs désactivés (readOnlyFields) bien en lecture seule dans le formulaire | [ ] |
| 4.7.6 | Validation async email/nom d'utilisateur (doublon) fonctionne | [ ] |
| 4.7.7 | Soumission formulaire → retour au profil, données mises à jour | [ ] |
| # | Étape | OK |
|---|
| 4.8.1 | Formulaire 3 champs : mot de passe actuel, nouveau, confirmation | [ ] |
| 4.8.2 | ⚠️ Validation force du mot de passe affiche les règles non respectées | [ ] |
| 4.8.3 | Mot de passe actuel incorrect → message d'erreur | [ ] |
| 4.8.4 | Nouveaux mots de passe ne correspondent pas → erreur inline | [ ] |
| 4.8.5 | Changement réussi → message de confirmation | [ ] |
🔒 Rôle : bibliothécaire (circulation)
| # | Étape | OK |
|---|
| 5.1.1 | Interface checkout accessible via menu ou raccourci c | [ ] |
| 5.1.2 | Saisie d'un code-barres lecteur (ou nom) → carte lecteur affichée | [ ] |
| 5.1.3 | ⚠️ Carte lecteur affiche : nom, date de naissance, âge, type, code-barres, notes | [ ] |
| 5.1.4 | Compte bloqué → message d'avertissement visible sur la carte | [ ] |
| 5.1.5 | Compte expiré → message d'avertissement visible | [ ] |
| 5.1.6 | Lecteur introuvable → message d'erreur clair | [ ] |
| # | Étape | OK |
|---|
| 5.2.1 | Saisie d'un code-barres exemplaire → prêt enregistré | [ ] |
| 5.2.2 | 🔄 ⚠️ Exemplaire apparaît immédiatement dans la liste des prêts du lecteur | [ ] |
| 5.2.3 | Exemplaire déjà prêté → message d'erreur avec information | [ ] |
| 5.2.4 | Exemplaire introuvable → message d'erreur | [ ] |
| 5.2.5 | ⚠️ Notes de circulation de l'exemplaire affichées dans la liste expandée ET dans un toast d'alerte | [ ] |
| 5.2.6 | Exemplaire avec type d'exemplaire temporaire → note affichée dans la liste expandée ET dans un toast | [ ] |
| 5.2.7 | Exemplaire appartenant à une collection → note affichée dans la liste expandée ET dans un toast | [ ] |
| # | Étape | OK |
|---|
| 5.3.1 | Liste affiche : code-barres, titre, auteur, date d'échéance | [ ] |
| 5.3.2 | Clic "expand" par ligne → détails affichés (cote, localisation, notifications) | [ ] |
| 5.3.3 | Renouvellement individuel (bouton par ligne) | [ ] |
| 5.3.4 | ⚠️ "Renouveler tout" → tous les renouvelables mis à jour en une action | [ ] |
| 5.3.5 | 🔄 Après renouvellement, date d'échéance mise à jour dans la liste | [ ] |
| 5.3.6 | Bouton "Renouveler" disabled si non renouvelable (tooltip explicatif) | [ ] |
| 5.3.7 | Badge frais affiché si des frais sont associés à un prêt existant | [ ] |
| 5.3.8 | Badge demandes (réservations) affiché si d'autres lecteurs attendent | [ ] |
Le retour peut se faire depuis l'onglet "Prêts" d'un lecteur chargé (retour dans le contexte du lecteur) ou directement depuis l'interface checkout/checkin sans lecteur sélectionné (retour anonyme). Tester les deux cas.
| # | Étape | OK |
|---|
| 5.4.1 | Retour sans lecteur chargé : saisie code-barres exemplaire → retour enregistré | [ ] |
| 5.4.2 | 🔄 ⚠️ Après retour, exemplaire apparaît dans la liste des retours sans rechargement | [ ] |
| 5.4.3 | Retour depuis l'onglet "Prêts" d'un lecteur : même comportement, prêt disparaît de la liste du lecteur | [ ] |
| 5.4.4 | Exemplaire en transit → message indiquant la bibliothèque de destination | [ ] |
| 5.4.5 | Exemplaire avec demande en attente → message signalant la demande | [ ] |
| 5.4.6 | Frais générés au retour → message ou badge visible | [ ] |
| 5.4.7 | ⚠️ Scan d'un exemplaire sans prêt actif → exemplaire apparaît dans la liste avec un bandeau d'avertissement (icône triangle), pas de crash ni d'erreur bloquante | [ ] |
| # | Étape | OK |
|---|
| 5.5.1 | Liste des demandes du lecteur : titre, date de demande | [ ] |
| 5.5.2 | Annulation d'une demande → 🔄 disparaît de la liste | [ ] |
| # | Étape | OK |
|---|
| 5.6.1 | Exemplaires disponibles au guichet listés | [ ] |
| 5.6.2 | Date limite de retrait affichée | [ ] |
| # | Étape | OK |
|---|
| 5.7.1 | ⚠️ Accordéon "Frais engagés" affiche liste avec date, catégorie, bibliothèque, montant | [ ] |
| 5.7.2 | ⚠️ Bouton "Ajouter un frais" → formulaire s'ouvre | [ ] |
| 5.7.3 | 🔄 ⚠️ Après ajout d'un frais, il apparaît dans la liste sans rechargement | [ ] |
| 5.7.4 | ⚠️ Bouton "Tout payer" fonctionne (split button, avec option "Payer pour ma bibliothèque") | [ ] |
| 5.7.5 | 🔄 Après paiement, montant total mis à jour | [ ] |
| 5.7.6 | Accordéon "Frais de retard prévisionnels" : liste avec date d'échéance, document, montant | [ ] |
| 5.7.7 | Accordéon "Historique" : transactions passées listées | [ ] |
| 5.7.8 | Montant total dans les badges d'onglet mis à jour dynamiquement | [ ] |
| # | Étape | OK |
|---|
| 5.8.1 | Page "Demandes" accessible depuis le menu | [ ] |
| 5.8.2 | Rafraîchissement automatique configurable (toggle + intervalle) | [ ] |
| 5.8.3 | Tri des demandes fonctionnel | [ ] |
| 5.8.4 | Annulation d'une demande depuis cette vue | [ ] |
🔒 Rôle : bibliothécaire
| # | Étape | OK |
|---|
| 6.1.1 | Accès à la liste des lecteurs via le menu | [ ] |
| 6.1.2 | Recherche par nom, prénom, code-barres | [ ] |
| 6.1.3 | Filtres : expiré / non expiré / bloqué | [ ] |
| 6.1.4 | Tri par pertinence ou nom complet | [ ] |
| 6.1.5 | Facettes : rôles, ville, type de lecteur | [ ] |
| 6.1.6 | Résultats affichent nom, rôles (tags colorés), date de naissance, ville | [ ] |
Un compte lecteur est composé de deux parties dans le formulaire : la partie utilisateur (identité, accès) et la partie lecteur (informations bibliothécaires). Tester les deux.
| # | Étape | OK |
|---|
| 6.2.1 | Formulaire de création accessible | [ ] |
| 6.2.2 | ⚠️ Champs obligatoires visibles dès l'ouverture du formulaire (notamment sous-champs requis) | [ ] |
| 6.2.3 | Partie utilisateur : validation email en temps réel (unicité async) | [ ] |
| 6.2.4 | Partie utilisateur : validation nom d'utilisateur en temps réel (unicité async) | [ ] |
| 6.2.5 | ⚠️ Sélection du rôle : les rôles disponibles dépendent des permissions du bibliothécaire connecté | [ ] |
| 6.2.6 | 🔒 Bibliothécaire de succursale : sélection de bibliothèque limitée à ses bibliothèques | [ ] |
| 6.2.7 | Partie lecteur : date d'expiration pré-remplie (+3 ans) | [ ] |
| 6.2.8 | Partie lecteur : code-barres, type de lecteur, bibliothèque(s) d'affiliation renseignables | [ ] |
| 6.2.9 | Sauvegarde → redirect vers le détail, message de succès | [ ] |
| # | Étape | OK |
|---|
| 6.3.1 | Formulaire pré-rempli avec les données existantes | [ ] |
| 6.3.2 | ⚠️ blocked_note effacé si case "bloqué" décochée | [ ] |
| 6.3.3 | ⚠️ Retrait du rôle "patron" : si le lecteur a des prêts, frais ou demandes actifs → message d'erreur/blocage explicite | [ ] |
| 6.3.4 | Sauvegarde → données mises à jour dans la vue détail | [ ] |
| # | Étape | OK |
|---|
| 6.4.1 | Coordonnées affichées : date de naissance, email, téléphones (triés par poids), adresse | [ ] |
| 6.4.2 | Accordéon "Notes" visible si des notes existent | [ ] |
| 6.4.3 | Accordéon "Informations utilisateur" : nom, keep_history, rôles, date de création | [ ] |
| 6.4.4 | Accordéon "Informations lecteur" : code-barres (lien circulation), type, expiration, affiliations | [ ] |
| 6.4.5 | Accordéon "Informations bibliothécaire" si rôle présent | [ ] |
| 6.4.6 | ⚠️ Accordéon "Permissions" se charge correctement (ne doit pas rester vide ni en erreur) | [ ] |
| 6.4.7 | Bouton "Circulation" visible pour CIRC_ADMIN | [ ] |
| # | Étape | OK |
|---|
| 7.1.1 | Liste des documents accessible | [ ] |
| 7.1.2 | Recherche plein texte fonctionne | [ ] |
| 7.1.3 | Facettes (type, langue, date…) fonctionnelles | [ ] |
| 7.1.4 | Boutons Modifier / Dupliquer / Supprimer présents selon les permissions du rôle ; bouton Supprimer disabled (avec tooltip) si la notice a des exemplaires liés | [ ] |
| # | Étape | OK |
|---|
| 7.2.1 | Éditeur de fiche bibliographique s'ouvre | [ ] |
| 7.2.2 | ⚠️ Tous les sous-champs obligatoires sont visibles en mode création | [ ] |
| 7.2.3 | ⚠️ Les champs conditionnels s'affichent ou se masquent correctement selon les valeurs saisies (ex. type de document, type de contenu) | [ ] |
| 7.2.4 | Ajout/suppression de répétitions de champs (auteurs, sujets, etc.) | [ ] |
| 7.2.5 | Sauvegarde → message de succès, redirect vers le détail | [ ] |
| 7.2.6 | ⚠️ "Enregistrer comme modèle" fonctionne et le modèle est récupérable depuis l'éditeur | [ ] |
| 7.2.7 | Duplication d'un document → nouvel enregistrement avec données copiées | [ ] |
| # | Étape | OK |
|---|
| 7.3.1 | Interface d'import accessible depuis le menu Catalogue | [ ] |
| 7.3.2 | Recherche par ISBN/titre retourne des résultats | [ ] |
| 7.3.3 | Sélection d'un résultat et import dans l'éditeur | [ ] |
| 7.3.4 | Données importées préremplissent l'éditeur correctement | [ ] |
| # | Étape | OK |
|---|
| 7.4.1 | Titre, auteurs, données bibliographiques affichés | [ ] |
| 7.4.2 | Section Holdings de l'organisation courante visible | [ ] |
| 7.4.3 | ⚠️ Filtre bibliothèques (multi-select) visible si >1 bibliothèque, fonctionne | [ ] |
| 7.4.4 | Accordéon holdings : expand/collapse par holding | [ ] |
| 7.4.5 | ⚠️ Menu déroulant "Ajouter" (holding/exemplaire) fonctionnel, visible selon permissions | [ ] |
| 7.4.6 | Holdings d'autres organisations affichés dans une section séparée | [ ] |
| 7.4.7 | Exemplaires listés dans chaque holding avec statut, cote, énumération | [ ] |
| 7.4.8 | Filtre texte sur les exemplaires fonctionnel | [ ] |
| 7.4.9 | Suppression d'un exemplaire → confirmation, disparaît de la liste | [ ] |
| 7.4.10 | Holdings électroniques : liens URL affichés et cliquables | [ ] |
| # | Étape | OK |
|---|
| 7.5.1 | Création d'un exemplaire depuis le détail document | [ ] |
| 7.5.2 | ⚠️ Sous-champs obligatoires visibles dans le formulaire | [ ] |
| 7.5.3 | Édition d'un exemplaire | [ ] |
| 7.5.4 | "Changer de localisation" (switch location) fonctionnel | [ ] |
| 7.5.5 | Recherche d'exemplaires par code-barres, localisation, type | [ ] |
| # | Étape | OK |
|---|
| 7.6.1 | Accès à la liste des entités locales | [ ] |
| 7.6.2 | Création d'une entité locale (personne, organisation, concept) | [ ] |
| 7.6.3 | Dans l'éditeur de document : recherche et import d'entité depuis une source externe (VIAF, etc.) via le champ auteur/sujet | [ ] |
| 7.6.4 | Lien entité ↔ document affiché dans le détail document | [ ] |
| # | Étape | OK |
|---|
| 7.7.1 | Création d'une collection | [ ] |
| 7.7.2 | Ajout d'exemplaires à une collection | [ ] |
| 7.7.3 | ⚠️ Titre de collection masqué dans la vue publique si aucune collection n'existe pour cet exemplaire | [ ] |
| 7.7.4 | Tags de collection dans les listes : pas de doublons d'icône de suppression | [ ] |
Les champs locaux sont définis par type de ressource (document, exemplaire, holding). Tester sur chaque ressource concernée.
| # | Étape | OK |
|---|
| 7.8.1 | Champ local défini pour un document → visible et éditable dans l'éditeur de notice | [ ] |
| 7.8.2 | Champ local défini pour un exemplaire → visible et éditable dans l'éditeur d'exemplaire | [ ] |
| 7.8.3 | Champ local défini pour un holding → visible et éditable dans l'éditeur de holding | [ ] |
🔒 Rôle : bibliothécaire avec accès acquisitions
| # | Étape | OK |
|---|
| 8.1.1 | Liste des fournisseurs accessible | [ ] |
| 8.1.2 | Création d'un fournisseur avec adresses, contacts | [ ] |
| 8.1.3 | Édition d'un fournisseur | [ ] |
| 8.1.4 | Suppression (si non utilisé) | [ ] |
Les budgets sont créés en dehors de l'interface admin. Seules la consultation et la vérification sont disponibles ici.
| # | Étape | OK |
|---|
| 8.2.1 | Liste des budgets accessible | [ ] |
| 8.2.2 | Vue détail d'un budget : nom, montant total, exercice fiscal | [ ] |
| 8.2.3 | ⚠️ Avertissement affiché si exercice fiscal clôturé | [ ] |
| # | Étape | OK |
|---|
| 8.3.1 | Liste des comptes accessible | [ ] |
| 8.3.2 | Création d'un compte avec montant | [ ] |
| 8.3.3 | ⚠️ Transfert de fonds entre comptes : formulaire et confirmation fonctionnels | [ ] |
| 8.3.4 | Montants (alloué, engagé, disponible) affichés correctement | [ ] |
| # | Étape | OK |
|---|
| 8.4.1 | Liste des commandes accessible | [ ] |
| 8.4.2 | Création d'une commande (fournisseur, compte, lignes) | [ ] |
| 8.4.3 | ⚠️ Ajout de lignes de commande : bouton "Ajouter" dans l'accordéon lignes | [ ] |
| 8.4.4 | ⚠️ Édition d'une ligne de commande PENDING (pas d'erreur d'autorisation) | [ ] |
| 8.4.5 | ⚠️ Suppression d'une ligne de commande PENDING (pas d'erreur d'autorisation) | [ ] |
| 8.4.6 | Notes de commande affichées avec coloration | [ ] |
| 8.4.7 | Badge de priorité sur les lignes | [ ] |
| 8.4.8 | ⚠️ Bouton "Envoyer la commande" visible pour commandes PENDING (avec permission update) | [ ] |
| 8.4.9 | Dialog de confirmation "Envoyer la commande" fonctionne | [ ] |
| 8.4.10 | ⚠️ Onglet "Réception" visible dès que la commande peut faire l'objet d'une réception (statut approprié), même sans réceptions déjà enregistrées | [ ] |
| 8.4.11 | Onglet "Historique" affiche les changements d'état | [ ] |
| # | Étape | OK |
|---|
| 8.5.1 | Formulaire de réception s'ouvre depuis une commande | [ ] |
| 8.5.2 | Champs du formulaire visibles et fonctionnels | [ ] |
| 8.5.3 | Sauvegarde → réception enregistrée, liste mise à jour | [ ] |
| 8.5.4 | Annulation → aucun enregistrement créé | [ ] |
| # | Étape | OK |
|---|
| 8.6.1 | Liste des fascicules en retard accessible | [ ] |
| 8.6.2 | Envoi d'une réclamation depuis cette interface | [ ] |
🔒 Rôle : bibliothécaire système ou admin
| # | Étape | OK |
|---|
| 9.1.1 | Liste des politiques accessible | [ ] |
| 9.1.2 | Création d'une politique (durée de prêt, renouvellements, etc.) | [ ] |
| 9.1.3 | Édition d'une politique existante | [ ] |
| 9.1.4 | Suppression d'une politique (si non utilisée) | [ ] |
| # | Étape | OK |
|---|
| 9.2.1 | Liste des types accessible | [ ] |
| 9.2.2 | Création / édition / suppression | [ ] |
| # | Étape | OK |
|---|
| 9.3.1 | Liste des types accessible | [ ] |
| 9.3.2 | Création / édition / suppression | [ ] |
| # | Étape | OK |
|---|
| 9.4.1 | Fiche de ma bibliothèque accessible et éditable | [ ] |
| 9.4.2 | Localisations listées dans la bibliothèque | [ ] |
| 9.4.3 | Création / édition d'une localisation | [ ] |
| # | Étape | OK |
|---|
| 9.5.1 | Liste des modèles accessible | [ ] |
| 9.5.2 | ⚠️ Enregistrement en tant que modèle (depuis l'éditeur) fonctionnel et modèle récupérable | [ ] |
| # | Étape | OK |
|---|
| 9.6.1 | Matrice accessible depuis le menu Admin | [ ] |
| 9.6.2 | Permissions affichées par rôle | [ ] |
| 9.6.3 | ⚠️ Modifications sauvegardées et reflétées dans le comportement de l'application | [ ] |
| # | Étape | OK |
|---|
| 10.1.1 | Accès à l'inventaire via le menu | [ ] |
| 10.1.2 | Filtres disponibles : bibliothèque, localisation, type, état | [ ] |
| 10.1.3 | Export de la liste | [ ] |
| # | Étape | OK |
|---|
| 10.2.1 | Liste des transactions accessible | [ ] |
| 10.2.2 | Filtres par bibliothèque, date, type de frais | [ ] |
| # | Étape | OK |
|---|
| 10.3.1 | Liste des configurations de statistiques accessible | [ ] |
| 10.3.2 | Création / édition d'une configuration | [ ] |
| 10.3.3 | ⚠️ Vue détail d'une configuration : bouton "Données en temps réel" → données chargées et affichées dans le tableau de rapport | [ ] |
| 10.3.4 | Export des données de rapport (si disponible) télécharge le fichier | [ ] |
| # | Étape | OK |
|---|
| 10.4.1 | Liste accessible depuis le menu | [ ] |
| 10.4.2 | Filtres (bibliothèque, type, état) fonctionnels | [ ] |
| # | Étape | OK |
|---|
| 10.5.1 | Liste des demandes PEB accessible | [ ] |
| 10.5.2 | Changement de statut d'une demande | [ ] |
| 10.5.3 | Création d'une demande PEB pour un lecteur | [ ] |
🔒 Rôle : admin système
| # | Étape | OK |
|---|
| 11.1.1 | Liste des migrations accessible | [ ] |
| 11.1.2 | Détail d'une migration (statut, progression) | [ ] |
| # | Étape | OK |
|---|
| 11.2.1 | Recherche dans les données de migration | [ ] |
| 11.2.2 | Vue détail d'un enregistrement de migration | [ ] |
| # | Étape | OK |
|---|
| 11.3.1 | Interface de dédoublonnage accessible | [ ] |
| 11.3.2 | Recherche avec UI de dédoublonnage fonctionne | [ ] |
| 11.3.3 | Vue détail d'un doublon potentiel | [ ] |
Ces vérifications s'appliquent à chaque section du protocole. Les noter séparément si elles échouent.
| Point | Description |
|---|
| Console propre | Ouvrir les DevTools → Console. Aucune erreur JS non gérée, aucun ERROR TypeError, aucun ExpressionChangedAfterItHasBeenCheckedError Angular |
| Requêtes réseau | Aucune requête en 400/500 sans gestion visible côté UI |
| Mise à jour de liste | Toute action (créer, modifier, supprimer, payer, rembourser) met à jour la liste/vue sans nécessiter F5 |
| Formulaires invalides | Bouton "Sauvegarder" désactivé si formulaire invalide ; messages d'erreur inline visibles |
| Boutons disabled | Les boutons disabled ont un tooltip explicatif |
| Champs requis | Tous les champs requis sont visibles (pas masqués par défaut) |
| Traductions | Aucune clé de traduction brute (KEY.NOT.FOUND ou translate.xxx) visible |
| Accordéons/tabs | Ouverture et fermeture sans crasher, contenu chargé au bon moment |
| Pagination | Navigation entre pages de résultats cohérente (pas de saut de page, pas de doublon) |
Ces patterns représentent les types de bugs les plus fréquents lors de mises à jour du framework ou de refactorings importants. Les utiliser comme grille de lecture pendant le parcours de l'application.
| Catégorie | Symptôme à surveiller | Où chercher en priorité |
|---|
| Mises à jour de liste | Une action (ajout, paiement, retour) semble réussir (pas d'erreur) mais la liste ne reflète pas le changement → rechargement manuel révèle que l'action a bien eu lieu | Frais lecteur, liste des retours, lignes de commande |
| Boutons inactifs | Un bouton cliquable ne déclenche rien, pas de retour visuel, pas d'erreur console | Boutons d'action dans les vues détail, formulaires avec logique conditionnelle |
| Champs formulaire absents | En mode création, certains sous-champs requis ou optionnels n'apparaissent pas alors qu'ils devraient | Éditeurs de notices (surtout champs répétables), éditeur de lecteur |
| Affichage conditionnel cassé | Un champ ou bloc s'affiche toujours (ou jamais) quel que soit l'état des données | Sections conditionnelles dans les vues détail (notes, sections par rôle) |
| Encodage URL | La navigation ou la recherche produit des URLs avec des caractères encodés en double ou mal encodés, causant des erreurs ou des résultats inattendus | URLs de recherche avec filtres actifs, navigation avec paramètres spéciaux |
| Onglet/panneau vide | Un onglet ou accordéon s'ouvre mais reste vide alors que des données existent | Onglet Permissions dans le détail lecteur, onglets de commande |
| Erreurs 400 silencieuses | Une action de formulaire retourne 400 côté réseau sans message d'erreur UI, ou avec un message générique peu utile | Formulaires de frais, formulaires acquisitions |
Protocole rédigé sur la base de l'analyse du code source de rero-ils-ui. À maintenir à jour lors de l'ajout de nouvelles fonctionnalités.