Zfilipin has uploaded a new change for review. https://gerrit.wikimedia.org/r/87552
Change subject: Moving shared code to mediawiki-selenium Ruby gem ...................................................................... Moving shared code to mediawiki-selenium Ruby gem Bug: 53579 Change-Id: I0dcc7d7c91ceabb30e9161238592ddacd666deaa --- D tests/browser/.gitignore M tests/browser/Gemfile A tests/browser/Gemfile.lock M tests/browser/config/config.yml M tests/browser/features/support/env.rb R tests/browser/features/support/hooks.rb D tests/browser/features/support/sauce.rb 7 files changed, 64 insertions(+), 149 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch refs/changes/52/87552/1 diff --git a/tests/browser/.gitignore b/tests/browser/.gitignore deleted file mode 100644 index f24ff04..0000000 --- a/tests/browser/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -Gemfile.lock -reports/ -config/secret.yml diff --git a/tests/browser/Gemfile b/tests/browser/Gemfile index c3e155e..b72826d 100644 --- a/tests/browser/Gemfile +++ b/tests/browser/Gemfile @@ -5,6 +5,7 @@ gem 'cucumber' gem 'json' +gem 'mediawiki-selenium' gem 'net-http-persistent' gem 'page-object' gem 'rspec-expectations' diff --git a/tests/browser/Gemfile.lock b/tests/browser/Gemfile.lock new file mode 100644 index 0000000..6157be1 --- /dev/null +++ b/tests/browser/Gemfile.lock @@ -0,0 +1,58 @@ +GEM + remote: https://rubygems.org/ + specs: + builder (3.2.2) + childprocess (0.3.9) + ffi (~> 1.0, >= 1.0.11) + cucumber (1.3.8) + builder (>= 2.1.2) + diff-lcs (>= 1.1.3) + gherkin (~> 2.12.1) + multi_json (>= 1.7.5, < 2.0) + multi_test (>= 0.0.2) + data_magic (0.16.1) + faker (>= 1.1.2) + yml_reader (>= 0.2) + diff-lcs (1.2.4) + faker (1.2.0) + i18n (~> 0.5) + ffi (1.9.0) + gherkin (2.12.1) + multi_json (~> 1.3) + i18n (0.6.5) + json (1.8.0) + mediawiki-selenium (0.1.6) + multi_json (1.8.0) + multi_test (0.0.2) + net-http-persistent (2.9) + page-object (0.9.2) + page_navigation (>= 0.8) + selenium-webdriver (>= 2.35.0) + watir-webdriver (>= 0.6.4) + page_navigation (0.9) + data_magic (>= 0.14) + rspec-expectations (2.14.3) + diff-lcs (>= 1.1.3, < 2.0) + rubyzip (0.9.9) + selenium-webdriver (2.35.1) + childprocess (>= 0.2.5) + multi_json (~> 1.0) + rubyzip (< 1.0.0) + websocket (~> 1.0.4) + syntax (1.0.0) + watir-webdriver (0.6.4) + selenium-webdriver (>= 2.18.0) + websocket (1.0.7) + yml_reader (0.2) + +PLATFORMS + ruby + +DEPENDENCIES + cucumber + json + mediawiki-selenium + net-http-persistent + page-object + rspec-expectations + syntax diff --git a/tests/browser/config/config.yml b/tests/browser/config/config.yml index c84790a..02ed528 100644 --- a/tests/browser/config/config.yml +++ b/tests/browser/config/config.yml @@ -1,6 +1,3 @@ -mediawiki_username: Selenium_user -mediawiki_password: selenium123 - chrome: name: chrome platform: Linux diff --git a/tests/browser/features/support/env.rb b/tests/browser/features/support/env.rb index 4b4feb1..2281d94 100644 --- a/tests/browser/features/support/env.rb +++ b/tests/browser/features/support/env.rb @@ -1,133 +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, saucelabs_username, saucelabs_key, language) - if environment == :cloudbees - sauce_browser(test_name, saucelabs_username, saucelabs_key, language) - else - local_browser(language) - end -end -def environment - if ENV['ENVIRONMENT'] == 'cloudbees' - :cloudbees - 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, saucelabs_username, saucelabs_key) - %x{curl -H 'Content-Type:text/json' -s -X PUT -d '#{json}' http://#{saucelabs_username}:#{saucelabs_key}@saucelabs.com/rest/v1/#{saucelabs_username}/jobs/#{$session_id}} -end -def sauce_browser(test_name, saucelabs_username, saucelabs_key, 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://#{saucelabs_username}:#{saucelabs_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 secret_yml_location - secret_yml_locations = ['/private/wmf/secret.yml', 'config/secret.yml', 'config/config.yml'] - secret_yml_locations.each do |secret_yml_location| - return secret_yml_location if File.exists?("#{secret_yml_location}") - end - nil -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') - -secret = YAML.load_file("#{secret_yml_location}") -mediawiki_username = secret['mediawiki_username'] || config['mediawiki_username'] -mediawiki_password = secret['mediawiki_password'] - -if ENV['ENVIRONMENT'] == 'cloudbees' - saucelabs_username = secret['saucelabs_username'] - saucelabs_key = secret['saucelabs_key'] -end - -Before do |scenario| - @config = config - @does_not_exist_page_name = Random.new.rand.to_s - @mediawiki_username = mediawiki_username - @mediawiki_password = mediawiki_password - if ENV['REUSE_BROWSER'] == 'true' and $browser then - @browser = $browser - else - @browser = browser(environment, test_name(scenario), saucelabs_username, saucelabs_key, 'default') - $browser = @browser - end - $session_id = @browser.driver.instance_variable_get(:@bridge).session_id -end - -After do |scenario| - if environment == :cloudbees - sauce_api(%Q{{"passed": #{scenario.passed?}}}, saucelabs_username, saucelabs_key) - sauce_api(%Q{{"public": true}}, saucelabs_username, saucelabs_key) - end - @browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true' or ENV['REUSE_BROWSER'] == 'true' -end - -at_exit do - $browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true' -end +require 'mediawiki/selenium' diff --git a/tests/browser/features/support/build_pages.rb b/tests/browser/features/support/hooks.rb similarity index 98% rename from tests/browser/features/support/build_pages.rb rename to tests/browser/features/support/hooks.rb index 47295e4..792e804 100644 --- a/tests/browser/features/support/build_pages.rb +++ b/tests/browser/features/support/hooks.rb @@ -160,3 +160,7 @@ end $stemmer = true end + +at_exit do + $browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true' +end diff --git a/tests/browser/features/support/sauce.rb b/tests/browser/features/support/sauce.rb deleted file mode 100644 index 63eaeaa..0000000 --- a/tests/browser/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/87552 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0dcc7d7c91ceabb30e9161238592ddacd666deaa Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/CirrusSearch Gerrit-Branch: master Gerrit-Owner: Zfilipin <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
