/uat — la recette utilisateur complète/uat — the full user acceptance test
Le skill /uat exécute une recette complète de l'application générée : il vérifie que chaque rôle peut faire exactement ce qu'il doit pouvoir faire (et rien de plus), sur deux axes — l'API et l'interface réelle — puis produit un rapport HTML unique avec toutes les métriques.
The /uat skill runs a full acceptance pass over the generated app: it verifies that every role can do exactly what it should (and nothing more), on two axes — the API and the real UI — then produces a single-file HTML report with every metric.
Le pipeline en 5 étapesThe 5-step pipeline
| ÉtapeStep | Ce qui se passeWhat happens |
|---|---|
| 1 · PlanPlan | Un plan de test déterministe (.plantest.yml) est généré depuis la surface VIVANTE de l'app : le menu et le RBAC en base, les pages enregistrées, les contrôleurs — pas depuis la doc, depuis la réalitéA deterministic test plan (.plantest.yml) is generated from the app's LIVE surface: the DB menu and RBAC, registered pages, controllers — not from docs, from reality |
| 2 · ProvisioningProvisioning | Un tenant UAT dédié + un utilisateur par rôle sont créés via l'API admin (identifiants dans un fichier gitignoré)A dedicated UAT tenant + one user per role are created through the admin API (credentials in a gitignored file) |
| 3 · Axe APIAPI axis | Chaque endpoint × chaque rôle : statut attendu (200 pour l'autorisé, 403 pour l'interdit), durée, taille de réponseEvery endpoint × every role: expected status (200 when allowed, 403 when denied), duration, response size |
| 4 · Axe UIUI axis | Un vrai Chromium piloté comme un utilisateur : page de login, clics dans la sidebar, clics de ligne, vraies soumissions de formulaires sur données marquées UAT — temps de chargement, poids et erreurs console par pageA real Chromium driven like a user: login page, sidebar clicks, row clicks, real form submits on UAT-marked data — load time, weight and console errors per page |
| 5 · RapportReport | Rapport HTML mono-fichier, partageable tel quel avec le clientSingle-file HTML report, shareable as-is with the customer |
Tout-en-un : uat-run enchaîne les 5 étapes (avec démarrage de l'app via ss dev up et gate de dérive du plan). Prérequis unique : npx playwright install chromium, une fois.
All-in-one: uat-run chains the 5 steps (booting the app via ss dev up, with a plan-drift gate). Single prerequisite: npx playwright install chromium, once.
La recette élargieThe wider acceptance toolbox
/validate-feature— validation ciblée d'UNE fonctionnalité (compile + tests + smoke API) — plus léger qu'un UAT complet.focused validation of ONE feature (compile + tests + API smoke) — lighter than a full UAT./smartstack-entity-audit— audit d'intégrité de la base vivante : chaque colonne*Idsans contrainte FK est détectée et classée (critique / exemptée / à examiner).integrity audit of the live database: every*Idcolumn lacking an FK constraint is detected and classified (critical / exempt / review)./review— revue de code multi-catégories (sécurité, architecture, performance…).multi-category code review (security, architecture, performance…).
Dans quel cas ?Which situation, which command?
| Je suis dans ce cas…I am in this situation… | …alors je fais…then I do |
|---|---|
| « Avant la livraison, prouver que chaque rôle voit juste »"Before delivery, prove every role sees the right things" | /uat (l'axe API suffit pour les permissions ; l'axe UI ajoute l'expérience réelle)/uat (the API axis covers permissions; the UI axis adds the real experience) |
| « Le client veut un rapport de recette »"The customer wants an acceptance report" | /uat — le rapport HTML se partage tel quel/uat — the HTML report is shareable as-is |
| « Je viens de finir UNE fonctionnalité »"I just finished ONE feature" | /validate-feature |
| « Doute sur l'intégrité des données en base »"Doubts about data integrity in the database" | /smartstack-entity-audit |
| « Une relecture sécurité avant la PR vers main »"A security pass before the PR to main" | /review |