https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113917
Revision: 113917
Author: yonishostak
Date: 2012-03-15 14:22:56 +0000 (Thu, 15 Mar 2012)
Log Message:
-----------
AFTv5: added first batch of selenium tests for the feedback page
Added Paths:
-----------
trunk/extensions/ArticleFeedbackv5/tests/
trunk/extensions/ArticleFeedbackv5/tests/Selenium/
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/000_prerequisite_login_hider.testcase
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/010_load_feedback_page.testcase
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/015_voting.testcase
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/020_flag_abuse.testcase
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/feedback_page.testsuite
trunk/extensions/ArticleFeedbackv5/tests/Selenium/README.txt
trunk/extensions/ArticleFeedbackv5/tests/Selenium/testdata.xml
Added:
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/000_prerequisite_login_hider.testcase
===================================================================
---
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/000_prerequisite_login_hider.testcase
(rev 0)
+++
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/000_prerequisite_login_hider.testcase
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base"
href="http://localhost/~yoni/mediawiki/index.php/Special:ArticleFeedbackv5/Test"
/>
+<title>Prerequisite: login as hider</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Prerequisite: login as hider</td></tr>
+</thead><tbody>
+<tr>
+ <td>forXml</td>
+ <td>../testdata.xml</td>
+ <td></td>
+</tr>
+<tr>
+ <td>store</td>
+ <td>${value}</td>
+ <td>${key}</td>
+</tr>
+<tr>
+ <td>endForXml</td>
+ <td></td>
+ <td></td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>${baseUrl}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>deleteAllVisibleCookies</td>
+ <td></td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeEval</td>
+ <td>null != window.document.getElementById('pt-logout')</td>
+ <td>canLogOut</td>
+</tr>
+<tr>
+ <td>if</td>
+ <td>"false" != "${canLogOut}"</td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>xpath=//*[@id='pt-logout']/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>endIf</td>
+ <td></td>
+ <td></td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>xpath=//*[@id='pt-anonlogin']/a</td>
+ <td></td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>xpath=//input[@name='wpName']</td>
+ <td>${hiderUserName}</td>
+</tr>
+<tr>
+ <td>type</td>
+ <td>xpath=//input[@name='wpPassword']</td>
+ <td>${hiderUserPassword}</td>
+</tr>
+<tr>
+ <td>clickAndWait</td>
+ <td>id=wpLoginAttempt</td>
+ <td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
Added:
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/010_load_feedback_page.testcase
===================================================================
---
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/010_load_feedback_page.testcase
(rev 0)
+++
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/010_load_feedback_page.testcase
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base"
href="http://localhost/~yoni/mediawiki/index.php/Special:ArticleFeedbackv5/Test"
/>
+<title>Load feedback page</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">Load feedback page</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>${baseUrl}/Special:ArticleFeedbackv5/${testArticle}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertElementPresent</td>
+ <td>xpath=//*[@id='articleFeedbackv5-show-feedback']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+
<td>xpath=//*[@id='articleFeedbackv5-show-feedback']/div[@class='articleFeedbackv5-feedback']</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeAttribute</td>
+ <td>xpath=//*[@class='articleFeedbackv5-feedback']/@rel</td>
+ <td>firstPostId</td>
+</tr>
+<tr>
+ <td>getEval</td>
+ <td>LOG.info("${firstPostId}")</td>
+ <td></td>
+</tr>
+</tbody></table>
+</body>
+</html>
Added:
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/015_voting.testcase
===================================================================
---
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/015_voting.testcase
(rev 0)
+++
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/015_voting.testcase
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base"
href="http://localhost/~yoni/mediawiki/index.php/Special:ArticleFeedbackv5/Test"
/>
+<title>015: Voting</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">015: Voting</td></tr>
+</thead><tbody>
+<!--Capture initial state-->
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>initVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>initHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>initUnhelpfulCount</td>
+</tr>
+<!--Vote helpful-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-helpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
!= '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-unhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<!--Vote unhelpful-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-unhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
!= '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newUnhelpfulCount} - ${initUnhelpfulCount}</td>
+ <td>1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-reverseunhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<!--Reverse unhelpul vote-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-reverseunhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
== '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newUnhelpfulCount} - ${initUnhelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-unhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<!--Vote unhelpful again-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-unhelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
!= '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newUnhelpfulCount} - ${initUnhelpfulCount}</td>
+ <td>1</td>
+</tr>
+<!--Vote helpful-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-helpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
!= '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newUnhelpfulCount} - ${initUnhelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>1</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-reversehelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<!--Reverse helpful-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-reversehelpful-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForCondition</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent
== '${initVotesText}'</td>
+ <td>10000</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent</td>
+ <td>newVotesText</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[0]</td>
+ <td>newHelpfulCount</td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-helpful-votes-${firstPostId}").textContent.split('
')[3]</td>
+ <td>newUnhelpfulCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newHelpfulCount} - ${initHelpfulCount}</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newUnhelpfulCount} - ${initUnhelpfulCount}</td>
+ <td>0</td>
+</tr>
+</tbody></table>
+</body>
+</html>
Added:
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/020_flag_abuse.testcase
===================================================================
---
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/020_flag_abuse.testcase
(rev 0)
+++
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/020_flag_abuse.testcase
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base"
href="http://localhost/~yoni/mediawiki/index.php/Special:ArticleFeedbackv5/Test"
/>
+<title>020: Flag as abuse</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">020: Flag as abuse</td></tr>
+</thead><tbody>
+<!--Flag as abuse-->
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-abuse-link-${firstPostId}").textContent.split("(")[1].substr(0,
1)</td>
+ <td>initAbuseCount</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-abuse-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-unabuse-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-unabuse-link-${firstPostId}").textContent.split("(")[1].substr(0,
1)</td>
+ <td>newAbuseCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newAbuseCount}-${initAbuseCount}</td>
+ <td>1</td>
+</tr>
+<!--Unflag as abuse-->
+<tr>
+ <td>click</td>
+ <td>id=articleFeedbackv5-unabuse-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>id=articleFeedbackv5-abuse-link-${firstPostId}</td>
+ <td></td>
+</tr>
+<tr>
+ <td>storeEval</td>
+
<td>window.document.getElementById("articleFeedbackv5-abuse-link-${firstPostId}").textContent.split("(")[1].substr(0,
1)</td>
+ <td>newAbuseCount</td>
+</tr>
+<tr>
+ <td>assertEval</td>
+ <td>${newAbuseCount}-${initAbuseCount}</td>
+ <td>0</td>
+</tr>
+</tbody></table>
+</body>
+</html>
Added:
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/feedback_page.testsuite
===================================================================
---
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/feedback_page.testsuite
(rev 0)
+++
trunk/extensions/ArticleFeedbackv5/tests/Selenium/FeedbackPage/feedback_page.testsuite
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Feedback page</title>
+</head>
+<body>
+<table id="suiteTable" cellpadding="1" cellspacing="1" border="1"
class="selenium"><tbody>
+<tr><td><b>Feedback page</b></td></tr>
+<tr><td><a
href="000_prerequisite_login_hider.testcase">000_prerequisite_login_hider</a></td></tr>
+<tr><td><a
href="010_load_feedback_page.testcase">010_load_feedback_page</a></td></tr>
+<tr><td><a href="015_voting.testcase">015_voting</a></td></tr>
+<tr><td><a href="020_flag_abuse.testcase">020_flag_abuse</a></td></tr>
+</tbody></table>
+</body>
+</html>
Added: trunk/extensions/ArticleFeedbackv5/tests/Selenium/README.txt
===================================================================
--- trunk/extensions/ArticleFeedbackv5/tests/Selenium/README.txt
(rev 0)
+++ trunk/extensions/ArticleFeedbackv5/tests/Selenium/README.txt
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,4 @@
+Required Selenium version: 1.6.0
+Required Selenium Extensions:
+ SEL-Blocks, v1.3
+
Added: trunk/extensions/ArticleFeedbackv5/tests/Selenium/testdata.xml
===================================================================
--- trunk/extensions/ArticleFeedbackv5/tests/Selenium/testdata.xml
(rev 0)
+++ trunk/extensions/ArticleFeedbackv5/tests/Selenium/testdata.xml
2012-03-15 14:22:56 UTC (rev 113917)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<testdata>
+ <vars key="baseUrl" value="http://localhost/~yoni/mediawiki/index.php"
/>
+ <vars key="testArticle" value="Test" />
+ <vars key="hiderUserName" value="Hider" />
+ <vars key="hiderUserPassword" value="123" />
+ <vars key="oversighterUserName" value="Yoni" />
+ <vars key="oversighterUserPassword" value="123" />
+</testdata>
\ No newline at end of file
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs