Exécuter la suite de tests
Chinaski embarque son propre harnais de tests : t/ plus le bootstrap partagé t/helper.pl. Environ 120 fichiers de tests, tous exécutables avec une seule commande.
En une ligne
CHINASKI_SECRET=ci-test-secret prove -lr t/ C'est la même invocation que celle utilisée par la CI du projet (prove -lr t/ à chaque push et chaque PR vers main), avec le secret fixé dans l'environnement de la CI. Les fichiers individuels s'exécutent à la demande : perl t/pages.t ou prove -l t/pages.t.
Ce que helper.pl fournit
Les fichiers de tests se bootstappent sans boilerplate :
setup_test_envfixe le secret de session etMOJO_MODE=test, construit une base SQLite temporaire neuve depuis le vraischema.sql, pointeCHINASKI_DBvers elle, et fixe un répertoire de documents par exécution pour que les fichiers temporaires ne se percutent jamais entre utilisateurs ni entre exécutions. Elle précrée aussi le répertoire de sortie de build (gitignoré) pour que la vérification de sortie inscriptible du /health n'échoue pas comme faux positif sur un checkout frais.- Le nettoyage est enregistré: un bloc END retire les sidecars WAL de la base temporaire et le répertoire de docs par exécution. Les deux s'accumulaient entre les exécutions sur la propre machine du projet avant ce correctif, donc le nettoyage est porteur.
- Données d'amorçage: deux comptes (
admin/admin123avec le rôle admin,editor/editor123avec le rôle éditeur) contre un site à deux langues (en, es), hachées bcrypt au moment de l'installation. - Les helpers de connexion accomplissent tout le flux de connexion : récupérer la page de login, extraire le token CSRF, poster les identifiants, atterrir dans /admin.
- L'application testée est la production
cms.plelle-même chargée dans un harnaisTest::Mojo(avec le flag Secure du cookie de session désactivé pour la boucle de tests non HTTPS) ; la suite teste toujours le code livré, jamais un stub.
Obtenir l'accès dans les tests
login_admin et login_editor gèrent les détails, y compris l'extraction du token CSRF depuis la page de login rendue. Les tests qui ont besoin d'un contrôle plus fin peuvent atteindre les routes directement avec les helpers de token.
Prérequis d'environnement
- Le même ensemble de dépendances que l'app (Perl 5.26+, Mojolicious, DBI/DBD::SQLite, Template, Imager, DateTime, modules Crypt, sqlite3 pour l'installation de la base).
- Le workflow de CI sert aussi de documentation de la recette de provisionnement côté hôte (bibliothèques système plus une liste d'installation cpanm), et tourne sur un runner auto-hébergé colocalisé avec l'hôte de déploiement ; les dépendances sont provisionnées une fois au niveau système, pas à chaque exécution.
Le serveur MCP testé séparément
chinaski-mcp/mcp.t est la propre suite du serveur MCP. Elle fixe le CHINASKI_API_URL/CHINASKI_API_KEY requis par test (le serveur refuse de démarrer sans les deux) et teste le comportement du protocole face à l'API de manière isolée.
Conventions à connaître
- Les fichiers de tests qui passent la main au builder fixent
CHINASKI_TEST=1, parce que le builder sinon refuse de tourner en root. - Les fichiers préfixés numériquement (
00-compile.t,01-schema.t,02-media-sniff.t,03-util.t,04-webhook.t) jouent le rôle de vérifications de pré-vol : un build cassé ou un changement de schéma y fait surface en premier lors d'une passeprove -lr t/, avant tout test de fonctionnalité. - La suite est développée pour Linux (le runner de CI est Linux ; la CI exécute la même chaîne d'outils que les déploiements de production).