From 7c65b2f40ea9242260eac5a746863f5925423861 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sun, 22 Sep 2013 22:39:41 +0200 Subject: Phing: added target for phpunit+selenium Functional tests were using an old selenium RC version. Ported them to use phpunit + selenium; next: opensauce --- tests/test_tools/selenium/php/TestRunner.php | 162 ------- tests/test_tools/selenium/php/TestSuiteHeader.php | 54 --- tests/test_tools/selenium/php/results.php | 160 ------- tests/test_tools/selenium/php/selenium.php | 555 ---------------------- 4 files changed, 931 deletions(-) delete mode 100644 tests/test_tools/selenium/php/TestRunner.php delete mode 100644 tests/test_tools/selenium/php/TestSuiteHeader.php delete mode 100644 tests/test_tools/selenium/php/results.php delete mode 100644 tests/test_tools/selenium/php/selenium.php (limited to 'tests/test_tools/selenium/php') diff --git a/tests/test_tools/selenium/php/TestRunner.php b/tests/test_tools/selenium/php/TestRunner.php deleted file mode 100644 index ec2e32d3..00000000 --- a/tests/test_tools/selenium/php/TestRunner.php +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - Selenium Functional Test Runner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - -
-

Selenium TestRunner -

-
-
- Execute Tests - -
Fast
-
Slow
-
-
-
 
-
 
