MDL-63977 Behat: Move app startup to before-scenario hook
parent
e6299d9a5f
commit
29bcee1db5
|
@ -42,6 +42,9 @@ class behat_app extends behat_base {
|
||||||
/** @var stdClass Object with data about launched Ionic instance (if any) */
|
/** @var stdClass Object with data about launched Ionic instance (if any) */
|
||||||
protected static $ionicrunning = null;
|
protected static $ionicrunning = null;
|
||||||
|
|
||||||
|
/** @var string URL for running Ionic server */
|
||||||
|
protected $ionicurl = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the current OS is Windows, from the point of view of task-executing-and-killing.
|
* Checks if the current OS is Windows, from the point of view of task-executing-and-killing.
|
||||||
*
|
*
|
||||||
|
@ -51,6 +54,17 @@ class behat_app extends behat_base {
|
||||||
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
|
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from behat_hooks when a new scenario starts, if it has the app tag.
|
||||||
|
*
|
||||||
|
* This updates Moodle configuration and starts Ionic running, if it isn't already.
|
||||||
|
*/
|
||||||
|
public function start_scenario() {
|
||||||
|
$this->check_behat_setup();
|
||||||
|
$this->fix_moodle_setup();
|
||||||
|
$this->ionicurl = $this->start_or_reuse_ionic();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the Moodle app in the browser.
|
* Opens the Moodle app in the browser.
|
||||||
*
|
*
|
||||||
|
@ -62,19 +76,17 @@ class behat_app extends behat_base {
|
||||||
* @throws ExpectationException Problem with resizing window
|
* @throws ExpectationException Problem with resizing window
|
||||||
*/
|
*/
|
||||||
public function i_enter_the_app() {
|
public function i_enter_the_app() {
|
||||||
|
// Check the app tag was set.
|
||||||
|
if (!$this->has_tag('app')) {
|
||||||
|
throw new DriverException('Requires @app tag on scenario or feature.');
|
||||||
|
}
|
||||||
|
|
||||||
// Restart the browser and set its size.
|
// Restart the browser and set its size.
|
||||||
$this->getSession()->restart();
|
$this->getSession()->restart();
|
||||||
$this->resize_window('360x720', true);
|
$this->resize_window('360x720', true);
|
||||||
|
|
||||||
// Prepare setup.
|
|
||||||
$this->check_behat_setup();
|
|
||||||
$this->fix_moodle_setup();
|
|
||||||
|
|
||||||
// Start Ionic server (or use existing one).
|
|
||||||
$url = $this->start_or_reuse_ionic();
|
|
||||||
|
|
||||||
// Go to page and prepare browser for app.
|
// Go to page and prepare browser for app.
|
||||||
$this->prepare_browser($url);
|
$this->prepare_browser($this->ionicurl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,11 +97,6 @@ class behat_app extends behat_base {
|
||||||
protected function check_behat_setup() {
|
protected function check_behat_setup() {
|
||||||
global $CFG;
|
global $CFG;
|
||||||
|
|
||||||
// Check the app tag was set.
|
|
||||||
if (!$this->has_tag('app')) {
|
|
||||||
throw new DriverException('Requires @app tag on scenario or feature.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check JavaScript is enabled.
|
// Check JavaScript is enabled.
|
||||||
if (!$this->running_javascript()) {
|
if (!$this->running_javascript()) {
|
||||||
throw new DriverException('The app requires JavaScript.');
|
throw new DriverException('The app requires JavaScript.');
|
||||||
|
|
Loading…
Reference in New Issue