class SauceBindings::Session

Constants

DATA_CENTERS

Attributes

data_center[R]
driver[R]
http_client[RW]
listener[RW]
options[R]
url[W]

Public Class Methods

new(options = nil, data_center: nil, http_client: nil, listener: nil) click to toggle source
# File lib/sauce_bindings/session.rb, line 18
def initialize(options = nil, data_center: nil, http_client: nil, listener: nil)
  @options = options || Options.chrome
  @http_client = http_client
  @listener = listener

  @username = ENV['SAUCE_USERNAME']
  @access_key = ENV['SAUCE_ACCESS_KEY']
  self.data_center = data_center || :US_WEST
end

Public Instance Methods

accessibility_results(js_lib: nil, frames: true, cross_origin: false) click to toggle source
# File lib/sauce_bindings/session.rb, line 57
def accessibility_results(js_lib: nil, frames: true, cross_origin: false)
  sa11y = Sa11y::Analyze.new(driver, js_lib: js_lib, frames: frames, cross_origin: cross_origin)
  sa11y.results
end
data_center=(data_center) click to toggle source
# File lib/sauce_bindings/session.rb, line 47
def data_center=(data_center)
  unless DATA_CENTERS.key?(data_center)
    msg = "#{data_center} is an invalid data center; specify one of: #{DATA_CENTERS.keys}"
    raise ArgumentError, msg
  end

  SauceWhisk.data_center = data_center == :EU_CENTRAL ? :EU_VDC : data_center
  @data_center = data_center
end
start() click to toggle source
# File lib/sauce_bindings/session.rb, line 28
def start
  raise ArgumentError, "needs username; use `ENV['SAUCE_USERNAME']`" unless @username
  raise ArgumentError, "needs access_key; use `ENV['SAUCE_ACCESS_KEY']`" unless @access_key

  @driver = Selenium::WebDriver.for :remote, to_selenium
end
stop(result) click to toggle source
# File lib/sauce_bindings/session.rb, line 35
def stop(result)
  return if @driver.nil?

  SauceWhisk::Jobs.change_status(@driver.session_id, result)
  # Add output for the Sauce OnDemand Jenkins plugin
  # The first print statement will automatically populate links on Jenkins to Sauce
  # The second print statement will output the job link to logging/console
  puts "SauceOnDemandSessionID=#{@driver.session_id} job-name=#{@options.name}"
  puts "Test Job Link: https://app.saucelabs.com/tests/#{@driver.session_id}"
  @driver.quit
end
to_selenium() click to toggle source
# File lib/sauce_bindings/session.rb, line 66
def to_selenium
  caps = {url: url, desired_capabilities: options.capabilities}
  caps[:listener] = listener if listener
  caps[:http_client] = http_client if http_client
  caps
end
url() click to toggle source
# File lib/sauce_bindings/session.rb, line 62
def url
  @url ||= "https://#{@username}:#{@access_key}@#{DATA_CENTERS[data_center]}:443/wd/hub"
end