Difference between revisions of "Extension:Selenium.php"
m (rm closing delimiter) |
(Suite html generation) |
||
Line 73: | Line 73: | ||
# Properties | # Properties | ||
− | var $suiteTitle = 'Selenium suite'; | + | var $suiteTitle = 'Selenium suite'; # just sets the browser title |
var $testName = 'Selenium test'; | var $testName = 'Selenium test'; | ||
var $htmlSnippet = array( | var $htmlSnippet = array( | ||
Line 107: | Line 107: | ||
$article = new Article($paramTitle); | $article = new Article($paramTitle); | ||
$wikitext = $article->getContent(); | $wikitext = $article->getContent(); | ||
+ | |||
+ | # Tranclusion expanding braces | ||
+ | $wikitext = $wgParser->preprocess($wikitext,$paramTitle,new ParserOptions()); | ||
# Match sections | # Match sections | ||
Line 112: | Line 115: | ||
# Split wikitext on sections | # Split wikitext on sections | ||
$sections = preg_split('/^=+\\s*(.+?)\\s*=+$/ms', $wikitext); | $sections = preg_split('/^=+\\s*(.+?)\\s*=+$/ms', $wikitext); | ||
+ | # remove content above first header | ||
+ | array_shift($sections); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
# ---------------- DEBUG --------------- # | # ---------------- DEBUG --------------- # | ||
− | + | $suiteHtml = '<table cellpadding="1" cellspacing="1" border="1"><tbody> | |
− | + | <tr><td><b>Flouzo Test Suite</b></td></tr>'; | |
+ | |||
while (count($sectionNames[1])) { | while (count($sectionNames[1])) { | ||
− | $ | + | # 1.1 for each section |
− | print("M1: $ | + | |
− | + | $sName = array_shift($sectionNames[1]); | |
+ | $section = array_shift($sections); | ||
+ | # 1.2 determine if selenium tag is present | ||
+ | |||
+ | if(preg_match("|<selenium>.+?</selenium>|si", $section)) { | ||
+ | # 1.3 build output html | ||
+ | $suiteHtml .= "<tr><td><a href=\"/wiki/Special:Selenium/$param\">$sName</a></td></tr>"; | ||
+ | } | ||
+ | |||
+ | # print("M1: $sName<br />"); | ||
+ | # print("M2: $section<br />"); | ||
+ | # fwrite($fh, "\n$sName"); | ||
+ | # fwrite($fh, "\n$section"); | ||
} | } | ||
+ | $suiteHtml .= "</table>"; | ||
+ | $fh = fopen("/tmp/MWdump",'w'); | ||
+ | |||
+ | fwrite($fh, "Suite:\n$suiteHtml"); | ||
# ---------------- DEBUG --------------- # | # ---------------- DEBUG --------------- # | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
} else { | } else { | ||
# B) Render Special:Selenium form | # B) Render Special:Selenium form |
Revision as of 10:57, 13 December 2007
<?php
- Extension:Selenium Template:Php
- Category:SeleniumCategory:Extensions created with Template:SpecialPage
- - Licenced under LGPL http://www.gnu.org/copyleft/lesser.html
- - Author: http://www.organicdesign.co.nz/User:Sven
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('SELENIUM_VERSION','0.1.1, 2007-12-03 (selenium-core version 0.8.3');
$wgSeleniumTag = "selenium"; $wgExtensionFunctions[] = 'wfSetupSelenium'; $wgExtensionFunctions[] = 'wfSetupSpecialSelenium'; $wgHooks['LanguageGetMagic'][] = 'wfSeleniumLanguageGetMagic';
$wgExtensionCredits['specialpage'][] = array( 'name' => 'Special:Selenium', 'author' => 'User:Sven', 'description' => 'Incorporating Selenium tests into the MediaWiki environment', 'url' => 'http://www.mediawiki.org/wiki/Extension:Selenium', 'version' => SELENIUM_VERSION );
require_once "$IP/includes/SpecialPage.php";
class Selenium {
- Properties
var $prop1 = 'default value'; var $prop2 = 'default value';
- Constructor
function Selenium() { global $wgHooks,$wgParser,$wgSeleniumTag;
- Add the tagHook
$wgParser->setHook($wgSeleniumTag,array($this,'tagSelenium'));
}
- Deploy tags to allow additional html table tags
function tagSelenium($text,$argv,&$parser) {
- Want the selenium tag to strip out and ... enclosing tags
$text = eregi_replace('.+
- Constructor
function SpecialSelenium() {
SpecialPage::SpecialPage( 'Selenium', # name as seen in links etc 'sysop', # user rights required true, # listed in special:specialpages false, # function called by execute() - defaults to wfSpecial{$name} false, # file included by execute() - defaults to Special{$name}.php, only used if no function false # includable ); }
- -------------------- Create form for Special:Selenium --------------------
- Override SpecialPage::execute() $param is from the URL, eg Special:Selenium/param
function execute($param) { global $wgOut; global $wgParser;
if($param) {
- Note: Need to bypass $wgOut and render only Selenium html here
- Grab article $param and process contents
$paramTitle = Title::newFromText($param); $article = new Article($paramTitle); $wikitext = $article->getContent();
- Tranclusion expanding braces
$wikitext = $wgParser->preprocess($wikitext,$paramTitle,new ParserOptions());
- Match sections
preg_match_all('/^=+\\s*(.+?)\\s*=+$/m',$wikitext,$sectionNames);
- Split wikitext on sections
$sections = preg_split('/^=+\\s*(.+?)\\s*=+$/ms', $wikitext); # remove content above first header array_shift($sections);
- ---------------- DEBUG --------------- #
$suiteHtml = '
<tbody> ';while (count($sectionNames[1])) {
- 1.1 for each section
$sName = array_shift($sectionNames[1]); $section = array_shift($sections);
- 1.2 determine if selenium tag is present
if(preg_match("|<selenium>.+?</selenium>|si", $section)) {
- 1.3 build output html
}
- print("M1: $sName
"); - print("M2: $section
"); - fwrite($fh, "\n$sName");
- fwrite($fh, "\n$section");
}
$suiteHtml .= "Flouzo Test Suite |
<a href=\"/wiki/Special:Selenium/$param\">$sName</a> |
";
$fh = fopen("/tmp/MWdump",'w');
fwrite($fh, "Suite:\n$suiteHtml");
- ---------------- DEBUG --------------- #
} else {
- B) Render Special:Selenium form
$this->setHeaders(); $title = Title::makeTitle(NS_SPECIAL,'Selenium');
$wgOut->addWikiText(wfMsg('example-message','exampleParameter')); $wgOut->addHTML( wfElement('form',array('action' => $title->getLocalURL('action=submit'),'method' => 'post'),null) . '<textarea name="target" cols=25 rows=10></textarea>' . wfElement('input',array('type' => 'submit')) . '</form>' ); } }
- 3) -- Create rendering on the fly of a test article to the suite html code -- #
- 4) ---------------- Some sort of validation of article ---------------------- #
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupSpecialSelenium() { global $wgLanguageCode,$wgMessageCache;
- Add the messages used by the specialpage
if ($wgLanguageCode == 'en') { $wgMessageCache->addMessages(array( 'selenium' => 'Example Specialpage', # The friendly page title 'exampleMessage' => "Example message: $1", )); }
- Add the specialpage to the environment
SpecialPage::addPage(new SpecialSelenium()); }