Cmcmahon has submitted this change and it was merged.

Change subject: Moving code used in multiple repositores to a Ruby gem
......................................................................


Moving code used in multiple repositores to a Ruby gem

For more information see 
http://lists.wikimedia.org/pipermail/qa/2013-October/000509.html

Bug: 53579
Change-Id: I14d3a7f238295072da323000078c578eaab73466
---
M Gemfile
M Gemfile.lock
M features/support/env.rb
D features/support/sauce.rb
4 files changed, 4 insertions(+), 133 deletions(-)

Approvals:
  Cmcmahon: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Gemfile b/Gemfile
index 66ffe47..e4de9c4 100755
--- a/Gemfile
+++ b/Gemfile
@@ -4,9 +4,4 @@
 source 'https://rubygems.org'
 
 gem 'chunky_png'
-gem 'cucumber'
-gem 'json'
-gem 'net-http-persistent'
-gem 'page-object'
-gem 'rspec-expectations'
-gem 'syntax'
+gem 'mediawiki-selenium'
diff --git a/Gemfile.lock b/Gemfile.lock
index 9d37a95..5e603e1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -25,6 +25,7 @@
       multi_json (~> 1.3)
     i18n (0.6.5)
     json (1.8.0)
+    mediawiki-selenium (0.1.5)
     multi_json (1.8.2)
     multi_test (0.0.2)
     net-http-persistent (2.9)
@@ -56,6 +57,7 @@
   chunky_png
   cucumber
   json
+  mediawiki-selenium
   net-http-persistent
   page-object
   rspec-expectations
diff --git a/features/support/env.rb b/features/support/env.rb
index 8adaf56..2281d94 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -1,117 +1 @@
-# before all
-require 'bundler/setup'
-require 'page-object'
-require 'page-object/page_factory'
-require 'watir-webdriver'
-require 'yaml'
-
-World(PageObject::PageFactory)
-
-def browser(environment, test_name, language)
-  if environment == :saucelabs
-    sauce_browser(test_name, language)
-  else
-    local_browser(language)
-  end
-end
-def environment
-  if ENV['BROWSER_LABEL'] and ENV['SAUCE_ONDEMAND_USERNAME'] and 
ENV['SAUCE_ONDEMAND_ACCESS_KEY']
-    :saucelabs
-  else
-    :local
-  end
-end
-def local_browser(language)
-  if ENV['BROWSER_LABEL']
-    browser_label = ENV['BROWSER_LABEL'].to_sym
-  else
-    browser_label = :firefox
-  end
-
-  if language == 'default'
-    Watir::Browser.new browser_label
-  else
-    if browser_label == :firefox
-      profile = Selenium::WebDriver::Firefox::Profile.new
-    elsif browser_label == :chrome
-      profile = Selenium::WebDriver::Chrome::Profile.new
-    else
-      raise "Changing default language is currently supported only for Firefox 
and Chrome!"
-    end
-    profile['intl.accept_languages'] = language
-    Watir::Browser.new browser_label, :profile => profile
-  end
-end
-def sauce_api(json)
-  %x{curl -H 'Content-Type:text/json' -s -X PUT -d '#{json}' 
http://#{ENV['SAUCE_ONDEMAND_USERNAME']}:#{ENV['SAUCE_ONDEMAND_ACCESS_KEY']}@saucelabs.com/rest/v1/#{ENV['SAUCE_ONDEMAND_USERNAME']}/jobs/#{$session_id}}
-end
-def sauce_browser(test_name, language)
-  config = YAML.load_file('config/config.yml')
-  browser_label = config[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
-
-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
-
-config = YAML.load_file('config/config.yml')
-
-Before('@login') do
-  puts "MEDIAWIKI_USER environment variable is not defined! Please export a 
value for that variable before proceeding." unless ENV['MEDIAWIKI_USER']
-  puts "MEDIAWIKI_PASSWORD environment variable is not defined! Please export 
a value for that variable before proceeding." unless ENV['MEDIAWIKI_PASSWORD']
-end
-
-Before('@language') do |scenario|
-  @language = true
-  @scenario = scenario
-end
-
-Before do |scenario|
-  @config = config
-  @random_string = Random.new.rand.to_s
-  @browser = browser(environment, test_name(scenario), 'default') unless 
@language
-  $session_id = @browser.driver.instance_variable_get(:@bridge).session_id
-end
-
-After do |scenario|
-  if environment == :saucelabs
-    sauce_api(%Q{{"passed": #{scenario.passed?}}})
-    sauce_api(%Q{{"public": true}})
-  end
-  @browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true'
-end
+require 'mediawiki/selenium'
diff --git a/features/support/sauce.rb b/features/support/sauce.rb
deleted file mode 100644
index 63eaeaa..0000000
--- a/features/support/sauce.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'cucumber/formatter/junit'
-
-module Cucumber::Formatter
-  class Sauce < Junit
-    def format_exception(exception)
-      sauce_job_page = "Sauce Labs job URL: 
http://saucelabs.com/jobs/#{$session_id}\n";
-      ([sauce_job_page] + ["#{exception.message} (#{exception.class})"] + 
exception.backtrace).join("\n")
-    end
-  end
-end

-- 
To view, visit https://gerrit.wikimedia.org/r/87125
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I14d3a7f238295072da323000078c578eaab73466
Gerrit-PatchSet: 7
Gerrit-Project: qa/browsertests
Gerrit-Branch: master
Gerrit-Owner: Zfilipin <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: Cmcmahon <[email protected]>
Gerrit-Reviewer: Jdlrobson <[email protected]>
Gerrit-Reviewer: KartikMistry <[email protected]>
Gerrit-Reviewer: Manybubbles <[email protected]>
Gerrit-Reviewer: Mgrover <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to