Skip to content

Commit

Permalink
Merge pull request #63 from javigomez/newcommands
Browse files Browse the repository at this point in the history
Adds idividual test run command
  • Loading branch information
rdeutz committed Jul 22, 2015
2 parents e757e3b + 9569f79 commit 752353c
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ before_script:

script:
- mv tests/acceptance.suite.dist.yml tests/acceptance.suite.yml
- php vendor/bin/robo test:acceptance
- php vendor/bin/robo run:tests
125 changes: 120 additions & 5 deletions RoboFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ private function setExecExtension()
}

/**
* Executes Selenium System Tests in your machine
* Executes all the Selenium System Tests in a suite on your machine
*
* @param null $seleniumPath Optional path to selenium-standalone-server-x.jar
* @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
* @param string $suite Optional, the name of the tests suite
*
* @return mixed
*/
public function testAcceptance($seleniumPath = null)
public function runTests($seleniumPath = null, $suite = 'acceptance')
{
$this->setExecExtension();

Expand Down Expand Up @@ -108,7 +109,7 @@ public function testAcceptance($seleniumPath = null)
$this->_exec('php' . $this->extension . ' vendor/bin/codecept build');

$this->taskCodecept()
->suite('acceptance')
->suite($suite)
->arg('--steps')
->arg('--debug')
->run()
Expand All @@ -128,4 +129,118 @@ public function testAcceptance($seleniumPath = null)
}
*/
}
}

/**
* Executes a specific Selenium System Tests in your machine
*
* @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
* @param string $pathToTestFile Optional name of the test to be run
* @param string $suite Optional name of the suite containing the tests, Acceptance by default.
*
* @return mixed
*/
public function runTest($seleniumPath = null, $pathToTestFile = null, $suite = 'acceptance')
{
if (!$seleniumPath)
{
if (!file_exists('selenium-server-standalone.jar'))
{
$this->say('Downloading Selenium Server, this may take a while.');
$this->taskExec('wget')
->arg('http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar')
->arg('-O selenium-server-standalone.jar')
->printed(false)
->run();
}

$seleniumPath = 'selenium-server-standalone.jar';
}

// Make sure we have Composer
if (!file_exists('./composer.phar'))
{
$this->_exec('curl -sS https://getcomposer.org/installer | php');
}
$this->taskComposerUpdate()->run();

// Running Selenium server
$this->_exec("java -jar $seleniumPath > selenium-errors.log 2>selenium.log &");

$this->taskWaitForSeleniumStandaloneServer()
->run()
->stopOnFail();

// Make sure to Run the Build Command to Generate AcceptanceTester
$this->_exec("php vendor/bin/codecept build");

if (!$pathToTestFile)
{
$tests = array();
$this->say('Available tests in the system:');
$filesInSuite = scandir(getcwd() . '/tests/' . $suite);
$i = 1;

foreach ($filesInSuite as $file)
{
// Make sure the file is a Test file
if (strripos($file, 'cept.php') || strripos($file, 'cest.php'))
{
$tests[$i] = $file;
$this->say('[' . $i . '] ' . $file);
$i++;
}
}

$this->say('');
$testNumber = $this->ask('Type the number of the test in the list that you want to run...');
$pathToTestFile = "tests/$suite/" . $tests[$testNumber];
}

$this->taskCodecept()
->test($pathToTestFile)
->arg('--steps')
->arg('--debug')
->run()
->stopOnFail();

// Kill selenium server
// $this->_exec('curl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer');

$this->say('Printing Selenium Log files');
$this->say('------ selenium-errors.log (start) ---------');
$seleniumErrors = file_get_contents('selenium-errors.log');

if ($seleniumErrors)
{
$this->say(file_get_contents('selenium-errors.log'));
}
else
{
$this->say('no errors were found');
}
$this->say('------ selenium-errors.log (end) -----------');

/*
// Uncomment if you need to debug issues in selenium
$this->say('');
$this->say('------ selenium.log (start) -----------');
$this->say(file_get_contents('selenium.log'));
$this->say('------ selenium.log (end) -----------');
*/
}

/**
* Creates a testing Joomla site for running the tests (use it before run:test)
*/
public function createTestingSite()
{
// Get Joomla Clean Testing sites
if (is_dir('tests/joomla-cms3'))
{
$this->taskDeleteDir('tests/joomla-cms3')->run();
}

$this->_exec('git' . $this->extension . ' clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3');
$this->say('Joomla CMS site created at tests/joomla-cms3');
}
}

0 comments on commit 752353c

Please sign in to comment.