Rolebase Protocole de validation Plan de test — RoleBase UdN v12 Version : 12.0 — Date : 21/05/2026 Objectif : Valider les fonctionnalités de la plateforme après chaque déploiement Voila le lien vers le fchier excel modèle : https://partage.universite-du-nous.org/s/gxffxSKnB8Rdxxq Comment utiliser ce plan Symbole Signification ✅ Test passé ❌ Test échoué — bug à documenter ⚠️ Test partiel — comportement dégradé — Non testé Pour chaque test : remplir la colonne Résultat, Commentaire et Bug dans le fichier Excel associé. AUTH — Authentification N° Action Prérequis Résultat attendu AUTH-01 Se connecter avec email/mot de passe valide Compte existant Redirection vers le tableau de bord de l'orga AUTH-02 Se connecter avec email/mot de passe invalide Compte existant Message d'erreur affiché, pas de redirection AUTH-03 Créer un nouveau compte Email non utilisé Compte créé, email de confirmation envoyé AUTH-04 Se déconnecter Être connecté Redirection vers la page de connexion ORG — Organisation N° Action Prérequis Résultat attendu ORG-01 Créer une nouvelle organisation Être connecté Organisation créée, redirection vers l'orga ORG-02 Modifier le nom et logo de l'orga Être admin de l'orga Modifications sauvegardées et visibles ORG-03 Modifier la couleur d'accent Être admin de l'orga Couleur appliquée sur l'interface ORG-04 Modifier le message de bienvenue Être admin de l'orga Message visible sur la page d'accueil ORG-05 Changer le mode de gouvernance (Libre/Agile/Holacratique) Être admin Permissions UI adaptées au mode choisi ORG-06 Passer en mode Holacratique → confirmation modale Être admin Modale de confirmation affichée, rôles structurels créés ORG — Organigramme N° Action Prérequis Résultat attendu ORG-10 Visualiser l'organigramme Orga avec cercles Cercles et rôles affichés correctement ORG-11 Cliquer sur un cercle → voir les sous-cercles Cercle avec enfants Sous-cercles affichés ORG-12 Filtrer par 'Mes rôles' Être membre d'un rôle Seuls mes rôles sont mis en surbrillance ORG-13 Distinction visuelle cercle (🫧 small-caps) vs rôle Orga avec cercles et rôles Cercles en small-caps, rôles normaux ROLE — Rôles & Cercles N° Action Prérequis Résultat attendu ROLE-01 Créer un nouveau rôle dans un cercle Être admin/leader Rôle créé et visible dans l'organigramme ROLE-02 Modifier la raison d'être d'un rôle Être admin/leader Modification sauvegardée ROLE-03 Ajouter des redevabilités à un rôle Être admin/leader Redevabilités sauvegardées et affichées ROLE-04 Ajouter des règles communes à un rôle Être admin/leader Règles sauvegardées ROLE-05 Assigner un membre à un rôle Être admin/leader + membre existant Membre assigné, visible dans l'organigramme ROLE-06 Retirer un membre d'un rôle (bouton UserMinus) Membre assigné Membre retiré du rôle ROLE-07 Archiver un rôle Être admin/leader Rôle archivé et non visible ROLE-08 Créer un cercle (sous-groupe) Être admin/leader Cercle créé avec rôles structurels MBR — Membres N° Action Prérequis Résultat attendu MBR-01 Inviter un nouveau membre par email Être admin Email d'invitation envoyé MBR-02 Ajouter un membre sans email Être admin Membre créé sans compte utilisateur MBR-03 Voir la liste des membres Être connecté Liste complète des membres affichée TENS — Tensions N° Action Prérequis Résultat attendu TENS-01 Créer une tension opérationnelle depuis le menu Être connecté Tension créée avec badge OPÉ TENS-02 Créer une tension de gouvernance depuis le menu Être connecté Tension créée avec badge GOUV TENS-03 Créer une tension depuis la popup (nouveau bouton) Être connecté Popup avec champs Rôle et Type visibles (layout colonne) TENS-04 Remplir la description d'une tension Tension créée Description sauvegardée et affichée TENS-05 Valider une tension (passer en Terminé) Tension en cours Tension dans la liste Terminé TENS-06 Rejeter une tension (passer en Bloqué) Tension en cours Tension dans la liste Bloqué TENS-07 Filtrer tensions par 'Mes rôles' Être membre d'un rôle Seules les tensions de mes rôles affichées TENS-08 Filtrer tensions par 'Cercles' Être membre d'un cercle Tensions du cercle affichées TENS-09 Filtrer tensions par 'Toute l'organisation' Être connecté Toutes les tensions de l'orga affichées TENS-10 Voir le badge OPÉ/GOUV sur les tensions Tensions des deux types Badges colorés corrects PROJ — Projets N° Action Prérequis Résultat attendu PROJ-01 Créer un nouveau projet Être connecté Projet créé et visible dans la liste PROJ-02 Modifier le statut d'un projet Projet existant Statut mis à jour PROJ-03 Archiver un projet Projet existant Projet archivé et non visible PP — Prochains pas ⚠️ Fortement modifié en v12 N° Action Prérequis Résultat attendu PP-01 Créer un prochain pas en réunion (avec note) Être en réunion, tension ouverte Prochain pas sauvegardé en BDD PP-02 Créer un prochain pas en réunion (sans note) Être en réunion, tension ouverte Prochain pas sauvegardé même sans note PP-03 Valider tension avec PP → apparaît dans Traités Prochain pas saisi PP visible sous le titre barré dans Traités PP-04 PP d'une tension d'un autre membre visible Tension d'un autre membre avec PP PP visible dans la liste Traités PP-05 Rouvrir une tension traitée → PP pré-rempli Tension traitée avec PP Champ PP pré-rempli avec la valeur existante PP-06 PP visible toutes réunions confondues PP créé dans une ancienne réunion PP affiché même si créé dans une autre réunion PP-07 Page 'Prochains pas' — voir mes PP PP existants Liste des PP avec cercle et réunion associés PP-08 Marquer un prochain pas comme fait PP existant PP barré et marqué fait REU — Réunions ⚠️ Fortement modifié en v12 N° Action Prérequis Résultat attendu REU-01 Créer une nouvelle réunion Être admin/leader Réunion créée avec les étapes par défaut REU-02 Démarrer une réunion Réunion planifiée Interface de réunion active REU-03 Étape Inclusion — écrire des notes Être en réunion Notes sauvegardées REU-04 Étape Indicateurs — saisir les valeurs Être en réunion, indicateurs configurés Valeurs sauvegardées REU-05 Étape Checklist — cocher les items Être en réunion, checklist configurée Items cochés sauvegardés REU-06 Triage opé — ajouter une tension inline Être en réunion, mode éditable Tension créée et ajoutée à l'étape REU-07 Triage opé — importer une tension existante Tensions disponibles Tension importée dans l'étape REU-08 Triage opé — valider une tension avec PP Tension dans l'étape PP sauvegardé, tension dans Traités REU-09 Triage opé — PP affiché sous le titre (pas à droite) Tension traitée avec PP PP affiché EN DESSOUS du titre barré REU-10 Triage opé — rouvrir une tension traitée Tension traitée Tension repasse en À traiter REU-11 Étape Prochains pas — voir les PP de la réunion PP créés pendant la réunion PP affichés en kanban REU-12 Terminer la réunion Être en réunion Réunion marquée comme terminée REU-13 Notes réunion → description tension à la validation Tension créée en réunion avec notes puis validée Description = texte des notes (pas JSON) EMAIL — Emails ⚠️ Corrigé en v12 N° Action Prérequis Résultat attendu EMAIL-01 Rappel J-1 réunion — automatique Réunion planifiée demain, cron 9h UTC Email reçu la veille à 9h UTC EMAIL-02 Tester rappel J-1 manuellement Réunion dans les 36h Email reçu après le curl test EMAIL-03 CR réunion — reçu automatiquement après fin Réunion terminée, cron toutes les heures Email CR reçu dans l'heure suivant la fin EMAIL-04 CR réunion — contient les prochains pas Réunion avec PP PP listés dans le mail EMAIL-05 CR réunion — envoyé une seule fois (flag summarySent) Réunion terminée Pas de doublon même si cron passe plusieurs fois EMAIL-06 Invitation nouveau membre — email reçu Membre invité Email d'invitation reçu Commandes de test manuel : # Rappel J-1 curl -X POST http://localhost:8888/cron.sendMeetingReminders \ -H "Content-Type: application/json" \ -H "x-nhost-webhook-secret: cron-secret-udn" \ -d '{}' # Compte-rendu curl -X POST http://localhost:8888/cron.sendMeetingSummaries \ -H "Content-Type: application/json" \ -H "x-nhost-webhook-secret: cron-secret-udn" \ -d '{}' ASYNC — Gouvernance asynchrone N° Action Prérequis Résultat attendu ASYNC-01 Soumettre une tension en gouvernance async Mode holacratique + asyncGovernance activé Mail envoyé aux membres du cercle ASYNC-02 Voter 'Valider' sur une tension async Email avec lien de vote reçu Vote enregistré ASYNC-03 Voter 'Objecter' sur une tension async Email avec lien de vote reçu Objection enregistrée, tension passe en réunion ASYNC-04 Cron clôture auto à la deadline Tension async sans objection à deadline asyncStatus = governance_async_validated ASYNC-05 Bouton 'Appliquer les évolutions' visible asyncStatus = governance_async_validated Bouton visible et actif ASYNC-06 Appliquer les évolutions Évolutions en attente Évolutions appliquées, tension fermée ADM — Administration N° Action Prérequis Résultat attendu ADM-01 Accéder au tableau de bord admin Être super-admin Page admin accessible avec liste des orgas ADM-02 Impersonner un utilisateur Être super-admin Bandeau orange 'Mode impersonation' affiché ADM-03 Modifier le plan d'une orga Être super-admin Plan mis à jour (vivante/carto) ADM-04 Export ISO 9001 Excel Être admin orga Fichier Excel téléchargé avec 4 onglets IMP — Import N° Action Prérequis Résultat attendu IMP-01 Importer une structure Glassfrog (JSON) Fichier JSON Glassfrog valide Structure importée dans l'orga EXC — Excalidraw N° Action Prérequis Résultat attendu EXC-01 Créer une fresque collaborative depuis une tension addon_excalidraw activé Lien Excalidraw créé et ouvert EXC-02 Créer une fresque depuis une réunion addon_excalidraw activé Lien Excalidraw créé MEET — Meet UdN N° Action Prérequis Résultat attendu MEET-01 Lancer une visio Meet depuis une réunion addon_meet activé Lien Meet généré et ouvert NR — Non régression technique Ces tests sont à lancer après chaque déploiement ou modification technique. N° Action Prérequis Résultat attendu NR-01 Build frontend sans erreur TypeScript Code modifié npm run build → 0 erreurs NR-02 Backend démarre sans erreur Après restart Logs OK, port 8888 accessible NR-03 Permissions Hasura next_step = org.members Après toute modif permissions Membres voient les PP de tous les cercles NR-04 Un seul prochain pas par tension (contrainte UNIQUE) Plusieurs créations PP pour même tension Upsert, pas de doublon en BDD NR-05 Crons actifs et URL correctes (sans /trpc/) Après recréation cron URLs = /cron.X dans Hasura metadata Vérification crons : docker exec rolebase-graphql-1 sh -c 'curl -s -X POST http://localhost:8080/v1/metadata \ -H "Content-Type: application/json" \ -H "x-hasura-admin-secret: hasura-admin-secret-prod-rolebase" \ -d "{\"type\":\"export_metadata\",\"args\":{}}"' | \ python3 -c " import sys, json data = json.load(sys.stdin) for c in data.get('cron_triggers', []): print(c['name'], '|', c['webhook']) " Récapitulatif Catégorie Nb tests Authentification 4 Organisation 10 Rôles & Cercles 8 Membres 3 Tensions 10 Projets 3 Prochains pas 8 Réunions 13 Emails 6 Gouvernance async 6 Admin 4 Import 1 Excalidraw 2 Meet UdN 1 Non régression 5 TOTAL 84 Document généré le 21/05/2026 — RoleBase UdN v12 — Université du Nous Rolebase fonctionnement Qui peut voir mes tensions, mes actualités, mes projets, mes réunions  Important d'abord : ces permissions de lecture sont identiques quel que soit le mode de gouvernance. « Libre » ne change rien à la visibilité, il ne joue que sur le workflow de décision, pas sur qui voit quoi. Ce qui compte, ce sont 3 choses : le flag private, le fait d'être participant du cercle, et le fait d'être membre de l'org.   « Participant d'un cercle » = tu as un rôle dans ce cercle, ou tu es le premier lien/leader d'un de ses sous-cercles directs. (Avoir un rôle dans un sous-cercle ne fait PAS de toi un participant du cercle parent.)  Règle générale : tensions ET projets   Tu vois une tension / un projet si au moins une condition est vraie :   1. tu es participant du cercle ;   2. tension → tu y es ajouté comme membre ; projet → il t'est assigné ;   3. l'élément est non privé ET tu es membre de l'org.   ---   Q1 — Réunion en privé : les gens voient-ils les tensions dedans ? Le private de la réunion ne contrôle que la visibilité de la réunion elle‑même (qui peut l'ouvrir : les participants du cercle + les personnes invitées à la réunion).  ⚠️  Il ne cascade pas sur les tensions. Les tensions affichées dans la réunion gardent leurs propres permissions, et être invité à la réunion ne donne aucun droit sur les tensions. Donc :   - une tension non privée → vue par les participants (membres de l'org) ;   - une tension privée → vue uniquement par les participants du cercle (ou les membres explicitement ajoutés à la tension). Un invité à la réunion qui n'est pas   participant du cercle ne la verra pas, même dans la réunion.   Q2 — Pas membre / pas de rôle dans le cercle : je vois les tensions et projets du cercle ? Pour les projets : Non privés → OUI, tout membre de l'org les voit, même sans rôle dans le cercle. Privés → NON, réservés aux participants du cercle (+ l'assigné pour un projet, + les membres ajoutés pour une tension). Pour les tensions Elles sont par défaut en privé et ce n'est pas changeable donc seul les membres peuvent voir la tension et les participant.es du cercle   ---   En résumé : la porte d'entrée « sans rôle dans le cercle », c'est le flag private. Public = visible par toute l'org ; privé = cercle uniquement. Mettre une   réunion en privé cache la réunion aux non‑participants, mais ne privatise pas automatiquement les tensions qu'elle contient — pour ça il faut passer les   tensions elles‑mêmes en privé.