web-dev-qa-db-fra.com

Pourquoi un développeur aurait-il jamais besoin de PhantomJS au lieu d'utiliser un framework de test?

Je ne sais pas pourquoi PhantomJS est nécessaire et j'espère que quelqu'un pourra vous aider.

49
Leila Hamon

JavaScript qui nécessite un DOM doit être exécuté quelque part, normalement dans le navigateur. Ainsi, les frameworks de test lancent souvent un navigateur qu’ils contrôlent ensuite pour exécuter les tests et exécuter les assertions. Les infrastructures de test elles-mêmes ne peuvent souvent pas contrôler le navigateur directement, vous avez donc trois couches à tester:

  • Cadre: par exemple Jasmin
  • Pilote: E.g. Sélénium
  • Navigateur: E.g. Firefox

Simplement, PhantomJS est un navigateur qui fonctionne sans tête (c’est-à-dire qui ne dessine pas l’écran). Les avantages apportés sont la rapidité - si vous contrôlez un programme réel sur votre ordinateur, vous avez une certaine surcharge à démarrer le navigateur, à configurer un profil, etc.

PhantomJS est beaucoup plus rapide à cela (j'ai vu des tests être exécutés dans moins du tiers du temps). Le seul inconvénient est que vous ne pouvez pas voir vos tests en cours, bien que ce ne soit pas un gros problème pour une suite automatisée! Vous pouvez également prendre des captures d’écran si nécessaire (par exemple, en cas d’échec). Si vous le vouliez vraiment, vous pouvez prendre des captures d'écran à 24 ips et envoyer à ffmpeg pour restituer une vidéo de vos tests, même si vous risquez de compromettre vos économies de vitesse alors :)

119
anotherdave

C'est un malentendu courant. Passer du temps avec la documentation efface généralement la confusion. Par exemple, PhantomJS est souvent utilisé comme un testeur sans tête pour les tests écrits dans des dizaines de cadres: Buster.JS, Capybara, Moka, Jasmine, QUnit, WebDriver, Test YUI, etc. Comme vous pouvez le voir ici, PhantomJS ne remplace pas du tout ces frameworks.

Bien entendu, PhantomJS a de nombreuses autres utilisations, du programme capture de la page Web à l’automatisation surveillance du réseau . Il existe une liste de divers articles de blog et articles qui illustrent différents cas d'utilisation rapportés de PhantomJS.

25
Ariya Hidayat

PhantomJS n'est pas destiné à remplacer un framework de test, il fonctionnera conjointement avec celui-ci.

Par exemple, voici un exemple aléatoire PhantomJS utilisé conjointement avec Jasmine .

Notez également que PhantomJS n'est pas uniquement destiné aux tests, vous pouvez l'utiliser pour des tâches telles que le grattage d'écran ou le déchargement d'une charge de rendu importante (par exemple pour les navigateurs mobiles sollicités par le processeur) sur le serveur, comme dans cet exemple .

7
manzoid

Un autre cas d'utilisation qui n'a pas été mentionné ici est le rendu d'une page Web et la génération d'images ou de clichés PDF de cette page.

Par exemple, vous pouvez générer une facture, un rapport, un document, ... en tant que page Web HTML et l'envoyer à PDF pour l'envoyer à l'utilisateur final sous forme de document téléchargeable.

Ou peut-être que vous voulez les miniatures de capture d'écran d'une page Web ? Un autre cas d'utilisation possible.

0
BlaM