diff --git a/admin/tests/behat/behat_admin.php b/admin/tests/behat/behat_admin.php index 73ce5728e2067..d8ec74c9c5aa9 100644 --- a/admin/tests/behat/behat_admin.php +++ b/admin/tests/behat/behat_admin.php @@ -58,7 +58,7 @@ public function i_set_the_following_administration_settings_values(TableNode $ta // We expect admin block to be visible, otherwise go to homepage. if (!$this->getSession()->getPage()->find('css', '.block_settings')) { $this->getSession()->visit($this->locate_path('/')); - $this->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); } // Search by label. @@ -67,7 +67,7 @@ public function i_set_the_following_administration_settings_values(TableNode $ta $submitsearch = $this->find('css', 'form.adminsearchform input[type=submit]'); $submitsearch->press(); - $this->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); // Admin settings does not use the same DOM structure than other moodle forms // but we also need to use lib/behat/form_field/* to deal with the different moodle form elements. diff --git a/config-dist.php b/config-dist.php index 9d28ee03e9bca..d35ae8f9c800c 100644 --- a/config-dist.php +++ b/config-dist.php @@ -795,6 +795,12 @@ // Example: // $CFG->behat_usedeprecated = true; // +// If you are using a slow machine, it may help to increase the timeouts that Behat uses. The +// following example will increase timeouts by a factor of 3 (using 30 seconds instead of 10 +// seconds, for instance). +// Example: +// $CFG->behat_increasetimeout = 3; +// // Including feature files from directories outside the dirroot is possible if required. The setting // requires that the running user has executable permissions on all parent directories in the paths. // Example: diff --git a/course/tests/behat/behat_course.php b/course/tests/behat/behat_course.php index 52f4354e3678d..c62da045e47f5 100644 --- a/course/tests/behat/behat_course.php +++ b/course/tests/behat/behat_course.php @@ -346,7 +346,7 @@ public function i_show_section($sectionnumber) { $showlink->click(); if ($this->running_javascript()) { - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); $this->i_wait_until_section_is_available($sectionnumber); } } @@ -380,7 +380,7 @@ public function i_hide_section($sectionnumber) { ); if ($this->running_javascript()) { - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); $this->i_wait_until_section_is_available($sectionnumber); } } diff --git a/group/tests/behat/behat_groups.php b/group/tests/behat/behat_groups.php index e314e68efaeb1..21a550989cfab 100644 --- a/group/tests/behat/behat_groups.php +++ b/group/tests/behat/behat_groups.php @@ -67,13 +67,13 @@ public function i_add_user_to_group_members($userfullname, $groupname) { $script = "Syn.trigger('change', {}, {{ELEMENT}})"; $driver->triggerSynScript($select->getXpath(), $script); } - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); // Here we don't need to wait for the AJAX response. $this->find_button(get_string('adduserstogroup', 'group'))->click(); // Wait for add/remove members page to be loaded. - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); // Getting the option and selecting it. $select = $this->find_field('addselect'); @@ -86,7 +86,7 @@ public function i_add_user_to_group_members($userfullname, $groupname) { $this->find_button(get_string('add'))->click(); // Wait for the page to load. - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); // Returning to the main groups page. $this->find_button(get_string('backtogroups', 'group'))->click(); diff --git a/lib/behat/behat_base.php b/lib/behat/behat_base.php index 185d901b2e828..fa9e207722d34 100644 --- a/lib/behat/behat_base.php +++ b/lib/behat/behat_base.php @@ -167,7 +167,7 @@ protected function find_all($selector, $locator, $exception = false, $node = fal // How much we will be waiting for the element to appear. if (!$timeout) { - $timeout = self::TIMEOUT; + $timeout = self::get_timeout(); $microsleep = false; } else { // Spinning each 0.1 seconds if the timeout was forced as we understand @@ -308,13 +308,13 @@ protected function spin($lambda, $args = false, $timeout = false, $exception = f // Using default timeout which is pretty high. if (!$timeout) { - $timeout = self::TIMEOUT; + $timeout = self::get_timeout(); } if ($microsleep) { - // Will sleep 1/10th of a second by default for self::TIMEOUT seconds. + // Will sleep 1/10th of a second by default for self::get_timeout() seconds. $loops = $timeout * 10; } else { - // Will sleep for self::TIMEOUT seconds. + // Will sleep for self::get_timeout() seconds. $loops = $timeout; } @@ -501,7 +501,7 @@ function($context, $args) { return false; }, array('selector' => $selector, 'locator' => $locator), - self::EXTENDED_TIMEOUT, + self::get_extended_timeout(), $exception, true ); @@ -535,7 +535,7 @@ function($context, $args) { return false; }, array('selector' => $selector, 'locator' => $locator), - self::EXTENDED_TIMEOUT, + self::get_extended_timeout(), $exception, true ); @@ -567,7 +567,7 @@ function($context, $args) { return false; }, $node, - self::EXTENDED_TIMEOUT, + self::get_extended_timeout(), $exception, true ); @@ -602,7 +602,7 @@ function($context, $args) { return false; }, array($node, $attribute, $attributevalue), - self::EXTENDED_TIMEOUT, + self::get_extended_timeout(), $exception, true ); @@ -730,7 +730,7 @@ public function wait_for_pending_js() { public static function wait_for_pending_js_in_session(Session $session) { // We don't use behat_base::spin() here as we don't want to end up with an exception // if the page & JSs don't finish loading properly. - for ($i = 0; $i < self::EXTENDED_TIMEOUT * 10; $i++) { + for ($i = 0; $i < self::get_extended_timeout() * 10; $i++) { $pending = ''; try { $jscode = trim(preg_replace('/\s+/', ' ', ' @@ -771,11 +771,13 @@ public static function wait_for_pending_js_in_session(Session $session) { } // Timeout waiting for JS to complete. It will be caught and forwarded to behat_hooks::i_look_for_exceptions(). - // It is unlikely that Javascript code of a page or an AJAX request needs more than self::EXTENDED_TIMEOUT seconds + // It is unlikely that Javascript code of a page or an AJAX request needs more than get_extended_timeout() seconds // to be loaded, although when pages contains Javascript errors M.util.js_complete() can not be executed, so the // number of JS pending code and JS completed code will not match and we will reach this point. - throw new \Exception('Javascript code and/or AJAX requests are not ready after ' . self::EXTENDED_TIMEOUT . - ' seconds. There is a Javascript error or the code is extremely slow.'); + throw new \Exception('Javascript code and/or AJAX requests are not ready after ' . + self::get_extended_timeout() . + ' seconds. There is a Javascript error or the code is extremely slow. ' . + 'If you are using a slow machine, consider setting $CFG->behat_increasetimeout.'); } /** @@ -976,4 +978,54 @@ protected function js_trigger_click($node) { $driver->click($xpath); } } + + /** + * Gets the required timeout in seconds. + * + * @param int $timeout One of the TIMEOUT constants + * @return int Actual timeout (in seconds) + */ + protected static function get_real_timeout(int $timeout) : int { + global $CFG; + if (!empty($CFG->behat_increasetimeout)) { + return $timeout * $CFG->behat_increasetimeout; + } else { + return $timeout; + } + } + + /** + * Gets the default timeout. + * + * The timeout for each Behat step (load page, wait for an element to load...). + * + * @return int Timeout in seconds + */ + public static function get_timeout() : int { + return self::get_real_timeout(6); + } + + /** + * Gets the reduced timeout. + * + * A reduced timeout for cases where self::get_timeout() is too much + * and a simple $this->getSession()->getPage()->find() could not + * be enough. + * + * @return int Timeout in seconds + */ + public static function get_reduced_timeout() : int { + return self::get_real_timeout(2); + } + + /** + * Gets the extended timeout. + * + * A longer timeout for cases where the normal timeout is not enough. + * + * @return int Timeout in seconds + */ + public static function get_extended_timeout() : int { + return self::get_real_timeout(10); + } } diff --git a/lib/behat/form_field/behat_form_filemanager.php b/lib/behat/form_field/behat_form_filemanager.php index c5025392eaec9..7d709496696e7 100644 --- a/lib/behat/form_field/behat_form_filemanager.php +++ b/lib/behat/form_field/behat_form_filemanager.php @@ -62,7 +62,7 @@ class behat_form_filemanager extends behat_form_field { public function get_value() { // Wait until DOM and JS is ready. - $this->session->wait(behat_base::TIMEOUT, behat_base::PAGE_READY_JS); + $this->session->wait(behat_base::get_timeout(), behat_base::PAGE_READY_JS); // Get the label to restrict the files to this single form field. $fieldlabel = $this->get_field_locator(); diff --git a/lib/behat/form_field/behat_form_passwordunmask.php b/lib/behat/form_field/behat_form_passwordunmask.php index aef507c02d1eb..43cf3720d5f9e 100644 --- a/lib/behat/form_field/behat_form_passwordunmask.php +++ b/lib/behat/form_field/behat_form_passwordunmask.php @@ -67,7 +67,7 @@ public function set_value($value) { $this->field->keyDown(13); $this->field->keyPress(13); $this->field->keyUp(13); - $this->session->wait(behat_base::TIMEOUT * 1000, behat_base::PAGE_READY_JS); + $this->session->wait(behat_base::get_timeout() * 1000, behat_base::PAGE_READY_JS); } } } diff --git a/lib/behat/form_field/behat_form_select.php b/lib/behat/form_field/behat_form_select.php index 279f52b47d5a7..071c0d40595c9 100644 --- a/lib/behat/form_field/behat_form_select.php +++ b/lib/behat/form_field/behat_form_select.php @@ -94,7 +94,7 @@ public function set_value($value) { } } } - $this->session->wait(behat_base::TIMEOUT * 1000, behat_base::PAGE_READY_JS); + $this->session->wait(behat_base::get_timeout() * 1000, behat_base::PAGE_READY_JS); } } diff --git a/lib/tests/behat/behat_forms.php b/lib/tests/behat/behat_forms.php index 9e7fc138a867a..354cdb495a0bc 100644 --- a/lib/tests/behat/behat_forms.php +++ b/lib/tests/behat/behat_forms.php @@ -126,7 +126,7 @@ protected function expand_all_fields() { "//a[contains(concat(' ', @class, ' '), ' fheader ') and @aria-expanded = 'false']"; $collapseexpandlink = $this->find('xpath', $expandallxpath . '|' . $expandonlysection, - false, false, self::REDUCED_TIMEOUT); + false, false, behat_base::get_reduced_timeout()); $collapseexpandlink->click(); } catch (ElementNotFoundException $e) { diff --git a/lib/tests/behat/behat_general.php b/lib/tests/behat/behat_general.php index 948e913bdf85f..eaedcf0937073 100644 --- a/lib/tests/behat/behat_general.php +++ b/lib/tests/behat/behat_general.php @@ -174,7 +174,7 @@ function($context, $iframename) { return true; }, $iframename, - self::EXTENDED_TIMEOUT + behat_base::get_extended_timeout() ); } @@ -271,7 +271,7 @@ public function wait_until_the_page_is_ready() { return; } - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); } /** @@ -604,10 +604,10 @@ public function assert_page_not_contains_text($text) { "[count(descendant::*[contains(., $xpathliteral)]) = 0]"; // We should wait a while to ensure that the page is not still loading elements. - // Waiting less than self::TIMEOUT as we already waited for the DOM to be ready and + // Waiting less than self::get_timeout() as we already waited for the DOM to be ready and // all JS to be executed. try { - $nodes = $this->find_all('xpath', $xpath, false, false, self::REDUCED_TIMEOUT); + $nodes = $this->find_all('xpath', $xpath, false, false, self::get_reduced_timeout()); } catch (ElementNotFoundException $e) { // All ok. return; @@ -644,7 +644,7 @@ function($context, $args) { return true; }, array('nodes' => $nodes, 'text' => $text), - self::REDUCED_TIMEOUT, + behat_base::get_reduced_timeout(), false, true ); @@ -728,7 +728,7 @@ public function assert_element_not_contains_text($text, $element, $selectortype) // We should wait a while to ensure that the page is not still loading elements. // Giving preference to the reliability of the results rather than to the performance. try { - $nodes = $this->find_all('xpath', $xpath, false, $container, self::REDUCED_TIMEOUT); + $nodes = $this->find_all('xpath', $xpath, false, $container, self::get_reduced_timeout()); } catch (ElementNotFoundException $e) { // All ok. return; @@ -754,7 +754,7 @@ function($context, $args) { return true; }, array('nodes' => $nodes, 'text' => $text, 'element' => $element), - self::REDUCED_TIMEOUT, + behat_base::get_reduced_timeout(), false, true ); @@ -932,7 +932,7 @@ function($context, $args) { return $context->getSession()->getPage()->findAll($args['selector'], $args['locator']); }, $params, - self::REDUCED_TIMEOUT, + behat_base::get_reduced_timeout(), $exception, false ); @@ -1124,7 +1124,7 @@ public function should_not_exist_in_the($element, $selectortype, $containereleme // Would be better to use a 1 second sleep because the element should not be there, // but we would need to duplicate the whole find_all() logic to do it, the benefit of // changing to 1 second sleep is not significant. - $this->find($selector, $locator, false, $containernode, self::REDUCED_TIMEOUT); + $this->find($selector, $locator, false, $containernode, behat_base::get_reduced_timeout()); } catch (ElementNotFoundException $e) { // It passes. return; @@ -1390,7 +1390,7 @@ function($context, $args) { return $this->download_file_from_link($link); }, array('link' => $link), - self::EXTENDED_TIMEOUT, + behat_base::get_extended_timeout(), $exception ); @@ -1433,7 +1433,7 @@ function($context, $args) { return $this->download_file_from_link($link); }, array('link' => $link), - self::EXTENDED_TIMEOUT, + behat_base::get_extended_timeout(), $exception ); diff --git a/lib/tests/behat/behat_hooks.php b/lib/tests/behat/behat_hooks.php index d5254b1b5dcf0..ec658b80d1f39 100644 --- a/lib/tests/behat/behat_hooks.php +++ b/lib/tests/behat/behat_hooks.php @@ -489,13 +489,13 @@ public function after_step_javascript(AfterStepScope $scope) { * @AfterScenario @_switch_window */ public function after_scenario_switchwindow(AfterScenarioScope $scope) { - for ($count = 0; $count < self::EXTENDED_TIMEOUT; $count++) { + for ($count = 0; $count < behat_base::get_extended_timeout(); $count++) { try { $this->getSession()->restart(); break; } catch (DriverException $e) { // Wait for timeout and try again. - sleep(self::TIMEOUT); + sleep(self::get_timeout()); } } // If session is not restarted above then it will try to start session before next scenario diff --git a/lib/tests/behat/behat_navigation.php b/lib/tests/behat/behat_navigation.php index 959459e0ec5e7..19b5869c58cf4 100644 --- a/lib/tests/behat/behat_navigation.php +++ b/lib/tests/behat/behat_navigation.php @@ -297,7 +297,7 @@ protected function find_node_in_navigation($nodetext, $parentnodes, $nodetype = $jscondition = '(document.evaluate("' . $pnode->getXpath() . '", document, null, '. 'XPathResult.ANY_TYPE, null).iterateNext().getAttribute(\'data-loaded\') == "true")'; - $this->getSession()->wait(self::EXTENDED_TIMEOUT * 1000, $jscondition); + $this->getSession()->wait(behat_base::get_extended_timeout() * 1000, $jscondition); } } } diff --git a/lib/tests/behat/behat_permissions.php b/lib/tests/behat/behat_permissions.php index 76cb49b54bc4c..b3ee3ab0d2b94 100644 --- a/lib/tests/behat/behat_permissions.php +++ b/lib/tests/behat/behat_permissions.php @@ -106,7 +106,7 @@ public function i_fill_the_capabilities_form_with_the_following_permissions($tab $advancedtoggle->click(); // Wait for the page to load. - $this->getSession()->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); } } catch (Exception $e) { // We already are in advanced mode. diff --git a/lib/upgrade.txt b/lib/upgrade.txt index 2f51937a794d1..a1fb1f34be630 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -7,6 +7,9 @@ information provided here is intended especially for developers. It is recommended that privacy providers using this function call rewrite any long query into a number of separate calls to add_from_sql for improved performance, and that the new argument is used. This will allow queries to remain backwards-compatible with older versions of Moodle but will have significantly better performance in version supporting the innerjoin parameter. +* Behat timeout constants behat_base::TIMEOUT, EXTENDED_TIMEOUT, and REDUCED_TIMEOUT will be + deprecated in 3.7. Please instead use the functions behat_base::get_timeout(), get_extended_timeout(), + and get_reduced_timeout(). These allow for timeouts to be increased by a setting in config.php. === 3.5.4 === diff --git a/mod/assign/feedback/editpdf/tests/behat/behat_assignfeedback_editpdf.php b/mod/assign/feedback/editpdf/tests/behat/behat_assignfeedback_editpdf.php index 276ada99c02d8..fb9f4b2960c95 100644 --- a/mod/assign/feedback/editpdf/tests/behat/behat_assignfeedback_editpdf.php +++ b/mod/assign/feedback/editpdf/tests/behat/behat_assignfeedback_editpdf.php @@ -100,6 +100,6 @@ public function i_wait_for_all_editpdf_pages_to_load() { ]; $js = implode(' && ', $conditions); - $this->getSession()->wait(self::TIMEOUT * 1000, "({$js})"); + $this->getSession()->wait(self::get_timeout() * 1000, "({$js})"); } } diff --git a/mod/feedback/tests/behat/behat_mod_feedback.php b/mod/feedback/tests/behat/behat_mod_feedback.php index 17c0a65a92c01..e95581de2636c 100644 --- a/mod/feedback/tests/behat/behat_mod_feedback.php +++ b/mod/feedback/tests/behat/behat_mod_feedback.php @@ -139,7 +139,7 @@ function($context, $args) use ($behatgeneralcontext) { return $behatgeneralcontext->download_file_from_link($link); }, array('link' => $link), - self::EXTENDED_TIMEOUT, + behat_base::get_extended_timeout(), $exception ); diff --git a/mod/workshop/allocation/manual/tests/behat/behat_workshopallocation_manual.php b/mod/workshop/allocation/manual/tests/behat/behat_workshopallocation_manual.php index a4d096458533f..b69913b580f62 100644 --- a/mod/workshop/allocation/manual/tests/behat/behat_workshopallocation_manual.php +++ b/mod/workshop/allocation/manual/tests/behat/behat_workshopallocation_manual.php @@ -72,7 +72,7 @@ public function i_add_a_reviewer_for_workshop_participant($reviewername, $partic $this->find('xpath', $xpathtd."/descendant::input[@value=$go]")->click(); } else { // With Javascript we just wait for the page to reload. - $this->getSession()->wait(self::EXTENDED_TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(behat_base::get_extended_timeout(), self::PAGE_READY_JS); } // Check the success string to appear. $allocatedtext = behat_context_helper::escape( diff --git a/repository/tests/behat/behat_filepicker.php b/repository/tests/behat/behat_filepicker.php index a64b5f697ada6..3827fd49d1119 100644 --- a/repository/tests/behat/behat_filepicker.php +++ b/repository/tests/behat/behat_filepicker.php @@ -293,7 +293,7 @@ protected function add_file_from_repository_to_filemanager($filepath, $repositor $selectfilebutton->click(); // We wait for all the JS to finish as it is performing an action. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); if ($overwriteaction !== false) { $overwritebutton = $this->find_button($overwriteaction); @@ -301,7 +301,7 @@ protected function add_file_from_repository_to_filemanager($filepath, $repositor $overwritebutton->click(); // We wait for all the JS to finish. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); } } diff --git a/repository/upload/tests/behat/behat_repository_upload.php b/repository/upload/tests/behat/behat_repository_upload.php index 35d723eff5eac..4d7e12b19af73 100644 --- a/repository/upload/tests/behat/behat_repository_upload.php +++ b/repository/upload/tests/behat/behat_repository_upload.php @@ -160,7 +160,7 @@ protected function upload_file_to_filemanager($filepath, $filemanagerelement, Ta $submit->press(); // We wait for all the JS to finish as it is performing an action. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); if ($overwriteaction !== false) { $overwritebutton = $this->find_button($overwriteaction); @@ -168,7 +168,7 @@ protected function upload_file_to_filemanager($filepath, $filemanagerelement, Ta $overwritebutton->click(); // We wait for all the JS to finish. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); } } diff --git a/theme/boost/tests/behat/behat_theme_boost_behat_admin.php b/theme/boost/tests/behat/behat_theme_boost_behat_admin.php index 21ca9d7088ec0..b75e4dbbd7c97 100644 --- a/theme/boost/tests/behat/behat_theme_boost_behat_admin.php +++ b/theme/boost/tests/behat/behat_theme_boost_behat_admin.php @@ -53,7 +53,7 @@ public function i_set_the_following_administration_settings_values(TableNode $ta $submitsearch = $this->find('css', 'form input[type=submit][name=search]'); $submitsearch->press(); - $this->wait(self::TIMEOUT * 1000, self::PAGE_READY_JS); + $this->wait(self::get_timeout() * 1000, self::PAGE_READY_JS); // Admin settings does not use the same DOM structure than other moodle forms // but we also need to use lib/behat/form_field/* to deal with the different moodle form elements. diff --git a/theme/boost/tests/behat/behat_theme_boost_behat_filepicker.php b/theme/boost/tests/behat/behat_theme_boost_behat_filepicker.php index facb5cc17b754..6dcd992b35291 100644 --- a/theme/boost/tests/behat/behat_theme_boost_behat_filepicker.php +++ b/theme/boost/tests/behat/behat_theme_boost_behat_filepicker.php @@ -289,7 +289,7 @@ protected function add_file_from_repository_to_filemanager($filepath, $repositor $selectfilebutton->click(); // We wait for all the JS to finish as it is performing an action. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); if ($overwriteaction !== false) { $overwritebutton = $this->find_button($overwriteaction); @@ -297,7 +297,7 @@ protected function add_file_from_repository_to_filemanager($filepath, $repositor $overwritebutton->click(); // We wait for all the JS to finish. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); } } diff --git a/theme/boost/tests/behat/behat_theme_boost_behat_repository_upload.php b/theme/boost/tests/behat/behat_theme_boost_behat_repository_upload.php index a1b551e5f462d..974d56f0a5d2f 100644 --- a/theme/boost/tests/behat/behat_theme_boost_behat_repository_upload.php +++ b/theme/boost/tests/behat/behat_theme_boost_behat_repository_upload.php @@ -119,7 +119,7 @@ protected function upload_file_to_filemanager($filepath, $filemanagerelement, Ta $submit->press(); // We wait for all the JS to finish as it is performing an action. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); if ($overwriteaction !== false) { $overwritebutton = $this->find_button($overwriteaction); @@ -127,7 +127,7 @@ protected function upload_file_to_filemanager($filepath, $filemanagerelement, Ta $overwritebutton->click(); // We wait for all the JS to finish. - $this->getSession()->wait(self::TIMEOUT, self::PAGE_READY_JS); + $this->getSession()->wait(self::get_timeout(), self::PAGE_READY_JS); } }