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
