1
votes

I am trying to learn TDD, and can't get this integration test with Capybara and Rspec to work. The user visits the home page, clicks "Login", fills out the form with an "Email" and "Password", clicks "Log in", and then I expect the page to have the content "Signed in Successfully".

home_page_spec.rb

require 'spec_helper'

feature 'Login' do
  scenario 'user logs in to the site' do
    visit root_path
    click_link 'Login'
    expect(page).to have_content "Sign in to your account."
    fill_in('Email', with: "[email protected]")
    fill_in 'Password', with: "password"
    click_button 'Log in'
    expect(page).to have_content('Signed in Successfully')
   end
 end

I am getting "Failure/Error: expect(page).to have_content('Signed in Successfully'). Expected to find text "Signed in Successfully" in . . . . " The text that it finds is the sign in page. It is as if the test is finding the Log in button, but either not clicking it, or the button is not forwarding the page, but it works if I do this by hand in the browser. Any suggestions? Thanks.

1
Your best bet when debugging capybara errors is to add a save_and_open_page line before your failing expect line. This will launch the page in your browser and you can (hopefully) see what went wrong in your test.Mike Vormwald

1 Answers

1
votes

you can use the gem capybara-screenshot that save the page html and screen shot when a test fails. That way you can debug the issues. Or you can temporarily switch to selenium webdriver for capybara which opens the default browser and executes your tests.