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

Reply via email to