Skip to content

Commit

Permalink
Merge branch 'MDL-66979-master-7' of git://github.com/andrewnicols/mo…
Browse files Browse the repository at this point in the history
…odle
  • Loading branch information
snake committed Jan 29, 2021
2 parents fec3a69 + b658d18 commit 9a4cfde
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 11 deletions.
Expand Up @@ -5,7 +5,10 @@ Feature: Within a moodle instance, an administrator should be able to modify lan
I need to be able to access and change values in the the language customisation of the language pack.

Background:
Given I log in as "admin"
# This is a very slow running test and on slow databases can take minutes to complete.
Given I mark this test as slow setting a timeout factor of 4

And I log in as "admin"
And I navigate to "Language > Language customisation" in site administration
And I set the field "lng" to "en"
And I press "Open language pack for editing"
Expand Down
4 changes: 4 additions & 0 deletions admin/tool/customlang/tests/behat/export.feature
Expand Up @@ -4,6 +4,10 @@ Feature: Within a moodle instance, an administrator should be able to export mod
As an admin
I need to be able to export the php-files of the language customisation of a language.

Background:
# This is a very slow running feature and on slow databases can take minutes to complete.
Given I mark this test as slow setting a timeout factor of 4

@javascript
Scenario: Export button should not appear if no customization is made
Given I log in as "admin"
Expand Down
5 changes: 4 additions & 1 deletion admin/tool/customlang/tests/behat/import_files.feature
Expand Up @@ -5,7 +5,10 @@ Feature: Within a moodle instance, an administrator should be able to import mod
I need to be able to import the zips and php files of the language customisation of a language.

Background:
Given I log in as "admin"
# This is a very slow running test and on slow databases can take minutes to complete.
Given I mark this test as slow setting a timeout factor of 4

And I log in as "admin"
And I navigate to "Language > Language customisation" in site administration
And I set the field "lng" to "en"
And I click on "Import custom strings" "button"
Expand Down
5 changes: 4 additions & 1 deletion admin/tool/customlang/tests/behat/import_mode.feature
Expand Up @@ -5,8 +5,11 @@ Feature: Within a moodle instance, an administrator should be able to import lan
I need to be able to import only some language customisation strings depending on some conditions.

Background:
# This is a very slow running feature and on slow databases can take minutes to complete.
Given I mark this test as slow setting a timeout factor of 4

# Add one customization.
Given I log in as "admin"
And I log in as "admin"
And I navigate to "Language > Language customisation" in site administration
And I set the field "lng" to "en"
And I press "Open language pack for editing"
Expand Down
5 changes: 4 additions & 1 deletion admin/tool/httpsreplace/tests/behat/httpsreplace.feature
Expand Up @@ -5,7 +5,10 @@ Feature: View the httpsreplace report
I need to be able to automatically replace http links

Background: Create some http links
Given I am on site homepage
# This is a slow running feature and on slow databases can take over 30 seconds to complete.
Given I mark this test as slow setting a timeout factor of 2

And I am on site homepage
And the following "courses" exist:
| fullname | shortname | category | summary |
| Course 1 | C1 | 0 | <img src="http://intentionally.unavailable/test.png"> <img src="http://download.moodle.org/unittest/test.jpg"> |
Expand Down
21 changes: 21 additions & 0 deletions lib/behat/classes/behat_session_trait.php
Expand Up @@ -1355,4 +1355,25 @@ public function get_sesskey(): string {

return $this->evaluate_script($script);
}

/**
* Set the timeout factor for the remaining lifetime of the session.
*
* @param int $factor A multiplication factor to use when calculating the timeout
*/
public function set_test_timeout_factor(int $factor = 1): void {
$driver = $this->getSession()->getDriver();

if (!$driver instanceof \OAndreyev\Mink\Driver\WebDriver) {
// This is a feature of the OAndreyev MinkWebDriver.
return;
}

// Use `get_real_timeout` to multiply the timeout by the global behat_increasetimeout value, and again by the
// factor specified.
$this->getSession()->getDriver()->setTimeouts([
// The standard script timeout is 30000 ms. (aka, 30 seconds).
'script' => self::get_real_timeout(30) * 1000 * $factor,
]);
}
}
11 changes: 11 additions & 0 deletions lib/tests/behat/behat_general.php
Expand Up @@ -2065,4 +2065,15 @@ public function i_visit($localurl): void {
$localurl = new moodle_url($localurl);
$this->getSession()->visit($this->locate_path($localurl->out_as_local_url(false)));
}

/**
* Increase the webdriver timeouts.
*
* This should be reset between scenarios, or can be called again to decrease the timeouts.
*
* @Given I mark this test as slow setting a timeout factor of :factor
*/
public function i_mark_this_test_as_long_running(int $factor = 2): void {
$this->set_test_timeout_factor($factor);
}
}
8 changes: 1 addition & 7 deletions lib/tests/behat/behat_hooks.php
Expand Up @@ -303,13 +303,7 @@ protected function restart_session(): void {
protected function start_session(): void {
$this->getSession()->start();

if ($this->running_javascript()) { // Goutte driver doesn't implement this.
$this->getSession()->getDriver()->setTimeouts([
// The standard script timeout is 30000 ms. (aka, 30 seconds).
// Use `get_real_timeout` to multiply this by the behat increased timeout factor.
'script' => self::get_real_timeout(30) * 1000,
]);
}
$this->set_test_timeout_factor(1);
}

/**
Expand Down

0 comments on commit 9a4cfde

Please sign in to comment.