mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 09:56:38 +02:00
Merge branch 'MDL-64979-m35' of https://github.com/sammarshallou/moodle into MOODLE_35_STABLE
This commit is contained in:
commit
77e067dc2e
22 changed files with 114 additions and 50 deletions
|
@ -58,7 +58,7 @@ class behat_admin extends behat_base {
|
||||||
// We expect admin block to be visible, otherwise go to homepage.
|
// We expect admin block to be visible, otherwise go to homepage.
|
||||||
if (!$this->getSession()->getPage()->find('css', '.block_settings')) {
|
if (!$this->getSession()->getPage()->find('css', '.block_settings')) {
|
||||||
$this->getSession()->visit($this->locate_path('/'));
|
$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.
|
// Search by label.
|
||||||
|
@ -67,7 +67,7 @@ class behat_admin extends behat_base {
|
||||||
$submitsearch = $this->find('css', 'form.adminsearchform input[type=submit]');
|
$submitsearch = $this->find('css', 'form.adminsearchform input[type=submit]');
|
||||||
$submitsearch->press();
|
$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
|
// 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.
|
// but we also need to use lib/behat/form_field/* to deal with the different moodle form elements.
|
||||||
|
|
|
@ -795,6 +795,12 @@ $CFG->admin = 'admin';
|
||||||
// Example:
|
// Example:
|
||||||
// $CFG->behat_usedeprecated = true;
|
// $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
|
// 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.
|
// requires that the running user has executable permissions on all parent directories in the paths.
|
||||||
// Example:
|
// Example:
|
||||||
|
|
|
@ -346,7 +346,7 @@ class behat_course extends behat_base {
|
||||||
$showlink->click();
|
$showlink->click();
|
||||||
|
|
||||||
if ($this->running_javascript()) {
|
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);
|
$this->i_wait_until_section_is_available($sectionnumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ class behat_course extends behat_base {
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($this->running_javascript()) {
|
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);
|
$this->i_wait_until_section_is_available($sectionnumber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,13 +67,13 @@ class behat_groups extends behat_base {
|
||||||
$script = "Syn.trigger('change', {}, {{ELEMENT}})";
|
$script = "Syn.trigger('change', {}, {{ELEMENT}})";
|
||||||
$driver->triggerSynScript($select->getXpath(), $script);
|
$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.
|
// Here we don't need to wait for the AJAX response.
|
||||||
$this->find_button(get_string('adduserstogroup', 'group'))->click();
|
$this->find_button(get_string('adduserstogroup', 'group'))->click();
|
||||||
|
|
||||||
// Wait for add/remove members page to be loaded.
|
// 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.
|
// Getting the option and selecting it.
|
||||||
$select = $this->find_field('addselect');
|
$select = $this->find_field('addselect');
|
||||||
|
@ -86,7 +86,7 @@ class behat_groups extends behat_base {
|
||||||
$this->find_button(get_string('add'))->click();
|
$this->find_button(get_string('add'))->click();
|
||||||
|
|
||||||
// Wait for the page to load.
|
// 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.
|
// Returning to the main groups page.
|
||||||
$this->find_button(get_string('backtogroups', 'group'))->click();
|
$this->find_button(get_string('backtogroups', 'group'))->click();
|
||||||
|
|
|
@ -167,7 +167,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
|
|
||||||
// How much we will be waiting for the element to appear.
|
// How much we will be waiting for the element to appear.
|
||||||
if (!$timeout) {
|
if (!$timeout) {
|
||||||
$timeout = self::TIMEOUT;
|
$timeout = self::get_timeout();
|
||||||
$microsleep = false;
|
$microsleep = false;
|
||||||
} else {
|
} else {
|
||||||
// Spinning each 0.1 seconds if the timeout was forced as we understand
|
// Spinning each 0.1 seconds if the timeout was forced as we understand
|
||||||
|
@ -308,13 +308,13 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
|
|
||||||
// Using default timeout which is pretty high.
|
// Using default timeout which is pretty high.
|
||||||
if (!$timeout) {
|
if (!$timeout) {
|
||||||
$timeout = self::TIMEOUT;
|
$timeout = self::get_timeout();
|
||||||
}
|
}
|
||||||
if ($microsleep) {
|
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;
|
$loops = $timeout * 10;
|
||||||
} else {
|
} else {
|
||||||
// Will sleep for self::TIMEOUT seconds.
|
// Will sleep for self::get_timeout() seconds.
|
||||||
$loops = $timeout;
|
$loops = $timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
array('selector' => $selector, 'locator' => $locator),
|
array('selector' => $selector, 'locator' => $locator),
|
||||||
self::EXTENDED_TIMEOUT,
|
self::get_extended_timeout(),
|
||||||
$exception,
|
$exception,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -535,7 +535,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
array('selector' => $selector, 'locator' => $locator),
|
array('selector' => $selector, 'locator' => $locator),
|
||||||
self::EXTENDED_TIMEOUT,
|
self::get_extended_timeout(),
|
||||||
$exception,
|
$exception,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -567,7 +567,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
$node,
|
$node,
|
||||||
self::EXTENDED_TIMEOUT,
|
self::get_extended_timeout(),
|
||||||
$exception,
|
$exception,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -602,7 +602,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
array($node, $attribute, $attributevalue),
|
array($node, $attribute, $attributevalue),
|
||||||
self::EXTENDED_TIMEOUT,
|
self::get_extended_timeout(),
|
||||||
$exception,
|
$exception,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -730,7 +730,7 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
public static function wait_for_pending_js_in_session(Session $session) {
|
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
|
// 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.
|
// 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 = '';
|
$pending = '';
|
||||||
try {
|
try {
|
||||||
$jscode = trim(preg_replace('/\s+/', ' ', '
|
$jscode = trim(preg_replace('/\s+/', ' ', '
|
||||||
|
@ -771,11 +771,13 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Timeout waiting for JS to complete. It will be caught and forwarded to behat_hooks::i_look_for_exceptions().
|
// 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
|
// 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.
|
// 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 .
|
throw new \Exception('Javascript code and/or AJAX requests are not ready after ' .
|
||||||
' seconds. There is a Javascript error or the code is extremely slow.');
|
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 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
|
||||||
$driver->click($xpath);
|
$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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ class behat_form_filemanager extends behat_form_field {
|
||||||
public function get_value() {
|
public function get_value() {
|
||||||
|
|
||||||
// Wait until DOM and JS is ready.
|
// 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.
|
// Get the label to restrict the files to this single form field.
|
||||||
$fieldlabel = $this->get_field_locator();
|
$fieldlabel = $this->get_field_locator();
|
||||||
|
|
|
@ -67,7 +67,7 @@ JS;
|
||||||
$this->field->keyDown(13);
|
$this->field->keyDown(13);
|
||||||
$this->field->keyPress(13);
|
$this->field->keyPress(13);
|
||||||
$this->field->keyUp(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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ class behat_form_select extends behat_form_field {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,7 @@ class behat_forms extends behat_base {
|
||||||
"//a[contains(concat(' ', @class, ' '), ' fheader ') and @aria-expanded = 'false']";
|
"//a[contains(concat(' ', @class, ' '), ' fheader ') and @aria-expanded = 'false']";
|
||||||
|
|
||||||
$collapseexpandlink = $this->find('xpath', $expandallxpath . '|' . $expandonlysection,
|
$collapseexpandlink = $this->find('xpath', $expandallxpath . '|' . $expandonlysection,
|
||||||
false, false, self::REDUCED_TIMEOUT);
|
false, false, behat_base::get_reduced_timeout());
|
||||||
$collapseexpandlink->click();
|
$collapseexpandlink->click();
|
||||||
|
|
||||||
} catch (ElementNotFoundException $e) {
|
} catch (ElementNotFoundException $e) {
|
||||||
|
|
|
@ -174,7 +174,7 @@ class behat_general extends behat_base {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
$iframename,
|
$iframename,
|
||||||
self::EXTENDED_TIMEOUT
|
behat_base::get_extended_timeout()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +271,7 @@ class behat_general extends behat_base {
|
||||||
return;
|
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 @@ class behat_general extends behat_base {
|
||||||
"[count(descendant::*[contains(., $xpathliteral)]) = 0]";
|
"[count(descendant::*[contains(., $xpathliteral)]) = 0]";
|
||||||
|
|
||||||
// We should wait a while to ensure that the page is not still loading elements.
|
// 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.
|
// all JS to be executed.
|
||||||
try {
|
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) {
|
} catch (ElementNotFoundException $e) {
|
||||||
// All ok.
|
// All ok.
|
||||||
return;
|
return;
|
||||||
|
@ -644,7 +644,7 @@ class behat_general extends behat_base {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
array('nodes' => $nodes, 'text' => $text),
|
array('nodes' => $nodes, 'text' => $text),
|
||||||
self::REDUCED_TIMEOUT,
|
behat_base::get_reduced_timeout(),
|
||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -728,7 +728,7 @@ class behat_general extends behat_base {
|
||||||
// We should wait a while to ensure that the page is not still loading elements.
|
// 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.
|
// Giving preference to the reliability of the results rather than to the performance.
|
||||||
try {
|
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) {
|
} catch (ElementNotFoundException $e) {
|
||||||
// All ok.
|
// All ok.
|
||||||
return;
|
return;
|
||||||
|
@ -754,7 +754,7 @@ class behat_general extends behat_base {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
array('nodes' => $nodes, 'text' => $text, 'element' => $element),
|
array('nodes' => $nodes, 'text' => $text, 'element' => $element),
|
||||||
self::REDUCED_TIMEOUT,
|
behat_base::get_reduced_timeout(),
|
||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
@ -932,7 +932,7 @@ class behat_general extends behat_base {
|
||||||
return $context->getSession()->getPage()->findAll($args['selector'], $args['locator']);
|
return $context->getSession()->getPage()->findAll($args['selector'], $args['locator']);
|
||||||
},
|
},
|
||||||
$params,
|
$params,
|
||||||
self::REDUCED_TIMEOUT,
|
behat_base::get_reduced_timeout(),
|
||||||
$exception,
|
$exception,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
@ -1124,7 +1124,7 @@ class behat_general extends behat_base {
|
||||||
// Would be better to use a 1 second sleep because the element should not be there,
|
// 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
|
// 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.
|
// 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) {
|
} catch (ElementNotFoundException $e) {
|
||||||
// It passes.
|
// It passes.
|
||||||
return;
|
return;
|
||||||
|
@ -1390,7 +1390,7 @@ class behat_general extends behat_base {
|
||||||
return $this->download_file_from_link($link);
|
return $this->download_file_from_link($link);
|
||||||
},
|
},
|
||||||
array('link' => $link),
|
array('link' => $link),
|
||||||
self::EXTENDED_TIMEOUT,
|
behat_base::get_extended_timeout(),
|
||||||
$exception
|
$exception
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1433,7 +1433,7 @@ class behat_general extends behat_base {
|
||||||
return $this->download_file_from_link($link);
|
return $this->download_file_from_link($link);
|
||||||
},
|
},
|
||||||
array('link' => $link),
|
array('link' => $link),
|
||||||
self::EXTENDED_TIMEOUT,
|
behat_base::get_extended_timeout(),
|
||||||
$exception
|
$exception
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -521,13 +521,13 @@ class behat_hooks extends behat_base {
|
||||||
* @AfterScenario @_switch_window
|
* @AfterScenario @_switch_window
|
||||||
*/
|
*/
|
||||||
public function after_scenario_switchwindow(AfterScenarioScope $scope) {
|
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 {
|
try {
|
||||||
$this->getSession()->restart();
|
$this->getSession()->restart();
|
||||||
break;
|
break;
|
||||||
} catch (DriverException $e) {
|
} catch (DriverException $e) {
|
||||||
// Wait for timeout and try again.
|
// 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
|
// If session is not restarted above then it will try to start session before next scenario
|
||||||
|
|
|
@ -297,7 +297,7 @@ class behat_navigation extends behat_base {
|
||||||
$jscondition = '(document.evaluate("' . $pnode->getXpath() . '", document, null, '.
|
$jscondition = '(document.evaluate("' . $pnode->getXpath() . '", document, null, '.
|
||||||
'XPathResult.ANY_TYPE, null).iterateNext().getAttribute(\'data-loaded\') == "true")';
|
'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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ class behat_permissions extends behat_base {
|
||||||
$advancedtoggle->click();
|
$advancedtoggle->click();
|
||||||
|
|
||||||
// Wait for the page to load.
|
// 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) {
|
} catch (Exception $e) {
|
||||||
// We already are in advanced mode.
|
// We already are in advanced mode.
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
This files describes API changes in core libraries and APIs,
|
This files describes API changes in core libraries and APIs,
|
||||||
information provided here is intended especially for developers.
|
information provided here is intended especially for developers.
|
||||||
|
|
||||||
|
=== 3.5.6 ===
|
||||||
|
|
||||||
|
* 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.5 ===
|
=== 3.5.5 ===
|
||||||
|
|
||||||
* The \core_rating provider's get_sql_join function now accepts an optional $innerjoin parameter.
|
* The \core_rating provider's get_sql_join function now accepts an optional $innerjoin parameter.
|
||||||
|
|
|
@ -100,6 +100,6 @@ class behat_assignfeedback_editpdf extends behat_base {
|
||||||
];
|
];
|
||||||
$js = implode(' && ', $conditions);
|
$js = implode(' && ', $conditions);
|
||||||
|
|
||||||
$this->getSession()->wait(self::TIMEOUT * 1000, "({$js})");
|
$this->getSession()->wait(self::get_timeout() * 1000, "({$js})");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,7 +139,7 @@ class behat_mod_feedback extends behat_base {
|
||||||
return $behatgeneralcontext->download_file_from_link($link);
|
return $behatgeneralcontext->download_file_from_link($link);
|
||||||
},
|
},
|
||||||
array('link' => $link),
|
array('link' => $link),
|
||||||
self::EXTENDED_TIMEOUT,
|
behat_base::get_extended_timeout(),
|
||||||
$exception
|
$exception
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ class behat_workshopallocation_manual extends behat_base {
|
||||||
$this->find('xpath', $xpathtd."/descendant::input[@value=$go]")->click();
|
$this->find('xpath', $xpathtd."/descendant::input[@value=$go]")->click();
|
||||||
} else {
|
} else {
|
||||||
// With Javascript we just wait for the page to reload.
|
// 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.
|
// Check the success string to appear.
|
||||||
$allocatedtext = behat_context_helper::escape(
|
$allocatedtext = behat_context_helper::escape(
|
||||||
|
|
|
@ -293,7 +293,7 @@ class behat_filepicker extends behat_files {
|
||||||
$selectfilebutton->click();
|
$selectfilebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish as it is performing an action.
|
// 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) {
|
if ($overwriteaction !== false) {
|
||||||
$overwritebutton = $this->find_button($overwriteaction);
|
$overwritebutton = $this->find_button($overwriteaction);
|
||||||
|
@ -301,7 +301,7 @@ class behat_filepicker extends behat_files {
|
||||||
$overwritebutton->click();
|
$overwritebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish.
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ class behat_repository_upload extends behat_files {
|
||||||
$submit->press();
|
$submit->press();
|
||||||
|
|
||||||
// We wait for all the JS to finish as it is performing an action.
|
// 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) {
|
if ($overwriteaction !== false) {
|
||||||
$overwritebutton = $this->find_button($overwriteaction);
|
$overwritebutton = $this->find_button($overwriteaction);
|
||||||
|
@ -168,7 +168,7 @@ class behat_repository_upload extends behat_files {
|
||||||
$overwritebutton->click();
|
$overwritebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish.
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ class behat_theme_boost_behat_admin extends behat_admin {
|
||||||
$submitsearch = $this->find('css', 'form input[type=submit][name=search]');
|
$submitsearch = $this->find('css', 'form input[type=submit][name=search]');
|
||||||
$submitsearch->press();
|
$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
|
// 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.
|
// but we also need to use lib/behat/form_field/* to deal with the different moodle form elements.
|
||||||
|
|
|
@ -289,7 +289,7 @@ class behat_theme_boost_behat_filepicker extends behat_theme_boost_behat_files {
|
||||||
$selectfilebutton->click();
|
$selectfilebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish as it is performing an action.
|
// 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) {
|
if ($overwriteaction !== false) {
|
||||||
$overwritebutton = $this->find_button($overwriteaction);
|
$overwritebutton = $this->find_button($overwriteaction);
|
||||||
|
@ -297,7 +297,7 @@ class behat_theme_boost_behat_filepicker extends behat_theme_boost_behat_files {
|
||||||
$overwritebutton->click();
|
$overwritebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish.
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,7 @@ class behat_theme_boost_behat_repository_upload extends behat_repository_upload
|
||||||
$submit->press();
|
$submit->press();
|
||||||
|
|
||||||
// We wait for all the JS to finish as it is performing an action.
|
// 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) {
|
if ($overwriteaction !== false) {
|
||||||
$overwritebutton = $this->find_button($overwriteaction);
|
$overwritebutton = $this->find_button($overwriteaction);
|
||||||
|
@ -127,7 +127,7 @@ class behat_theme_boost_behat_repository_upload extends behat_repository_upload
|
||||||
$overwritebutton->click();
|
$overwritebutton->click();
|
||||||
|
|
||||||
// We wait for all the JS to finish.
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue