rails rack_test feature example ruby-on-rails rspec capybara

ruby on rails - rack_test - Capibara: ¿Cómo probar el título de una página?



rspec rails (8)

Agregué esto a mi ayudante de especificaciones:

class Capybara::Session def must_have_title(title="") find(''title'').native.text.must_have_content(title) end end

Entonces solo puedo usar:

it ''should have the right title'' do page.must_have_title(''Expected Title'') end

En una aplicación de Rails 3 utilizando Steak, Capybara y RSpec, ¿cómo puedo probar el título de la página?


Debería poder buscar el elemento de title para asegurarse de que contiene el texto que desea:

page.should have_xpath("//title", :text => "My Title")


Desde la versión 2.1.0 de capibara, hay métodos en la sesión para tratar el título. Tienes

page.title page.has_title? "my title" page.has_no_title? "my not found title"

Entonces puedes probar el título como:

expect(page).to have_title "my_title"

De acuerdo con github.com/jnicklas/capybara/issues/863 lo siguiente también está funcionando con capybara 2.0 :

expect(first(''title'').native.text).to eq "my title"


Esto funciona en Rails 3.1.10, Capybara 2.0.2 y Rspec 2.12, y permite emparejar los contenidos parciales:

find(''title'').native.text.should have_content("Status of your account::")


Para probar el título de una página con Rspec y Capybara 2.1, podrías usar

  1. expect(page).to have_title ''Title text''

    otra opción es

  2. expect(page).to have_css ''title'', text: ''Title text'', visible: false
    Desde Capybara 2.1 el valor predeterminado es Capybara.ignore_hidden_elements = true , y como el elemento title es invisible, necesita la opción visible: false para que la búsqueda incluya elementos de página no visibles.


Probar el título de cada página se puede hacer de una manera mucho más fácil con RSpec.

require ''spec_helper'' describe PagesController do render_views describe "GET ''home''" do before(:each) do get ''home'' @base_title = "Ruby on Rails" end it "should have the correct title " do response.should have_selector("title", :content => @base_title + " | Home") end end end


Solo necesita configurar el subject en la page y luego escribir una expectativa para el método del title la página:

subject{ page } its(:title){ should eq ''welcome to my website!'' }

En contexto:

require ''spec_helper'' describe ''static welcome pages'' do subject { page } describe ''visit /welcome'' do before { visit ''/welcome'' } its(:title){ should eq ''welcome to my website!''} end end


it { should have_selector "title", text: full_title("Your title here") }