tests test run rails ruby-on-rails cucumber capybara

ruby on rails - test - Cucumber/Capybara: verifica que una página NO tenga contenido?



rspec rails (6)

A menudo dedico TANTO tiempo buscando una respuesta para esto que realmente funcione. Muchas respuestas no funcionan (quizás muchas respuestas anteriores hayan quedado en desuso o puede depender de la versión de los rieles / gemas que esté utilizando).

Pero para mí esto finalmente lo hizo:

expect(page).wont_have_content("Text you are looking for")

Usando Cucumber and Capybara, ¿hay alguna manera de verificar que una cadena NO esté presente en una página?

Por ejemplo, cómo escribiría lo contrario de este paso:

Then /^I should see "(.*?)"$/ do |arg1| page.should have_content(arg1) end

Esto pasa si arg1 está presente.

¿Cómo escribiría un paso que falla si se encuentra arg1 ?


Actualmente, puedes usar:

Then /^I not see "(.*?)"$/ do |arg1| expect(page).to have_no_content(arg1) end

Y si el contenido se encuentra en la página, su prueba es roja.


En Rspec 3.4 en la actualidad (2016), esta es la forma recomendada de probar que no tenga contenido:

expect(page).not_to have_content(arg1)


Oh, espera, lo he descubierto. Esto funciona:

Then /^I should see "(.*?)"$/ do |arg1| page.has_content?(arg1) == false end