J'essaie actuellement de construire une petite suite de tests pour CI (Hudson). J'ai écrit un script complexe qui invoque dynamiquement d'autres scripts et remplit un élément DIV donné.
Mes tests Selenium fonctionnent pour des exemples triviaux (chargez www.google.com, recherchez le q-Element, etc.)
Mais lorsque j'essaie d'exécuter un test complexe, qui fonctionne avec le pilote Firefox, dans mon instance PhantomJS, il se bloque. Une erreur de segmentation se produit.
Ma question est, comment puis-je écrire des tests pour mon frontend JS qui fonctionne sur un Hudson-Server qui fonctionne (sans tête).
Ou existe-t-il un moyen de déboguer ce qui cause une erreur de segmentation?
Les installations sans tête sont possibles lorsque vous utilisez Xvfb comme tampon de trame virtuelle (sur les machines Linux hébergeant les nœuds de grille). J'ai fini par utiliser cela et Firefox par défaut.
Slimer.js est similaire à Phantom.js, mais utilise Gecko plutôt que Webkit.
Phantom est un produit évolutif, et ce n'est que relativement récemment qu'il a acquis la capacité de s'intégrer à Selenium, vous avez donc peut-être rencontré un bug avec lui; avez-vous essayé de le signaler aux développeurs Phantom?
Alternatives à Phantom:
Il n'y en a pas beaucoup. Zombie est celui que je connaisse, mais Phantom est la tête et les épaules au-dessus de tout autre navigateur sans tête.
Vous pouvez également essayer d'utiliser un serveur virtuel sans tête pour exécuter l'un des navigateurs Web normaux. (cela aurait également l'avantage d'être un test plus réel que Phantom)
Alternatives au sélénium:
Vous pouvez utiliser Sahi en remplacement direct du sélénium. Il est capable de pratiquement les mêmes choses, mais fonctionne très différemment. Bien sûr, vos scripts de test devraient être réécrits.
Phantom est conçu pour être scripté, vous n'avez donc pas du tout besoin d'utiliser un outil pilote comme Selenium pour cela; vous pouvez simplement l'écrire directement ou utiliser un outil comme CasperJS pour écrire vos scripts de test.
jsdom est une bonne alternative maintenant, c'est assez mature.
https://github.com/tmpvar/jsdom/
Son pour les tests sans tête. Je ne pense pas qu'il fera des captures d'écran comme le faisaient phantomjs car il n'a pas de webkit ou de rendu gekko son JS pur.
J'ai trouvé cela depuis phantomjs segfaults et la nouvelle version ne sera pas construite. slimerjs n'est pas vraiment sans tête, et son XULRunner basé que FireFox vient de supprimer, il ne fonctionne pas avec mon FF actuel.
jsdom est assez cool, il a commencé sa vie en tant qu'analyseur XML et a maintenant un backend réseau complet et un support jQuery.
L'API n'est pas la même chose que phantomjs.