Workflow de création d’un plugin WordPress avec des tests

Ressources

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 dossier wp-content/plugins de l’instance mon-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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.