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