Search code examples
ruby-on-railscapybararspec-railscapybara-webkitsaucelabs

Is `sauce_whisk` gem compatible with capybara


I am running a rails application and having my test cases written in capybara. I need to run all those with sauce labs. I tried using sauce_whisk but those written in capybara are not working.

.... it "should google", :run_on_sauce => true do visit "http://google.com" end ... does not works

while

... it "should google too", :run_on_sauce => true do driver = Selenium::WebDriver.for :firefox driver.get "http://google.com" end ... works.

Can anybody help out in this matter ? I followed this link : https://docs.saucelabs.com/tutorials/ruby/


Solution

  • Here is an example a couple working implementations of using sauce_whisk with Capybara.

    Here is a simple example using Capybara with RSpec:

    jobname = scenario.full_description
    sessionid = ::Capybara.current_session.driver.browser.session_id
    ::Capybara.current_session.driver.quit
    
    job = SauceWhisk::Jobs.fetch sessionid
    job.name = jobname
    job.save
    
    if scenario.exception
      SauceWhisk::Jobs.fail_job sessionid
    else
      SauceWhisk::Jobs.pass_job sessionid
    end
    

    And a slightly more complicated implementation using Cucumber:

    require "capybara/cucumber"
    require "selenium/webdriver"
    require 'sauce_whisk'
    
    Around do |scenario, block|
      block.call
      sessionid = ::Capybara.current_session.driver.browser.session_id
      ::Capybara.current_session.driver.quit
    
      jobname = "#{scenario.feature.name} - #{scenario.name}"
    
      job = SauceWhisk::Jobs.fetch sessionid
      job.name = jobname
      job.passed = scenario.passed? ? true : false
      job.save
    end
    
    Before do | scenario |
      Capybara.register_driver :selenium do |app|
        capabilities = {
          :version => "48.0",
          :browserName => "chrome",
          :platform => "OS X 10.11"
        }
    
        url = "http://<username>:<access_key>@ondemand.saucelabs.com:80/wd/hub".strip
        Capybara::Selenium::Driver.new(app,
                                       :browser => :remote, :url => url,
                                       :desired_capabilities => capabilities)
      end
      Capybara.default_wait_time = 10
      Capybara.current_driver = :selenium
    
      job = SauceWhisk::Jobs.fetch ::Capybara.current_session.driver.browser.session_id
      job.name = "#{scenario.feature.name} - #{scenario.name}"
      job.save
    end
    

    Source:

    https://github.com/saucelabs-sample-test-frameworks?utf8=%E2%9C%93&query=Capybara