A l'heure de la virtualisation et de la containerisation, on n'a pas forcément tout un environnement lamp/wamp/mamp d'installé sur son local.
Sous Drupal 8.x, Si l'on souhaite lancer des test phpunit, nous n'avons besoin que de 3 applications :
- PHP
- SQLITE
- Composer
Suivant votre OS, vous pouvez installer les 2 premiers :
- Windows : avec leurs binaires
- Linux : via les dépots
- OSX : via homebrew
Pour composer, suivre les instructions sur https://getcomposer.org/download/.
Habituellement, nous aurions également besoin d'un serveur apache ou nginx pour pouvoir accéder à notre application, mais depuis la version 8.4.x, Drupal embarque ce qu'il faut pour lancer un serveur depuis php.
Lancer la commande :
php -S localhost:8888 .ht.router.php
Il ne reste plus qu'à configurer phpunit en copiant le fichier phpunit.xml.dist en phpunit.xml :
cp core/phpunit.xml.dist core/phpunit.xml
Créer le répertoire sites/default/simpletest et ajuster la configuration suivant vos besoins. Exemple :
<!-- Example SIMPLETEST_BASE_URL value: http://localhost -->
<env name="SIMPLETEST_BASE_URL" value="http://localhost:8888"/>
<!-- Example SIMPLETEST_DB value: mysql://username:password@localhost/databasename#table_prefix -->
<env name="SIMPLETEST_DB" value="sqlite://localhost/tmp/test.sqlite"/>
<!-- Example BROWSERTEST_OUTPUT_DIRECTORY value: /path/to/webroot/sites/simpletest/browser_output -->
<env name="BROWSERTEST_OUTPUT_DIRECTORY" value="/chemin/vers/drupal/sites/default/simpletest/browser_output"/>
Faire un composer install
pour installer les dépendances de Drupal et obtenir phpunit.
Il ne reste plus qu'à lancer phpunit en ligne de commande ou depuis phpstorm.
Pour configurer phpstorm, aller dans le menu PHPStorm > Preferences, chercher PHP.
Ajouter votre binaire PHP puis chercher phpunit et dans Test Frameworks, configurer phpunit.
Pour lancer un test, faire un clic droit sur le fichier ou le répertoire dans l'arborescence des fichier de votre projet dans phpstorm puis choisir Run '(<repertoire> PHPUnit)'
.
Tests javascript
Si vous avez besoin d'executer des tests avec du Javascript, Drupal utilise WebDriver.
Comme indiqué sur la documentation Drupal https://www.drupal.org/docs/8/phpunit/running-phpunit-javascript-tests :
- Vous avez besoin de Google Chrome ou chromium.
- Il faut ensuite télécharger la version de chromedriver qui correspond à votre version de chrome : https://sites.google.com/a/chromium.org/chromedriver/ ou une alternative https://www.drupal.org/node/2941464
Puis lancer le chromedriver sur le port 4444 :
chromedriver --port=4444
Avec le serveur PHP + le chromedriver lancés en font, les tests javascripts s'exécuteront.