From OrganicDesign Wiki
<?php
/**
* Selenium extension
*
* See http://www.mediawiki.org/Extension:Selenium for installation and usage details
* See http://www.organicdesign.co.nz/Extension_talk:Selenium.php for development notes and disucssion
*
* @package MediaWiki
* @subpackage Extensions
* @author Marcus Davy [http://www.organicdesign.co.nz/User:Sven User:Sven]
* @copyright © 2007 Marcus Davy
* @licence GNU General Public Licence 2.0 or later
*/
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('SELENIUM_VERSION', '0.8.1, 2008-08-27');
$dir = dirname(__FILE__);
$egSeleniumPath = preg_replace("|^.+(?=[/\\\\]extensions)|", $wgScriptPath, $dir)."/selenium-core";
$egResultsUrlPath = "../../tmp/results.php";
$egSeleniumCategory = "Selenium test suites"; # Category that selenium tests will automatically be categorised in
$egSeleniumTag = 'selenium'; # Name of tags to wrap selenium tests in
$egSeleniumSchdeule = array(); # Times, tests and domains, see http://www.mediawiki.org/wiki/Extension:Selenium
$egSeleniumLog = "MediaWiki:Selenium log"; # Article that scheduled test runs should be logged to
$wgSpecialPages['Selenium'] = 'SpecialSelenium';
$wgAutoloadClasses['SpecialSelenium'] = "$dir/SpecialSelenium.php";
$wgAutoloadClasses['Selenium'] = "$dir/Selenium.class.php";
$wgExtensionFunctions[] = 'efSetupSelenium';
$wgHooks['LanguageGetMagic'][] = 'efSeleniumLanguageGetMagic';
$wgExtensionCredits['specialpage'][] = array(
'name' => 'Selenium',
'author' => "[http://www.organicdesign.co.nz/User:Sven Sven], [http://www.organicdesign.co.nz/User:Nad Nad]",
'description' => "Incorporating [http://selenium-core.openqa.org Selenium tests] into the MediaWiki environment",
'url' => "http://www.mediawiki.org/wiki/Extension:Selenium",
'version' => SELENIUM_VERSION
);
function efSetupSelenium() {
global $wgRequest, $wgOut, $egSelenium, $wgLanguageCode, $wgMessageCache;
# If requesting a suite or inidividual test, then output will be raw
if ($wgRequest->getText('suite')) {
$wgOut->disable();
wfResetOutputBuffers();
}
# Add the messages used by the specialpage
if ($wgLanguageCode == 'en') {
$wgMessageCache->addMessages(array(
'selenium' => "Selenium test management",
'selenium-run' => "Run test manually",
'selenium-last' => "Last log entry",
'selenium-schedule' => "Run suite on these domains daily at $1",
'selenium-create' => "Create new tests",
'selenium-createinfo' => "Use the [$1 Selenium IDE] environrment to create new tests.",
'selenium-loginfo' => "Information from tests run on schedule is logged in [[$1]]."
));
}
# Add specialpage and create an instance of the class
SpecialPage::addPage(new SpecialSelenium());
$egSelenium = new Selenium();
}
/**
* Needed in MediaWiki >1.8.0 for magic word hooks to work properly
*/
function efSeleniumLanguageGetMagic(&$magicWords, $langCode = 0) {
global $egSeleniumMagic;
$magicWords[$egSeleniumMagic] = array($langCode, $egSeleniumMagic);
return true;
}