Zfilipin has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/87563


Change subject: Moving shared code to mediawiki-selenium Ruby gem
......................................................................

Moving shared code to mediawiki-selenium Ruby gem

Bug: 53579
Change-Id: I9ee6ccd4c3e898a83c51eceeb8f2e6e9fefe6415
---
M tests/acceptance/Gemfile
M tests/acceptance/Gemfile.lock
M tests/acceptance/features/step_definitions/random_ua_steps.rb
M tests/acceptance/features/step_definitions/watchlist_steps.rb
M tests/acceptance/features/support/env.rb
A tests/acceptance/features/support/hooks.rb
D tests/acceptance/features/support/sauce.rb
7 files changed, 34 insertions(+), 102 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/63/87563/1

diff --git a/tests/acceptance/Gemfile b/tests/acceptance/Gemfile
index 0454e3c..876b0ae 100755
--- a/tests/acceptance/Gemfile
+++ b/tests/acceptance/Gemfile
@@ -6,6 +6,7 @@
 gem 'chunky_png'
 gem 'cucumber'
 gem 'json'
+gem 'mediawiki-selenium'
 gem 'net-http-persistent'
 gem 'page-object'
 gem 'rspec-expectations'
diff --git a/tests/acceptance/Gemfile.lock b/tests/acceptance/Gemfile.lock
index 9675259..d760ee0 100644
--- a/tests/acceptance/Gemfile.lock
+++ b/tests/acceptance/Gemfile.lock
@@ -5,39 +5,40 @@
     childprocess (0.3.9)
       ffi (~> 1.0, >= 1.0.11)
     chunky_png (1.2.8)
-    cucumber (1.3.4)
+    cucumber (1.3.8)
       builder (>= 2.1.2)
       diff-lcs (>= 1.1.3)
-      gherkin (~> 2.12.0)
-      multi_json (~> 1.7.5)
-      multi_test (~> 0.0.1)
-    data_magic (0.15.1)
+      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.1.2)
+    faker (1.2.0)
       i18n (~> 0.5)
     ffi (1.9.0)
-    gherkin (2.12.0)
+    gherkin (2.12.1)
       multi_json (~> 1.3)
-    i18n (0.6.4)
+    i18n (0.6.5)
     json (1.8.0)
-    multi_json (1.7.7)
-    multi_test (0.0.1)
-    net-http-persistent (2.8)
-    page-object (0.9.0)
+    mediawiki-selenium (0.1.7)
+    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.33.0)
+      selenium-webdriver (>= 2.35.0)
       watir-webdriver (>= 0.6.4)
     page_navigation (0.9)
       data_magic (>= 0.14)
-    rspec-expectations (2.14.0)
+    rspec-expectations (2.14.3)
       diff-lcs (>= 1.1.3, < 2.0)
     rubyzip (0.9.9)
-    selenium-webdriver (2.33.0)
+    selenium-webdriver (2.35.1)
       childprocess (>= 0.2.5)
       multi_json (~> 1.0)
-      rubyzip
+      rubyzip (< 1.0.0)
       websocket (~> 1.0.4)
     syntax (1.0.0)
     watir-webdriver (0.6.4)
@@ -52,6 +53,7 @@
   chunky_png
   cucumber
   json
+  mediawiki-selenium
   net-http-persistent
   page-object
   rspec-expectations
diff --git a/tests/acceptance/features/step_definitions/random_ua_steps.rb 
b/tests/acceptance/features/step_definitions/random_ua_steps.rb
index fb4544a..12a9c02 100644
--- a/tests/acceptance/features/step_definitions/random_ua_steps.rb
+++ b/tests/acceptance/features/step_definitions/random_ua_steps.rb
@@ -1,6 +1,6 @@
 Given /^that I am using (.+)$/ do |user_agent|
   @user_agent = user_agent
-  @browser = browser(environment, test_name(@scenario), @saucelabs_username, 
@saucelabs_key, user_agent)
+  @browser = browser(environment, test_name(@scenario), user_agent)
   @browser.window.resize_to(480, 800)
   $session_id = @browser.driver.instance_variable_get(:@bridge).session_id
 end
diff --git a/tests/acceptance/features/step_definitions/watchlist_steps.rb 
b/tests/acceptance/features/step_definitions/watchlist_steps.rb
index a37e4e3..05a6f91 100644
--- a/tests/acceptance/features/step_definitions/watchlist_steps.rb
+++ b/tests/acceptance/features/step_definitions/watchlist_steps.rb
@@ -30,16 +30,16 @@
     page.login_button
   end
   on(LoginPage) do |page|
