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