MDL-39686 behat: Add option to restart the browser

This commit is contained in:
David Monllao 2013-05-15 16:15:47 +08:00
parent 886b44bbd3
commit 41eb672ba4

View File

@ -54,6 +54,11 @@ use Behat\Behat\Event\SuiteEvent as SuiteEvent,
*/
class behat_hooks extends behat_base {
/**
* @var Last browser session start time.
*/
protected static $lastbrowsersessionstart = 0;
/**
* Gives access to moodle codebase, ensures all is ready and sets up the test lock.
*
@ -102,6 +107,12 @@ class behat_hooks extends behat_base {
}
// Avoid parallel tests execution, it continues when the previous lock is released.
test_lock::acquire('behat');
// Store the browser reset time if reset after N seconds is specified in config.php.
if (!empty($CFG->behat_restart_browser_after)) {
// Store the initial browser session opening.
self::$lastbrowsersessionstart = time();
}
}
/**
@ -138,6 +149,15 @@ class behat_hooks extends behat_base {
$user = $DB->get_record('user', array('username' => 'admin'));
session_set_user($user);
// Reset the browser if specified in config.php.
if (!empty($CFG->behat_restart_browser_after) && $this->running_javascript()) {
$now = time();
if (self::$lastbrowsersessionstart + $CFG->behat_restart_browser_after < $now) {
$this->getSession()->restart();
self::$lastbrowsersessionstart = $now;
}
}
// Start always in the the homepage.
$this->getSession()->visit($this->locate_path('/'));