BT

Votre opinion compte! Merci de bien vouloir répondre au sondage InfoQ!

Tests de bout-en-bout avec Nightwatch

| par João Paulo Marques  Abonnés , traduit par Eric Bellemon Suivre 0 Abonnés le 05 mars 2014. Durée de lecture estimée: 3 minutes |

Une note à nos lecteurs : Suite à vos retours, nous avons développé un ensemble de fonctionnalités qui vous permettent de réduire le bruit, tout en ne perdant pas de vue ce qui est important. Recevez des notifications en ligne et par e-mail en choisissant les sujets qui vous intéressent.

Nightwatch est un nouveau framework basé sur Node.js qui utilise l'API WebDriver de Selenium pour automatiser les tests d'application web. Cet outil permet grâce à une syntaxe simple d'écrire des tests de bout en bout en utilisant JavaScript et des sélecteurs CSS, le tout s'exécutant sur un serveur Selenium.

Contrairement aux BDD et tests unitaires qui s'exécutent dans un environnement isolé et utilisent des mocks, un test de bout en bout essaye d'émuler, aussi proche que possible, la perception qu'un utilisateur a vis-à-vis d'un système. Dans le cas d'une application web, cela implique de lancer un navigateur, charger des pages, exécuter du JavaScript, intéragir avec le DOM, etc. Nightwatch essaye d'effectuer ces tâches via une syntaxe simplifiée :



this.demoTestGoogle = function (browser) {
   browser
     .url(“http://www.google.com”)
     .waitForElementVisible('body', 1000)
     .setValue('input[type=text]', 'nightwatch')
     .waitForElementVisible('button[name=btnG]', 1000)
     .click('button[name=btnG]')
     .pause(1000)
     .assert.containsText('#main', 'The Night Watch')
     .end();
};

En plus de simplifier le processus d'écriture de tests automatisés, Nightwatch peut aussi être intégré dans un processus d'intégration continue.

La liste actuelle des fonctionnalités de Nightwatch comprend :

  • une syntaxe simple mais puissante qui permet d'écrire des tests très rapidement en utilisant uniquement du JavaScript et des sélecteurs CSS. Aucun besoin d'initialiser d'autres objets ou classes, vous devez juste écrire les specs des tests.
  • Lanceur de tests en ligne de commande qui permet d'exécuter les tests au complet, par groupe ou unitairement.
  • Gère le serveur Selenium automatiquement. Peut être désactivé si Selenium s'exécute sur une autre machine.
  • Construit pour l'intégration continue : rapport au format XML JUnit pour pouvoir intégrer les tests dans votre processus de build avec Hudson ou Teamcity.
  • Utilisation des sélecteurs CSS ou de Xpath pour trouver et vérifier la présence d'éléments dans la page ou pour exécuter des commandes.
  • Simple d'ajouter vos propres commandes spécifiques à vos applications.

Actuellement, dans le monde JavaScript, Selenium est un des outils les plus populaires pour les tests fonctionnels avec Phantomjs, chacun ayant une approche différente. Selenium utilise son API WebDriver alors que PhantomJS repose sur un navigateur WebKit. Tous les deux sont des outils matures avec une forte communauté. La plus grande différence entre ces outils et Nightwatch est la simplicité de la syntaxe et l'intégration continue. Selenium et PhantomJS ont une syntaxe lourde, ce qui entraine plus de code, et ne s'interfèrent pas naturellement avec des serveurs d'intégrations continues (JUnit XML ou autre standards), ce que Nightwatch fait.

Nightwatch est toujours en évolution afin de devenir un outil mature. Sebastien Vincent, auteur de WD.js, une autre bibliothèque de tests fonctionnels basée sur Node.js, a émis quelques critiques sur Google Groups concernant l'implémentation faite pour gérer les callbacks :

Les chaînes à base de queue sont un mauvais pattern quand des appels asynchrones sont impliqués. Dès que vous essayez de faire quelque chose de complexe, vous devez manuellement interrompre la queue et insérer des taches manuellement (mais peut-être que Nightwatch va me prouver que je me trompe)

Vincent reproche aussi des faiblesses dans l'utilisation du protocole de communication entre Nightwatch et Selenium :

Nightwatch est loin d'être mature, regardez le protocole HTTP, il n'y a pas d'options de retry et de timeout. Cela ne résistera pas longtemps dans des cas non triviaux comme sauce-connect ou avec des files.

Malgré ces critiques, l'outil a été mis en avant dans la liste des projets populaires du mois de GitHub et le compte Twitter a été utilisé afin d'avoir des retours d'expériences de la communauté et d'être en contact avec les développeurs.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT