Search code examples
ruby-on-railscapybaraphantomjspoltergeist

Capybara/Poltergeist causing unexpected results in request spec in Rails 3.2 app


Is there an alternative I can use to Capybara's save_and_open_page? I have written a request spec that test the user signup form. Upon successful signup, which this test should yield, this test should be passing, but it's not.

Yet when I do save_and_open_page at the end, all the form fields are blank. I can mirror this in the development environment doing the data entry myself and everything passes, so I am struggling to understand what's wrong. I can't afford to let this go because obviously this is a critical test.

I've only been doing TDD for a little while, so any tips or tricks about this stack (Capybara and Poltergeist) would be helpful. I am not having similar difficulties in other request specs using the same stack.

Here is the request spec:

it 'allows a user to subscribe', js: true do
  visit root_url
  click_link "Pricing"
  click_button "Subscribe", match: :first
  fill_in "First name", with: "Marky"
  fill_in "Last name", with: "Mark"
  fill_in "Company", with: "The Funky Bunch"
  fill_in "subscription_email", with: "[email protected]"
  fill_in "Password", with: "MyString"
  fill_in "Password confirmation", with: "MyString"
  fill_in "Credit Card Number", with: "4242424242424242"
  fill_in "Security Code on Card (CVV)", with: "123"
  select "July", from: "Card Expiration"
  select "2014", from: "card_year"
  check "chkACCEPT"
  click_button "Subscribe to myapp"
  # The line below fails, but a save_and_open page just shows a blank form
  current_path.should_not eq(new_subscription_path)
  page.should have_content("Thank You")
end

Solution

  • Poltergeist provides screenshots which can be used instead of save_and_open_page:

    save_screenshot('/path/to/file.png', :full => true)
    

    However your comment "# The line below fails" seems very consistent to "save_and_open page just shows a blank form".