Zfilipin has uploaded a new change for review.
https://gerrit.wikimedia.org/r/87581
Change subject: Moving shared code to mediawiki-selenium Ruby gem
......................................................................
Moving shared code to mediawiki-selenium Ruby gem
Bug: 53579
Change-Id: I4ef8b63f485b0274f252cf95e566f0484615e8cf
---
M modules/ve-mw/test/browser/Gemfile
M modules/ve-mw/test/browser/Gemfile.lock
M modules/ve-mw/test/browser/config/config.yml
M modules/ve-mw/test/browser/features/step_definitions/common_steps.rb
M modules/ve-mw/test/browser/features/step_definitions/visual_editor_steps.rb
M modules/ve-mw/test/browser/features/support/env.rb
M modules/ve-mw/test/browser/features/support/hooks.rb
D modules/ve-mw/test/browser/features/support/sauce.rb
8 files changed, 14 insertions(+), 163 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/81/87581/1
diff --git a/modules/ve-mw/test/browser/Gemfile
b/modules/ve-mw/test/browser/Gemfile
index b5dde41..145f4a3 100755
--- a/modules/ve-mw/test/browser/Gemfile
+++ b/modules/ve-mw/test/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/modules/ve-mw/test/browser/Gemfile.lock
b/modules/ve-mw/test/browser/Gemfile.lock
index 926178e..b88cc61 100644
--- a/modules/ve-mw/test/browser/Gemfile.lock
+++ b/modules/ve-mw/test/browser/Gemfile.lock
@@ -24,6 +24,7 @@
multi_json (~> 1.3)
i18n (0.6.5)
json (1.8.0)
+ mediawiki-selenium (0.1.7)
multi_json (1.8.0)
multi_test (0.0.2)
net-http-persistent (2.9)
@@ -33,7 +34,7 @@
watir-webdriver (>= 0.6.4)
page_navigation (0.9)
data_magic (>= 0.14)
- rspec-expectations (2.14.2)
+ rspec-expectations (2.14.3)
diff-lcs (>= 1.1.3, < 2.0)
rubyzip (0.9.9)
selenium-webdriver (2.35.1)
@@ -54,6 +55,7 @@
DEPENDENCIES
cucumber
json
+ mediawiki-selenium
net-http-persistent
page-object
rspec-expectations
diff --git a/modules/ve-mw/test/browser/config/config.yml
b/modules/ve-mw/test/browser/config/config.yml
index 63ab8b9..9967c49 100644
--- a/modules/ve-mw/test/browser/config/config.yml
+++ b/modules/ve-mw/test/browser/config/config.yml
@@ -1,5 +1,3 @@
-mediawiki_username: Selenium_user
-
chrome:
name: chrome
platform: Linux
diff --git
a/modules/ve-mw/test/browser/features/step_definitions/common_steps.rb
b/modules/ve-mw/test/browser/features/step_definitions/common_steps.rb
index 928a596..93738cc 100644
--- a/modules/ve-mw/test/browser/features/step_definitions/common_steps.rb
+++ b/modules/ve-mw/test/browser/features/step_definitions/common_steps.rb
@@ -1,3 +1,3 @@
Given(/^I am logged in$/) do
- visit(LoginPage).login_with(@mediawiki_username, @mediawiki_password)
+ visit(LoginPage).login_with(ENV['MEDIAWIKI_USER'], ENV['MEDIAWIKI_PASSWORD'])
end
diff --git
a/modules/ve-mw/test/browser/features/step_definitions/visual_editor_steps.rb
b/modules/ve-mw/test/browser/features/step_definitions/visual_editor_steps.rb
index dc25673..eb2cb9c 100644
---
a/modules/ve-mw/test/browser/features/step_definitions/visual_editor_steps.rb
+++
b/modules/ve-mw/test/browser/features/step_definitions/visual_editor_steps.rb
@@ -44,7 +44,7 @@
rescue
end
page.content_element.fire_event('onfocus')
- page.content_element.when_present.send_keys("Editing with
#{@does_not_exist_page_name}")
+ page.content_element.when_present.send_keys("Editing with
#{@random_string}")
end
end
@@ -60,7 +60,7 @@
end
When(/^I edit the description of the change$/) do
-
on(VisualEditorPage).describe_change_element.when_visible.send_keys("Describing
with #{@does_not_exist_page_name}")
+
on(VisualEditorPage).describe_change_element.when_visible.send_keys("Describing
with #{@random_string}")
end
When(/^I see the IP warning signs$/) do
@@ -68,5 +68,5 @@
end
Then(/^Page text should contain the string$/) do
- on(VisualEditorPage).page_text_element.when_present.text.should match
Regexp.escape("Editing with #{@does_not_exist_page_name}")
+ on(VisualEditorPage).page_text_element.when_present.text.should match
Regexp.escape("Editing with #{@random_string}")
end
diff --git a/modules/ve-mw/test/browser/features/support/env.rb
b/modules/ve-mw/test/browser/features/support/env.rb
index 17e7128..b97a64e 100644
--- a/modules/ve-mw/test/browser/features/support/env.rb
+++ b/modules/ve-mw/test/browser/features/support/env.rb
@@ -1,145 +1,2 @@
-# 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/', 'config/']
- secret_yml_locations.each do |secret_yml_location|
- return secret_yml_location if
File.exists?("#{secret_yml_location}secret.yml")
- 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')
-mediawiki_username = config['mediawiki_username']
-
-unless secret_yml_location == nil
- secret = YAML.load_file("#{secret_yml_location}secret.yml")
- mediawiki_password = secret['mediawiki_password']
-end
-
-if ENV['ENVIRONMENT'] == 'cloudbees'
- saucelabs_username = secret['saucelabs_username']
- saucelabs_key = secret['saucelabs_key']
-end
-
-Before('@language') do |scenario|
- @language = true
- @saucelabs_username = saucelabs_username
- @saucelabs_key = saucelabs_key
- @scenario = scenario
-end
-Before('@login') do
- puts "secret.yml file at /private/wmf/ or config/ is required for tests
tagged @login" if secret_yml_location == nil
-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_relative 'hooks'
+require 'mediawiki/selenium'
diff --git a/modules/ve-mw/test/browser/features/support/hooks.rb
b/modules/ve-mw/test/browser/features/support/hooks.rb
index 77a7077..14c7841 100644
--- a/modules/ve-mw/test/browser/features/support/hooks.rb
+++ b/modules/ve-mw/test/browser/features/support/hooks.rb
@@ -1,3 +1,6 @@
+at_exit do
+ $browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true'
+end
#This is for the Headings test
Before('@edit_user_page') do
@@ -19,4 +22,4 @@
step 'select the string'
$make_selectable_line=true
end
-end
\ No newline at end of file
+end
diff --git a/modules/ve-mw/test/browser/features/support/sauce.rb
b/modules/ve-mw/test/browser/features/support/sauce.rb
deleted file mode 100644
index 63eaeaa..0000000
--- a/modules/ve-mw/test/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/87581
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4ef8b63f485b0274f252cf95e566f0484615e8cf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Zfilipin <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits