2016-12-07 3 views
0

Je crée des tests de fonctionnalité RSpec en utilisant capybara, pour tester en utilisant les onglets Bootstrap.Capybara trouve des éléments qui ne seraient pas visibles par l'utilisateur

Mon problème est que même sans utiliser click_link "tab name" capybara est toujours capable de trouver les éléments qui se trouvent dans cet onglet. Toutefois, lorsque vous consultez la page sur mon serveur local, les onglets fonctionnent correctement.

Comment exactement capybara trouve-t-il des éléments? Utilise-t-il en quelque sorte un système qui contourne les onglets bootstrapés?

Y at-il un moyen de résoudre ce problème?

facteurs impliqués possibles:

  • Pour diverses raisons, le projet que je travaille appelle ces tests « demande » plutôt que des tests de fonctionnalité. Cela pourrait-il changer une partie du comportement de capybara?

Mise à jour: - Je ne dispose pas actuellement js: true ensemble. En regardant dans cette solution possible maintenant.

+1

Si vous n'êtes pas en utilisant un pilote JS capable alors vous utiliser le pilote rack test par défaut. Ce pilote ne traite pas la plupart des CSS, ce qui, couplé à aucun support JS signifie que l'onglet bootstraps ne fonctionnera pas du tout –

+1

et, oui - lorsque vous utilisez Capybara, il devrait être une spécification 'feature' plutôt qu'une spécification 'request', surtout si vous utilisez le normal 'require 'capybara/rspec' - Marquer un test de fonctionnalité devrait vous empêcher d'utiliser les méthodes' get'/''''/etc qui ne sont pas compatibles avec l'utilisation de Capybara en même temps. –

+0

@ThomasWalpole, merci, c'est utile. Le chef du projet veut que je parte aussi seul que possible, cependant. Est-il absolument nécessaire de modifier les caractéristiques des fonctionnalités, ou est-ce simplement le recommande fortement? Vous savez ce qui commence à tomber en panne lors de l'utilisation des spécifications de la demande plutôt que des spécifications de fonctionnalité? – RyanQuey

Répondre

0

La raison de ce comportement est la suivante: js a été défini sur false, et par conséquent, capybara utilisait un pilote basé sur rack. Ce pilote ne traite pas la plupart des CSS, et CSS, sans prise en charge de JavaScript, signifie que les onglets d'amorçage ne fonctionneraient pas. En conséquence, chacun des onglets serait fondamentalement visible et sélectionnable tous en même temps, que l'on ait cliqué ou non sur l'un quelconque des liens de tabulation. Cela signifiait qu'il était toujours possible de cliquer sur ces liens, mais que cela ne faisait rien.

Le crédit va à @ThomasWalpole (voir les commentaires)