J'ai commencé à migrer de concombre + webrat vers concombre + capybara. Maintenant, le comportement de "Je devrais voir" semble être quelque peu différent. La plupart d’entre elles échouent maintenant, bien que je n’ai rien changé à la page. J'ai remplacé l'extrait de code qui devrait être trouvé avec des éléments qui figurent sur chaque page. Pour un texte donné, cela fonctionne et pour d'autres textes, cela ne fonctionne pas. Je ne trouve aucun motif dans ce qui se trouve dans le contenu de la page et dans ce qui ne l'est pas…. Webrat avait l'habitude d'imprimer le contenu de la page trouvé, au cas où il ne contiendrait pas la phrase requise. Est-il possible de demander à capybara d'indiquer le texte obtenu à partir de la page dans laquelle il a essayé de trouver le texte?
Essayez d'ajouter cette étape:
Then show me the page
Then show me the page
appelle la méthode save_and_open_page
sous-jacente de webrat/capybara. J'ai trouvé cela utile lorsque vous travaillez avec un steak.
Si vous souhaitez que le navigateur ouvre la page en cas d'échec de la page, utilisez la gem 'launchy' Ajoutez-la à votre fichier gem, puis dans/features/support, créez un fichier appelé debugging.rb avec le contenu suivant:
After do |scenario|
save_and_open_page if scenario.failed?
end
Si vous utilisez JavaScript ou Ajax dans vos pages et souhaitez savoir ce qui se passe, j'ai constaté que le pilote Poltergeist est très efficace pour vous permettre d'entrer dans le DOM et de découvrir ce qui ne va pas.
Si vous configurez votre pilote Capybara avec l'option de débogage distant:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, inspector: true)
end
Vous pouvez ensuite mettre la ligne suivante dans vos étapes:
page.driver.debug
Ce qui déclenche un nouveau navigateur Chromium avec le jeu d’état actuel du DOM, vous permettant ainsi d’accéder à la console. (Sur ma version de Linux, je devais faire un lien symbolique chrome vers chrome-navigateur, mais cela fonctionnait très bien).
Informations sur la source: http://jonathanleighton.com/articles/2012/poltergeist-0-6-0/
Then show me the response
n'a pas fonctionné pour moi avec concombre 1.1. J'ai trouvé utile d'écrire une étape en utilisant la commande de capybara:
print page.html
Ceci sort l'état actuel du DOM
Vous pouvez également utiliser "Puis affichez-moi la réponse" pour afficher le code HTML dans la console si vous ne souhaitez pas utiliser de navigateur.
Vous pouvez toujours le faire prendre une capture d'écran lorsque quelque chose a échoué. Je débogue BEAUCOUP de fonctionnalités défaillantes de cette façon.