-  page.login_with(@mediawiki_username, @mediawiki_password)
+  page.login_with(ENV['MEDIAWIKI_USER'], ENV['MEDIAWIKI_PASSWORD'])
   if page.text.include? "There is no user by the name "
-    puts @mediawiki_username + ' does not exist... trying to add user'
+    puts ENV['MEDIAWIKI_USER'] + ' does not exist... trying to add user'
     on(HomePage).create_account_element.when_present.click
     on(LoginPage) do |page|
-      page.username_element.element.when_present.set @mediawiki_username
-      page.signup_password_element.element.when_present.set @mediawiki_password
-      page.confirm_password_element.element.when_present.set 
@mediawiki_password
+      page.username_element.element.when_present.set ENV['MEDIAWIKI_USER']
+      page.signup_password_element.element.when_present.set 
ENV['MEDIAWIKI_PASSWORD']
+      page.confirm_password_element.element.when_present.set 
ENV['MEDIAWIKI_PASSWORD']
       page.signup_submit_element.element.when_present.click
-      page.text.should include 'Welcome, ' + @mediawiki_username + '!'
+      page.text.should include 'Welcome, ' + ENV['MEDIAWIKI_USER'] + '!'
       #Can't get around captcha in order to create a user
     end
   end
diff --git a/tests/acceptance/features/support/env.rb 
b/tests/acceptance/features/support/env.rb
index 19787f1..0b6bf60 100644
--- a/tests/acceptance/features/support/env.rb
+++ b/tests/acceptance/features/support/env.rb
@@ -1,26 +1,6 @@
-# before all
-require 'bundler/setup'
-require 'page-object'
-require 'page-object/page_factory'
-require 'watir-webdriver'
-require 'yaml'
+require_relative 'hooks'
+require 'mediawiki/selenium'
 
-World(PageObject::PageFactory)
-
-def browser(environment, test_name, saucelabs_username, saucelabs_key, 
user_agent)
-  if environment == :cloudbees
-    sauce_browser(test_name, saucelabs_username, saucelabs_key, user_agent)
-  else
-    local_browser(user_agent)
-  end
-end
-def environment
-  if ENV['ENVIRONMENT'] == 'cloudbees'
-    :cloudbees
-  else
-    :local
-  end
-end
 def local_browser(user_agent)
   if ENV['BROWSER_LABEL']
     browser_label = ENV['BROWSER_LABEL'].to_sym
@@ -47,11 +27,7 @@
   browser.cookies.add 'mf_useformat', 'true'
   browser
 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, user_agent)
+def sauce_browser(test_name, user_agent)
   config = YAML.load_file('config/config.yml')
   browser_label = config[ENV['BROWSER_LABEL']]
 
@@ -71,7 +47,7 @@
   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";,
+    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|
@@ -81,45 +57,4 @@
   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')
-mediawiki_username = config['mediawiki_username']
-
-secret = YAML.load_file('/private/wmf/secret.yml')
-mediawiki_password = secret['mediawiki_password']
-saucelabs_username = secret['saucelabs_username']
-saucelabs_key = secret['saucelabs_key']
-
-Before('@user_agent') do |scenario|
-  @user_agent = true
-  @saucelabs_username = saucelabs_username
-  @saucelabs_key = saucelabs_key
-  @scenario = scenario
-end
-
-Before do |scenario|
-  @config = config
-  @mediawiki_username = mediawiki_username
-  @mediawiki_password = mediawiki_password
-  unless @user_agent
-    @browser = browser(environment, test_name(scenario), saucelabs_username, 
saucelabs_key, 'default') unless @user_agent
-    $session_id = @browser.driver.instance_variable_get(:@bridge).session_id
-  end
-end
-
-After do |scenario|
-  $session_id = @browser.driver.instance_variable_get(:@bridge).session_id
-  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
 end
diff --git a/tests/acceptance/features/support/hooks.rb 
b/tests/acceptance/features/support/hooks.rb
new file mode 100644
index 0000000..d8b6416
--- /dev/null
+++ b/tests/acceptance/features/support/hooks.rb
@@ -0,0 +1,4 @@
+Before('@user_agent') do |scenario|
+  @user_agent = true
+  @scenario = scenario
+end
diff --git a/tests/acceptance/features/support/sauce.rb 
b/tests/acceptance/features/support/sauce.rb
deleted file mode 100644
index 63eaeaa..0000000
--- a/tests/acceptance/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/87563
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9ee6ccd4c3e898a83c51eceeb8f2e6e9fefe6415
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
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