Search code examples
ruby-on-rails-3capybaracapybara-webkit

capybara webkit-driver reset?


Having a bit of an oddity with some capybara webkit-driver (:js => true) tests.

Tests run fine when they run on their own, but somehow in sequence, they fail.

For example, I have a request test that looks something like

describe "A", :js => true do
  # tests here run fine
end

describe "B", :js => true do
  # tests here fail
end

When I split describe B section into its own file, and run it using bundle exec rspec spec/requests/b_spec.rb however - tests run fine and pass.

Debugging this, it looks like when both sections are in the same file, somehow the webkit driver loads a 'dirty' browser session. Trying things like page.driver.reset! or Capybara.reset_sessions! or Capybara.reset! doesn't seem to have any effect...

When using spectator/spork this isn't a problem, since I can split the tests into different files and run them independently, but when running the full suite of tests using bundle exec rspec - these tests fail...

How can I reset the webkit driver / session properly between tests? Or I am chasing the wrong problem?

p.s. These tests are not hitting the database or altering state in any particular way, so I'm pretty sure it's some driver related problem.


Solution

  • Sometime it helps just writing the question for the solution to pop up.

    The key for me was:

    These tests are not hitting the database or altering state in any particular way, so I'm pretty sure it's some driver related problem.

    Turns out there was a state-change. In my particular case, setting OmniAuth into test_mode, which required setting it back to false after the previous test was running...