Overview of Cucumber / Capybara

Total Page:16

File Type:pdf, Size:1020Kb

Overview of Cucumber / Capybara Overview of Cucumber / Capybara ❖ 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 ❖ 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 ❖ 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 ❖ 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 ❖ Java - JRE ❖ Ruby ❖ RubyGems installation – use “gem install <name of gem>” command. ➢ Cucumber ➢ Capybara ➢ Rspec Project Structure : 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. 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." 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 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) source "http://rubygems.org" group(:test) do gem 'cucumber' gem 'capybara' gem 'rspec' end 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 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! .
Recommended publications
  • Watir Recipes the Problem Solving Guide to Watir
    Watir Recipes The problem solving guide to Watir Zhimin Zhan This book is for sale at http://leanpub.com/watir-recipes This version was published on 2017-02-12 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. © 2013 - 2017 Zhimin Zhan Also By Zhimin Zhan Practical Web Test Automation Selenium WebDriver Recipes in Ruby Selenium WebDriver Recipes in Java Learn Ruby Programming by Examples Learn Swift Programming by Examples Selenium WebDriver Recipes in Python API Testing Recipes in Ruby Selenium WebDriver Recipes in Node.js To Xindi, for your understanding and support. Thank you! Contents Preface ........................................... i Preface to First Edition ................................ ii Who should read this book .............................. iii How to read this book ................................. iii Get recipe test scripts ................................. iii Send me feedback ................................... iv 1. Introduction ...................................... 1 Watir and its variants ................................. 1 RSpec .......................................... 2 Run recipe scripts ................................... 3 2. Watir and Selenium WebDriver .......................... 10 Install Selenium Browser Drivers ........................... 10 Cross browser testing
    [Show full text]
  • Automated Testing Clinic Follow-Up: Capybara-Webkit Vs. Poltergeist/Phantomjs | Engineering in Focus
    Automated Testing Clinic follow-up: capybara-webkit vs. polter... https://behindthefandoor.wordpress.com/2014/03/02/automated-... Engineering in Focus the Fandor engineering blog Automated Testing Clinic follow-up: capybara-webkit vs. poltergeist/PhantomJS with 2 comments In my presentation at the February Automated Testing SF meetup I (Dave Schweisguth) noted some problems with Fandor’s testing setup and that we were working to fix them. Here’s an update on our progress. The root cause of several of our problems was that some of the almost 100 @javascript scenarios in our Cucumber test suite weren’t running reliably. They failed occasionally regardless of environment, they failed more on slower CPUs (e.g. MacBook Pros only a couple of years old), when they failed they sometimes hung forever, and when we killed them they left behind webkit-server processes (we were using the capybara-webkit driver) which, if not cleaned up, would poison subsequent runs. Although we’ve gotten pretty good at fixing flaky Cucumber scenarios, we’d been stumped on this little handful. We gave up, tagged them @non_ci and excluded them from our build. But they were important scenarios, so we had to run them manually before deploying. (We weren’t going to just not run them: some of those scenarios tested our subscription process, and we would be fools to deploy a build that for all we knew wouldn’t allow new users to subscribe to Fandor!) That made our release process slower and more error-prone. It occurred to me that I could patch the patch and change our deployment process to require that the @non_ci scenarios had been run (by adding a git tag when those scenarios were run and checking for it when deploying), but before I could put that in to play a new problem appeared.
    [Show full text]
  • Bdd & Test Automation
    BDD & TEST AUTOMATION: HOW NOT TO SHOOT YOURSELF IN THE FOOT Mati Parv About the speaker Mati Parv Automation Engineer @ Proekspert [email protected] What this is about Introduction to BDD and related tools Retro-fitting automation: should you do it? How it worked out for us Automated UI testing in web applications Hands-on session Introduction: BDD What is BDD Behavior-Driven Development An "outside-in" methodology, starting from the outside by identifying business outcomes, drilling down into the feature set that will achieve these outcomes. Focuses on the "how" of the software, not the "why" Introduction: Cucumber Describe how the software should behave in plain text The descriptions are the documentation... ... and the tests... ... and the specification. Helps us deliver value, create software that matters Cucumber: Example Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses which do not have the topic "BDD" And there are 2 courses A001, B205 that have the topic "BDD" When I search for "BDD" Then I should see the following courses: | Course code | | A001 | | B205 | What happened in our case? Retro-fitting automation to mature codebase Should you do it? When does it work? Use Cucumber as the testing tool Is it good enough? Downside: maintenance hell is easy to achieve What are the alternatives? Continue with manual testing? Not good enough! Use another tool? UI automation in web apps What's good Tests run in a web browser – headless or not Allows to emulate user behavior Can be part of a CI process Downsides Performance can suffer, especially in an actual browser Initial test writing can be time-consuming Hands-on session Setup Application under test http://bdd-workshop-ntd2013.herokuapp.com Prepared test template http://git.io/6wD9Jw Required toolset Ruby 1.9+ RSpec, Capybara, Selenium-Webdriver Template code from above git repository Questions? Thank you!.
    [Show full text]
  • Analysis of Domain Specific Languages for GUI Testing: Rspec and Cucumber for Sikuli
    Journal of Multidisciplinary Engineering Science and Technology (JMEST) ISSN: 3159-0040 Vol. 2 Issue 1, January - 2015 Analysis of Domain Specific Languages for GUI testing: RSpec and Cucumber for Sikuli Ivan Evgrafov, [email protected] Raimund Hocke Roman S. Samarev, [email protected] Head Developer of SikuliX, Elena V. Smirnova, [email protected] [email protected], Nidderau, Germany Bauman Moscow State Technical University, Russia Abstract – This article is devoted to new usage tions. Little languages are small DSLs that do not include of the domain specific languages (DSL) for software many features found in General Purpose Programming with a Graphical User Interfaces (GUI) testing. This languages (GPLs). The testers use the GPPL in case if paper’s authors are a developers of the enhanced there is no time to create special DSL - in case of the short software Sikulix, the product which targeted for the term software project or if they could not find a proper programs with graphical interface testing. They pro- DSL, or if they could not create their own DSL. And they pose it as a functional basis for DSL. The SikuliX is use a domain-specific language (DSL), a computer lan- considering as an environment for domain specific guage specialized to a particular application domain in languages (DSL and DSEL). The results of two spe- such a case [17]. This is in contrast to a general-purpose cialized testing DSL’s estimation are being presented language (GPPL), which is broadly applicable across do- in this paper: the frameworks Rspec which belongs mains, and lacks specialized features for a particular do- to a Domain Specific Embedded Language (DSEL) main.
    [Show full text]
  • Careerit Online Trainings Selenium (With Java) Automation + Cucumber
    CareerIT Online Trainings Selenium (with Java) Automation + Cucumber – Day wise course contents Selenium Introduction DAY 1: Introduction to Automation & Selenium What is Automation Testing? Why we need Automation? & how to learn any automation tool? Different types of automation approaches Introduction to Selenium. What is Selenium? & why WebDriver? DAY 2: Selenium Overview Brief history of Selenium Features of Selenium Advantages and limitations of Selenium DAY 3: Selenium Components and Introduction to Selenium IDE Selenium IDE Selenium RC Selenium WebDriver Selenium Grid DAY 4: Deep drive into Selenium IDE Learning Core Java Concepts DAY 5: How much Java you need to learn? Exclusive Java session – 1 Java Introduction Download and Installing Java Write a simple Java program Compile and Execute your Java program – Importance of JVM DAY 6: Exclusive Java session – 2 Variables and Data Types Classes, Objects and methods Constructors & Packages DAY 7: Exclusive Java session – 3 Different Access Specifiers Different keywords – static, this Control Structures or Conditional Statements in Java DAY 8: Exclusive Java session – 4 Iterative/Looping statements in Java String Methods DAY 9: Exclusive Java session – 5 OOPs Introduction - Encapsulation Polymorphism Inheritance CareerIT Online Trainings DAY 10: Exclusive Java session – 6 Interfaces in Java Collections in Java DAY 11: Exclusive Java session – 7 Exception Handling in Java DAY 12: Exclusive Java session – 8 Java IO Concepts: Handling Files Database connectivity concepts [JDBC] Selenium
    [Show full text]
  • Behavior-Driven Development and Cucumber
    Behavior-Driven Development and Cucumber CSCI 5828: Foundations of Software Engineering Lecture 09 — 02/14/2012 ! © Kenneth M. Anderson, 2012 1 Goals • Introduce concepts and techniques encountered in the first three chapters of the Cucumber textbook (I may also refer to it as the “testing” textbook) • Installing Cucumber • Behavior-Driven Development • Gherkin • Cucumber • It’s integration with ruby (other languages are also supported) © Kenneth M. Anderson, 2012 2 Side Note: Fred Brooks Appears Again • I like receiving confirmation that the information I put in front of you is important • At the start of Chapter 3 of the Cucumber book, take a look at the first citation: • “In his famous essay, No Silver Bullet [Bro95], Fred Brooks says: • ‘The hardest single part of building a software system is deciding precisely what to build.’” • They even reference The Mythical Man-Month on the same page! ! © Kenneth M. Anderson, 2012 3 Installing Cucumber (I) • If you would like to run the examples presented in lecture, you will need to install Cucumber • To do so, you will first need to install ruby • If you are on Linux or Mac OS X, the book recommends first installing rvm (Ruby Version Manager) • Instructions are here: <http://beginrescueend.com/> • Then use it to install ruby version 1.9.3-p0 • On Lion with XCode 4.2.1: “rvm install ruby-1.9.3-p0 --with-gcc=clang” • If you are on Windows, use the Ruby Installer • http://rubyinstaller.org/ © Kenneth M. Anderson, 2012 4 Installing Cucumber (II) • Once you have ruby installed, you may need to install
    [Show full text]
  • Analysis of Code Coverage Through Gui Test Automation and Back End Test Automation Mr Tarik Sheth1, Ms
    IJISET - International Journal of Innovative Science, Engineering & Technology, Vol. 3 Issue 3, March 2016. www.ijiset.com ISSN 2348 – 7968 Analysis Of Code Coverage Through Gui Test Automation And Back End Test Automation Mr Tarik Sheth1, Ms. Priyanka Bugade2 , Ms. Sneha, Pokharkar3 AMET University1, Thakur College of Science and Commerce2,3 ABSTRACT coverage measurement through GUI automation and back Software testing provides a means to reduce errors, cut end automation testing of the software covers all aspects of maintenance and overall software costs. Testing has become testing, a particular website or a web application..The most important parameter in the case of software purpose of this project is to invent our own test tool which development lifecycle (SDLC). Testing automation tools will give more sophisticated outcomes then the cucumber enables developers and testers to easily automate the entire tool which will be using .The outcome of our research tool process of testing in software development. It is to examine & should be more better then the testing tool which is already modify source code. The objective of the paper is to conduct available in the market that is cucumber tool.. [3]. The paper a comparative study of automated tools such as available in tries to investigate and evaluate the effect of automation market in Selenium and cucumber test tool. The aim of this testing such as GUI and back end testing. [4]. research paper is to evaluate and compare automated The problems with manual testing are, it is very time software testing tools to determine their usability and consuming process, not reusable, has no scripting facility, effectiveness.
    [Show full text]
  • Ruby Cucumber, Selenium, Watir and Pageobject Course Content
    Ruby Cucumber, Selenium, Watir and PageObject Course Content ● Ruby History ● Environments and Editors ● Ruby Download and Installation ● Folder Structure and Gems Location ● Ruby Command Prompt Vs IRB ● puts Vs p Vs print ● Comments ● Variable Types with Naming Convention ● Numeric ● Interpolation ● Conditional and Controller Statements & Modifiers ● Operator Types ● Ruby Ranges and Date-time ● What is an Object in Ruby ● Object Types Built in Objects 1. Strings 2. Symbols 3. Arrays 4. Hashes ● Instance_methods(pre-defined methods) ● Methods(Functions) ● Iterators and Loops Statements ● Regular Expressions ● Files ● Modules Mixins with Naming Conventions ● Basic Object Orientation Concepts with Naming Conventions ● Doubts Clarification Introduction to Cucumber 1. Setup environment 2. What is cucumber 3. Generate cucumber framework 4. Framework flow 5. Setup configuration 6. What are watir, selenium, page-object 7. Writing Features 8. Writing Scenarios 9. Writing Step_definitions 10. Find out html element id’s, name and xpath 11. Running Tests in Different Browsers 12. Background 13. Scenario Outline 14. Tagging 15. Hooks 16. Alert 17. Screen_shot 18. Generate HTML Report 19. Watir-webdriver 20. Selenium-webdriver 21. Page-object ● What does student learn? By the end of the Ruby cucumber online training, student will learn below main concepts practically. ○ Ruby, Regular_expressions, Oop’s, Cucumber framework ○ Selenium-webdriver, watir-webdriver, page-object, testgen, etc., ○ Automation testing with web applications ★ What are advantages after learned this course? ○ Resume preparation by experienced trainer for shortlist for job ○ Student get job easily. ○ Student can manage job easily without job support. ○ This training 90% practical and 10% theory in every session with real time scenarios. ★ Student or Consultant must pay 70% 1st installment after 3 days from demo.
    [Show full text]
  • Key Facts Key Benefits Key Features Continuous Integration for Everybody
    7.0 Continuous Integration for Everybody “Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily — leading to multiple integrations per day. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.” Martin Fowler Key Facts “So the reason I made the TeamCity is a userfriendly continuous integration (CI) server for switch is because of the professional developers and build engineers. It is trivial to setup and time it take to set it up: 20 absolutely free for small teams. minutes. Everything was fully functional in under 20 minutes. I absolutely got no Key Benefits error at all. I just got through all the step of the wizard and • Automate code analyzing, compiling, and testing processes, with having then: done. Unit testing, code instant feedback on build progress, problems and test failures, all in simple, coverage, build, reports, etc... intuitive webinterface; And it’s absolutely free for • Run multiple builds and tests under different configurations and platforms small team.” simultaneously; Sebastien Lachance, Software Developer at • Make sure your team sustains an uninterrupted workflow with the help of BXSYSTEMS Pretested commits and Personal builds; • Have build history insight with customizable statistics on build duration, “Teamcity is totally awesome, success rate, code quality and custom metrics; after i got the grails project • Enable
    [Show full text]
  • Crystal Cucumber Framework Automation Setup Guide
    Watir-Webdriver – Cucumber Automation Framework Setup Guide Documentation version table: Document updating summary. Version Date Date Created 1.0 08/05/15 Index Seller Restrictions: This data shall not be duplicated, used nor disclosed in whole or in part for any purpose. Page 1 November 18, 2015 Table of Contents Introduction...................................................................................................................................................................3 Setting up Environment.................................................................................................................................................3 (a) Install Java.........................................................................................................................................................3 (b) Install Ruby Win Installer..................................................................................................................................3 (c) Install Bundler Gem..........................................................................................................................................3 Configuring Eclipse.......................................................................................................................................................4 (a) Extract Eclipse...................................................................................................................................................4 (b) Set Workspace...................................................................................................................................................4
    [Show full text]
  • TCD65-141111-2205-6028.Pdf
    1. TeamCity Documentation . 3 1.1 TeamCityReference . 4 1.1.1 What's New in TeamCity 6.5 . 4 1.1.2 Getting Started . 10 1.1.3 Concepts . 14 1.1.3.1 Agent Home Directory . 15 1.1.3.2 Agent Requirements . 16 1.1.3.3 Agent Work Directory . 16 1.1.3.4 Authentication Scheme . 16 1.1.3.5 Build Agent . 17 1.1.3.6 Build Artifact . 18 1.1.3.7 Build Chain . 18 1.1.3.8 Build Checkout Directory . 19 1.1.3.9 Build Configuration . 20 1.1.3.10 Build Configuration Template . 21 1.1.3.11 Build Grid . 22 1.1.3.12 Build History . 22 1.1.3.13 Build Log . 23 1.1.3.14 Build Number . 23 1.1.3.15 Build Queue . 23 1.1.3.16 Build Runner . 24 1.1.3.17 Build State . 24 1.1.3.18 Build Tag . 25 1.1.3.19 Build Working Directory . 25 1.1.3.20 Change . 26 1.1.3.21 Change State . 26 1.1.3.22 Clean Checkout . 27 1.1.3.23 Clean-Up . 28 1.1.3.24 Code Coverage . 28 1.1.3.25 Code Duplicates . 29 1.1.3.26 Code Inspection . 29 1.1.3.27 Continuous Integration . 29 1.1.3.28 Dependent Build . 30 1.1.3.29 Difference Viewer . 31 1.1.3.30 Guest User . 32 1.1.3.31 History Build . 32 1.1.3.32 Notifier . 33 1.1.3.33 Personal Build .
    [Show full text]
  • Titus Fortner - Crafting a Test Framework
    Titus Fortner - Crafting a Test Framework Titus Fortner: Hello, everyone. My name is Titus Fortner and I'm excited to get to talk to you today about some things in test automation that I'm especially passionate about. Just a quick background about me, writing software is my third career. I started out in the navy as a nuclear engineer on a ballistic missile submarine. I do not recommend to that career path to anyone who enjoys sunlight or regular sleeping hours. When I left the military, I worked in a semiconductor manufacturing company for a few years. I could at least see the sky, but it still wasn't something I was especially excited about. I decided to pursue something that I thought I could be especially excited about and looked into a career as a software engineer. As with many of us, I think I just happened into the testing focus. On my first day at my first job as a software developer at a small startup, our manager came to us and said, "Hey, I need someone to figure out this Selenium thing." I said, "Sure, I'll figure it out," and I've been pretty happy with that decision ever since. I've since worked at five different companies as a software engineer and test. About a year ago, I joined Sauce Labs as a solution architect. It means I get to help various clients with their testing. One of my primary tasks is to provide automation framework assessments for our customers. This is all to say that I've seen many different approaches to frameworks from many different problem sets.
    [Show full text]