Retour aux articles

L'agence

WanadevStudio

CasperJS et Resurrectio pour automatiser ses tests

Voici un petit tutoriel pour vous permettre d'automatiser vos tests facilement grâce à CasperJS et une extension Google Chrome nommée Resurrectio.

Les tests de bon fonctionnement d'un site sont très chronophages mais n'en restent pas moins indispensables. A chaque mise à jour, il est impératif de vérifier que, à minima, toutes les fonctionnalités vitales d'une plateforme soient fonctionnelles, qu'aucune régression (par exemple) n'ait été causée.

Dans cet article je vais vous montrer comment installer CasperJS puis Resurrectio ainsi que leur utilisation basique. Ces deux outils permettent de mettre en place des processus de tests simples afin de s'assurer un minimum du bon fonctionnement d'un site internet.

CasperJS

Un petit mot sur CasperJS

CasperJS est outil open source écrit en JavaScript, et utilise PhantomJS et SlimerJS. Il permet de définir des scénarios de navigation afin de tester différentes fonctionnalités sur un site comme l'inscription, l'ajout d'un article ou la présence d'un type de balise sur une page web. CasperJS sait compléter un formulaire et envoyer les données.

Installation

Si npm n'est pas sur votre machine, je vous laisse l'installer via les commandes :

sudo apt-get update sudo apt-get install nodejs npm

Ensuite il faut installer PhantomJS, pour cela :

npm install phantomjs

Puis, installez CasperJS grâce aux commandes suivantes :

npm install casperjs

Et voilà l'installation est terminée. Simple, non ?

Utilisation basique

Voici le script minimum d'un test Casper, il permet tout simplement d'aller vérifier le titre de la page www.google.fr.

var casper = new require("casper").Casper();
casper.start('http://www.google.fr/');
casper.then(function() {
    casper.echo('Title : ' + casper.getTitle());
});
casper.run();

Vous pouvez ensuite exécuter la commande suivante à l'endroit où test.js se situe.

casperjs test test.js

Celle-ci vous renvoie :

Test file: test.js
Title : Google

Un article plus approfondi suivra et proposera une organisation possible de ces tests.

Resurrectio

Resurrectio est une extension pour le navigateur Google Chrome qui permet d'automatiser des tests. Les objectifs étant les mêmes que pour CasperJS. Plus précisément, Resurrectio permet d'écrire à votre place des scripts CasperJS (vu plus haut) en enregistrant les scénarios que vous faites sur votre navigateur web. Par exemple : vous effectuez une inscription sur votre site. Resurrectio enregistre les différentes actions pour les reproduire plus tard afin de s'assurer que le processus fonctionne toujours. Pratique !

Pour débuter, rendez-vous sur la page de Resurrectio sur le Chrome Store et installez l'extension. Ensuite, activez-la, si ce n'est pas déjà fait. Une petite icône apparaît sur le haut à droite de votre navigateur, cliquez dessus, une petite fenêtre apparaît.

Pour débuter l'enregistrement d'un processus, entrez l'URL de la page que vous souhaitez tester et cliquez sur "Go". Resurrectio va recharger la page et commencer à enregistrer les actions que vous faites. Formulaires, liens... Naviguez tel un internaute lambda. Commencez avec des navigations simples pour prendre en main l'extension Resurrectio. Petite astuce : pendant votre scénario, plusieurs actions s'offrent à vous grâce au clic droit selon l'élément sur lequel vous agissez.

Au clic droit, vous pouvez demander à CasperJS de faire une capture d'écran de votre page en cours. Aussi, sur un champ de formulaire, vous pouvez tester une valeur et intercepter s’il est bloqué ou non. Vous pouvez de même tester la présence d'un texte en le sélectionnant. Très pratique pour toujours vérifier qu'un titre de page est bien présent, par exemple.

Lorsque votre scénario est terminé, re-cliquez sur l'icône de Resurrectio puis "Stop Recording". Votre scénario est prêt à être répété par Resurrectio !

Là, plusieurs choix s'offrent à vous selon le type de test que vous être en train de faire :

  • Export CasperJS : qui vous permet de jeter un coup d’œil au script créé
  • Export CasperJS with (x, y) coords : scénario enregistré avec les coordonnées de la souris

Resurrectio vous permet aussi d'utiliser Casperbox, un petit utilitaire permettant de tester directement sur le web vos scénarios.  Pour cela, exportez votre scénario CasperJS et cliquez sur le bouton "Run it on CasperBox".

Astuce : des rapports de tests sont accessibles à la suite des processus de scénarios : vos clients apprécieront et se sentiront rassurés en étant transparents sur vos méthodes de tests.

Quelques petits liens utiles :

Ces exemples d'utilisations sont les plus simples possibles. Vous pouvez complexifier considérablement vos tests en multipliant les tâches et les processus. A terme, CasperJS et Resurrectio vous permettront d'avoir des tests fonctionnels relativement rapidement et simplement.

Un article plus détaillé arrivera prochainement avec des exemples plus concrets sur l'utilisation de ces scripts de tests. En attendant, je serais ravi d'échanger avec vous sur vos habitudes de tests ou par rapport à votre utilisation de CasperJS !

Jocelyn Faihy

Commentaires

garrigos adrian

