capybara with rspec
DESCRIPTION
Learning how to use capybara and capybara-webkit with rspec. Example :- https://github.com/OmniaGM/learn-capybaraTRANSCRIPT
![Page 2: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/2.jpg)
Capybara
Go away I'm busy NOW
![Page 3: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/3.jpg)
![Page 4: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/4.jpg)
Why Capybara
![Page 5: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/5.jpg)
Setup
Install :sudo gem install capybara
Or Gemfilegem "capybara", :group => :test
![Page 6: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/6.jpg)
Using Capybara with RSpec
● spec/spec_helper.rbrequire 'capybara/rails'require 'capybara/rspec'
● create test directory /spec/requests● add capybara dsl to RSpec.configure in
spec_helper.rbRSpec.configure do |config| config.include Capybara::DSL, :type => :request
![Page 7: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/7.jpg)
Test
test_file.rb require 'spec_helper'describe "home page" do
before :each do # ...... end
it "displays greeting" do # ......... end
end
![Page 8: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/8.jpg)
The DSL
● navigating (visit)● matcher (page.should)● clicks (click_link - click_button)● action (fill_in) ● finders (find)● scope (within)● Scripting (page.execute_script)● debugger (page.htm - save_and_open_page)
○ NOTE : You'll need to install launchy (gem 'launchy', :
group => :test)and make sure it's available to open pages with save_and_open_page
![Page 9: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/9.jpg)
Example
![Page 10: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/10.jpg)
● Driver agnostic● Support :
○ RackTest○ Selenium○ Capybara-webkit
● Default: rack_test driver
Drivers
![Page 11: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/11.jpg)
RackTest
● It's pure Ruby, So it interacts directly with Rack interfaces
● It does not require a server to be startedBut● Not used to test a remote application, or to access
remote URLs (e.g., redirects to external sites, external APIs, or OAuth services)
● Dumb● It's not have any support for executing JavaScript
![Page 12: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/12.jpg)
Selenium
● Runs tests in a real browser● Supports any Javascript your browser supports, just like
real users● Easy to set up with capybaraBut● Slow● GUI browser adds a lot of cruft you don’t want ● Unfriendly
○ No console.log output○ invisible javascript errors
![Page 13: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/13.jpg)
● Fast● No browser UI● Using webkit engine● console.log output● Errors in standard output
CAPYBARA-WEBKIT
![Page 14: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/14.jpg)
Setup capybara-webkit:
Gemfilegem "capybara-webkit", :group => :test
○ You didn't need capybara itself anymore○ You will need database_cleaner because database transactions aren’
t compatible with rspec drivers besides Rack::Testgem 'database_cleaner', :group => :test
![Page 15: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/15.jpg)
Spec_helper.rbENV["RAILS_ENV"] ||= 'test'require File.expand_path("../../config/environment", __FILE__)require 'rspec/rails'require 'capybara/rspec'require 'capybara-webkit'Capybara.javascript_driver = :webkit #...
![Page 16: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/16.jpg)
DatabaseCleaner configuration
RSpec.configure do |config|#...
config.use_transactional_fixtures = false config.before(:suite) do
DatabaseCleaner.strategy = :truncation end
config.before(:each) do DatabaseCleaner.start end
config.after(:each) do DatabaseCleaner.clean endend
![Page 17: Capybara with Rspec](https://reader033.vdocuments.mx/reader033/viewer/2022042700/554f8243b4c9052a518b4d5e/html5/thumbnails/17.jpg)
● Example@github OmniaGM/learn-capybara● Browser testing● Capybara● Capybara Cheat Sheet
Reference :