SlimerJS 0.6

Posté par  (site web personnel, Mastodon) . Édité par Nÿco, Xavier Teyssier et tuiu pol. Modéré par Nÿco. Licence CC By‑SA.
24
3
mai
2013
JavaScript

SlimerJS est un navigateur web « scriptable », utilisable en ligne de commande. Par le biais d'un script Javascript, il vous permet de charger une page, de « cliquer » dessus, de manipuler la page, d'en extraire des données, etc. SlimerJS est en fait un navigateur similaire à PhantomJS, excepté qu'il est basé sur Gecko, le moteur de rendu de Firefox, au lieu de WebKit. Et il propose une API identique à celle de PhantomJS. Dans cette première version stable de SlimerJS, l’implémentation de cette API n'est pas 100% terminée, il est toutefois déjà possible de réaliser pas mal de chose.

NdM : Licence MPL 2.0 (http://mozilla.org/MPL/2.0/), sauf certains composants qui ont été spécifiquement positionnés dans des licences différentes type MIT (voir https://github.com/laurentj/slimerjs/blob/master/LICENSE)

PhantomJS est de plus en plus utilisé pour réaliser des tests fonctionnels automatiques sur des sites web, des tests de performances, etc. De nombreux scripts et frameworks proposent ce genre de fonctionnalités, notamment CasperJS.

Pour le moment, SlimerJS ne permet pas d'utiliser tous les scripts existants pour PhantomJS, à cause de l'implémentation incomplète de l'API PhantomJS, mais bien sûr le but est de fournir à terme une compatibilité totale.

Pourquoi faire un clone de PhantomJS ? Parce que le web n'est pas fait que de navigateurs à base de moteur WebKit. Et de nombreux développeurs web aimeraient bien profiter des possibilités de PhantomJS pour tester leurs applications web sur Firefox.

SlimerJS n'est pas qu'un simple clone de PhantomJS. Il propose une API plus fournie par le biais de modules CommonJS issus du SDK de Mozilla pour les extensions. Et contrairement à PhantomJS, il prend en charge totalement les balises HTML5 video et audio, ainsi que WebGL et les plugins comme Flash.

Autre différence, il n'est pas « headless » comme PhantomJS, Gecko ne permettant pas d'ouvrir une fenêtre graphique simplement en mémoire. Mais sous Linux ou Mac OS X, on peut le rendre « headless » avec xvfb sans souci.

Le projet a débuté fin décembre. Et toute contribution est la bienvenue, que ce soit sur la documentation (encore incomplète…) ou sur le code source, entièrement en Javascript ;-)

SlimerJS est une application XUL (et non pas une extension), qui nécessite Firefox ou XulRunner pour fonctionner. « Slimer » vient du nom d'un des fantômes de Ghostbuster ;-) Film dont des références ont souvent été reprise dans le projet Mozilla.

Aller plus loin

  • # headless

    Posté par  . Évalué à 6.

    C'est super de voir ce genre de projet !

    Dommage cependant le manque de Headless (que n'avait pas phantomJS il y a 1-2 ans), c'est une vraie force pour le déploiement.

    • [^] # Re: headless

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      Quand la compatibilité avec PhantomJS sera terminée, je m'attaquerai à ce problème de headless. Mais ça risque d'être plutôt compliqué. Il est nécessaire de patcher Gecko dans pas mal d'endroit :-/

  • # headless

    Posté par  . Évalué à 8.

    Pour ceux, qui comme moi, se demande ce que veux dire « headless » dans ce contexte. C'est le fait de ne pas avoir de fenêtre affichée au lancement de l'application. Je suppose que l'intérêt est pour les serveurs de tests d'intégration.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: headless

      Posté par  (site web personnel) . Évalué à 7.

      Je suppose que l'intérêt est pour les serveurs de tests d'intégration.

      Pas uniquement. Pour un projet, je dois faire la capture d'un site web contenant ~4000 pages en utilisant phantomJS. J'ai donc un programme lance 16 pages en parallèle et qui tourne pendant quelques heures. Si je lance ça sur ma machine et que le script m'ouvre 4000 fenêtres, c'est pas super pratique (bien que surement assez fun a regarder).

      • [^] # Re: headless

        Posté par  . Évalué à 0.

        J'utilise déjà Xvfb pour mes tests avec Selenium et Firefox.

        Il est possible d'utiliser PhantomJS avec Selenium ?

        • [^] # Re: headless

          Posté par  (site web personnel, Mastodon) . Évalué à 2.

          PhantomJS embarque webdriver, qui implémente le protocole de Selenium. Il est donc possible d’exécuter les tests selenium avec phantomjs. Il sera possible de le faire avec SlimerJS dans les prochaines versions.

      • [^] # Re: headless

        Posté par  (site web personnel, Mastodon) . Évalué à 2.

        Avec xvfb, tu ne devrais plus voir les fenêtres ;-)

        Et sinon merci pour tes contributions sur SlimerJS :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.