CasperJs dans un projet PHP

On a intégré du CasperJs dans du PHP pour nos tests fonctionnels !

Je ne suis pas sûre que ce soit très courant au vu du fait de ce qu’on trouve sur la toile et de notre démarche première.
Quelle a été notre démarche ?

Ca a été la suivante :

Supposons une équipe PHP.

Venant du monde PHP et cherchant à  intégrer des tests fonctionnels pour des développeurs PHP, nous nous sommes tout naturellement tournés vers une solution assez connue qu’est Behat.

Facile à  prendre en main, il est vrai.

Quelques coups de composer, de lecture de doc scrupuleuse et le tout est joué.

Ok, on en était là .

Y’a eu la pratique. Rigoureux, Behat propose de construire des scenarii de manière lisible pour un utilisateur plus lambda.

Et puis, on a voulu exécuter le tout sur notre serveur pour l’intégrer dans notre PIC et là ça a coincé.

Alors que des tas de projets le font, nous, nous avons été dans l’echec.

Après plusieurs tentatives, nous nous sommes demandés si Behat était la seule solution.

Est apparu : CasperJs.

Pourquoi ne pas l’utiliser finalement ?

  • Quand on code en PHP, souvent on code en JS. Donc ça ne perturbe pas les équipes. C’était notre cas
  • L’outil s’installe via NPM. Or, nous avons déjà  Node.js qui est là pour bower, …

Allez c’est parti.

npm install phantomjs
npm install casperjs

On fait son script. On exécute et on a de suite une exécution avec un browser sans mode graphique parfaitement intégrable à un jenkins pour une PIC.

Youhou !!!

Verdict ?

  • L’outil est méga facile à  prendre en main.
  • Effectivement, ça ne perturbe pas des devs PHP/JS de faire du JS
  • Le fait que CasperJs se plugue d’entrée de jeu sur PhantomJs fait qu’on n’a pas de surprise : C’est exécutable facilement sans mode graphique
  • L’outil permet de générer un rapport des tests intégrable à Jenkins et donc à  une PIC

A présent, il faut les faire ces tests fonctionnels.

Et on les a faits

En résumé

  • Les tests nous ont déjà  permis d’identifier des erreurs que n’identifient pas les tests unitaires
  • Les tests sont exécutés tous les jours sur notre PIC

Les problèmes :

  • CasperJs est parfois long  à s’exécuter
  • Il est difficile de faire comprendre l’intérêt des tests fonctionnels automatisés