Il y a 6 ans

Répondre

Un article cool comme l'est CasperJs que je découvre en ce début d'année. Merci pour cette article. 2017 commence bien car je vois de belles perspectives avec Casper. Merci :-)

Jocelyn Faihy

Il y a 6 ans

Répondre

Merci à toi d'avoir pris un peu de temps pour lire cet article. Bien content que ça t'ait plu et que ça te soit utile. N'hésite pas à nous suivre sur Twitter pour être au courant des articles qui sortent et bonne année !

sem

Il y a 6 ans

Répondre

salut, cool comme article, dis moi es que avec l'extension je peux enregistrer et copier une partie de la page régulièrement? exemple: un  blog publi souvent des articles, et je simule sur ce dernier, es possible qu'il me récuper uniquement l'article? comment faire ? merci

Merci pour ton article, mais un souci Bonjour, Depuis des mois je suis en train de galérer sur le déploiement d’un code, et aujourd’hui j’ai voulu vous en faire part pour avoir d’éventuelle solution! Je vous explique : En fait c’est code que j’ai écrit pour aller sur un site précis et effectuer une action précise. Ce code je lai réalisé avec CasperJS (qui sert surtout à simuler l’action d’un homme, et qui prend appui sur nodeJs , Phantom JS). Mon problème c’est que je désire exécuter ce code chaque heure à l’infini. Pour cela il faut que je l’héberge sur un serveur en ligne (sur lequel ? je sais pas!) et vu aussi que pour l’exécuter j’utilise l’invite de commande je ne sais vraiment pas comment le déployer sur un serveur et l’exécuter à chaque 1 heure. je vous rappel que je suis pas très bon en code mais c’est sur un Tuto de @boristchangang que je me suis basé pour faire mon script : https://medium.com/@boristchangang/scrapper-linkedin-avec-casperjs-pour-les-nuls-e962812734a6. Cela me ferait grand plaisir si vous m’aidez à trouver la solution à mon problème MERCI
  • Tests automatiques fonctionnels d’applications 2D/3D

    Il y a 11 mois

    Comme nous le disions dans cet article, l’automatisation des tests dans le développement logiciel est indispensable : dès lors qu’une application commence à avoir un minimum d’importance, les tests automatiques permettront de gagner énormément de temps en évitant de reproduire ad vitam æternam les mêmes tests manuels, et éviteront beaucoup de régressions. Dans cet article, nous allons présenter différents types de tests automatiques dans le cadre plus spécifique d’applications 2D/3D, puisque c’est ce que nous faisons ! Cela va du test basique qui clique sur 3 boutons aux tests de plusieurs minutes reproduisant les actions comme un véritable utilisateur. Accrochez-vous, c’est parti !

  • Configurateur web à l'abonnement : forces et faiblesses

    Il y a 12 mois

    Aujourd’hui, si vous cherchez à mettre en place un configurateur sur votre site, deux grandes possibilités s'offrent à vous : les solutions par abonnement (du type SaaS) ou le développement sur mesure. Au premier abord, les solutions semblent proches, mais les enjeux sur le long terme eux, sont bien différents.

  • Les frameworks front, tous les mêmes !
    Méthodologie

    Il y a 1 an

    C'est une phrase que j'ai osé sortir un jour dans la salle de pause de Wanadev. Je ne sais plus exactement avec quel collègue je discutais, j’essayais de le rassurer, il possédait déjà une certaine expérience avec React et allait devoir, en arrivant sur le projet sur lequel je travaille, se mettre à Vue.
    Il a malheureusement fallu qu'un autre collègue de passage nous entende pour ne pas trouver la conversation inintéressante et suggérer que j'en fasse un petit talk pour nos réu du lundi. Et, de fil en aiguille, me voilà en train d'en faire un article de blog. Comme quoi, note pour moi-même, il faut toujours se méfier des discussions dans les salles de pause.

  • [NOVEMBRE 2021] C'est la gazette de Wanadev !
    Méthodologie

    Il y a 1 an

    Retrouvez ici les informations et actus du mois de novembre de l'Agence! Au programme de cette édition : découvrez le configurateur de fenêtre développé pour Caseo, recontrez François Deleglise, notre directeur communication et un nouvel espace de jeu pour les professionnels du loisir en VR. Bonne lecture !

  • Un peu d'ingérence dans votre infogérance ?
    Méthodologie

    Il y a 2 ans

    Même si les impacts sont difficiles à mesurer, on peut dire qu’il a eu un avant et un après incident OVH. Sans épiloguer sur l'incendie du 5 mars 2021 dernier, un petit vent de panique a soufflé sur les milliers de clients découvrant les problématiques de sécurisation des données. Les réactions à chaud d'une partie des utilisateurs (touchés ou non) montrent la méconnaissance et l'incompréhension qui existent dans les offres d'hébergement. Qui est responsable ? Qui fait quoi ? Comment vérifier mon offre ? Voici quelques clés de compréhension.

  • Améliorer la qualité avec les tests et la review

    Il y a 2 ans

    L’importance des tests et de la revue de code dans le cadre du développement logiciel est parfois négligée ou passée au second plan. Cet article a pour but de montrer que les tests logiciels constituent une étape cruciale qu’il faut considérer avec beaucoup de rigueur.