MOBILE-4061 behat: Check tags when launching the app
parent
3f5f99c645
commit
46e9468a57
|
@ -82,10 +82,7 @@ class behat_app extends behat_app_helper {
|
||||||
* @throws ExpectationException Problem with resizing window
|
* @throws ExpectationException Problem with resizing window
|
||||||
*/
|
*/
|
||||||
public function i_launch_the_app(string $runtime = '') {
|
public function i_launch_the_app(string $runtime = '') {
|
||||||
// Check the app tag was set.
|
$this->check_tags();
|
||||||
if (!$this->has_tag('app')) {
|
|
||||||
throw new DriverException('Requires @app tag on scenario or feature.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go to page and prepare browser for app.
|
// Go to page and prepare browser for app.
|
||||||
$this->prepare_browser(['skiponboarding' => empty($runtime)]);
|
$this->prepare_browser(['skiponboarding' => empty($runtime)]);
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
require_once(__DIR__ . '/../../../../lib/behat/behat_base.php');
|
require_once(__DIR__ . '/../../../../lib/behat/behat_base.php');
|
||||||
|
|
||||||
use Behat\Mink\Exception\DriverException;
|
use Behat\Mink\Exception\DriverException;
|
||||||
|
use Moodle\BehatExtension\Exception\SkippedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Behat app listener.
|
* Behat app listener.
|
||||||
|
@ -92,7 +93,6 @@ class behat_app_helper extends behat_base {
|
||||||
* This updates Moodle configuration and starts Ionic running, if it isn't already.
|
* This updates Moodle configuration and starts Ionic running, if it isn't already.
|
||||||
*/
|
*/
|
||||||
public function start_scenario() {
|
public function start_scenario() {
|
||||||
$this->skip_restricted_tags_scenarios();
|
|
||||||
$this->check_behat_setup();
|
$this->check_behat_setup();
|
||||||
$this->fix_moodle_setup();
|
$this->fix_moodle_setup();
|
||||||
$this->ionicurl = $this->start_or_reuse_ionic();
|
$this->ionicurl = $this->start_or_reuse_ionic();
|
||||||
|
@ -623,10 +623,13 @@ EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Workaround while MDL-74621 is not integrated in all supported versions.
|
* This function will skip scenarios based on @lms_from and @lms_upto tags and also missing @app tags.
|
||||||
* This function will skip scenarios based on @lms_from and @lms_upto tags.
|
|
||||||
*/
|
*/
|
||||||
public function skip_restricted_tags_scenarios() {
|
public function check_tags() {
|
||||||
|
if (!$this->has_tag('app')) {
|
||||||
|
throw new DriverException('Requires @app tag on scenario or feature.');
|
||||||
|
}
|
||||||
|
|
||||||
if (is_null($this->lmsversion)) {
|
if (is_null($this->lmsversion)) {
|
||||||
global $CFG;
|
global $CFG;
|
||||||
|
|
||||||
|
@ -644,18 +647,18 @@ EOF;
|
||||||
$this->lmsversion = trim($version, '.');
|
$this->lmsversion = trim($version, '.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->has_version_restrictions()) {
|
if ($tag = $this->get_first_restricted_version_tag()) {
|
||||||
// Skip this test.
|
// Skip this test.
|
||||||
throw new DriverException('Incompatible tags.');
|
throw new SkippedException("LMS version $this->lmsversion is not compatible with tag @$tag.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets if version is incompatible with the @lms_from and @lms_upto tags.
|
* Gets if version is incompatible with the @lms_from and @lms_upto tags.
|
||||||
*
|
*
|
||||||
* @return bool If scenario has any version incompatible tag.
|
* @return string If scenario has any version incompatible tag, return it.
|
||||||
*/
|
*/
|
||||||
protected function has_version_restrictions() : bool {
|
protected function get_first_restricted_version_tag(): ?string {
|
||||||
$usedtags = behat_hooks::get_tags_for_scenario();
|
$usedtags = behat_hooks::get_tags_for_scenario();
|
||||||
|
|
||||||
$detectedversioncount = substr_count($this->lmsversion, '.');
|
$detectedversioncount = substr_count($this->lmsversion, '.');
|
||||||
|
@ -685,15 +688,15 @@ EOF;
|
||||||
// Installed version OLDER than the one being considered, so do not
|
// Installed version OLDER than the one being considered, so do not
|
||||||
// include any scenarios that only run from the considered version up.
|
// include any scenarios that only run from the considered version up.
|
||||||
if ($compare === -1 && $direction === 'from') {
|
if ($compare === -1 && $direction === 'from') {
|
||||||
return true;
|
return $usedtag;
|
||||||
}
|
}
|
||||||
// Installed version NEWER than the one being considered, so do not
|
// Installed version NEWER than the one being considered, so do not
|
||||||
// include any scenarios that only run up to that version.
|
// include any scenarios that only run up to that version.
|
||||||
if ($compare === 1 && $direction === 'upto') {
|
if ($compare === 1 && $direction === 'upto') {
|
||||||
return true;
|
return $usedtag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue