From 7a5bd933d42fc56355f6f2cf4db65584360c6eca Mon Sep 17 00:00:00 2001 From: Dan Duvall Date: Thu, 5 Mar 2015 14:41:11 -0800 Subject: [PATCH] QA: Refactor for mediawiki_selenium 1.0 Refactored by following steps outlined in UPGRADE.md under the mediawiki_selenium project. Change-Id: I52717292df0541eb489b34ec083ec4a957f7546d --- Gemfile | 3 +- Gemfile.lock | 61 ++++++++++--------- tests/browser/environment_variables | 5 -- tests/browser/environments.yml | 35 +++++++++++ tests/browser/features/file.feature | 11 ---- tests/browser/features/login.feature | 11 ---- tests/browser/features/preferences.feature | 11 ---- .../create_and_follow_wiki_link_steps.rb | 6 +- .../features/step_definitions/login_steps.rb | 8 +-- tests/browser/features/support/env.rb | 6 +- .../features/support/modules/url_module.rb | 10 --- .../support/pages/create_account_page.rb | 3 +- .../support/pages/file_does_not_exist_page.rb | 3 +- .../features/support/pages/main_page.rb | 3 +- .../pages/preferences_appearance_page.rb | 3 +- .../support/pages/preferences_editing_page.rb | 3 +- .../support/pages/preferences_page.rb | 3 +- .../pages/preferences_user_profile_page.rb | 3 +- .../features/support/pages/ztargetpage.rb | 4 +- 19 files changed, 87 insertions(+), 105 deletions(-) delete mode 100644 tests/browser/environment_variables create mode 100644 tests/browser/environments.yml delete mode 100644 tests/browser/features/support/modules/url_module.rb diff --git a/Gemfile b/Gemfile index d3f8506299..4373b7f9de 100644 --- a/Gemfile +++ b/Gemfile @@ -3,6 +3,5 @@ source "https://rubygems.org" -gem "mediawiki_api" -gem "mediawiki_selenium" +gem "mediawiki_selenium", "~> 1.0.1" gem "rubocop", require: false diff --git a/Gemfile.lock b/Gemfile.lock index 0dc450003d..148266ce6b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,39 +5,39 @@ GEM astrolabe (1.3.0) parser (>= 2.2.0.pre.3, < 3.0) builder (3.2.2) - childprocess (0.5.3) + childprocess (0.5.5) ffi (~> 1.0, >= 1.0.11) - cucumber (1.3.16) + cucumber (1.3.19) builder (>= 2.1.2) diff-lcs (>= 1.1.3) gherkin (~> 2.12) multi_json (>= 1.7.5, < 2.0) - multi_test (>= 0.1.1) - data_magic (0.19) + multi_test (>= 0.1.2) + data_magic (0.20) faker (>= 1.1.2) - yml_reader (>= 0.3) + yml_reader (>= 0.4) diff-lcs (1.2.5) - domain_name (0.5.20) + domain_name (0.5.23) unf (>= 0.0.5, < 1.0.0) faker (1.4.3) i18n (~> 0.5) - faraday (0.9.0) + faraday (0.9.1) multipart-post (>= 1.2, < 3) faraday-cookie_jar (0.0.6) faraday (>= 0.7.4) http-cookie (~> 1.0.0) - ffi (1.9.3) + ffi (1.9.6) gherkin (2.12.2) multi_json (~> 1.3) headless (1.0.2) http-cookie (1.0.2) domain_name (~> 0.5) - i18n (0.6.11) - json (1.8.1) - mediawiki_api (0.2.1) + i18n (0.7.0) + json (1.8.2) + mediawiki_api (0.3.1) faraday (~> 0.9, >= 0.9.0) faraday-cookie_jar (~> 0.0, >= 0.0.6) - mediawiki_selenium (0.3.2) + mediawiki_selenium (1.0.1) cucumber (~> 1.3, >= 1.3.10) headless (~> 1.0, >= 1.0.1) json (~> 1.8, >= 1.8.1) @@ -46,15 +46,16 @@ GEM rest-client (~> 1.6, >= 1.6.7) rspec-expectations (~> 2.14, >= 2.14.4) syntax (~> 1.2, >= 1.2.0) - mime-types (2.3) - multi_json (1.10.1) - multi_test (0.1.1) + thor (~> 0.19, >= 0.19.1) + mime-types (2.4.3) + multi_json (1.11.0) + multi_test (0.1.2) multipart-post (2.0.0) - netrc (0.7.7) - page-object (1.0.2) + netrc (0.10.3) + page-object (1.0.3) page_navigation (>= 0.9) - selenium-webdriver (>= 2.42.0) - watir-webdriver (>= 0.6.9) + selenium-webdriver (>= 2.44.0) + watir-webdriver (>= 0.6.11) page_navigation (0.9) data_magic (>= 0.14) parser (2.2.0.pre.4) @@ -62,7 +63,7 @@ GEM slop (~> 3.4, >= 3.4.5) powerpack (0.0.9) rainbow (2.0.0) - rest-client (1.7.2) + rest-client (1.7.3) mime-types (>= 1.16, < 3.0) netrc (~> 0.7) rspec-expectations (2.99.2) @@ -74,26 +75,26 @@ GEM rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) ruby-progressbar (1.6.0) - rubyzip (1.1.6) - selenium-webdriver (2.42.0) - childprocess (>= 0.5.0) + rubyzip (1.1.7) + selenium-webdriver (2.45.0) + childprocess (~> 0.5) multi_json (~> 1.0) rubyzip (~> 1.0) - websocket (~> 1.0.4) + websocket (~> 1.0) slop (3.6.0) syntax (1.2.0) + thor (0.19.1) unf (0.1.4) unf_ext unf_ext (0.0.6) - watir-webdriver (0.6.10) - selenium-webdriver (>= 2.18.0) - websocket (1.0.7) - yml_reader (0.3) + watir-webdriver (0.7.0) + selenium-webdriver (>= 2.45) + websocket (1.2.1) + yml_reader (0.5) PLATFORMS ruby DEPENDENCIES - mediawiki_api - mediawiki_selenium + mediawiki_selenium (~> 1.0.1) rubocop diff --git a/tests/browser/environment_variables b/tests/browser/environment_variables deleted file mode 100644 index 25c45775cf..0000000000 --- a/tests/browser/environment_variables +++ /dev/null @@ -1,5 +0,0 @@ -export MEDIAWIKI_URL=http://localhost/wiki/ -export MEDIAWIKI_API_URL=http://localhost/w/api.php -export MEDIAWIKI_USER=Selenium_user -export MEDIAWIKI_PASSWORD=Selenium_password -export BROWSER=firefox diff --git a/tests/browser/environments.yml b/tests/browser/environments.yml new file mode 100644 index 0000000000..8f8381ed9f --- /dev/null +++ b/tests/browser/environments.yml @@ -0,0 +1,35 @@ +# Customize this configuration as necessary to provide defaults for various +# test environments. +# +# The set of defaults to use is determined by the MEDIAWIKI_ENVIRONMENT +# environment variable. +# +# export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host +# bundle exec cucumber +# +# Additional variables set by the environment will override the corresponding +# defaults defined here. +# +# export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host +# export MEDIAWIKI_USER=Selenium_user2 +# bundle exec cucumber +# +mw-vagrant-host: + mediawiki_url: http://127.0.0.1:8080/wiki/ + mediawiki_user: Selenium_user + mediawiki_password: vagrant + +mw-vagrant-guest: + mediawiki_url: http://127.0.0.1/wiki/ + mediawiki_user: Selenium_user + mediawiki_password: vagrant + +beta: + mediawiki_url: http://en.wikipedia.beta.wmflabs.org/wiki/ + mediawiki_user: Selenium_user + # mediawiki_password: SET THIS IN THE ENVIRONMENT! + +test2: + mediawiki_url: http://test2.wikipedia.org/wiki/ + mediawiki_user: Selenium_user + # mediawiki_password: SET THIS IN THE ENVIRONMENT! diff --git a/tests/browser/features/file.feature b/tests/browser/features/file.feature index 0bd36ed667..35a6675d8d 100644 --- a/tests/browser/features/file.feature +++ b/tests/browser/features/file.feature @@ -1,14 +1,3 @@ -# -# This file is subject to the license terms in the LICENSE file found in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of -# qa-browsertests, including this file, may be copied, modified, propagated, or -# distributed except according to the terms contained in the LICENSE file. -# -# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS -# @chrome @clean @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @phantomjs Feature: File diff --git a/tests/browser/features/login.feature b/tests/browser/features/login.feature index c34d23d353..2cb6356429 100644 --- a/tests/browser/features/login.feature +++ b/tests/browser/features/login.feature @@ -1,14 +1,3 @@ -# -# This file is subject to the license terms in the LICENSE file found in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of -# qa-browsertests, including this file, may be copied, modified, propagated, or -# distributed except according to the terms contained in the LICENSE file. -# -# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS -# @chrome @clean @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @phantomjs Feature: Log in diff --git a/tests/browser/features/preferences.feature b/tests/browser/features/preferences.feature index 9e3abfde58..9fed9cf463 100644 --- a/tests/browser/features/preferences.feature +++ b/tests/browser/features/preferences.feature @@ -1,14 +1,3 @@ -# -# This file is subject to the license terms in the LICENSE file found in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/LICENSE. No part of -# qa-browsertests, including this file, may be copied, modified, propagated, or -# distributed except according to the terms contained in the LICENSE file. -# -# Copyright 2012-2014 by the Mediawiki developers. See the CREDITS file in the -# qa-browsertests top-level directory and at -# https://git.wikimedia.org/blob/qa%2Fbrowsertests/HEAD/CREDITS -# @chrome @clean @firefox @internet_explorer_6 @internet_explorer_7 @internet_explorer_8 @internet_explorer_9 @internet_explorer_10 @login @phantomjs Feature: Preferences diff --git a/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb b/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb index 5271ea8b11..6197b6b726 100644 --- a/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb +++ b/tests/browser/features/step_definitions/create_and_follow_wiki_link_steps.rb @@ -1,6 +1,6 @@ Given(/^I go to the "(.+)" page with content "(.+)"$/) do |page_title, page_content| @wikitext = page_content - on(APIPage).create page_title, page_content + api.create_page page_title, page_content step "I am on the #{page_title} page" end @@ -10,7 +10,7 @@ Given(/^I am on the (.+) page$/) do |article| end Given(/^I create page "(.*?)" with content "(.*?)"$/) do |page_title, page_content| - on(APIPage).create page_title, page_content + api.create_page page_title, page_content end When(/^I click the Link Target link$/) do @@ -18,7 +18,7 @@ When(/^I click the Link Target link$/) do end Then(/^I should be on the Link Target Test Page$/) do - @browser.url.should match(/Link_Target_Test_Page/) + browser.url.should match(/Link_Target_Test_Page/) end Then(/^the page content should contain "(.*?)"$/) do |content| diff --git a/tests/browser/features/step_definitions/login_steps.rb b/tests/browser/features/step_definitions/login_steps.rb index b654b2d3d7..f528eba223 100644 --- a/tests/browser/features/step_definitions/login_steps.rb +++ b/tests/browser/features/step_definitions/login_steps.rb @@ -14,11 +14,11 @@ Given(/^I am at Log in page$/) do end When(/^I log in with incorrect password$/) do - on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "incorrect password", false) + on(LoginPage).login_with(user, "incorrect password", false) end When(/^I log in with incorrect username$/) do - on(LoginPage).login_with("incorrect username", ENV["MEDIAWIKI_PASSWORD"], false) + on(LoginPage).login_with("incorrect username", password, false) end When(/^I log in without entering credentials$/) do @@ -26,7 +26,7 @@ When(/^I log in without entering credentials$/) do end When(/^I log in without entering password$/) do - on(LoginPage).login_with(ENV["MEDIAWIKI_USER"], "", false) + on(LoginPage).login_with(user, "", false) end Then(/^error box should be visible$/) do @@ -49,7 +49,7 @@ Then(/^Log in element should be there$/) do end Then(/^main page should open$/) do - @browser.url.should == on(MainPage).class.url + browser.url.should == on(MainPage).class.url end Then(/^Password element should be there$/) do diff --git a/tests/browser/features/support/env.rb b/tests/browser/features/support/env.rb index 7c122366d8..5eff4ce5cc 100644 --- a/tests/browser/features/support/env.rb +++ b/tests/browser/features/support/env.rb @@ -1,2 +1,4 @@ -require "mediawiki_api" -require "mediawiki_selenium" +require 'mediawiki_selenium' + +require 'mediawiki_selenium/support' +require 'mediawiki_selenium/step_definitions' diff --git a/tests/browser/features/support/modules/url_module.rb b/tests/browser/features/support/modules/url_module.rb deleted file mode 100644 index 6c329e8737..0000000000 --- a/tests/browser/features/support/modules/url_module.rb +++ /dev/null @@ -1,10 +0,0 @@ -module URL - def self.url(name) - if ENV["MEDIAWIKI_URL"] - mediawiki_url = ENV["MEDIAWIKI_URL"] - else - mediawiki_url = "http://127.0.0.1:80/w/index.php" - end - "#{mediawiki_url}#{name}" - end -end diff --git a/tests/browser/features/support/pages/create_account_page.rb b/tests/browser/features/support/pages/create_account_page.rb index 380bccbca2..6a8ca69789 100644 --- a/tests/browser/features/support/pages/create_account_page.rb +++ b/tests/browser/features/support/pages/create_account_page.rb @@ -12,8 +12,7 @@ class CreateAccountPage include PageObject - include URL - page_url URL.url("<%=params[:page_title]%>") + page_url "<%=params[:page_title]%>" button(:create_account, id: "wpCreateaccount") end diff --git a/tests/browser/features/support/pages/file_does_not_exist_page.rb b/tests/browser/features/support/pages/file_does_not_exist_page.rb index c8491f3b82..9aa34d3a03 100644 --- a/tests/browser/features/support/pages/file_does_not_exist_page.rb +++ b/tests/browser/features/support/pages/file_does_not_exist_page.rb @@ -12,8 +12,7 @@ class FileDoesNotExistPage include PageObject - include URL - page_url URL.url("File:<%=params[:page_name]%>") + page_url "File:<%=params[:page_name]%>" div(:file_does_not_exist_message, id: "mw-imagepage-nofile") end diff --git a/tests/browser/features/support/pages/main_page.rb b/tests/browser/features/support/pages/main_page.rb index 8156800472..ef58d91cab 100644 --- a/tests/browser/features/support/pages/main_page.rb +++ b/tests/browser/features/support/pages/main_page.rb @@ -1,8 +1,7 @@ class MainPage include PageObject - include URL - page_url URL.url("") + page_url "" a(:edit_link, href: /action=edit/) li(:help_link, id: "n-help") diff --git a/tests/browser/features/support/pages/preferences_appearance_page.rb b/tests/browser/features/support/pages/preferences_appearance_page.rb index ed4491e010..0644f4cecd 100644 --- a/tests/browser/features/support/pages/preferences_appearance_page.rb +++ b/tests/browser/features/support/pages/preferences_appearance_page.rb @@ -12,8 +12,7 @@ class PreferencesAppearancePage include PageObject - include URL - page_url URL.url("Special:Preferences#mw-prefsection-rendering") + page_url "Special:Preferences#mw-prefsection-rendering" checkbox(:auto_number_check, id: "mw-input-wpnumberheadings") radio_button(:cologne_blue, id: "mw-input-wpskin-cologneblue") diff --git a/tests/browser/features/support/pages/preferences_editing_page.rb b/tests/browser/features/support/pages/preferences_editing_page.rb index aed9c41db3..e8dcfae644 100644 --- a/tests/browser/features/support/pages/preferences_editing_page.rb +++ b/tests/browser/features/support/pages/preferences_editing_page.rb @@ -12,8 +12,7 @@ class PreferencesEditingPage include PageObject - include URL - page_url URL.url("Special:Preferences#mw-prefsection-rendering") + page_url "Special:Preferences#mw-prefsection-rendering" select_list(:edit_area_font_style_select, id: "mw-input-wpeditfont") checkbox(:edit_section_double_click_check, id: "mw-input-wpeditondblclick") diff --git a/tests/browser/features/support/pages/preferences_page.rb b/tests/browser/features/support/pages/preferences_page.rb index 919ba27fd2..aa6848c538 100644 --- a/tests/browser/features/support/pages/preferences_page.rb +++ b/tests/browser/features/support/pages/preferences_page.rb @@ -12,8 +12,7 @@ class PreferencesPage include PageObject - include URL - page_url URL.url("Special:Preferences") + page_url "Special:Preferences" a(:appearance_link, id: "preftab-rendering") a(:editing_link, id: "preftab-editing") diff --git a/tests/browser/features/support/pages/preferences_user_profile_page.rb b/tests/browser/features/support/pages/preferences_user_profile_page.rb index 28e10b97f1..7688bba6f1 100644 --- a/tests/browser/features/support/pages/preferences_user_profile_page.rb +++ b/tests/browser/features/support/pages/preferences_user_profile_page.rb @@ -12,8 +12,7 @@ class PreferencesUserProfilePage include PageObject - include URL - page_url URL.url("Special:Preferences#mw-prefsection-personal") + page_url "Special:Preferences#mw-prefsection-personal" table(:basic_info_table, id: "mw-htmlform-info") link(:change_password_link, text: "Change password") diff --git a/tests/browser/features/support/pages/ztargetpage.rb b/tests/browser/features/support/pages/ztargetpage.rb index 7f168db288..1e21b9e662 100644 --- a/tests/browser/features/support/pages/ztargetpage.rb +++ b/tests/browser/features/support/pages/ztargetpage.rb @@ -1,7 +1,7 @@ class ZtargetPage < MainPage - include URL - page_url URL.url("<%=params[:article_name]%>") include PageObject + page_url "<%=params[:article_name]%>" + a(:link_target_page_link, text: "link to the test target page") end -- 2.20.1