http://www.mediawiki.org/wiki/Special:Code/MediaWiki/70258

Revision: 70258
Author:   mglaser
Date:     2010-08-01 08:02:30 +0000 (Sun, 01 Aug 2010)

Log Message:
-----------
changed selenium tests in order to work with the new architecture of the 
selenium framework

Modified Paths:
--------------
    trunk/extensions/PagedTiffHandler/PagedTiffHandler.php

Added Paths:
-----------
    trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestCases.php
    trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php

Modified: trunk/extensions/PagedTiffHandler/PagedTiffHandler.php
===================================================================
--- trunk/extensions/PagedTiffHandler/PagedTiffHandler.php      2010-08-01 
06:57:29 UTC (rev 70257)
+++ trunk/extensions/PagedTiffHandler/PagedTiffHandler.php      2010-08-01 
08:02:30 UTC (rev 70258)
@@ -102,6 +102,8 @@
 $wgAutoloadClasses['PagedTiffImage'] = $dir . 'PagedTiffHandler.image.php';
 $wgAutoloadClasses['PagedTiffHandler'] = $dir . 'PagedTiffHandler_body.php';
 $wgAutoloadClasses['TiffReader'] = $dir . 'TiffReader.php';
+$wgAutoloadClasses['PagedTiffHandlerSeleniumTestSuite'] = $dir . 
'selenium/PagedTiffHandlerTestSuite.php';
+
 $wgMediaHandlers['image/tiff'] = 'PagedTiffHandler';
 $wgHooks['UploadVerification'][] = 'PagedTiffHandler::check';
 $wgHooks['LanguageGetMagic'][] = 'PagedTiffHandler::addTiffLossyMagicWordLang';

Added: trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestCases.php
===================================================================
--- trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestCases.php    
                        (rev 0)
+++ trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestCases.php    
2010-08-01 08:02:30 UTC (rev 70258)
@@ -0,0 +1,307 @@
+<?php
+
+class SeleniumCheckPrerequisites extends SeleniumTestCase {
+       public $name = 'Check prerequisites';
+       private $prerequisiteError = null;
+       public function runTest() {
+
+               // check whether Multipage.tiff is already uploaded
+               $this->open( Selenium::getBaseUrl() .
+                       '/index.php?title=Image:Multipage.tiff' );
+
+               $source = $this->getAttribute( 
"//d...@id='bodyContent']//u...@id" );
+               if ( $source != 'filetoc' ) {
+                       $this->prerequisiteError = 'Image:Multipage.tiff must 
exist.';
+               }
+
+               // Check for language
+               $this->open( Selenium::getBaseUrl() .
+                       
'/api.php?action=query&meta=userinfo&uiprop=options&format=xml');
+
+               $lang = $this->getAttribute( "//options/@language" );
+               if ( $lang != 'en' ) {
+                       $this->prerequisiteError =
+                               'interface language must be set to' .
+                               ' English (en), but was '.$lang.'.';
+               }
+       }
+
+       public function tearDown() {
+               if ( $this->prerequisiteError ) {
+                       $this->selenium->stop();
+                       die( 'failed: ' . $this->prerequisiteError . "\n" );
+               }
+       }
+}
+
+class SeleniumUploadTiffTest extends SeleniumTestCase {
+       public function uploadFile( $filename ) {
+
+               $this->open( Selenium::getBaseUrl() .
+                       '/index.php?title=Special:Upload' );
+               $this->type( 'wpUploadFile', dirname( __FILE__ ) .
+                       "\\testImages\\" . $filename );
+               $this->check( 'wpIgnoreWarning' );
+               $this->click( 'wpUpload' );
+               $this->waitForPageToLoad( 30000 );
+       }
+
+       public function assertUploaded( $filename ) {
+               $this->assertSeleniumHTMLContains(
+                       '//h...@class="firstHeading"]', ucfirst( $filename ) );
+       }
+
+       public function assertErrorMsg( $msg ) {
+               $this->assertSeleniumHTMLContains(
+                       '//d...@id="bodyContent"]//sp...@class="error"]', $msg 
);
+       }
+
+}
+
+class SeleniumUploadWorkingTiffTest extends SeleniumUploadTiffTest {
+       public $name = 'Upload working Tiff: ';
+       private $filename;
+
+       public function __construct( $filename ) {
+               parent::__construct();
+               $this->filename = $filename;
+               $this->name .= $filename;
+       }
+
+       public function runTest() {
+               $this->uploadFile( $this->filename );
+               $this->assertUploaded( str_replace( '_', ' ', $this->filename ) 
);
+       }
+}
+
+class SeleniumUploadBrokenTiffTest extends SeleniumUploadTiffTest {
+       public $name = 'Upload broken Tiff: ';
+       private $filename;
+       private $errorMsg;
+
+       public function __construct( $filename, $errorMsg ) {
+               parent::__construct();
+               $this->filename = $filename;
+               $this->name .= $filename;
+               $this->errorMsg = $errorMsg;
+       }
+
+       public function runTest() {
+               $this->uploadFile( $this->filename );
+               $this->assertErrorMsg( $this->errorMsg );
+       }
+}
+
+class SeleniumDeleteTiffTest extends SeleniumTestCase {
+       public $name = 'Delete Tiff: ';
+       private $filename;
+
+       public function __construct( $filename ) {
+               parent::__construct();
+               $this->filename = $filename;
+               $this->name .= $filename;
+       }
+
+       public function runTest() {
+               
+               $this->open( Selenium::getBaseUrl() . '/index.php?title=Image:'
+                       . ucfirst( $this->filename ) . '&action=delete' );
+               $this->type( 'wpReason', 'Remove test file' );
+               $this->click( 'mw-filedelete-submit' );
+               $this->waitForPageToLoad( 10000 );
+
+               // Todo: This message is localized
+               $this->assertSeleniumHTMLContains( '//d...@id="bodyContent"]/p',
+                       ucfirst( $this->filename ) . '.*has been deleted.' );
+       }
+
+}
+
+class SeleniumEmbedTiffTest extends SeleniumTestCase { 
//PHPUnit_Extensions_SeleniumTestCase
+
+       public function tearDown() {
+               
+               parent::tearDown();
+               // Clear EmbedTiffTest page for future tests
+               $this->open( Selenium::getBaseUrl() .
+                       '/index.php?title=EmbedTiffTest&action=edit' );
+               $this->type( 'wpTextbox1', '' );
+               $this->click( 'wpSave' );
+       }
+
+       public function preparePage( $text ) {
+               
+               $this->open( Selenium::getBaseUrl() .
+                       '/index.php?title=EmbedTiffTest&action=edit' );
+               $this->type( 'wpTextbox1', $text );
+               $this->click( 'wpSave' );
+               $this->waitForPageToLoad( 10000 );
+       }
+
+}
+
+class SeleniumTiffPageTest extends SeleniumTestCase {
+       public function tearDown() {
+               parent::tearDown();
+               // Clear EmbedTiffTest page for future tests
+               $this->open( Selenium::getBaseUrl() . '/index.php?title=Image:'
+                       . $this->image . '&action=edit' );
+               $this->type( 'wpTextbox1', '' );
+               $this->click( 'wpSave' );
+       }
+
+       public function prepareImagePage( $image, $text ) {
+               
+               $this->image = $image;
+               $this->open( Selenium::getBaseUrl() . '/index.php?title=Image:'
+                               . $image . '&action=edit' );
+               $this->type( 'wpTextbox1', $text );
+               $this->click( 'wpSave' );
+               $this->waitForPageToLoad( 10000 );
+
+       }
+}
+
+class SeleniumDisplayInCategoryTest extends SeleniumTiffPageTest {
+       public $name = 'Display in category';
+
+       public function runTest() {
+               $this->prepareImagePage( 'Multipage.tiff',
+                                       "[[Category:Wiki]]\n" );
+
+               
+               $this->open( Selenium::getBaseUrl() . 
'/index.php?title=Category:Wiki' );
+
+               // Ergebnis chekcen
+               $source = $this->getAttribute(
+                       
"//d...@class='gallerybox']//a...@class='image']//i...@src" );
+               $correct = strstr( $source, "-page1-" );
+               $this->assertEquals( $correct, true );
+       }
+}
+
+class SeleniumDisplayInGalleryTest extends SeleniumEmbedTiffTest {
+       public $name = 'Display in gallery';
+
+       public function runTest() {
+               $this->preparePage( 
"<gallery>\nImage:Multipage.tiff\n</gallery>\n" );
+
+               //
+               //$this->open( Selenium::getBaseUrl() . 
'/index.php?title=GalleryTest' );
+
+               // Ergebnis chekcen
+               //$source = $this->getAttribute(
+                       
//"//d...@class='gallerybox']//a...@title='Multipage.tiff']//i...@src" );
+               $source = $this->getAttribute(
+                       
"//d...@class='gallerybox']//a...@class='image']//i...@src" );
+               $correct = strstr( $source, "-page1-" );
+               $this->assertEquals( $correct, true );
+
+       }
+}
+
+class SeleniumEmbedTiffInclusionTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff Images';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '768' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '1024' );
+       }
+}
+
+class SeleniumEmbedTiffThumbRatioTest extends SeleniumEmbedTiffTest {
+       public $name = "Include Tiff Thumbnail Aspect Ratio";
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|200px]]\n" );
+               //$this->selenium->type( 'wpTextbox1',
+               //      "[[Image:Pc260001.tif|thumb]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '150' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '200' );
+       }
+}
+
+class SeleniumEmbedTiffBoxFitTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff Box Fit';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|200x75px]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '75' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '100' );
+       }
+}
+
+class SeleniumEmbedTiffPage2InclusionTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff Images: Page 2';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|page=2]]\n" );
+               //$this->selenium->type( 'wpTextbox1', 
"[[Image:Pc260001.tif|thumb]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '564' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '640' );
+       }
+}
+
+class SeleniumEmbedTiffPage2ThumbRatioTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff Thumbnail Aspect Ratio: Page 2';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|320px|page=2]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '282' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '320' );
+       }
+}
+
+class SeleniumEmbedTiffPage2BoxFitTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff Box Fit: Page 2';
+
+       public function runTest() {
+               $this->preparePage( 
"[[Image:Multipage.tiff|200x108px|page=2]]\n" );
+
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@height", '108' );
+               $this->assertSeleniumAttributeEquals(
+                       "//d...@id='bodyContent']//i...@width", '123' );
+       }
+}
+
+class SeleniumEmbedTiffNegativePageParameterTest extends SeleniumEmbedTiffTest 
{
+       public $name = 'Include Tiff: negative page parameter';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|page=-1]]\n" );
+
+               $source = $this->getAttribute( 
"//d...@id='bodyContent']//i...@src" );
+               $correct = strstr( $source, "-page1-" );
+               $this->assertEquals( $correct, true );
+       }
+}
+
+class SeleniumEmbedTiffPageParameterTooHighTest extends SeleniumEmbedTiffTest {
+       public $name = 'Include Tiff: too high page parameter';
+
+       public function runTest() {
+               $this->preparePage( "[[Image:Multipage.tiff|page=8]]\n" );
+
+               $source = $this->getAttribute( 
"//d...@id='bodyContent']//i...@src" );
+               $correct = strstr( $source, "-page7-" );
+               $this->assertEquals( $correct, true );
+       }
+}
+


Property changes on: 
trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestCases.php
___________________________________________________________________
Added: svn:keywords
   + LastChangedDate LastChangedBy Revision Id

Added: trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php
===================================================================
--- trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php    
                        (rev 0)
+++ trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php    
2010-08-01 08:02:30 UTC (rev 70258)
@@ -0,0 +1,162 @@
+<?php
+/**
+ * To get this working you must
+ * - set a valid path to PEAR
+ * - check upload size in php.ini: Multipage.tiff needs at least 3M
+ * - Either upload multipage.tiff when PagedTiffHandler is active or
+ * - -  set $egSeleniumTiffTestUploads = true.
+ * - if $wgSeleniumTiffTestsUploads = true, please remember to obtain
+ * - - all missing test images. See
+ * - - testImages/SOURCES.txt for further information
+ * - set the locale to English
+ */
+
+require_once(dirname( __FILE__ ) . '/PagedTiffHandlerTestCases.php');
+
+class PagedTiffHandlerSeleniumTestSuite extends SeleniumTestSuite {
+
+       public $egSeleniumTiffTestUploads = false;
+       public $egSeleniumTiffTestCheckPrerequistes = true;
+
+       public function __construct( $name = 'PagedTiffHandler Test Suite') {
+               parent::__construct( $name );
+       }
+
+       public function addTests() {
+               if ( $this->egSeleniumTiffTestCheckPrerequistes ) {
+                       parent::addTest( new SeleniumCheckPrerequisites() );
+               }
+
+               if ( $this->egSeleniumTiffTestUploads ) {
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'caspian.tif',
+                               'The uploaded file contains errors.' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'cramps.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'cramps-tile.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'dscf0013.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'fax2d.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'g3test.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'Jello.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'jim___ah.tif',
+                               'The reported file size does not match' .
+                               ' the actual file size.' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'jim___cg.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'jim___dg.tif', 'The reported file size does' .
+                               ' not match the actual file size.' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'jim___gg.tif', 'The reported file size does' .
+                               ' not match the actual file size.' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'ladoga.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'off_l16.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'off_luv24.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'off_luv24.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'oxford.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'pc260001.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'quad-jpeg.tif', 'The uploaded file could not' .
+                               ' be processed. ImageMagick is not available.' 
) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'quad-lzw.tif' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'quad-tile.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'smallliz.tif', 'The uploaded file could not' .
+                               ' be processed. ImageMagick is not available.' 
) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'strike.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'text.tif', 'The uploaded file contains 
errors.' ) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'ycbcr-cat.tif' ) );
+                       parent::addTest( new SeleniumUploadBrokenTiffTest(
+                               'zackthecat.tif', 'The uploaded file could not' 
.
+                               ' be processed. ImageMagick is not available.' 
) );
+                       parent::addTest( new SeleniumUploadWorkingTiffTest(
+                               'multipage.tiff' ) );
+               }
+               //parent::addTest( new SeleniumUploadWorkingTiffTest( 
'multipage.tiff' ) );
+
+               parent::addTest( new SeleniumEmbedTiffInclusionTest() );
+               parent::addTest( new SeleniumEmbedTiffThumbRatioTest() );
+               parent::addTest( new SeleniumEmbedTiffBoxFitTest() );
+
+               parent::addTest( new SeleniumEmbedTiffPage2InclusionTest() );
+               parent::addTest( new SeleniumEmbedTiffPage2ThumbRatioTest() );
+               parent::addTest( new SeleniumEmbedTiffPage2BoxFitTest() );
+
+               parent::addTest( new 
SeleniumEmbedTiffNegativePageParameterTest() );
+               parent::addTest( new 
SeleniumEmbedTiffPageParameterTooHighTest() );
+
+               parent::addTest( new SeleniumDisplayInCategoryTest() );
+               parent::addTest( new SeleniumDisplayInGalleryTest() );
+
+               if ( $this->egSeleniumTiffTestUploads ) {
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'cramps.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'cramps-tile.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'dscf0013.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'fax2d.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'g3test.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'Jello.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'jim___ah.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'jim___cg.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'jim___dg.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'jim___gg.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'ladoga.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'off_l16.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'off_luv24.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'off_luv24.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'oxford.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'pc260001.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'quad-jpeg.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'quad-lzw.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'quad-tile.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'smallliz.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'strike.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'text.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'ycbcr-cat.tif' ) );
+                       //parent::addTest( new SeleniumDeleteTiffTest(
+                               //'zackthecat.tif' ) );
+                       parent::addTest( new SeleniumDeleteTiffTest(
+                               'multipage.tiff' ) );
+               }
+       }
+}
+


Property changes on: 
trunk/extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php
___________________________________________________________________
Added: svn:keywords
   + LastChangedDate LastChangedBy Revision Id



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to