You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Capybara (software)

From EverybodyWiki Bios & Wiki

Capybara
Developer(s)Thomas Walpole
Written inRuby
Engine
    Operating systemCross-platform
    TypeBehavior driven development framework / Test tool
    LicenseMIT License
    Websiteteamcapybara.github.io/capybara/

    Search Capybara (software) on Amazon.

    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.

    Capybara can mimic actions of real users interacting with web-based applications. It can receive pages, parse the HTML and submit forms.[1]

    Background and motivation[edit]

    During the software development process (especially in the Agile and Test-driven Development environments), as the size of the tests increase, it becomes difficult to manage tests which are complex and not modular.[1]

    By extending the human-readable behavior-driven development style of frameworks such as Cucumber and RSpec into the automation code itself, Capybara aims to develop simple web-based automated tests.[2]

    Anatomy of Capybara[edit]

    Capybara is a Ruby library (also referred to as a gem) that is used with an underlying web-based driver. It consists of a user-friendly DSL (Domain Specific Language) which describe actions that are executed by the underlying web driver.[3]

    When the page is loaded using the DSL (and underlying web driver), Capybara will attempt to locate the relevant element in the DOM (Document Object Model) and execute an action such as click button, link, etc.

    Drivers[edit]

    By default, Capybara uses the :rack_test driver which does not have any support for executing JavaScript. Drivers can be switched in Before and After blocks. Some of the web drivers supported by Capybara are mentioned below.

    RackTest[edit]

    Written in Ruby, Capybara's default driver RackTest does not require a server to be started since it directly interacts with Rack interfaces. Consequently, it can only be used for Rack applications.

    Selenium[edit]

    Selenium-webdriver, which is mostly used in web-based automation frameworks, is supported by Capybara. Unlike Capybara's default driver, it supports JavaScript, can access HTTP resources outside of application and can also be set up for testing in headless mode which is especially useful for CI scenarios.[3]

    Capybara-webkit[edit]

    Capybara-webkit driver (a gem) is used for true headless browser testing with JavaScript support. It uses QtWebKit and it is significantly faster than Selenium as it does not load the entire browser.

    Matchers[edit]

    Capybara locates an element either using Domain-specific language or XPath/CSS Selectors. Partial matches can lead to unexpected results. Two or more matches can even result in a failure with an Ambiguous match error. The following are the matching strategies supported by Capybara:[3]

    first: Pick the first element which matches. Not advisable to use.

    one: Allow only one element match. Error raised if more than one match.

    smart: If Capybara.exact is true, it behaves like the above option (one). If Capybara.exact is false, it will first try to find an exact match. Ambiguous exception is raised if more than one match is found. If no element is found, a new search for inexact matches is commenced. Again, an ambiguous exception is raised if more than one match is found.

    prefer_exact: Finds all matching (exact and which are not exact) elements. If multiple matches are found then the first exactly matching element is returned discarding other matches.

    Usage[edit]

    User-registration process[edit]

    Here is an example of how user registration test is done using Capybara. There is a test to see if the user can continue with the registration process or if there are any holds on him. If he has the requisite credentials, he will be registered and then redirected to the 'Welcome' page.[4]

      describe 'UserRegistration' do
        it 'allows a user to register' do
          visit new_user_registration_path
          fill_in 'First name', :with => 'New'
          fill_in 'Last name', :with => 'User'
          fill_in 'Email', :with => 'newuser@example.com'
          fill_in 'Password', :with => 'userpassword'
          fill_in 'Password Confirmation', :with => 'userpassword'
          click_button 'Register'
          page.should have_content 'Welcome'
        end
      end
    

    Capybara with Cucumber[edit]

    An example of a Capybara feature used with Cucumber:

    When /^I want to add/ do
        fill_in 'a', :with => 100
        fill_in 'b', :with => 100
        click_button 'Add'
    end
    

    Capybara with RSpec[edit]

    Some minute integration is required in order to use Capybara with RSpec[3][5]

    describe 'go to home page' do
      it 'opens the home page' do
        visit (get_homepage)
        expect(page).to have_content('Welcome')
      end
    end
    

    Similar tools[edit]

    See also[edit]

    Some use of "" in your query was not closed by a matching "".Some use of "" in your query was not closed by a matching "".

    References[edit]

    1. 1.0 1.1 Fox, Armando; Patterson, David A. (2013). Engineering Software as a Service: An Agile Approach Using Cloud Computing. Strawberry Canyon LLC. ISBN 9780984881246. Search this book on
    2. Application Testing with Capybara. ISBN 9781783281268. Search this book on
    3. 3.0 3.1 3.2 3.3 "The Basics of Capybara and Improving Your Tests". SitePoint. 18 August 2014. Retrieved 2016-02-08.
    4. "Integration testing Devise with RSpec and Capybara". garyrafferty.com. Archived from the original on 2016-01-21. Retrieved 2016-02-16. Unknown parameter |url-status= ignored (help)
    5. Liss, Jo. "Capybara (and Selenium) with RSpec & Rails 3: quick tutorial". www.opinionatedprogrammer.com. Retrieved 2016-02-08.


    This article "Capybara (software)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Capybara (software). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.

    Page kept on Wikipedia This page exists already on Wikipedia.