Ressources
- Tuto Codeception for WordPress officiel (installation)
- Doc « Getting started » de WPBrowser
- Tuto de réalisation des tests
- Extension Chrome pour créer des tests
- Liste des assertions possibles
Instance WP de test pour ce plugin
Je commence par créer une instance que j’utiliserai seulement pour le plugin en question, je sais que je pourrai faire n’importe quoi avec la DB sans risque.
Pour aller vite, j’utilise une « Quick app » de l’indispensable Laragon :
Pour m’y retrouver parmi mes projets, si je suis en train de travailler sur un plugin nommé « Mon plugin », je nomme mon intance WP de test
mon-plugin
:
En moins d’une minute, mon vhost, ma DB, et mon instance sont prêts !
Repo GIT pour mon plugin
Ici je créé un repo privé sur GitHub, mais vous pouvez créer un repo public, ou bien utiliser une autre plateforme comme GitLab ou votre propre serveur GIT.
Je conserve la convention de nommage adoptée lors de la création de l’instance WP de test, et je nomme le repo de Mon plugin
mon-plugin
:
Comme dans ce tutoriel je veux vraiment gagner du temps, j’optimise même le clonage de mon repo en utilisant l’application GitHub Desktop :
Suivant la convention de nommage, je clone donc
mon-plugin
dans le dossierwp-content/plugins
de l’instancemon-plugin
:
À partir de maintenant, les copies d’écran utiliseront la convention de nommage du projet sur lequel je travaille réellement, à savoir
italic-interactive-decision-tree
.
Mise en place de Codeception
Je rentre dans mon site et plus précisément dans le dossier du clone de mon plugin, où j’installe WPBrowser (qui installera Codeception pour moi en tant que dépendance) via Composer (que Laragon a déjà installé pour moi).
C:\laragon\www (main)
λ cd italic-interactive-decision-tree\wp-content\plugins\italic-interactive-decision-tree\
λ composer require lucatume/wp-browser --dev
Ça se déroule presque bien :
Pour suivre les instructions, j’ouvre dès maintenant la totalité de mon projet (donc, le dossier du plugin) dans mon éditeur favori qui a installé une action contextuelle pour moi :
Et il n’y a plus qu’à se laisser guider !
Il est maintenant temps de passer aux tests eux-mêmes, je recommande de suivre ce guide : https://codeception.com/07-24-2013/testing-wordpress-plugins.html
Résolution des problèmes
Erreurs « invalid data source name » et « Cannot resolve the path »
Après avoir galéré 2h j’ai fini par trouver ce commentaire. La version 5 de dotenv qui est installée avec wp-browser n’est pas compatible. Il faut redescendre à la 4 :
composer require --dev vlucas/phpdotenv:^4.0
Erreur « Found unknown escape character « \l » at line 12″
Vous avez sans doute copié-collé le chemin vers votre install dans le fichier de params comme ceci :
WP_ROOT_FOLDER=C:\laragon\www\italic-interactive-decision-tree
Il faut mettre des slash à la place comme ceci :
WP_ROOT_FOLDER=C:/laragon/www/italic-interactive-decision-tree
Erreurs « Db module is not configured! » et « File with dump doesn’t exist. »
Comme indiqué dans la section Final steps de la doc, il faut créer un dump de votre site de test et le placer dans tests/_data/dump.sql
. J’utilise HeidiSQL (qui lui aussi vient avec Laragon) :
Après cela, magie, le test de base fonctionne enfin !
Erreur 404 dans Facebook\WebDriver\Exception\WebDriverException
On peut utiliser WPWebDriver au lieu de WPBrowser pour activer le support de javascript dans les tests d’acceptance. Personnellement ce n’est pas JS qui m’intéresse, mais le fait que WPWebDriver étende le WebDriver de Codeception, ce qui permet d’accéder aux méthodes permettant de réaliser des screenshots !
Installation :
composer require --dev codeception/module-db:^1.0
J’utilise la conf par défaut de la doc, mon browser sera donc Chrome :
Si vous exécutez votre test maintenant, vous allez rencontrer cette erreur :
Pour que ça marche, il faut exécuter effectivement ChromeDriver, qui est un module Chromium, disponible au download ici : https://sites.google.com/a/chromium.org/chromedriver/downloads
Pensez à mettre le bon domaine et port dans la conf.
Gagner du temps lors de l’exécution des tests d’acceptance
Si l’on utilise pas de fixture, on peut commenter l’activation du plugin WPDb :
Avant :
Après :
Par conséquent :
Pense-bête commandes
Ajouter un test fonctionnel :
vendor\bin\codecept.bat generate:cept functional CheckPluginActivation
Lancer un seul test :
vendor\bin\codecept.bat run functional AdminCest
Lancer tous les tests :
vendor\bin\codecept.bat run