-
- -
- - - - -
- -
- - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Elapsed:00.00
TestsCommands
0run0passed
0failed0failed
0incomplete
-
-
- -
- - - diff --git a/tests/test_tools/selenium/php/TestSuiteHeader.php b/tests/test_tools/selenium/php/TestSuiteHeader.php deleted file mode 100644 index d253740c..00000000 --- a/tests/test_tools/selenium/php/TestSuiteHeader.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - -Test Suite - - - - - - - - - diff --git a/tests/test_tools/selenium/php/results.php b/tests/test_tools/selenium/php/results.php deleted file mode 100644 index 77dab43b..00000000 --- a/tests/test_tools/selenium/php/results.php +++ /dev/null @@ -1,160 +0,0 @@ -parse_data(); - $this->browser = $_SERVER['HTTP_USER_AGENT']; - $this->date = time(); - } - - protected function parse_data() - { - $this->result = $_POST['result']; // failed || passed - $this->totalTime = $_POST['totalTime']; - $this->numTestPasses = $_POST['numTestPasses']; - $this->numTestFailures = $_POST['numTestFailures']; - $this->numCommandPasses = $_POST['numCommandPasses']; - $this->numCommandFailures = $_POST['numCommandFailures']; - $this->numCommandErrors = $_POST['numCommandErrors']; - - foreach($_POST['tests'] as $test) - { - $case = new SeleniumTestCaseResult(); - $case->name = $test['testcase']; - $case->commands = $test['commands']; - for($i = 0; $i < count($case->commands); $i++) - { - //$trace = $case->commands[$i]['trace']; - //$trace = html_entity_decode($trace); - //$case->commands[$i]['trace'] = @unserialize($trace); - if($case->commands[$i]['result'] == 'failed') - { - $case->result = 'failed'; - array_push($case->failures, $case->commands[$i]); - } - } - - $this->suites[$case->name] = $case; - } - - } -} - -class SeleniumHtmlReporter -{ - protected $test; - - public function __construct($result) - { - $this->test = $result; - } - - protected function renderHeader() - { - $contents = << - -Functional Test Results - - - - -EOD; - return $contents; - } - - public function render() - { - echo $this->renderHeader(); - echo $this->renderBody(); - echo $this->renderFooter(); - } - - protected function renderBody() - { - /* SeleniumTestResult */ - $test = $this->test; - $total = count($test->suites); - $date = @strftime('%Y-%m-%d %H:%M',$test->date); -$contents = <<Functional Test Results -
- {$total} test cases completed, - {$test->numTestPasses} passes - ({$test->numCommandPasses} commands), and - {$test->numTestFailures} fails - ({$test->numCommandErrors} commands). -
-
- {$date}, {$test->browser} -
-EOD; - $count = 1; - foreach($test->suites as $suite) - { - foreach($suite->failures as $error) - $contents .= $this->getErrorMsg($suite, $error, $count++); - } - - return $contents; - } - - - protected function getErrorMsg($suite, $info, $count) - { - $parity = $count%2==0 ? 'even' : 'odd'; - $command = explode("|",$info['command']); -$msg = << - #{$count}. - "{$info['msg']}" in - - {$suite->name}::{$command[1]}('{$command[2]}'); - - -EOD; - - return $msg; - } - - protected function renderFooter() - { - return ""; - } -} - - -?> \ No newline at end of file diff --git a/tests/test_tools/selenium/php/selenium.php b/tests/test_tools/selenium/php/selenium.php deleted file mode 100644 index 8eddd6cb..00000000 --- a/tests/test_tools/selenium/php/selenium.php +++ /dev/null @@ -1,555 +0,0 @@ - - * @version $Id: selenium.php 1771 2007-03-26 00:27:59Z xue $ - * @package Prado.tests - */ - -/** - * Selenium automatic client runner, - * - * @author Wei Zhuo - * @version $Id: selenium.php 1771 2007-03-26 00:27:59Z xue $ - * @package Prado.tests - */ - -require_once(dirname(__FILE__).'/results.php'); - -class SeleniumTestRunner -{ - protected $driver; - protected $base_dir = ''; - - public function __construct($driver=null, $base_dir='../javascript/') - { - if(is_null($driver) && !(php_sapi_name() == 'cli')) - $driver = $_SERVER['SCRIPT_NAME']; - $this->driver = $driver; - $this->base_dir = $base_dir; - } - - public function render() - { - if((php_sapi_name() == 'cli')) return; - $file = dirname(__FILE__).'/TestRunner.php'; - $driver = $this->driver; - - //$base_dir = $this->base_dir; - $base_dir = $driver.'?sr='; - include($file); - } - - public function getDriver() - { - return $this->driver; - } -} - -class SeleniumTestStorage -{ - protected $outputs = array(); - protected $tests = array(); - protected $options=array(); - - public function getTests() - { - return $this->tests; - } - - public function getOptions() - { - return $this->options; - } - - public function addOption($test_name, $option) - { - $this->options[$test_name] = $option; - } - - public function addCommand($test_case_id, $command) - { - $data = array($test_case_id, $command); - array_push($this->outputs, $data); - } - - public function getCommand() - { - return array_shift($this->outputs); - } - - public function addTestCase($command, $trace_details, $test_name, $test_suite) - { - $data = array(0, 0, $command, "", $trace_details, $test_name, $test_suite); - array_push($this->tests, $data); - } -} - -class SeleneseInterpreter -{ - protected $storage; - protected $tracer; - - public function __construct($storage, $tracer) - { - $this->storage = $storage; - $this->tracer = $tracer; - } - - public function getTests() - { - return $this->storage->getTests(); - } - - public function getOptions() - { - return $this->storage->getOptions(); - } - - public function getCommand() - { - $command = $this->storage->getCommand(); - return empty($command) ? "|testComplete|||" : "{$command[1]}<{$command[0]}>"; - } - - public function __call($func, $args) - { - if($func{0} == '_') return; - - $trace = debug_backtrace(); - if($this->isTestOptionFunction($func,$args,$trace)) - return; - - $ID = isset($args[0]) ? $args[0] : ""; - $value = isset($args[1]) ? $args[1] : ""; - if(strpos(strtolower($func),'htmlpresent') || strpos(strtolower($func),'htmlnotpresent')) - $ID = htmlspecialchars($ID); - $command = array($func, $ID, $value); - - if(is_int(strpos(strtolower($func), 'visible'))) - $this->addCommand(array('pause','250',''),$trace); - - return $this->addCommand($command, $trace); - } - - protected function isTestOptionFunction($func,$args,$trace) - { - if(strtolower($func)==='skipcondition') - { - list($trace, $test, $suite) = $this->tracer->getTrace($trace); - $this->storage->addOption($test,$args[0]); - return true; - } - return false; - } - - protected function addCommand($command, $trace) - { - list($trace, $test, $suite) = $this->tracer->getTrace($trace); - $test_id = $this->storage->addTestCase($command, $trace, $test, $suite); - $this->storage->addCommand($test_id, $command); - } -} - -class SeleniumTestTrace -{ - protected $root; - - public function __construct($root) - { - $this->root = $root; - } - - public function getTrace($trace) - { - $group = array_pop($trace); - $info = $trace[3]; - $test = $group['args'][0]->getTestList(); - $i = count($test); - $name = $test[$i-2].'::'.$test[$i-1]; - $suite = $test[0]; - unset($info['object']); - /* - for($i = 0; $i < count($info['args']); $i++) - { - if($info['args'][$i] instanceof TControl) - $info['args'][$i] = $info['args'][$i]->ClientID; - }*/ - $file = str_replace($this->root, '', $info['file']); - $info['file'] = substr($file, 1); - return array($info, $name, $suite); - } -} - -class SimpleSeleniumProxyServer -{ - protected $runner; - protected $int; - protected $result_file; - - public function __construct($runner, $int, $result_file) - { - $this->int = $int; - $this->runner = $runner; - $this->result_file = $result_file; - } - - public function proxy() - { - return $this->int; - } - - - public static function getInstance($root='/', $result_file='results.dat', $base_dir='selenium/') - { - static $instance; - if(!isset($instance)) - { - $storage = new SeleniumTestStorage(); - $tracer = new SeleniumTestTrace($root); - $interpreter = new SeleneseInterpreter($storage, $tracer); - $runner = new SeleniumTestRunner(null, $base_dir); - $instance = new SimpleSeleniumProxyServer($runner, $interpreter, $result_file); - } - $instance->serveResults(); - return $instance; - } - - public function handleRequest() - { - $client = new SeleniumTestRunnerServer($this->int, $this->runner); - $client->serve(); - return true; - } - - public function serveResults() - { - if(isset($_POST['result'])) - { - $result = new SeleniumTestResult(); - $reporter = new SeleniumHtmlReporter($result); - $reporter->render(); - exit(); - } - } - -} - -class SeleniumTestSuiteWriter -{ - protected $suites; - protected $name; - protected $runner; - - function __construct($suites, $name, $runner) - { - $this->suites = $suites; - $this->name = $name; - $this->runner = $runner; - - } - - protected function renderHeader() - { - $base_dir = $this->runner->getDriver().'?sr='; - - include(dirname(__FILE__).'/TestSuiteHeader.php'); - - $contents = <<
-EOD; - echo $contents; - } - - public function render() - { - $this->renderHeader(); - foreach($this->suites as $name => $suite) - { - $file = $suite[0]['trace']['file']; - $file = strtr($file,'\\','/'); - $option = $suite[0]['option']===null?'':' unless="'.$suite[0]['option'].'" '; - $url = $this->runner->getDriver()."?case={$name}&file={$file}"; - echo "\n"; - echo "\n"; - echo "\n"; - } - echo $this->renderFooter(); - } - - protected function getJsTraceInfo() - { - $contents = "var prado_trace = {};\n"; - foreach($this->suites as $name => $suite) - { - $name = $name; - $contents .= "prado_trace['{$name}'] = ["; - $cases = array(); - foreach($suite as $testcase) - $cases[] = "'".addslashes(htmlspecialchars(serialize($testcase['trace'])))."'"; - $contents .= implode(",\n", $cases)."];\n\n"; - } - return $contents; - } - - protected function renderFooter() - { - $trace = '';//$this->getJsTraceInfo(); - $contents = << -
{$this->name}
{$name}
- -
- Not supported in this browser - - - - -
Skipped Tests
- - - -EOD; - return $contents; - } -} - -class SeleniumTestCaseWriter -{ - protected $case; - protected $tests; - - function __construct($case, $tests) - { - $this->case = $case; - $this->tests = $tests; - } - - protected function renderHeader() - { - $contents = << - - -{$this->case} - - - - - - - - -EOD; - return $contents; - } - - public function render() - { - echo $this->renderHeader(); - foreach($this->tests as $test) - { - $t = $test['test']; - if($t[0] == "open") - $t[1] = "{$t[1]}"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - } - echo $this->renderFooter(); - } - - protected function renderFooter() - { - $contents = << -
{$this->case}
{$t[0]}{$t[1]}{$t[2]}
- - -EOD; - return $contents; - } -} - -class SeleniumTestRunnerServer -{ - protected $cases = array(); - protected $trace = array(); - protected $name; - protected $runner; - - public function __construct($int, $runner) - { - $this->runner = $runner; - $this->initialize($int); - } - - protected function initialize($int) - { - $options = $int->getOptions(); - foreach($int->getTests() as $command) - { - $case = $command[5]; - $option=isset($options[$case])?$options[$case]:null; - $this->cases[$case][] = - array('test' => $command[2], - 'trace' => $command[4], 'option'=>$option); - if(is_null($this->name)) - $this->name = $command[6]; - } - } - - function serve() - { - if($this->isTestSuiteRequest()) - { - $testSuite = new SeleniumTestSuiteWriter($this->cases, - $this->name, $this->runner); - $testSuite->render(); - } - else if($this->isTestCaseRequest()) - { - if(($case = $this->getTestCaseRequest()) !== false) - { - - $testCase = new SeleniumTestCaseWriter($case, $this->getTestCase()); - $testCase->render(); - } - } - else - { - $this->runner->render(); - } - } - - protected function isTestSuiteRequest() - { - return isset($_GET['testSuites']); - } - - protected function isTestCaseRequest() - { - return isset($_GET['case']); - } - - public function isClientRequest() - { - return !$this->isTestSuiteRequest() && !$this->isTestCaseRequest(); - } - - protected function getTestCaseRequest() - { - $case = $_GET['case']; - if(isset($this->cases[$case])) - return $case; - else return false; - } - - protected function getTestCase() - { - $case = $_GET['case']; - if(isset($this->cases[$case])) - return $this->cases[$case]; - else - return array(); - } -} - - -class SeleniumTestCase extends UnitTestCase -{ - protected $selenium; - protected $Page; - - const KONQUEROR='browserVersion.isKonqueror'; - const OPERA='browserVersion.isOpera'; - const CHROME='browserVersion.isChrome'; - const INTERNET_EXPLORER='browserVersion.isIE'; - const SAFARI='browserVersion.isSafari'; - const KHTML='browserVersion.khtml'; - const FIREFOX='browserVersion.isFirefox'; - const MOZILLA='browserVersion.isMozilla'; - const GECKO='browserVersion.isGecko'; - - protected $options=array(); - - function __construct() - { - $server = SimpleSeleniumProxyServer::getInstance(); - if(!is_null($server)) - $this->selenium = $server->proxy(); - parent::__construct(); - } - - function getPage($class) - { - $info = new ReflectionClass($class); - return Prado::getApplication()->getTestPage($info->getFileName()); - } - - function __call($func, $args) - { - if(count($args) == 0) - return $this->selenium->{$func}(); - else if (count($args) == 1) - return $this->selenium->{$func}($args[0]); - else if (count($args) == 2) - return $this->selenium->{$func}($args[0], $args[1]); - } - - function disabled() - { - $this->selenium->skipCondition('DISABLED'); - } - - function skipBrowsers() - { - $conditions = $this->getBrowserOptions(func_get_args()); - $this->selenium->skipCondition($conditions); - } - - protected function getBrowserOptions($arg_list) - { - $browsers=array(); - foreach($arg_list as $arg) - { - if(is_array($arg)) - $browsers[] = '('.implode(' && ', $arg).')'; - else - $browsers[] = $arg; - } - return implode(' || ', $browsers); - } - - function targetBrowsers() - { - $conditions = $this->getBrowserOptions(func_get_args()); - $this->selenium->skipCondition("!(".$conditions.")"); - } -} - -?> \ No newline at end of file -- cgit v1.2.3