Mgrover has uploaded a new change for review.
https://gerrit.wikimedia.org/r/81179
Change subject: Stable Automation Tests for logged in/logged out QA:#1136
......................................................................
Stable Automation Tests for logged in/logged out QA:#1136
Change-Id: Icb2fc6e8ec9f22609dbc71ddeaadf65cacb1735b
---
A tests/acceptance/features/create_article.feature
A tests/acceptance/features/footer.feature
A tests/acceptance/features/footer_logged_in.feature
A tests/acceptance/features/header.feature
A tests/acceptance/features/header_logged_in.feature
A tests/acceptance/features/language.feature
A tests/acceptance/features/language_logged_in.feature
A tests/acceptance/features/notification.feature
A tests/acceptance/features/step_definitions/create_article_steps.rb
A tests/acceptance/features/step_definitions/footer_steps.rb
A tests/acceptance/features/step_definitions/header_logged_in_steps.rb
A tests/acceptance/features/step_definitions/header_steps.rb
A tests/acceptance/features/step_definitions/language_steps.rb
M tests/acceptance/features/step_definitions/menu_opens_page_steps.rb
A tests/acceptance/features/step_definitions/notification_steps.rb
M tests/acceptance/features/step_definitions/watchlist_steps.rb
A tests/acceptance/features/support/pages/create_article_page.rb
A tests/acceptance/features/support/pages/create_user_page.rb
A tests/acceptance/features/support/pages/edit_page.rb
M tests/acceptance/features/support/pages/home_page.rb
A tests/acceptance/features/support/pages/language_page.rb
M tests/acceptance/features/support/pages/login_page.rb
A tests/acceptance/features/support/pages/notification_page.rb
23 files changed, 303 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend
refs/changes/79/81179/1
diff --git a/tests/acceptance/features/create_article.feature
b/tests/acceptance/features/create_article.feature
new file mode 100644
index 0000000..fbb3ede
--- /dev/null
+++ b/tests/acceptance/features/create_article.feature
@@ -0,0 +1,6 @@
+Feature: Create Article
+
+ Scenario: Create Article
+
+ Given I am logged into the mobile website
+ And SelAutomationTestArticle has not been created
diff --git a/tests/acceptance/features/footer.feature
b/tests/acceptance/features/footer.feature
new file mode 100644
index 0000000..4ef9785
--- /dev/null
+++ b/tests/acceptance/features/footer.feature
@@ -0,0 +1,24 @@
+Feature: Footer links resolve
+
+ Background:
+ Given I am on the home page
+
+ Scenario: View Edit history link resolves
+ When I click on the view edit history link
+ Then I go to the edit history page
+
+ Scenario: Desktop link resolves
+ When I click on the desktop link
+ Then I go to the desktop wiki page
+
+ Scenario:
+ When I click on the CC BY-SA link
+ Then I go to the CC BY-SA page
+
+ Scenario:
+ When I click on the Terms of Use link
+ Then I go to the Terms of Use page
+
+ Scenario:
+ When I click on the Privacy link
+ Then I go to the Privacy page
\ No newline at end of file
diff --git a/tests/acceptance/features/footer_logged_in.feature
b/tests/acceptance/features/footer_logged_in.feature
new file mode 100644
index 0000000..b197977
--- /dev/null
+++ b/tests/acceptance/features/footer_logged_in.feature
@@ -0,0 +1,25 @@
+Feature: Feature: Footer links resolve - Logged In
+
+ Background:
+ Given I am logged into the mobile website
+ And I am on the home page
+
+ Scenario: View Edit history link resolves
+ When I click on the view edit history link
+ Then I go to the edit history page
+
+ Scenario: Desktop link resolves
+ When I click on the desktop link
+ Then I go to the desktop wiki page
+
+ Scenario:
+ When I click on the CC BY-SA link
+ Then I go to the CC BY-SA page
+
+ Scenario:
+ When I click on the Terms of Use link
+ Then I go to the Terms of Use page
+
+ Scenario:
+ When I click on the Privacy link
+ Then I go to the Privacy page
\ No newline at end of file
diff --git a/tests/acceptance/features/header.feature
b/tests/acceptance/features/header.feature
new file mode 100644
index 0000000..95b882b
--- /dev/null
+++ b/tests/acceptance/features/header.feature
@@ -0,0 +1,17 @@
+Feature: Header Validation
+
+ Background:
+ Given I am on the home page
+
+ Scenario: Receive notification message - Edit Icon
+ When I click the edit icon
+ Then I receive edit icon message You must be logged in to edit pages on
mobile.
+
+
+ Scenario: Receive notification message - Upload Icon
+ When I click on the upload icon
+ Then I receive upload icon message You need to be logged in to add an
image to this page.
+
+ Scenario: Receive notification message - Watchlist Icon
+ When I click on watchlist icon
+ Then I receive watchlist icon message Please login or sign up to watch
this page.
\ No newline at end of file
diff --git a/tests/acceptance/features/header_logged_in.feature
b/tests/acceptance/features/header_logged_in.feature
new file mode 100644
index 0000000..f646ac4
--- /dev/null
+++ b/tests/acceptance/features/header_logged_in.feature
@@ -0,0 +1,19 @@
+Feature: Header Validation - Logged In
+
+ Background:
+ Given I am logged into the mobile website
+ And I am on the home page
+ And I click on Random from the left Nav
+
+ Scenario: Edit mode
+ When I click the enabled edit icon
+ Then I can click Cancel
+
+
+ Scenario: Uploading Image
+ When I click on the upload icon
+ Then I receive upload dialog
+
+ Scenario: Watchlist icon from article page
+ When I click on watchlist icon
+ Then I receive notification that the article has been added to the
watchlist
\ No newline at end of file
diff --git a/tests/acceptance/features/language.feature
b/tests/acceptance/features/language.feature
new file mode 100644
index 0000000..d374a49
--- /dev/null
+++ b/tests/acceptance/features/language.feature
@@ -0,0 +1,6 @@
+Feature: Language Validation
+
+ Scenario: Validate Language selection availability
+ Given I am on the home page
+ When I click the language button
+ Then I move to the language screen
\ No newline at end of file
diff --git a/tests/acceptance/features/language_logged_in.feature
b/tests/acceptance/features/language_logged_in.feature
new file mode 100644
index 0000000..e074508
--- /dev/null
+++ b/tests/acceptance/features/language_logged_in.feature
@@ -0,0 +1,9 @@
+Feature: Language Validation - Logged In
+
+ Background:
+ Given I am logged into the mobile website
+
+ Scenario: Validate Language selection availability
+ And I am on the home page
+ When I click the language button
+ Then I move to the language screen
\ No newline at end of file
diff --git a/tests/acceptance/features/notification.feature
b/tests/acceptance/features/notification.feature
new file mode 100644
index 0000000..854f349
--- /dev/null
+++ b/tests/acceptance/features/notification.feature
@@ -0,0 +1,8 @@
+Feature: Notification
+
+ Scenario: Notification Validation
+ Given I am logged into the mobile website
+ When I click on the notification icon
+ Then I go to the notifications page
+
+
diff --git a/tests/acceptance/features/step_definitions/create_article_steps.rb
b/tests/acceptance/features/step_definitions/create_article_steps.rb
new file mode 100644
index 0000000..ad4e7d3
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/create_article_steps.rb
@@ -0,0 +1,7 @@
+Given /^(.+) has not been created$/ do |article|
+ visit(CreateArticlePage, :using_params => {:article_name => article})
+ if on(CreateArticlePage).doesnotexist_msg_element.element
+ on(EditPage).edit_icon_enabled_element.when_present.click
+ end
+end
+
diff --git a/tests/acceptance/features/step_definitions/footer_steps.rb
b/tests/acceptance/features/step_definitions/footer_steps.rb
new file mode 100644
index 0000000..043b652
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/footer_steps.rb
@@ -0,0 +1,39 @@
+When(/^I click on the view edit history link$/) do
+ on(HomePage).edit_history_link_element.when_present.click
+end
+
+Then(/^I go to the edit history page$/) do
+ @browser.url.should match Regexp.escape('Main_Page&action=history')
+end
+
+When /^I click on the desktop link$/ do
+ on(HomePage).desktop_link_element.when_present.click
+end
+
+Then /^I go to the desktop wiki page$/ do
+ @browser.url.should match Regexp.escape('toggle_view_desktop')
+end
+
+When /^I click on the CC BY\-SA link$/ do
+ on(HomePage).content_link_element.when_present.click
+end
+
+Then /^I go to the CC BY\-SA page$/ do
+ @browser.url.should match
Regexp.escape('Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License?useformat=mobile')
+end
+
+When /^I click on the Terms of Use link$/ do
+ on(HomePage).terms_link_element.when_present.click
+end
+
+Then /^I go to the Terms of Use page$/ do
+ @browser.url.should match Regexp.escape('Terms_of_use?useformat=mobile')
+end
+
+When /^I click on the Privacy link$/ do
+ on(HomePage).privacy_link_element.when_present.click
+end
+
+Then(/^I go to the Privacy page$/) do
+ @browser.url.should match Regexp.escape('Privacy_policy')
+end
\ No newline at end of file
diff --git
a/tests/acceptance/features/step_definitions/header_logged_in_steps.rb
b/tests/acceptance/features/step_definitions/header_logged_in_steps.rb
new file mode 100644
index 0000000..3cbc2a6
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/header_logged_in_steps.rb
@@ -0,0 +1,11 @@
+Then /^I click the enabled edit icon$/ do
+ on(HomePage).edit_icon_enabled_element.when_present.click
+end
+
+Then /^I can click Cancel$/ do
+ on(EditPage).edit_cancel_button_element.when_present.click
+end
+
+Then /^I receive upload dialog$/ do
+ pending # express the regexp above with the code you wish you had
+end
diff --git a/tests/acceptance/features/step_definitions/header_steps.rb
b/tests/acceptance/features/step_definitions/header_steps.rb
new file mode 100644
index 0000000..5d4b230
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/header_steps.rb
@@ -0,0 +1,26 @@
+
+When /^I click the edit icon$/ do
+ on(HomePage).edit_icon_element.when_present.click
+end
+
+Then /^I receive edit icon message (.+)$/ do |text|
+ on(HomePage).fe_notification_element.when_present.text.should match text
+end
+
+When /^I click on the upload icon$/ do
+ on(HomePage).upload_icon_element.when_present.click
+end
+
+Then /^I receive upload icon message (.+)$/ do |text|
+ on(HomePage).rl_notification_element.when_present.text.should match text
+end
+
+When /^I click on watchlist icon$/ do
+ on(HomePage).watch_link_element.when_present.click
+end
+
+Then /^I receive watchlist icon message (.+)$/ do |text|
+ on(HomePage).fe_notification_element.when_present.text.should match text
+end
+
+
diff --git a/tests/acceptance/features/step_definitions/language_steps.rb
b/tests/acceptance/features/step_definitions/language_steps.rb
new file mode 100644
index 0000000..f638c07
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/language_steps.rb
@@ -0,0 +1,11 @@
+When /^I click the language button$/ do
+ on(HomePage).language_button_element.when_present.click
+end
+
+Then /^I move to the language screen$/ do
+ on(LanguagePage) do |page|
+ page.number_languages_element.element.should exist
+ page.search_box_placeholder_element.element.when_present.set 'Esp'
+ page.language_search_results_element.element.should exist
+ end
+end
diff --git
a/tests/acceptance/features/step_definitions/menu_opens_page_steps.rb
b/tests/acceptance/features/step_definitions/menu_opens_page_steps.rb
index 85847b1..4bb7c80 100644
--- a/tests/acceptance/features/step_definitions/menu_opens_page_steps.rb
+++ b/tests/acceptance/features/step_definitions/menu_opens_page_steps.rb
@@ -32,6 +32,17 @@
on(RandomPage).watchlist_link_element.when_present.click
end
+When /^I click on About Wikipedia from the left Nav$/ do
+ on(HomePage).mainmenu_button_element.when_present.click
+ on(HomePage).about_link_element.when_present.click
+end
+
+
+When /^I click on the Disclaimer link on the left Nav$/ do
+ on(HomePage).mainmenu_button_element.when_present.click
+ on(HomePage).disclaimer_link_element.when_present.click
+end
+
Then /^my URL should be set to the Watchlist Page$/ do
@browser.url.should match Regexp.escape('Special%3AWatchlist')
end
@@ -58,4 +69,13 @@
Then /^my URL should be set to the Log In Page$/ do
@browser.url.should match Regexp.escape('Special:UserLogin')
-end
\ No newline at end of file
+end
+
+Then /^my URL should be set to the About Wikipedia Page$/ do
+ @browser.url.should match Regexp.escape('Wikipedia:About')
+end
+
+
+Then /^my URL should be set to the Disclaimer Page$/ do
+ @browser.url.should match Regexp.escape('Wikipedia:General_disclaimer')
+end
diff --git a/tests/acceptance/features/step_definitions/notification_steps.rb
b/tests/acceptance/features/step_definitions/notification_steps.rb
new file mode 100644
index 0000000..dc49fe2
--- /dev/null
+++ b/tests/acceptance/features/step_definitions/notification_steps.rb
@@ -0,0 +1,8 @@
+When /^I click on the notification icon$/ do
+ on(HomePage).notification_button_element.when_present.click
+end
+
+Then /^I go to the notifications page$/ do
+ @browser.url.should match Regexp.escape('Special:Notifications')
+end
+
diff --git a/tests/acceptance/features/step_definitions/watchlist_steps.rb
b/tests/acceptance/features/step_definitions/watchlist_steps.rb
index dee4f12..a37e4e3 100644
--- a/tests/acceptance/features/step_definitions/watchlist_steps.rb
+++ b/tests/acceptance/features/step_definitions/watchlist_steps.rb
@@ -24,14 +24,26 @@
end
end
-#Signup takes you to the sign in page... should it take you to the Mobile
Create Account page??
-
Given /^I am logged into the mobile website$/ do
visit(HomePage) do |page|
page.mainmenu_button_element.when_present.click
page.login_button
end
- on(LoginPage).login_with(@mediawiki_username, @mediawiki_password)
+ on(LoginPage) do |page|
+ page.login_with(@mediawiki_username, @mediawiki_password)
+ if page.text.include? "There is no user by the name "
+ puts @mediawiki_username + ' 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.signup_submit_element.element.when_present.click
+ page.text.should include 'Welcome, ' + @mediawiki_username + '!'
+ #Can't get around captcha in order to create a user
+ end
+ end
+ end
end
When /^I go to random page$/ do
diff --git a/tests/acceptance/features/support/pages/create_article_page.rb
b/tests/acceptance/features/support/pages/create_article_page.rb
new file mode 100644
index 0000000..0654e1c
--- /dev/null
+++ b/tests/acceptance/features/support/pages/create_article_page.rb
@@ -0,0 +1,8 @@
+class CreateArticlePage
+ include PageObject
+
+ include URL
+ page_url URL.url('<%=params[:article_name]%>')
+
+ a(:doesnotexist_msg, text:'Look for pages within Wikipedia that link to this
title')
+end
\ No newline at end of file
diff --git a/tests/acceptance/features/support/pages/create_user_page.rb
b/tests/acceptance/features/support/pages/create_user_page.rb
new file mode 100644
index 0000000..1e2174f
--- /dev/null
+++ b/tests/acceptance/features/support/pages/create_user_page.rb
@@ -0,0 +1,6 @@
+class CreateUserPage
+include PageObject
+
+
+
+end
diff --git a/tests/acceptance/features/support/pages/edit_page.rb
b/tests/acceptance/features/support/pages/edit_page.rb
new file mode 100644
index 0000000..b0d0f58
--- /dev/null
+++ b/tests/acceptance/features/support/pages/edit_page.rb
@@ -0,0 +1,6 @@
+class EditPage
+ include PageObject
+
+ button(:edit_cancel_button, text:'Cancel')
+ button(:edit_continue_button, text:'Continue')
+end
\ No newline at end of file
diff --git a/tests/acceptance/features/support/pages/home_page.rb
b/tests/acceptance/features/support/pages/home_page.rb
index e492553..a0eb02c 100644
--- a/tests/acceptance/features/support/pages/home_page.rb
+++ b/tests/acceptance/features/support/pages/home_page.rb
@@ -7,10 +7,10 @@
end
page_url url
- a(:about_link, text: 'About')
+ a(:about_link, text: 'About Wikipedia')
a(:content_link, text: 'CC BY-SA 3.0')
- a(:contrib_link, text: 'contributors')
- a(:disclaimer_link, text: 'Disclaimers')
+ a(:desktop_link, text: 'Desktop')
+ a(:disclaimer_link, text: 'Disclaimer')
a(:login_button, href: /Special:UserLogin/)
a(:login_watchlist, href:
'/wiki/Special:UserLogin?returnto=Main_Page&returntoquery=article_action%3Dwatch')
div(:main_page, id: 'mainpage')
@@ -37,4 +37,13 @@
div(:watch_note, text: 'Added San Francisco Chronicle to your watchlist')
div(:watch_note_removed, text: 'Removed San Francisco Chronicle from your
watchlist')
a(:watched_link, class: 'watch-this-article watched')
+ a(:create_account, class: 'mw-mf-create-account')
+ button(:language_button, text: 'Read in another language')
+ li(:edit_icon, id:'ca-edit')
+ li(:upload_icon, id:'ca-upload')
+ div(:fe_notification, class:'drawer position-fixed visible')
+ div(:rl_notification, id:'notifications')
+ a(:edit_history_link, id:'mw-mf-last-modified')
+ a(:notification_button, id:'user-button')
+ a(:edit_icon_enabled, text:'Edit')
end
diff --git a/tests/acceptance/features/support/pages/language_page.rb
b/tests/acceptance/features/support/pages/language_page.rb
new file mode 100644
index 0000000..023a5c3
--- /dev/null
+++ b/tests/acceptance/features/support/pages/language_page.rb
@@ -0,0 +1,7 @@
+class LanguagePage
+ include PageObject
+
+ text_field(:search_box_placeholder, placeholder:'Search language')
+ p(:number_languages, text:'This page is available in 42 languages')
+ a(:language_search_results, lang:'es')
+end
\ No newline at end of file
diff --git a/tests/acceptance/features/support/pages/login_page.rb
b/tests/acceptance/features/support/pages/login_page.rb
index 583752a..64f1c9a 100644
--- a/tests/acceptance/features/support/pages/login_page.rb
+++ b/tests/acceptance/features/support/pages/login_page.rb
@@ -7,10 +7,13 @@
div(:feedback, class: 'errorbox')
button(:login, id: 'wpLoginAttempt')
text_field(:password, id: 'wpPassword1')
+ text_field(:signup_password, id:'wpPassword2')
+ text_field(:confirm_password, id:'wpRetype')
a(:phishing, text: 'phishing')
a(:password_strength, text: 'password strength')
text_field(:username, id: 'wpName1')
a(:login_wl, class: 'button')
+ button(:signup_submit, id:'wpCreateaccount')
def logged_in_as_element
@browser.div(id: 'mw-content-text').p.b
diff --git a/tests/acceptance/features/support/pages/notification_page.rb
b/tests/acceptance/features/support/pages/notification_page.rb
new file mode 100644
index 0000000..5d862a3
--- /dev/null
+++ b/tests/acceptance/features/support/pages/notification_page.rb
@@ -0,0 +1,9 @@
+class NotificationPage
+ include PageObject
+
+ div(:content, id:'content')
+ a(:content) do |page|
+ page.content_element.p.a
+ end
+ #a(:return_to_main_link, text:'Return to Main Page')
+end
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/81179
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icb2fc6e8ec9f22609dbc71ddeaadf65cacb1735b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Mgrover <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits