Cucumber/Capybara: check that a page does NOT have content?

dB' picture dB' · Aug 16, 2012 · Viewed 33.6k times · Source

Using Cucumber and Capybara, is there a way to verify that a string is NOT present on a page?

For example, how would I write the opposite of this step:

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

This passes if arg1 is present.

How would I write a step that fails if arg1 is found?

Answer

Piotr Jakubowski picture Piotr Jakubowski · Aug 16, 2012

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers#has_no_text%3F-instance_method

There is a has_no_content matcher in Capybara. So you can write

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