Capybara: How to test the title of a page?
Solution 1:
Since the version 2.1.0 of capybara there are methods on the session to deal with the title. You have
page.title
page.has_title? "my title"
page.has_no_title? "my not found title"
So you can test the title like:
expect(page).to have_title "my_title"
According to github.com/jnicklas/capybara/issues/863 the following is also working with capybara 2.0:
expect(first('title').native.text).to eq "my title"
Solution 2:
This works under Rails 3.1.10, Capybara 2.0.2 and Rspec 2.12, and allows matching partial contents:
find('title').native.text.should have_content("Status of your account::")
Solution 3:
You should be able to search for the title
element to make sure it contains the text you want:
page.should have_xpath("//title", :text => "My Title")
Solution 4:
I added this to my spec helper:
class Capybara::Session
def must_have_title(title="")
find('title').native.text.must_have_content(title)
end
end
Then I can just use:
it 'should have the right title' do
page.must_have_title('Expected Title')
end