ADR-0163 : Test dédié par écran du portail et atelier de plugins par manifeste
Contexte
Les espaces et écrans A4 et B5 existaient, mais beaucoup n'avaient pas de test qui leur soit propre : le test global api-conformance.test.ts vérifie toutes les requêtes du portail, sans dire quel écran les envoie ni si ses libellés, ses états et sa navigation sont justes. Le Plugin Studio (A4.2) et le Plugin Builder (B5.2) se limitaient au catalogue (installation, désinstallation, statut).
Décision
- Chaque écran cité par la conformité A4 et B5 a un test dédié dans
portal/tests/screens-spaces.test.ts. Le test lit le code de l'écran : les configurations qu'il affiche passent parcheckResource(routes, corps, rôles, confirmations, état vide) ; les appels du client écrits dans son corps doivent être exactement ceux que le test liste, et chacun est rejoué contre la surface de requêtes documentée ; chaque libellé littéral existe en anglais et en français ; un écran qui interroge l'API montre un chargement et une erreur ; aucun bouton n'est sans action ; la section de navigation est ouverte aux rôles du serveur. - L'atelier de plugins (
studio/plugins) rédige un manifeste Plugin dans l'éditeur des studios, le valide seloncontracts/v1(POST /v1/contracts/plugin-manifest/validate) et l'enregistre (POST /v1/plugins) : le registre vérifie la signature de l'artefact OCI. Le pack lui-même est créé et signé en code (eai create plugin, CI), jamais dans le navigateur : aucune clé de signature n'y entre. security_officervoit la section studio : il écrit les politiques OPA (POLICY_WRITERS) et lit les autres studios ; le serveur reste l'autorité.
Conséquences
Un écran qui change ses appels, perd un libellé ou ajoute un bouton sans action fait échouer son propre test. Les éléments de conformité citent un test par écran.
Preuves
portal/tests/screens-spaces.test.ts, portal/tests/studio.test.ts, portal/tests/nav-access.test.ts.