overview of cucumber / capybara · testing tool based on bdd written in ruby. tests are written in...

14
Overview of Cucumber / Capybara

Upload: others

Post on 21-May-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

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

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

❖ 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

❖ 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

❖ 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

❖ 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

❖ 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

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

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

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

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

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

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

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://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!