class Object

Public Instance Methods

browser(environment, test_name, language) click to toggle source
# File lib/mediawiki/selenium/env.rb, line 22
def browser(environment, test_name, language)
  if environment == :saucelabs
    sauce_browser(test_name, language)
  else
    local_browser(language)
  end
end
environment() click to toggle source
# File lib/mediawiki/selenium/env.rb, line 29
def environment
  if ENV["BROWSER_LABEL"] and ENV["BROWSER_LABEL"] != "phantomjs" and
      ENV["SAUCE_ONDEMAND_USERNAME"] and ENV["SAUCE_ONDEMAND_ACCESS_KEY"]
    :saucelabs
  else
    :local
  end
end
local_browser(language) click to toggle source
# File lib/mediawiki/selenium/env.rb, line 37
def local_browser(language)
  if ENV["BROWSER_LABEL"]
    browser_label = ENV["BROWSER_LABEL"].to_sym
  else
    browser_label = :firefox
  end

  if language == "default"
    browser = Watir::Browser.new browser_label
  else
    if browser_label == :firefox
      profile = Selenium::WebDriver::Firefox::Profile.new
      profile["intl.accept_languages"] = language
      browser = Watir::Browser.new browser_label, profile: profile
    elsif browser_label == :chrome
      profile = Selenium::WebDriver::Chrome::Profile.new
      profile["intl.accept_languages"] = language
      browser = Watir::Browser.new browser_label, profile: profile
    elsif browser_label == :phantomjs
      capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs
      capabilities["phantomjs.page.customHeaders.Accept-Language"] = language
      browser = Watir::Browser.new browser_label, desired_capabilities: capabilities
    else
      raise "Changing default language is currently supported only for Chrome, Firefox and PhantomJS!"
    end
  end

  browser.window.resize_to 1280, 1024
  browser
end
sauce_api(json) click to toggle source
# File lib/mediawiki/selenium/env.rb, line 67
def sauce_api(json)
RestClient::Request.execute(
  :method => :put,
  :url => "https://saucelabs.com/rest/v1/#{ENV['SAUCE_ONDEMAND_USERNAME']}/jobs/#{$session_id}",
  :user => ENV["SAUCE_ONDEMAND_USERNAME"],
  :password => ENV["SAUCE_ONDEMAND_ACCESS_KEY"],
  :headers => {:content_type => "application/json"},
  :payload => json
)
end
sauce_browser(test_name, language) click to toggle source
# File lib/mediawiki/selenium/env.rb, line 77
def sauce_browser(test_name, language)
  browsers = {

    "chrome" =>
      {"name" => "chrome",
       "platform" => "Linux",
       "version" => nil},

    "firefox" =>
      {"name" => "firefox",
       "platform" => "Linux",
       "version" => 26},

    "internet_explorer_6" =>
      {"name" => "internet_explorer",
       "platform" => "Windows XP",
       "version"=> 6},

    "internet_explorer_7" =>
      {"name" => "internet_explorer",
       "platform" => "Windows XP",
       "version"=> 7},

    "internet_explorer_8" =>
      {"name" => "internet_explorer",
       "platform" => "Windows XP",
       "version"=> 8},

    "internet_explorer_9" =>
      {"name" => "internet_explorer",
       "platform" => "Windows 7",
       "version"=> 9},

    "internet_explorer_10" =>
      {"name" => "internet_explorer",
       "platform" => "Windows 8",
       "version"=> 10}}

  browser_label = browsers[ENV["BROWSER_LABEL"]]

  if language == "default"
    caps = Selenium::WebDriver::Remote::Capabilities.send(browser_label["name"])
  elsif browser_label["name"] == "firefox"
    profile = Selenium::WebDriver::Firefox::Profile.new
    profile["intl.accept_languages"] = language
    caps = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
  elsif browser_label["name"] == "chrome"
    profile = Selenium::WebDriver::Chrome::Profile.new
    profile["intl.accept_languages"] = language
    caps = Selenium::WebDriver::Remote::Capabilities.chrome("chrome.profile" => profile.as_json["zip"])
  end

  caps.platform = browser_label["platform"]
  caps.version = browser_label["version"]
  caps[:name] = "#{test_name} #{ENV['JOB_NAME']}##{ENV['BUILD_NUMBER']}"

  require "selenium/webdriver/remote/http/persistent" # http_client
  browser = Watir::Browser.new(
    :remote,
    http_client: Selenium::WebDriver::Remote::Http::Persistent.new,
    url: "http://#{ENV['SAUCE_ONDEMAND_USERNAME']}:#{ENV['SAUCE_ONDEMAND_ACCESS_KEY']}@ondemand.saucelabs.com:80/wd/hub",
    desired_capabilities: caps)
  browser.wd.file_detector = lambda do |args|
    # args => ["/path/to/file"]
    str = args.first.to_s
    str if File.exist?(str)
  end

  browser
end
test_name(scenario) click to toggle source
# File lib/mediawiki/selenium/env.rb, line 147
def test_name(scenario)
  if scenario.respond_to? :feature
    "#{scenario.feature.name}: #{scenario.name}"
  elsif scenario.respond_to? :scenario_outline
    "#{scenario.scenario_outline.feature.name}: #{scenario.scenario_outline.name}: #{scenario.name}"
  end
end