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

Reply via email to