Reputation: 23576
I have the following spec
describe "user enters 150 into time" do
before do
fill_in "workout[total_time]", with: "150"
click_button "Update Workout"
end
it "should be on profile page" do
save_and_open_page
page.should have_selector("h1", text: "Profile")
page.should have_selector("title", text: "Profile")
end
end
It's failing with the following message:
Capybara::ExpectationNotMet: expected to find css "title" with text "Profile" but there were no matches. Also found "", which matched the selector but not all filters.
The source code (from save_and_open_page
) contains this head
section:
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>Profile
</title>
<meta content="Composer Delete" name="description">
<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css">
<script src="/assets/application.js" type="text/javascript"></script>
</head>
Here is the view:
- content_for :title do
Profile
%h1 Profile
%table.table.table-striped
%thead
%tr
%th Name
%tbody
- current_user.workouts.each do |workout|
%tr
%td= link_to workout.name, workout
%td= link_to "Edit", edit_profile_workout_url(workout)
%td= link_to "Remove", profile_workout_url(workout), method: :delete, confirm: "Are you sure?"
= link_to "Create New Workout", new_profile_workout_url
And the content_for
is from layouts/application.html.haml
:
%title= content_for?(:title) ? yield(:title) : "Composer Delete"
The title of the page is being displayed as "Profile".
Any ideas why this spec is failing?
Rails 3.2.3
Ruby 1.9.3
Upvotes: 1
Views: 786
Reputation: 12818
It's Capybara 2.0 bug (or feature :) . Try to use previous versions (1.1.2 works fine for me).
https://github.com/jnicklas/capybara/issues/844
pull request with has_title? matcher:
https://github.com/jnicklas/capybara/issues/844
Upvotes: 2