Dduvall has uploaded a new change for review. https://gerrit.wikimedia.org/r/180324
Change subject: (WIP) QA: Simplified using new mw-selenium features ...................................................................... (WIP) QA: Simplified using new mw-selenium features NO NOT MERGE Refactored thanks and no-js features to showcase some of the new patterns in mw-selenium's experimental branch. Change-Id: Ib5cdd884eabe95c9c23dcbc32b7968fef8bb60dd --- M Gemfile M Gemfile.lock A tests/browser/environments.yml M tests/browser/features/flow_no_javascript.feature M tests/browser/features/step_definitions/flow_no_javascript_steps.rb M tests/browser/features/step_definitions/thank_steps.rb M tests/browser/features/support/env.rb A tests/browser/features/support/flow_helper.rb M tests/browser/features/support/pages/flow_old_permalink_page.rb M tests/browser/features/support/pages/flow_page.rb M tests/browser/features/support/pages/new_flow_page.rb M tests/browser/features/support/pages/user_page.rb M tests/browser/features/thank.feature 13 files changed, 82 insertions(+), 47 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Flow refs/changes/24/180324/1 diff --git a/Gemfile b/Gemfile index daa473d..ca4c65a 100644 --- a/Gemfile +++ b/Gemfile @@ -4,6 +4,5 @@ source "https://rubygems.org" gem "csscss" -gem "mediawiki_api" -gem "mediawiki_selenium" +gem "mediawiki_selenium", git: "https://github.com/wikimedia/mediawiki-selenium.git", branch: "env-abstraction-layer" gem "rubocop", require: false diff --git a/Gemfile.lock b/Gemfile.lock index b40ee68..0792e73 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,18 @@ +GIT + remote: https://github.com/wikimedia/mediawiki-selenium.git + revision: 3ab24f8119baf9c24cdeee8e9aa7105a95b754b4 + branch: env-abstraction-layer + specs: + mediawiki_selenium (0.4.0) + cucumber (~> 1.3, >= 1.3.10) + headless (~> 1.0, >= 1.0.1) + json (~> 1.8, >= 1.8.1) + mediawiki_api (~> 0.2, >= 0.2.1) + page-object (~> 1.0) + rest-client (~> 1.6, >= 1.6.7) + rspec-expectations (~> 2.14, >= 2.14.4) + syntax (~> 1.2, >= 1.2.0) + GEM remote: https://rubygems.org/ specs: @@ -42,24 +57,15 @@ mediawiki_api (0.3.0) faraday (~> 0.9, >= 0.9.0) faraday-cookie_jar (~> 0.0, >= 0.0.6) - mediawiki_selenium (0.4.0) - cucumber (~> 1.3, >= 1.3.10) - headless (~> 1.0, >= 1.0.1) - json (~> 1.8, >= 1.8.1) - mediawiki_api (~> 0.2, >= 0.2.1) - page-object (~> 1.0) - rest-client (~> 1.6, >= 1.6.7) - rspec-expectations (~> 2.14, >= 2.14.4) - syntax (~> 1.2, >= 1.2.0) mime-types (2.4.3) multi_json (1.10.1) multi_test (0.1.1) multipart-post (2.0.0) - netrc (0.8.0) - page-object (1.0.2) + netrc (0.10.1) + 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.7) @@ -102,6 +108,5 @@ DEPENDENCIES csscss - mediawiki_api - mediawiki_selenium + mediawiki_selenium! rubocop diff --git a/tests/browser/environments.yml b/tests/browser/environments.yml new file mode 100644 index 0000000..1d7b3c7 --- /dev/null +++ b/tests/browser/environments.yml @@ -0,0 +1,23 @@ +mw-vagrant-host: + mediawiki_url: http://127.0.0.1:8080/wiki/ + mediawiki_user: Selenium_user + mediawiki_password: vagrant + mediawiki_user_b: Selenium_user2 + mediawiki_password_b: vagrant + +mw-vagrant-guest: + mediawiki_url: http://127.0.0.1/wiki/ + mediawiki_user: Selenium_user + mediawiki_password: vagrant + mediawiki_user_b: Selenium_user2 + mediawiki_password_b: vagrant + +beta: + mediawiki_url: http://en.wikipedia.beta.wmflabs.org/wiki/ + mediawiki_user: Selenium_user + mediawiki_user_b: Selenium Flow user 2 + +test2: + mediawiki_url: http://test2.wikipedia.org/wiki/ + mediawiki_user: Selenium_user + mediawiki_user_b: Selenium Flow user 2 diff --git a/tests/browser/features/flow_no_javascript.feature b/tests/browser/features/flow_no_javascript.feature index 439bbd6..f625c1a 100644 --- a/tests/browser/features/flow_no_javascript.feature +++ b/tests/browser/features/flow_no_javascript.feature @@ -1,4 +1,4 @@ -@custom-browser @en.wikipedia.beta.wmflabs.org @firefox @login @test2.m.wikipedia.org [email protected] @firefox @login @test2.m.wikipedia.org Feature: Basic site for legacy devices Background: diff --git a/tests/browser/features/step_definitions/flow_no_javascript_steps.rb b/tests/browser/features/step_definitions/flow_no_javascript_steps.rb index 765c458..8899b9f 100644 --- a/tests/browser/features/step_definitions/flow_no_javascript_steps.rb +++ b/tests/browser/features/step_definitions/flow_no_javascript_steps.rb @@ -8,9 +8,9 @@ end Given(/^I am using user agent "(.+)"$/) do |user_agent| - @user_agent = user_agent - @browser = browser(test_name(@scenario), { user_agent: user_agent }) - $session_id = @browser.driver.instance_variable_get(:@bridge).session_id + browser_factory(:firefox).bind do |options| + options[:profile]["general.useragent.override"] = user_agent + end end When(/^I click Add topic no javascript$/) do diff --git a/tests/browser/features/step_definitions/thank_steps.rb b/tests/browser/features/step_definitions/thank_steps.rb index d448258..6a84468 100644 --- a/tests/browser/features/step_definitions/thank_steps.rb +++ b/tests/browser/features/step_definitions/thank_steps.rb @@ -1,20 +1,13 @@ -Given(/^the "(.*?)" page has a new unmoderated topic created by me$/) do |title| - client = on(APIPage).client - client.log_in(ENV["MEDIAWIKI_USER"], ENV["MEDIAWIKI_PASSWORD"]) - client.action('flow', token_type: 'edit', submodule: 'new-topic', page: title, nttopic: 'Thank me please!', ntcontent: 'Hello') +Given(/^the "(.*?)" page has a new unmoderated topic created by me$/) do |page| + create_topic_on(page, 'Thank me please!', 'Hello') end -Given(/^the most recent topic on "(.*?)" is written by another user$/) do |title| - client = on(APIPage).client - username = 'Selenium Flow user 2' - begin - client.create_account(username, ENV["MEDIAWIKI_PASSWORD"]) - rescue MediawikiApi::ApiError - puts 'Assuming user ' + username + ' already exists since was unable to create.' - end +Given(/^user B exists$/) do + ensure_account(:b) +end - client.log_in(username, ENV["MEDIAWIKI_PASSWORD"]) - client.action('flow', token_type: 'edit', submodule: 'new-topic', page: title, nttopic: 'Thank me please!', ntcontent: 'Hello') +Given(/^the most recent topic on "(.*?)" is written by user B$/) do |page| + as_user(:b) { create_topic_on(page, 'Thank me please!', 'Hello') } end When(/^I click on the Thank button$/) do diff --git a/tests/browser/features/support/env.rb b/tests/browser/features/support/env.rb index 55b30ce..704e856 100644 --- a/tests/browser/features/support/env.rb +++ b/tests/browser/features/support/env.rb @@ -1,6 +1,14 @@ -require "mediawiki_api" require "mediawiki_selenium" +require "mediawiki_selenium/support/env" +require "mediawiki_selenium/support/hooks" +require "mediawiki_selenium/support/pages" +require "mediawiki_selenium/step_definitions" + +require_relative "flow_helper" + +World(FlowHelper) + if ENV['PAGE_WAIT_TIMEOUT'] PageObject.default_page_wait = ENV['PAGE_WAIT_TIMEOUT'].to_i end diff --git a/tests/browser/features/support/flow_helper.rb b/tests/browser/features/support/flow_helper.rb new file mode 100644 index 0000000..931d43a --- /dev/null +++ b/tests/browser/features/support/flow_helper.rb @@ -0,0 +1,10 @@ +module FlowHelper + def create_topic_on(page, topic, content) + api.action('flow', + token_type: 'edit', + submodule: 'new-topic', + page: page, + nttopic: topic, + ntcontent: content) + end +end diff --git a/tests/browser/features/support/pages/flow_old_permalink_page.rb b/tests/browser/features/support/pages/flow_old_permalink_page.rb index d550a27..1dacc62 100644 --- a/tests/browser/features/support/pages/flow_old_permalink_page.rb +++ b/tests/browser/features/support/pages/flow_old_permalink_page.rb @@ -1,7 +1,6 @@ class FlowOldPermalinkPage include PageObject - include URL @params = { page: 'Talk:Flow QA', workflow_id: 'no workflow' } - page_url URL.url(params[:page]) + "?workflow=<%=params[:workflow_id]%>" + page_url "Talk:Flow QA?workflow=<%=params[:workflow_id]%>" end diff --git a/tests/browser/features/support/pages/flow_page.rb b/tests/browser/features/support/pages/flow_page.rb index 3031851..8ab6989 100644 --- a/tests/browser/features/support/pages/flow_page.rb +++ b/tests/browser/features/support/pages/flow_page.rb @@ -4,9 +4,8 @@ end class FlowPage < WikiPage - include URL # MEDIAWIKI_URL must have this in $wgFlowOccupyPages array or $wgFlowOccupyNamespaces. - page_url URL.url("Talk:Flow_QA") + page_url "Talk:Flow_QA" # board header a(:edit_header_link, title: "Edit header") diff --git a/tests/browser/features/support/pages/new_flow_page.rb b/tests/browser/features/support/pages/new_flow_page.rb index 16ed9c6..9d19cf7 100644 --- a/tests/browser/features/support/pages/new_flow_page.rb +++ b/tests/browser/features/support/pages/new_flow_page.rb @@ -1,7 +1,6 @@ require "page-object" class NewFlowPage < FlowPage - include URL # MEDIAWIKI_URL must have User_talk in $wgFlowOccupyNamespaces. - page_url URL.url("User_talk:New page " + Array.new(8) { [*'0'..'9', *'a'..'z', *'A'..'Z'].sample }.join) + page_url "User_talk:New page " + Array.new(8) { [*'0'..'9', *'a'..'z', *'A'..'Z'].sample }.join end diff --git a/tests/browser/features/support/pages/user_page.rb b/tests/browser/features/support/pages/user_page.rb index fbd143f..9d9a92d 100644 --- a/tests/browser/features/support/pages/user_page.rb +++ b/tests/browser/features/support/pages/user_page.rb @@ -1,9 +1,8 @@ class UserPage include PageObject - include URL # MEDIAWIKI_URL must have this in $wgFlowOccupyPages array or $wgFlowOccupyNamespaces. - page_url URL.url("User talk:ENV['MEDIAWIKI_USER']") + page_url "User talk:ENV['MEDIAWIKI_USER']" h1(:first_heading, id: "firstHeading") # on test2wiki, page titles include an additional ShortURL after span containing page title. diff --git a/tests/browser/features/thank.feature b/tests/browser/features/thank.feature index a347922..07be312 100644 --- a/tests/browser/features/thank.feature +++ b/tests/browser/features/thank.feature @@ -1,4 +1,4 @@ -@chrome @clean @en.wikipedia.beta.wmflabs.org @firefox @internet_explorer_10 @login @test2.wikipedia.org +@chrome @clean @en.wikipedia.beta.wmflabs.org @extension-echo @extension-thanks @firefox @internet_explorer_10 @login @test2.wikipedia.org Feature: Thank author of a Flow post Scenario: Anon does not see Thank button @@ -8,8 +8,9 @@ @login Scenario: Thank the user - Given I am logged in - And the most recent topic on "Talk:Flow QA" is written by another user + Given user B exists + And the most recent topic on "Talk:Flow QA" is written by user B + And I am logged in And I am on Flow page And I see a Thank button When I click on the Thank button -- To view, visit https://gerrit.wikimedia.org/r/180324 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib5cdd884eabe95c9c23dcbc32b7968fef8bb60dd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Flow Gerrit-Branch: master Gerrit-Owner: Dduvall <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
