会议有时不会持续进行Capybara Selenium测试

时间:2016-04-07 10:06:34

标签: session ruby-on-rails-4 selenium-webdriver rspec capybara

我的Rails 4应用程序中有许多remote: true个表单来组成向导。

在每个post处,操作会向我的控制器中的session对象添加键。

#post :some_action
 def some_action
   current_form_indetifier = params[:current_form_indetifier]
   session[current_form_indetifier] = 'some_data'
 end

这在开发和生产中效果很好。

在我的Capybara Selenium测试中,SOMETIMES也能完美运行。

#step 1
fill_in 'My name is', with: 'Andy Smith'
fill_in 'I work at', with: 'Coca Cola'

find('.signup-form-next-button').click

#session key set in this post

wait_for_ajax

#step 2
fill_in 'Your Email', with: 'andy@smith.com'
fill_in 'Password', with: 'some-super-long-password'
find('.signup-form-next-button').click

#session key from last request is gone :-(

wait_for_ajax

非常重要的是要注意 有时会工作。

然而,对于大多数(70%)的时间,它在测试期间不起作用。

通过记录,我可以看到每个请求中的键/值都被添加到会话中,但是在下一个请求中,键不再出现在会话中。

  #first request
  puts session.keys => "['form_1']"

  #second request
  puts session.keys => "[]"

同样,这有效

到目前为止,我所尝试的无济于事:

  • config.action_controller.allow_forgery_protection = true中启用environments/test.rb(默认情况下为假)

  • protect_from_forgery with: :exception

  • 中评论application_controller.rb

重要的是要记住,有时工作。

有什么想法吗?

更新

目前我已经通过使用ActiveRecord SessionStore解决了这个问题,所以看起来问题出在cookie周围。

0 个答案:

没有答案