Capybara is the latest testing library that is more robust than webrat. Capybara helps you test your web applications like how a real user would interact with your system.

It can test javascript functions with the :js => true option. Let’s say we have a view page that invokes an ajax function that returns a partial to the page on form submission. The older testing libraries could not/ would not test this as an ajax call, it would only test the controller interaction.

With capybara we can turn the :js => true option on the test case like:

[ruby] it “should see payment error if payment amount is smaller than product price”, :js = true do
find_link(“Canon Camera”).click
fill_in “payment_card_number”, :with => “1234567891234567″
fill_in “payment_card_name”, :with => “validname”
page.should have_content(“There was a problem saving your order”)


Here a user logs in then clicks on a product (let’s say in an ordering application). He/she fills in the payment details and we have an ajax call which returns a partial. This can be well tested with the option above.