-
-
Save them0nk/2166525 to your computer and use it in GitHub Desktop.
#Model | |
@user.should have(1).error_on(:username) # Checks whether there is an error in username | |
@user.errors[:username].should include("can't be blank") # check for the error message | |
#Rendering | |
response.should render_template(:index) | |
#Redirecting | |
response.should redirect_to(movies_path) | |
#Capybara Matchers | |
response.body.should have_content("Hello world") | |
response.body.should have_no_content("Hello world") | |
response.body.should have_css("input#movie_title") | |
response.body.should have_css("input#movie_title", :value => "Twelve Angry Men") | |
response.body.should have_css("input", :count => 3) #True if there are 3 input tags in response | |
response.body.should have_css("input", :maximum => 3) # True if there or fewer or equal to 3 input tags | |
response.body.should have_css("input", :minimum => 3) # True if there are minimum of 3 input tags | |
response.body.should have_css("input", :between => 1..3) # True if there 1 to 3 input tags | |
response.body.should have_css("p a", :text => "hello") # True if there is a anchor tag with text hello | |
response.body.should have_css("p a", :text => /[hH]ello(.+)/i) | |
# True if there is a anchor tag with text matching regex | |
response.body.should have_xpath("//a") | |
response.body.should have_xpath("//a",:href => "google.com") | |
response.body.should have_xpath("//a[@href => 'google.com']") | |
response.body.should have_xpath("//a[contains(.,'some string')]") | |
response.body.should have_xpath("//p//a", :text => /re[dab]i/i, :count => 1) | |
# can take both xpath and css as input and can take arguments similar to both have_css and have_xpath | |
response.body.should have_selector(:xpath, "//p/h1") | |
response.body.should have_selector(:css, "p a#movie_edit_path") | |
# For making capybara to take css as default selector | |
Capybara.default_selector = :css | |
response.body.should have_selector("input") #checks for the presence of the input tag | |
response.body.should have_selector("input", :value =>"Twelve Angry Men") # checks for input tag with value | |
response.body.should have_no_selector("input") | |
# For making capybara to take css as default selector | |
Capybara.default_selector = :xpath | |
response.body.should have_selector("//input") #checks for the presence of the input tag | |
response.body.should have_selector("//input", :value =>"Twelve Angry Men") # checks for input tag with value | |
# To access elements inside form | |
response.body.should have_field("FirstName") # checks for presence of a input field named FirstName in a form | |
response.body.should have_field("FirstName", :value => "Rambo") | |
response.body.should have_field("FirstName", :with => "Rambo") | |
response.body.should have_link("Foo") | |
response.body.should have_link("Foo", :href=>"googl.com") | |
response.body.should have_no_link("Foo", :href=>"google.com") | |
This is a life saver, can I give you Karma or something?
This is useful, thanks!
However, regarding response.body.should have_css("input#movie_title", :value => "Twelve Angry Men")
, :value is not actually a valid key for have_css, and :text doesn't actually match against the value attribute of input fields I've found.
You can either do something like have_css("input#movie_title[value=\"Twelve Angry Men\"]")
, or user the have_field and :with key.
Is there a difference between should have_no_link("Foo", :href=>"google.com")
and should_not have_link("Foo", :href=>"google.com")
?
Thanks a lot for this! I have corrected a few typos in my fork of this gist. Maybe you want to incorporate them: https://gist.github.com/nerdinand/7787825
Really useful, thanks a lot!
Thank you for making this!
Nice cheetsheet. I user this sheet.thx.
Is it still up-to-date with current capybara version?
This works but using page.should instead of response.body.should
You'd better use the new :expect
syntax like expect(page).to have_
With capybara 2.4.4, if you want to find a field with a value, use the following
expect(page).to have_field("My Field", with: "the value in the field")
Hey I just started learning RSpec is there a tutorial while using these awesome cheatsheets?
Hi, this Gist is outdated - it still uses the "should" syntax.
In newer versions of Capybara, it was replaced by the "expect" syntax.
Hey, so with expect syntax and couple things that work different, hopefully helpful :)
https://gist.github.com/redrick/01a0ca575a99f264f1d8ab6a4c93cff0
(I was working from nerdinand fork)
Line 44 should be:
# To pass
xpath as the default selector type
Hash rocket is not a valid XPath symbol (it leads to "Invalid expression" exception). Please use an "equals" sign: it should be "//a[@href = 'google.com']" instead of "//a[@href => 'google.com']".