Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cucumber vs Capybara

Can someone explain the difference between these two platforms?

Are both part of BDD but why should I use one or other, or both together?

like image 335
piermaria Avatar asked Feb 21 '13 14:02

piermaria


People also ask

What is cucumber capybara?

cucumber is a BDD tool that expresses testing scenarios in a business-readable, domain-specific language. capybara is an automated testing tool (often used) for ROR applications.

What is the difference between RSpec and cucumber?

The main difference between RSpec and Cucumber are the business readability factor. Cucumber's main draw is that the specification (features) are separate from the test code, so your product owners can provide or review the specification without having to dig through code.

What is Capybara in Ruby?

Capybara is a web-based test automation software that simulates scenarios for user stories and automates web application testing for behavior-driven software development. It is written in the Ruby programming language.

What is RSpec and capybara?

The tools we'll be using. For this exercise we'll be using RSpec, anecdotally the most popular of the Rails testing frameworks, and Capybara, a library that enables browser interaction (clicking buttons, filling out forms, etc.) using Ruby. You may find some of the RSpec or Capybara syntax confusing or indecipherable.


2 Answers

Capybara is a tool that interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. With Capybara you can write something like this:

describe "the signup process", :type => :feature do   before :each do     User.make(:email => '[email protected]', :password => 'caplin')   end    it "signs me in" do     visit '/sessions/new'     within("#session") do       fill_in 'Login', :with => '[email protected]'       fill_in 'Password', :with => 'password'     end     click_link 'Sign in'     page.should have_content 'Success'   end end 

Cucumber is a tool to write human-readable tests that are mapped into code. With it, you can rewrite the above example like this:

Scenario: Signup process  Given a user exists with email "[email protected]" and password "caplin" When I try to login with "[email protected]" and "caplin" Then I should be logged in successfully 

The almost plain-text interpretation is useful to pass around non-developers but also need some code mapped into it to actually work (the step definitions).

Usually you will use Capybara if you're testing a website and use Cucumber if you need to share those tests with non-developers. These two conditions are independent so you can use one without the other or both or none.

PS: in the code snippet there is some RSpec as well. This is needed because Cucumber or Capybara by themselves cannot test something. They rely on RSpec, Test::Unit or minitest to do the actual "Pass or Fail" work.

like image 69
Kostas Avatar answered Sep 22 '22 16:09

Kostas


cucumber is a BDD tool that expresses testing scenarios in a business-readable, domain-specific language.

capybara is an automated testing tool (often used) for ROR applications.

On the capybara github page, there's an example on using capybara with cucumber.

like image 39
orde Avatar answered Sep 22 '22 16:09

orde