Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in...
Transcript of Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in...
![Page 1: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/1.jpg)
Overview of Cucumber / Capybara
![Page 2: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/2.jpg)
❖ What is BDD?
➢ The main focus is on the expected behavior of the application and it’s
components.
➢ User stories created and maintained collaboratively by all
stakeholders
❖ What are the benefits?
➢ Define verifiable, executable and unambiguous requirements
➢ Developing features that truly add business value
➢ Preventing defects rather than finding defects
➢ Bring QA involvement to the forefront, great for team dynamics
![Page 3: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/3.jpg)
❖ Testing tool based on BDD written in Ruby.
❖ Tests are written in plain language called Gherkin based BDD style of
Given, When, Then, which any layperson can understand.
❖ Tests are grouped into feature files with .feature extension.
➢ E.g. Feature: As a Myish user I should be able to login
Scenario: Successful login
Given I am on the Myish home page
When I fill in email and password
And I click login button
Then I should be able to click on the profile
![Page 4: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/4.jpg)
❖ Capybara is a web-based automation framework used for creating
functional tests that simulate how users would interact with the application
❖ Capybara is library/gem built to be used on top of underlying web-based
driver
❖ Offers user-friendly DSL ( Domain Specific Language )
❖ Supported driver
➢ Rack::test
■ Default driver. No JavaScript support
➢ Selenium-Webdriver
■ Mostly used in web-based automation FW
➢ Capybara-Webkit
■ For true headless testing with JavaScript support
![Page 5: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/5.jpg)
❖ Basic DSL :
➢Visit('page_url') # navigate to page
➢Click_link('id_of_link') # click link by id
➢Click_link('link_text') # click link by link text
➢Click_button('button_name') # fill text field
➢Fill_in('First Name', :with => 'John') # choose radio button
➢Choose('radio_button') # choose radio button
➢Check('checkbox') # check in checkbox
➢Uncheck('checkbox') # uncheck in checkbox
➢Select('option', :from=>'select_box') # select from dropdown
➢Attach_file('image', 'path_to_image') # upload file
![Page 6: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/6.jpg)
❖ Java - JRE
❖ Ruby
❖ RubyGems installation – use “gem install <name of gem>” command.
➢ Cucumber
➢ Capybara
➢ Rspec
![Page 7: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/7.jpg)
Project Structure :
![Page 8: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/8.jpg)
Project Structure :
Features – folder to host all your feature files.
Step_Definitions – folder to host all your step definition Ruby files.
Support – folder to host your configuration files (env.rb).
Gemfile – defines the top-level gems to be used in your project.
![Page 9: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/9.jpg)
Sample: simple_search.feature:
– Describes the features that a user will be able to use in the program.
Feature: As a user I should be able to perform simple google search.
Scenario: A simple google search scenario Given I am on the main google search When I fill in "q" with "Cucumber test" And I click "gbqfb" button And I click on the first result Then I should see "Cucumber lets software development teams describe how software should behave in plain text."
![Page 10: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/10.jpg)
Given /^I am on the main google search$/ do visit ('/') end When /^(?:|I )fill in "([^"]*)" with "([^"]*)"$/ do |field, value| fill_in(field, :with => value) end Then /^I click "([^"]*)" button$/ do |button| click_button(button) end Then /^I click on the first result$/ do find(:xpath, "//html/body/div[3]/div[2]/div/div[5]/div[2]/div[2]/div/div[2]/div/ol/li/div/h3/a").click end Then /^I should see "([^"]*)"$/ do |text| page.should have_content(text) end
![Page 11: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/11.jpg)
Project structure : require 'capybara' require 'capybara/cucumber' Capybara.default_driver = :selenium Capybara.app_host = "http://www.google.com"
Capybara.default_wait_time = 20 World(Capybara)
![Page 12: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/12.jpg)
source "http://rubygems.org"
group(:test) do
gem 'cucumber'
gem 'capybara'
gem 'rspec'
end
![Page 13: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/13.jpg)
command to run the script :
cucumber features/<name of the feature file>.feature
command to generate the report:
run this command by going to your project directory
cucumber features --format html --out reports
![Page 14: Overview of Cucumber / Capybara · Testing tool based on BDD written in Ruby. Tests are written in plain language called Gherkin based BDD style of Given, When, Then, which any layperson](https://reader030.fdocuments.net/reader030/viewer/2022041015/5ec6a8e6b673cc1e1f66084b/html5/thumbnails/14.jpg)
https://github.com/jnicklas/capybara
https://shvets.github.io/blog/2013/10/12/acceptance_tricks.html
https://github.com/cucumber/cucumber/wiki
http://www.ibm.com/developerworks/library/a-automating-ria/
Useful resources (and lots of examples):
http://books.openlibra.com/pdf/cuke4ninja-2011-03-16.pdf < awesome free eBook – fun to read, too.
http://www.slideshare.net/lunivore/behavior-driven-development-11754474 < Liz really knows her stuff!
http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/
https://www.google.co.uk/search?q=declarative+vs+imperative+BDD < go Team Declarative!