ParisJS #34

Browserify

Library front qui permet d'écrire du code de type node et de l'utiliser dans le browser. Ca passe par un compilateur qui transforme le code original pour qu'il tourne correctement.

On peut donc utiliser require() et les modules node (depuis npm ou directement depuis le core). Du coup, comme c'est une commande de build, on peut l'include dans du grunt et/ou du jenkins.

  $ browserify index.js -o build/build.js

L'avantage n'est pas tant d'utiliser des modules node dans le browser, mais de pouvoir utiliser la modularité que permet la syntaxe require/module.exports.

CasperJS

Présentation de Mickael Andrieu de SensoLab (spécialisé PHP)

CasperJs est un outil basé sur PhantomJs, spécialisé dans les tests fonctionnels, mais qui permet d'autres choses.

PhantomJS est un webkit headless, il permet donc de simuler le comportement de Safari, Chrome/Chromium et Opera (à quelques différences près). Il existe aussi SlimerJS qui fait la même chose pour Gecko et TrifleJs pour IE. (La couverture de features n'est pas encore la même que PhantomJS cela dit, mais ça reste une piste à suivre).

L'API de tests fonctionnels se base sur une syntaxe simple à base de casper.start(url), .click(url) et de .then() pour les chainer. A noter que les .then sur le click ne semblent pas attendre la réponse de la requete mais simplement se baser sur le timeout (il reste possible d'utiliser directement les objets request/headers/status si nécessaire).

Le selecteur d'élément est proche d'un Nokogiri et utilise une syntaxe CSS3.

CasperJS permet aussi de prendre des screens au format jpg/gif/png/pdf. Utile pour de la non-regression de mise en forme d'un build à un autre. Utile aussi pour prendre une capture de la page si un test foire pour donner du contexte.

Néanmoins, la syntaxe d'écriture des tests est propre à CasperJS et est moins aboutie qu'un mocha.js par exemple. Dans la v2, ils prévoient de découper CasperJS du framework de test pour ne pas réinventer la roue et permettre d'utiliser du mocha, jasmine, etc.

CasperJS est déjà Jenkins-ready et des exports au format console, junit ou html sont déjà intégrés. Si nécessaire, on peut aussi appeller des scripts shells depuis Casper.


Tags : #parisjs

Want to add something ? Feel free to get in touch on Twitter : @pixelastic