0

Je suis nouveau sur Capybara et je fais des tests de fonctionnalités. J'ai essayé de tester une fonctionnalité mineure sur une application Rails qui permute les commentaires sur un poste dans et hors de vue. Le premier test pour basculer les commentaires en vue passe, mais le second test pour les basculer hors de la vue ne le fait pas. (J'utilise le webdriver sans tête-chrome).Le basculement d'un Bootstrap réductible échoue dans les tests de fonctionnalités de Rails/Capybara

context 'viewing comments', js: true do 
    scenario 'toggling comments into view' do 
    @post.comments.create(body: 'This is a comment.', user_id: @commenter.id) 
    visit authenticated_root_path 

    click_button 'Toggle comments' 
    expect(page).to have_content('This is a comment') 
    end 

    scenario 'toggling comments out of view' do 
    @post.comments.create(body: 'This is a comment.', user_id: @commenter.id) 
    visit authenticated_root_path 

    click_button 'Toggle comments' 
    expect(page).to have_content('This is a comment') 

    click_button 'Toggle comments' 
    expect(page).to_not have_content('This is a comment') 
    end 
end 

Dans un premier temps, j'ai eu deux fois click_button 'Toggle comments', dos à dos. Ni itération du travail de test. J'ai également essayé d'utiliser sleep n entre les deux actions, mais en vain.

Failures: 

    1) Comment management viewing comments toggling comments out of view 
    Failure/Error: expect(page).to_not have_content('This is a comment') 
     expected not to find text "This is a comment" in "OdinFB PROFILE REQUESTS 0 LOG OUT The Feed Create post Luna Lovegood said... Body of post 0 Likes 1 Comments Like Comment Share Toggle comments This is a comment. Morfin Gaunt on Sep 18 2017 at 4:22PM" 

Le bouton lui-même fonctionne lorsque l'application est activée localement. Il semble devenir inactif une fois activé la première fois dans les tests.

Toute idée serait appréciée, et merci de votre lecture.

+0

Avez-vous essayé de désactiver l'affichage sans tête pour voir ce qui se passe exactement sur la page? De plus, notez que votre premier test ne vérifie pas que le contenu n'est pas visible avant de cliquer sur le bouton, donc il ne vérifie pas vraiment que le fait de pousser le bouton fait basculer le conent. –

+0

@ThomasWalpole merci pour l'entrée. Je l'ai effectivement couru sans tête, et j'ai vu le bouton basculer le commentaire en vue. Et merci pour ce deuxième point. J'ai ajouté l'attente nécessaire et le test est toujours en cours, heureusement. –

+0

Je pense que vous avez une faute de frappe depuis que vous dites que vous l'avez couru sans tête et vu le bouton .... Pour clarifier, êtes-vous en train de dire que les tests passent en mode non-headless, mais échouent en mode sans tête? –

Répondre

0

Qu'est-ce qui se passe ici est le deuxième clic sur le bouton se produit après le texte attendu devient visible sur la page, mais avant que l'animation est terminée. Le code d'effondrement bootstrap devient alors confus et ne réduit pas les commentaires car il ne les considère pas encore complètement ouverts. Un sommeil d'une seconde ou deux immédiatement avant la seconde click_button va résoudre ce problème car il retarde assez longtemps pour que l'animation se termine. L'autre option (et mieux du point de vue du temps de test) est de désactiver les animations en mode test.