Skip to content

Commit

Permalink
MDL-72593 behat: Improve behat handling of file manager buttons
Browse files Browse the repository at this point in the history
When using a try/catch for a find if the first match is not met then we
have an implicit 6 second delay waiting for the search to time out.

We can avoid this by combining the searches in a comma-separated
selection.

I have also taken the opportunity to convert the use of ->click() to the
i_click_on function which has the benefit of supporting wait for
pendingJS.
  • Loading branch information
andrewnicols committed Sep 21, 2021
1 parent 4258188 commit 4f4e9b4
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions lib/behat/core_behat_file_helper.php
Expand Up @@ -177,20 +177,14 @@ protected function open_element_contextual_menu($name, $filemanagerelement = fal
* @return void
*/
protected function open_add_file_window($filemanagernode, $repositoryname) {

$exception = new ExpectationException('No files can be added to the specified filemanager', $this->getSession());

// We should deal with single-file and multiple-file filemanagers,
// catching the exception thrown by behat_base::find() in case is not multiple
try {
// Looking for the add button inside the specified filemanager.
$add = $this->find('css', 'div.fp-btn-add a', $exception, $filemanagernode);
} catch (Exception $e) {
// Otherwise should be a single-file filepicker form element.
$add = $this->find('css', 'input.fp-btn-choose', $exception, $filemanagernode);
}
$this->ensure_node_is_visible($add);
$add->click();
$this->execute('behat_general::i_click_on_in_the', [
'div.fp-btn-add a, input.fp-btn-choose', 'css_element',
$filemanagernode, 'NodeElement'
]);

// Wait for the default repository (if any) to load. This checks that
// the relevant div exists and that it does not include the loading image.
Expand Down Expand Up @@ -220,7 +214,7 @@ protected function open_add_file_window($filemanagernode, $repositoryname) {
if (!$repositorylink->getParent()->getParent()->hasClass('active')) {
// If the repository link is active, then the repository is already loaded.
// Clicking it while it's active causes issues, so only click it when it isn't (see MDL-51014).
$repositorylink->click();
$this->execute('behat_general::i_click_on', [$repositorylink, 'NodeElement']);
}
}

Expand Down

0 comments on commit 4f4e9b4

Please sign in to comment.