Configuration minimum pour lancer phpunit avec Drupal

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.

 

PHPStorm configurer son binaire PHP PHPStorm configurer phpunit pour Drupal

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.

Contribution : Module Lazy service, un peu plus de paresse dans votre Drupal

Contribution : Module Lazy service, un peu plus de paresse dans votre Drupal

FrankenPHP et Drupal, ça dit quoi côté performances ?

FrankenPHP et Drupal, ça dit quoi côté performances ?