切换Bootstrap可折叠在Rails / Capybara功能测试中失败

时间:2017-09-18 20:58:17

标签: ruby-on-rails twitter-bootstrap capybara chrome-web-driver

我是Capybara和功能测试的新手。我一直在尝试在Rails应用程序上测试一个次要功能,该功能可以将帖子的注释切换到视图内外。将注释切换到视图传递的第一个测试,但是将它们切换到视图之外的第二个测试不会。 (我使用的是无头镀铬网络驱动程序)。

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

最初,我有两次click_button 'Toggle comments'背对背。测试的迭代都不起作用。我也尝试在两个动作之间使用sleep n,但无济于事。

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"

当应用程序在本地启动时,按钮本身可以正常工作。一旦在测试中第一次激活,它似乎变得不活跃。

任何见解都会受到赞赏,并感谢您的阅读。

1 个答案:

答案 0 :(得分:1)

此处发生的是在预期文本在页面上可见但在动画完成之前发生第二次按钮单击。然后,bootstrap崩溃代码会混淆并且不会折叠注释,因为它认为它们尚未完全打开。在第二个click_button之前的大约一个小时的睡眠将解决此问题,因为它会延迟足够长的时间来完成动画。另一个选项(从测试时间角度来看更好)是在测试模式下禁用动画。