Utiliser Chrome Headless avec Behat
Il sera désormais possible à partir de la version 59 de Chrome (la version bêta au moment où j’écris ces lignes) en mode “headless”, c’est-à-dire sans interface graphique. Ce mode de fonctionnement est intéressant pour les tests par exemple, car il ne sera plus obligatoire de “piloter” Chrome via son interface graphique.
Cette nouvelle fonctionnalité a provoqué un large engouement de la part de la communauté Web. A tel point que le mainteneur de PhantomJS, un navigateur headless, également basé sur Webkit a annoncé la fin du projet. Donc si comme moi, vous utilisiez ce dernier dans vos scénarios Behat, il va être nécessaire de changer de solution.
Pour cela, rien de plus simple. Voici par exemple la configuration Behat pour Selenium que j’utilisais avec PhantomJS.
Pour que Selenium puisse interagir avec Chrome, nous allons devoir utiliser un driver additionnel ChromeDriver. Une fois ce dernier installé, nous devrons ajouter quelques lignes de configuration supplémentaires.
Parmi les changements, nous spécifions à Selenium d’utiliser Chrome en tant que
navigateur au travers de l’argument browser
. Puis nous spécifions des capabilities
,
c’est-à-dire des options permettant de personnaliser et de configurer la session
Chrome qui sera ouverte. Nous indiquons ainsi vouloir une navigateur headless
.
Le paramètre --disable-gpu
est pour le moment obligatoire.
Et voilà, en ayant tout juste rajouté 5 lignes de configuration, vous avez remplacé l’utilisation de PhantomJS par Google Chrome en mode “headless”.