Capybara's GitHub page describes it as an "acceptance test framework for web applications". We'll consider acceptance test to be a synonym for integration test or end-to-end test, although subtle distinctions can be made. Therefore, we already know that we won't be writing unit tests and that we will be dealing with a web application. Implicitly, this means we'll use a web browser. Capybara itself does not control the browser, but relies on drivers. The most popular of these is called Selenium, which is used widely for testing web applications. With Selenium, we can automate a real web browser, such as Mozilla Firefox, Google Chrome, Apple Safari, or Microsoft Edge, using code.
Why not just use Selenium directly? This is a good question. The Selenium team provides a gem called selenium-webdriver
, which provides the basic browser control capabilities we need. However, Capybara has three major benefits, which explains why almost all web application test code in Ruby uses it ...