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. P>
3 Réponses :
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')
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)
Il y a aussi quelque chose comme page.driver.error_messages code> en fonction du pilote. Il utilise en interne
console_messages code>
Un problème avec l'utilisation de Vous pouvez mettre en place ces erreurs à une spécification particulière en enregistrant la dernière console Méthode d'assistant: p> puis utilisez-le comme: p> page.Driver.console_messages code> 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.
console.log code> horodatage. p>
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.
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.