9
votes

Capybara: test que JavaScript fonctionne sans erreurs

Je voudrais écrire une spécification de demande qui vérifie le chargement et l'exécution de JavaScript sur une page donnée sans aucune erreur.

Je sais que je peux ajouter quelque chose à la DOM à la fin de mon fichier JavaScript et affirmer la présence de ce contenu, mais cela ressemble à un piratage et me force à polluer mon code pour tester des raisons. Je préférerais faire quelque chose dans le sens de. xxx


4 commentaires

Bonne question. J'attends aussi une réponse.


Je suppose que ce que vous devriez regarder est un cadre de test JavaScript comme Qunit. Vous pouvez définir des tests là-bas, puis utiliser Capybara pour automatiser les essais. Jasmine est une autre alternative.


Y a-t-il une pièce particulière de votre JavaScript que vous pouvez tester? Par exemple, s'il génère un élément DOM, vous pouvez tester que l'élément existe.


Je tiens à tester qu'il analysera, compile et fonctionne sans lancer d'erreurs.


3 Réponses :


3
votes

Une façon qui n'est potentiellement pas très polluante est de collecter des erreurs en ajoutant quelque chose comme celui-ci à la tête (garder à l'esprit que cela remplacera tout gestionnaire d'Onerror que vous avez peut déjà avoir):

page_errors = page.evaluate_script('window.errors')


0 commentaires

4
votes

Vous pouvez y parvenir avec la pièce de code suivante dans vos tests.

page.driver.console_messages.each { |error| puts error }
expect(page.driver.console_messages.length).to eq(0)


1 commentaires

Il y a aussi quelque chose comme page.driver.error_messages en fonction du pilote. Il utilise en interne console_messages



3
votes

Un problème avec l'utilisation de page.Driver.console_messages est-il net pas entre les tests. Donc, si vous voulez seulement affirmer qu'il n'y a pas d'erreur sur un test particulier, la spécification pourrait échouer en raison d'un test précédent.

Vous pouvez mettre en place ces erreurs à une spécification particulière en enregistrant la dernière console console.log horodatage.

Méthode d'assistant: xxx

puis utilisez-le comme: xxx


1 commentaires

Ceci est exactement ce que je cherchais. Il n'y a pas de méthode claire disponible et je n'ai pas pu trouver une bonne confirmation du comportement souhaité ou attendu entre les tests.