Qu'est-ce que Mink ?

Mink est une bibliothèque PHP qui fournit une API unifiée pour contrôler des navigateurs web — réels ou headless. Son objectif : simuler le comportement d'un utilisateur réel (clic, formulaire, navigation) afin d'automatiser les tests fonctionnels et d'acceptation de vos applications Symfony.

Une architecture simple et extensible

Mink fonctionne comme une couche d'abstraction entre votre code de test et le navigateur. Vous écrivez votre test une seule fois, et il tourne avec n'importe quel driver compatible : GoutteDriver (headless rapide), BrowserKitDriver (intégration Symfony), Selenium2 ou ChromeDriver (pour le JavaScript).

Choisir le bon driver

Tous les drivers ne se valent pas. GoutteDriver et BrowserKitDriver sont rapides mais ne supportent pas JavaScript. Pour tester des interfaces modernes avec du JS, il faut utiliser Selenium2Driver ou ChromeDriver. Ce dernier est aujourd'hui la recommandation : il pilote Chrome en mode headless, s'intègre bien en CI/CD, et reste simple à configurer.

WebAssert : des assertions claires

Mink embarque WebAssert, un outil pour vérifier le contenu de la page de façon lisible et robuste. Vérification d'éléments CSS, de textes, d'URLs, de champs de formulaire… Les erreurs retournées sont explicites, ce qui facilite le debug quand un test échoue.

Bonnes pratiques à retenir

Quelques règles simples pour des tests fiables : utiliser des sélecteurs stables (data-test-id plutôt que des classes CSS), éviter les sleep() au profit d'attentes conditionnelles, isoler chaque test avec une base de données réinitialisée, et activer les screenshots automatiques en cas d'échec pour faciliter le debug.