summaryrefslogtreecommitdiff
path: root/tests/selenium/SeleniumTestCase.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/selenium/SeleniumTestCase.php')
-rw-r--r--tests/selenium/SeleniumTestCase.php127
1 files changed, 127 insertions, 0 deletions
diff --git a/tests/selenium/SeleniumTestCase.php b/tests/selenium/SeleniumTestCase.php
new file mode 100644
index 00000000..5346b1be
--- /dev/null
+++ b/tests/selenium/SeleniumTestCase.php
@@ -0,0 +1,127 @@
+<?php
+include( "SeleniumTestConstants.php" );
+
+class SeleniumTestCase extends PHPUnit_Framework_TestCase { // PHPUnit_Extensions_SeleniumTestCase
+ protected $selenium;
+
+ public function setUp() {
+ set_time_limit( 60 );
+ $this->selenium = Selenium::getInstance();
+ }
+
+ public function tearDown() {
+
+ }
+
+ public function __call( $method, $args ) {
+ return call_user_func_array( array( $this->selenium, $method ), $args );
+ }
+
+ public function assertSeleniumAttributeEquals( $attribute, $value ) {
+ $attr = $this->getAttribute( $attribute );
+ $this->assertEquals( $attr, $value );
+ }
+
+ public function assertSeleniumHTMLContains( $element, $text ) {
+ $innerHTML = $this->getText( $element );
+ // or assertContains
+ $this->assertRegExp( "/$text/", $innerHTML );
+ }
+
+
+ /**
+ * Create a test fixture page if one does not exist
+ * @param $pageName The fixture page name. If none is supplied, it uses SeleniumTestConstants::WIKI_INTERNAL_LINK
+ */
+ function createTestPageIfMissing( $pageName = null ) {
+ if ( $pageName == null ) {
+ $pageName = SeleniumTestConstants::WIKI_INTERNAL_LINK;
+ }
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ if ( strpos( $location, '&redlink=1' ) !== false ) {
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ }
+ }
+
+ /**
+ * Create a test page using date as part of the name so that it is unique
+ * @param $pagePrefix The prefix to use for the page name. The current date will be appended to this to make it unique
+ * @param $watchThis Whether to add the page to my watchlist. Defaults to false.
+ */
+ function createNewTestPage( $pagePrefix, $watchThis = false ) {
+ $pageName = $pagePrefix . date( "Ymd-His" );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ $this->assertContains( '&redlink=1', $location ) .
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ if ( $watchThis ) {
+ $this->click( "wpWatchthis" );
+ }
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ return $pageName;
+ }
+
+ public function getExistingPage() {
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( "searchInput", "new" );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( "30000" );
+ }
+
+ public function getNewPage( $pageName ) {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( "searchInput", $pageName );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( "30000" );
+ $this->click( "link=" . $pageName );
+ $this->waitForPageToLoad( "600000" );
+
+
+ }
+
+ // Loading the mediawiki editor
+ public function loadWikiEditor() {
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ }
+
+ // Clear the content of the mediawiki editor
+ public function clearWikiEditor() {
+ $this->type( "wpTextbox1", "" );
+ }
+
+ // Click on the 'Show preview' button of the mediawiki editor
+ public function clickShowPreviewBtn() {
+ $this->click( "wpPreview" );
+ }
+
+ // Click on the 'Save Page' button of the mediawiki editor
+ public function clickSavePageBtn() {
+ $this->click( "wpSave" );
+ }
+
+ // Click on the 'Edit' link
+ public function clickEditLink() {
+ $this->click( "link=Edit" );
+ $this->waitForPageToLoad( "30000" );
+ }
+}