在Rails应用程序我想测试一个引导模式与jQuery的TokenInput场使用水豚用在Rspec的capybara-webkit驱动程序.有问题的部分如下:
click_link 'Create Team Modal'
sleep 1
within('div#modal_popup') do
fill_in 'input#token-input-team_name', with: 'Fancy team name'
sleep 1
fill_in 'input#token-input-team_name', with: '\t'
sleep 1
click_button 'Create Team'
end
page.should have_content('Fancy team name')
Run Code Online (Sandbox Code Playgroud)
这只适用于所有这些sleep 1; 否则Capybara崩溃have_content,最终导致服务器错误,因为团队名称永远无法正确选择.但是,没有 TokenInput字段的其他Bootstrap模式sleep 1在加载之前不需要.
尽管如此,有没有办法摆脱睡眠并让这一切正常进行?Capybara 2取出wait_until(有充分的理由),因为它将在默认的等待时间内等待测试某些东西......但这似乎没有反映在我的上述测试中; 就好像Capybara在进入/退出这个模态时没有参与等待期.有人对此有经验吗?使用Rails 3.2.10,Rspec 2.12,Capybara 2,capybara-webkit 0.14.0,TokenInput 1.6.
ruby-on-rails capybara jquery-tokeninput twitter-bootstrap capybara-webkit
我的页面上有很多动画,这实际上减慢了我在水豚的测试速度,因为水豚经常需要等到一个元素被动画化,因为它开始隐藏.
我为所有基于jQuery的动画找到了这个解决方案:
<%= javascript_tag '$.fx.off = true;' if Rails.env.test? %>
但是我使用twitter bootstrap,而bootstrap中的大多数动画都是由CSS 3(使用javascript后备)制作的.所以我的问题是,有没有办法在测试中转换CSS 3过渡和动画?