Merge branch 'MDL-70148-master' of git://github.com/andrewnicols/moodle into master

This commit is contained in:
Eloy Lafuente (stronk7) 2020-11-17 23:12:56 +01:00
commit 6ca32e21e5
34 changed files with 323 additions and 124 deletions

View file

@ -0,0 +1,52 @@
@tool_behat
Feature: Verify that keyboard steps work as expected
In order to use behat step definitions
As a test writer
I need to verify that the keyboard steps work as expected
@javascript
Scenario: Typing keys into a field causes them to be input
Given the following "users" exist:
| username | email | firstname | lastname | password |
| saffronr | saffron.rutledge@example.com | Saffron | Rutledge | flowerpower |
Given I click on "Log in" "link"
And I click on "Username" "field"
When I type "saffronr"
And I press the tab key
And I type "flowerpower"
And I press enter
Then I should see "You are logged in as Saffron Rutledge"
@javascript
Scenario: Using tab changes focus to the next or previous field
Given I click on "Log in" "link"
And I click on "Username" "field"
And the focused element is "Username" "field"
When I press the tab key
Then the focused element is "Password" "field"
And I press the shift tab key
And the focused element is "Username" "field"
@javascript
Scenario: Using the arrow keys allows me to navigate through menus
Given the following "users" exist:
| username | email | firstname | lastname |
| saffronr | saffron.rutledge@example.com | Saffron | Rutledge |
And I log in as "saffronr"
And I click on "Saffron Rutledge" "link" in the ".usermenu" "css_element"
When I press the up key
Then the focused element is "Log out" "link"
@javascript
Scenario: The escape key can be used to close a dialogue
Given the following "course" exists:
| fullname | C1|
| shortname | C1 |
And I log in as "admin"
And I am on "C1" course homepage
And I navigate to course participants
And I press "Enrol users"
And "Enrol users" "dialogue" should be visible
When I press the escape key
Then "Enrol users" "dialogue" should not be visible

View file

@ -46,7 +46,7 @@ Feature: Manage data requests
And I open the action menu in "John Doe" "table_row" And I open the action menu in "John Doe" "table_row"
And I should see "View the request" And I should see "View the request"
But I should not see "Mark as complete" But I should not see "Mark as complete"
And I press key "27" in ".moodle-actionmenu" "css_element" And I press the escape key
And I open the action menu in "Jane Doe" "table_row" And I open the action menu in "Jane Doe" "table_row"
And I choose "Mark as complete" in the open action menu And I choose "Mark as complete" in the open action menu
And I should see "Do you really want to mark this user enquiry as complete?" And I should see "Do you really want to mark this user enquiry as complete?"

View file

@ -15,10 +15,10 @@ Feature: Manage data storage purposes
And I click on ".form-autocomplete-downarrow" "css_element" in the "Lawful bases" "form_row" And I click on ".form-autocomplete-downarrow" "css_element" in the "Lawful bases" "form_row"
And I click on "Contract (GDPR Art. 6.1(b))" "list_item" And I click on "Contract (GDPR Art. 6.1(b))" "list_item"
And I click on "Legal obligation (GDPR Art 6.1(c))" "list_item" And I click on "Legal obligation (GDPR Art 6.1(c))" "list_item"
And I press key "27" in the field "Lawful bases" And I press the escape key
And I click on ".form-autocomplete-downarrow" "css_element" in the "Sensitive personal data processing reasons" "form_row" And I click on ".form-autocomplete-downarrow" "css_element" in the "Sensitive personal data processing reasons" "form_row"
And I click on "Explicit consent (GDPR Art. 9.2(a))" "list_item" And I click on "Explicit consent (GDPR Art. 9.2(a))" "list_item"
And I press key "27" in the field "Sensitive personal data processing reasons" And I press the escape key
And I set the field "retentionperiodnumber" to "2" And I set the field "retentionperiodnumber" to "2"
When I press "Save" When I press "Save"
Then I should see "Purpose 1" in the "List of data purposes" "table" Then I should see "Purpose 1" in the "List of data purposes" "table"
@ -36,7 +36,7 @@ Feature: Manage data storage purposes
And I click on "Legal obligation (GDPR Art 6.1(c))" "text" in the ".form-autocomplete-selection" "css_element" And I click on "Legal obligation (GDPR Art 6.1(c))" "text" in the ".form-autocomplete-selection" "css_element"
And I click on ".form-autocomplete-downarrow" "css_element" in the "Lawful bases" "form_row" And I click on ".form-autocomplete-downarrow" "css_element" in the "Lawful bases" "form_row"
And I click on "Vital interests (GDPR Art. 6.1(d))" "list_item" And I click on "Vital interests (GDPR Art. 6.1(d))" "list_item"
And I press key "27" in the field "Lawful bases" And I press the escape key
And I set the field "retentionperiodnumber" to "3" And I set the field "retentionperiodnumber" to "3"
And I click on "protected" "checkbox" And I click on "protected" "checkbox"
When I press "Save changes" When I press "Save changes"

View file

@ -53,11 +53,11 @@ Feature: See the competencies for an activity on the course competencies page.
Then I should see "Test-Comp1" Then I should see "Test-Comp1"
And I should see "Test-Comp2" And I should see "Test-Comp2"
And I set the field "Filter competencies by resource or activity" to "PageName1" And I set the field "Filter competencies by resource or activity" to "PageName1"
And I press key "13" in the field "Filter competencies by resource or activity" And I press the enter key
And I should see "Test-Comp1" And I should see "Test-Comp1"
And I should not see "Test-Comp2" And I should not see "Test-Comp2"
And I set the field "Filter competencies by resource or activity" to "PageName2" And I set the field "Filter competencies by resource or activity" to "PageName2"
And I press key "13" in the field "Filter competencies by resource or activity" And I press the enter key
And I should not see "Test-Comp1" And I should not see "Test-Comp1"
And I should not see "Test-Comp2" And I should not see "Test-Comp2"
And I should see "No competencies have been linked to this activity or resource." And I should see "No competencies have been linked to this activity or resource."

View file

@ -30,7 +30,7 @@ Feature: Manage plearning plan
And I click on ".template-userplans" "css_element" in the "Science template" "table_row" And I click on ".template-userplans" "css_element" in the "Science template" "table_row"
And I open the autocomplete suggestions list And I open the autocomplete suggestions list
And I click on "Admin User" item in the autocomplete list And I click on "Admin User" item in the autocomplete list
And I press key "27" in the field "Select users to create learning plans for" And I press the escape key
When I click on "Create learning plans" "button" When I click on "Create learning plans" "button"
Then I should see "A learning plan was created" Then I should see "A learning plan was created"
And I should see "Admin User" in the "Science template" "table_row" And I should see "Admin User" in the "Science template" "table_row"
@ -55,7 +55,7 @@ Feature: Manage plearning plan
And I click on ".template-cohorts" "css_element" in the "Science template cohort" "table_row" And I click on ".template-cohorts" "css_element" in the "Science template cohort" "table_row"
And I click on ".form-autocomplete-downarrow" "css_element" And I click on ".form-autocomplete-downarrow" "css_element"
And I click on "cohort plan" item in the autocomplete list And I click on "cohort plan" item in the autocomplete list
And I press key "27" in the field "Select cohorts to sync" And I press the escape key
When I click on "Add cohorts" "button" When I click on "Add cohorts" "button"
Then I should see "2 learning plans were created." Then I should see "2 learning plans were created."
And I follow "Learning plan templates" And I follow "Learning plan templates"

View file

@ -14,7 +14,7 @@ Feature: Edit activities in main menu block
| Forum name | My forum name | | Forum name | My forum name |
And I click on "Edit title" "link" in the "My forum name" activity in site main menu block And I click on "Edit title" "link" in the "My forum name" activity in site main menu block
And I set the field "New name for activity My forum name" to "New forum name" And I set the field "New name for activity My forum name" to "New forum name"
And I press key "13" in the field "New name for activity My forum name" And I press the enter key
Then I should not see "My forum name" Then I should not see "My forum name"
And I should see "New forum name" And I should see "New forum name"
And I follow "New forum name" And I follow "New forum name"

View file

@ -27,7 +27,7 @@ Feature: Edit activities in social activities block
And I press "Save and return to course" And I press "Save and return to course"
And I click on "Edit title" "link" in the "My forum name" activity in social activities block And I click on "Edit title" "link" in the "My forum name" activity in social activities block
And I set the field "New name for activity My forum name" to "New forum name" And I set the field "New name for activity My forum name" to "New forum name"
And I press key "13" in the field "New name for activity My forum name" And I press the enter key
Then I should not see "My forum name" in the "Social activities" "block" Then I should not see "My forum name" in the "Social activities" "block"
And I should see "New forum name" And I should see "New forum name"
And I follow "New forum name" And I follow "New forum name"

View file

@ -64,7 +64,7 @@ Feature: Add cohorts of users
When I follow "Cohorts" When I follow "Cohorts"
And I click on "Edit cohort name" "link" in the "Test cohort name" "table_row" And I click on "Edit cohort name" "link" in the "Test cohort name" "table_row"
And I set the field "New name for cohort Test cohort name" to "Students cohort" And I set the field "New name for cohort Test cohort name" to "Students cohort"
And I press key "13" in the field "New name for cohort Test cohort name" And I press the enter key
Then I should not see "Test cohort name" Then I should not see "Test cohort name"
And I should see "Students cohort" And I should see "Students cohort"
And I follow "Cohorts" And I follow "Cohorts"

View file

@ -55,7 +55,7 @@ Feature: Sections can be edited and deleted in topics format
Scenario: Inline edit section name in topics format Scenario: Inline edit section name in topics format
When I click on "Edit topic name" "link" in the "li#section-1" "css_element" When I click on "Edit topic name" "link" in the "li#section-1" "css_element"
And I set the field "New name for topic Topic 1" to "Midterm evaluation" And I set the field "New name for topic Topic 1" to "Midterm evaluation"
And I press key "13" in the field "New name for topic Topic 1" And I press the enter key
Then I should not see "Topic 1" in the "region-main" "region" Then I should not see "Topic 1" in the "region-main" "region"
And "New name for topic" "field" should not exist And "New name for topic" "field" should not exist
And I should see "Midterm evaluation" in the "li#section-1" "css_element" And I should see "Midterm evaluation" in the "li#section-1" "css_element"

View file

@ -56,7 +56,7 @@ Feature: Sections can be edited and deleted in weeks format
Scenario: Inline edit section name in weeks format Scenario: Inline edit section name in weeks format
When I click on "Edit week name" "link" in the "li#section-1" "css_element" When I click on "Edit week name" "link" in the "li#section-1" "css_element"
And I set the field "New name for week 1 May - 7 May" to "Midterm evaluation" And I set the field "New name for week 1 May - 7 May" to "Midterm evaluation"
And I press key "13" in the field "New name for week 1 May - 7 May" And I press the enter key
Then I should not see "1 May - 7 May" in the "region-main" "region" Then I should not see "1 May - 7 May" in the "region-main" "region"
And "New name for week" "field" should not exist And "New name for week" "field" should not exist
And I should see "Midterm evaluation" in the "li#section-1" "css_element" And I should see "Midterm evaluation" in the "li#section-1" "css_element"

View file

@ -23,7 +23,7 @@ Feature: Edit activity name in-place
# Rename activity # Rename activity
And I click on "Edit title" "link" in the "//div[contains(@class,'activityinstance') and contains(.,'Test forum name')]" "xpath_element" And I click on "Edit title" "link" in the "//div[contains(@class,'activityinstance') and contains(.,'Test forum name')]" "xpath_element"
And I set the field "New name for activity Test forum name" to "Good news" And I set the field "New name for activity Test forum name" to "Good news"
And I press key "13" in the field "New name for activity Test forum name" And I press the enter key
Then I should not see "Test forum name" in the ".course-content" "css_element" Then I should not see "Test forum name" in the ".course-content" "css_element"
And "New name for activity Test forum name" "field" should not exist And "New name for activity Test forum name" "field" should not exist
And I should see "Good news" And I should see "Good news"
@ -33,11 +33,10 @@ Feature: Edit activity name in-place
# Cancel renaming # Cancel renaming
And I click on "Edit title" "link" in the "//div[contains(@class,'activityinstance') and contains(.,'Good news')]" "xpath_element" And I click on "Edit title" "link" in the "//div[contains(@class,'activityinstance') and contains(.,'Good news')]" "xpath_element"
And I set the field "New name for activity Good news" to "Terrible news" And I set the field "New name for activity Good news" to "Terrible news"
And I press key "27" in the field "New name for activity Good news" And I press the escape key
And "New name for activity Good news" "field" should not exist And "New name for activity Good news" "field" should not exist
And I should see "Good news" And I should see "Good news"
And I should not see "Terrible news" And I should not see "Terrible news"
And I am on "Course 1" course homepage And I am on "Course 1" course homepage
And I should see "Good news" And I should see "Good news"
And I should not see "Terrible news" And I should not see "Terrible news"
And I log out

View file

@ -22,7 +22,7 @@ Feature: Managers can manage categories for course custom fields
And I navigate to "Courses > Course custom fields" in site administration And I navigate to "Courses > Course custom fields" in site administration
And I click on "Edit category name" "link" in the "//div[contains(@class,'categoryinstance') and contains(.,'Category for test')]" "xpath_element" And I click on "Edit category name" "link" in the "//div[contains(@class,'categoryinstance') and contains(.,'Category for test')]" "xpath_element"
And I set the field "New value for Category for test" to "Good fields" And I set the field "New value for Category for test" to "Good fields"
And I press key "13" in the field "New value for Category for test" And I press the enter key
Then I should not see "Category for test" in the "#customfield_catlist" "css_element" Then I should not see "Category for test" in the "#customfield_catlist" "css_element"
And "New value for Category for test" "field" should not exist And "New value for Category for test" "field" should not exist
And I should see "Good fields" in the "#customfield_catlist" "css_element" And I should see "Good fields" in the "#customfield_catlist" "css_element"

View file

@ -32,6 +32,6 @@ Feature: Users can be added to multiple groups at once
And I click on "Group 1" item in the autocomplete list And I click on "Group 1" item in the autocomplete list
And I click on ".form-autocomplete-downarrow" "css_element" in the "student1" "table_row" And I click on ".form-autocomplete-downarrow" "css_element" in the "student1" "table_row"
And I click on "Group 2" item in the autocomplete list And I click on "Group 2" item in the autocomplete list
And I press key "27" in the field "Edit groups for \"Student 1\"" And I press the escape key
And I click on "Save changes" "link" in the "student1" "table_row" And I click on "Save changes" "link" in the "student1" "table_row"
Then I should see "Group 1, Group 2" Then I should see "Group 1, Group 2"

View file

@ -59,18 +59,18 @@ Feature: Using the AJAX grading feature of Grader report to update grades and fe
Then I should see a grade field for "Student 2" and grade item "Item VU" Then I should see a grade field for "Student 2" and grade item "Item VU"
And I should not see a feedback field for "Student 2" and grade item "Item VU" And I should not see a feedback field for "Student 2" and grade item "Item VU"
And I set the field "ajaxgrade" to "33" And I set the field "ajaxgrade" to "33"
And I press key "13" in the field "ajaxgrade" And I press the enter key
And I should not see a grade field for "Student 2" and grade item "Item VU" And I should not see a grade field for "Student 2" and grade item "Item VU"
And I should not see a feedback field for "Student 2" and grade item "Item VU" And I should not see a feedback field for "Student 2" and grade item "Item VU"
And I click on student "Student 3" for grade item "Item VU"
And I set the field "ajaxgrade" to "50"
And I press key "13" in the field "ajaxgrade"
And I click on student "Student 3" for grade item "Item 1"
And I set the field "ajaxgrade" to "80"
And I press key "13" in the field "ajaxgrade"
And I click on student "Student 3" for grade item "Item SU" And I click on student "Student 3" for grade item "Item SU"
And I set the field "ajaxgrade" to "Very good" And I set the field "ajaxgrade" to "Very good"
And I press key "13" in the field "ajaxgrade" And I press the shift tab key
And I click on student "Student 3" for grade item "Item VU"
And I set the field "ajaxgrade" to "50"
And I press the enter key
And I click on student "Student 3" for grade item "Item 1"
And I set the field "ajaxgrade" to "80"
And I press the enter key
And the following should exist in the "user-grades" table: And the following should exist in the "user-grades" table:
| -1- | -6- | -7- | -13- | -16- | | -1- | -6- | -7- | -13- | -16- |
| Student 2 | - | 33.00 | - | 33.00 | | Student 2 | - | 33.00 | - | 33.00 |
@ -88,7 +88,7 @@ Feature: Using the AJAX grading feature of Grader report to update grades and fe
And I should see a grade field for "Student 1" and grade item "Course total" And I should see a grade field for "Student 1" and grade item "Course total"
And I should not see a feedback field for "Student 1" and grade item "Course total" And I should not see a feedback field for "Student 1" and grade item "Course total"
And I set the field "ajaxgrade" to "90" And I set the field "ajaxgrade" to "90"
And I press key "13" in the field "ajaxgrade" And I press the enter key
And the following should exist in the "user-grades" table: And the following should exist in the "user-grades" table:
| -1- | -16- | | -1- | -16- |
| Student 1 | 90.00 | | Student 1 | 90.00 |
@ -112,7 +112,7 @@ Feature: Using the AJAX grading feature of Grader report to update grades and fe
And I should see a feedback field for "Student 2" and grade item "Item VU" And I should see a feedback field for "Student 2" and grade item "Item VU"
And I set the field "ajaxgrade" to "33" And I set the field "ajaxgrade" to "33"
And I set the field "ajaxfeedback" to "Student 2 VU feedback" And I set the field "ajaxfeedback" to "Student 2 VU feedback"
And I press key "13" in the field "ajaxfeedback" And I press the enter key
And I click on student "Student 3" for grade item "Item VL" And I click on student "Student 3" for grade item "Item VL"
And I should not see a grade field for "Student 3" and grade item "Item VL" And I should not see a grade field for "Student 3" and grade item "Item VL"
And I should not see a feedback field for "Student 3" and grade item "Item VL" And I should not see a feedback field for "Student 3" and grade item "Item VL"
@ -120,11 +120,11 @@ Feature: Using the AJAX grading feature of Grader report to update grades and fe
And I should not see a grade field for "Student 3" and grade item "Item TU" And I should not see a grade field for "Student 3" and grade item "Item TU"
And I should see a feedback field for "Student 3" and grade item "Item TU" And I should see a feedback field for "Student 3" and grade item "Item TU"
And I set the field "ajaxfeedback" to "Student 3 TU feedback" And I set the field "ajaxfeedback" to "Student 3 TU feedback"
And I press key "13" in the field "ajaxfeedback" And I press the enter key
And I click on student "Student 2" for grade item "Item SU" And I click on student "Student 2" for grade item "Item SU"
And I set the field "ajaxgrade" to "Very good" And I set the field "ajaxgrade" to "Very good"
And I set the field "ajaxfeedback" to "Student 2 SU feedback" And I set the field "ajaxfeedback" to "Student 2 SU feedback"
And I press key "13" in the field "ajaxfeedback" And I press the enter key
# Reload grader report: # Reload grader report:
And I navigate to "View > User report" in the course gradebook And I navigate to "View > User report" in the course gradebook
And I navigate to "View > Grader report" in the course gradebook And I navigate to "View > Grader report" in the course gradebook
@ -148,7 +148,7 @@ Feature: Using the AJAX grading feature of Grader report to update grades and fe
Then I should see a grade field for "Student 2" and grade item "Item VU" Then I should see a grade field for "Student 2" and grade item "Item VU"
And I should see a feedback field for "Student 2" and grade item "Item VU" And I should see a feedback field for "Student 2" and grade item "Item VU"
And I set the field "ajaxgrade" to "33" And I set the field "ajaxgrade" to "33"
And I press key "13" in the field "ajaxgrade" And I press the enter key
And I click on student "Student 2" for grade item "Course total" And I click on student "Student 2" for grade item "Course total"
And I should not see a grade field for "Student 3" and grade item "Course total" And I should not see a grade field for "Student 3" and grade item "Course total"
And I should not see a feedback field for "Student 3" and grade item "Course total" And I should not see a feedback field for "Student 3" and grade item "Course total"

View file

@ -38,6 +38,10 @@ use Behat\Mink\Session;
require_once(__DIR__ . '/classes/component_named_selector.php'); require_once(__DIR__ . '/classes/component_named_selector.php');
require_once(__DIR__ . '/classes/component_named_replacement.php'); require_once(__DIR__ . '/classes/component_named_replacement.php');
// Alias the WebDriver\Key class to behat_keys to make future transition to a different WebDriver implementation
// easier.
class_alias('WebDriver\\Key', 'behat_keys');
/** /**
* Steps definitions base class. * Steps definitions base class.
* *
@ -264,6 +268,44 @@ class behat_base extends Behat\MinkExtension\Context\RawMinkContext {
]; ];
} }
/**
* Send key presses straight to the currently active element.
*
* The `$keys` array contains a list of key values to send to the session as defined in the WebDriver and JsonWire
* specifications:
* - JsonWire: https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidkeys
* - W3C WebDriver: https://www.w3.org/TR/webdriver/#keyboard-actions
*
* This may be a combination of typable characters, modifier keys, and other supported keypoints.
*
* The NULL_KEY should be used to release modifier keys. If the NULL_KEY is not used then modifier keys will remain
* in the pressed state.
*
* Example usage:
*
* behat_base::type_keys($this->getSession(), [behat_keys::SHIFT, behat_keys::TAB, behat_keys::NULL_KEY]);
* behat_base::type_keys($this->getSession(), [behat_keys::ENTER, behat_keys::NULL_KEY]);
* behat_base::type_keys($this->getSession(), [behat_keys::ESCAPE, behat_keys::NULL_KEY]);
*
* It can also be used to send text input, for example:
*
* behat_base::type_keys(
* $this->getSession(),
* ['D', 'o', ' ', 'y', 'o', 'u', ' ', 'p', 'l', 'a' 'y', ' ', 'G', 'o', '?', behat_base::NULL_KEY]
* );
*
*
* Please note: This function does not use the element/sendKeys variants but sends keys straight to the browser.
*
* @param Session $session
* @param string[] $keys
*/
public static function type_keys(Session $session, array $keys): void {
$session->getDriver()->getWebDriverSession()->keys([
'value' => $keys,
]);
}
/** /**
* Finds DOM nodes in the page using named selectors. * Finds DOM nodes in the page using named selectors.
* *

View file

@ -78,14 +78,12 @@ class behat_form_autocomplete extends behat_form_text {
$suggestion->click(); $suggestion->click();
} else { } else {
// Press the return key to create a new tag. // Press the return key to create a new tag.
// Note: We cannot use $this->key_press() because the keyPress action, in combination with the keyDown behat_base::type_keys($this->session, [behat_keys::ENTER]);
// submits the form.
$this->field->keyDown(13);
$this->field->keyUp(13);
} }
$this->wait_for_pending_js();
$this->wait_for_pending_js(); // Press the escape to close the autocomplete suggestions list.
$this->key_press(27); behat_base::type_keys($this->session, [behat_keys::ESCAPE]);
$this->wait_for_pending_js(); $this->wait_for_pending_js();
} }
} }

View file

@ -12,7 +12,7 @@ Feature: Navigate action menu
# The menu should now be visible. # The menu should now be visible.
Then ".usermenu [role='menu']" "css_element" should be visible Then ".usermenu [role='menu']" "css_element" should be visible
# Press down arrow. # Press down arrow.
And I press key "40" in "#actionmenuaction-1" "css_element" And I press the down key
# The menu should still be visible. # The menu should still be visible.
And ".usermenu [role='menu']" "css_element" should be visible And ".usermenu [role='menu']" "css_element" should be visible

View file

@ -27,12 +27,12 @@
require_once(__DIR__ . '/../../behat/behat_base.php'); require_once(__DIR__ . '/../../behat/behat_base.php');
use Behat\Mink\Exception\ExpectationException as ExpectationException, use Behat\Gherkin\Node\TableNode as TableNode;
Behat\Mink\Exception\ElementNotFoundException as ElementNotFoundException, use Behat\Mink\Exception\DriverException as DriverException;
Behat\Mink\Exception\DriverException as DriverException, use Behat\Mink\Exception\ElementNotFoundException as ElementNotFoundException;
WebDriver\Exception\NoSuchElement as NoSuchElement, use Behat\Mink\Exception\ExpectationException as ExpectationException;
WebDriver\Exception\StaleElementReference as StaleElementReference, use WebDriver\Exception\NoSuchElement as NoSuchElement;
Behat\Gherkin\Node\TableNode as TableNode; use WebDriver\Exception\StaleElementReference as StaleElementReference;
/** /**
* Cross component steps definitions. * Cross component steps definitions.
@ -1710,6 +1710,143 @@ EOF;
} }
} }
/**
* Send key presses to the browser without first changing focusing, or applying the key presses to a specific
* element.
*
* Example usage of this step:
* When I type "Penguin"
*
* @When I type :keys
* @param string $keys The key, or list of keys, to type
*/
public function i_type(string $keys): void {
behat_base::type_keys($this->getSession(), str_split($keys));
}
/**
* Press a named key with an optional set of modifiers.
*
* Supported named keys are:
* - up
* - down
* - left
* - right
* - pageup|page_up
* - pagedown|page_down
* - home
* - end
* - insert
* - delete
* - backspace
* - escape
* - enter
* - tab
*
* Supported moderators are:
* - shift
* - ctrl
* - alt
* - meta
*
* Example usage of this new step:
* When I press the up key
* When I press the space key
* When I press the shift tab key
*
* Multiple moderator keys can be combined using the '+' operator, for example:
* When I press the ctrl+shift enter key
* When I press the ctrl + shift enter key
*
* @When /^I press the (?P<modifiers_string>.* )?(?P<key_string>.*) key$/
* @param string $modifiers A list of keyboard modifiers, separated by the `+` character
* @param string $key The name of the key to press
*/
public function i_press_named_key(string $modifiers, string $key): void {
behat_base::require_javascript_in_session($this->getSession());
$keys = [];
foreach (explode('+', $modifiers) as $modifier) {
switch (strtoupper(trim($modifier))) {
case '':
break;
case 'SHIFT':
$keys[] = behat_keys::SHIFT;
break;
case 'CTRL':
$keys[] = behat_keys::CONTROL;
break;
case 'ALT':
$keys[] = behat_keys::ALT;
break;
case 'META':
$keys[] = behat_keys::META;
break;
default:
throw new \coding_exception("Unknown modifier key '$modifier'}");
}
}
$modifier = trim($key);
switch (strtoupper($key)) {
case 'UP':
$keys[] = behat_keys::UP_ARROW;
break;
case 'DOWN':
$keys[] = behat_keys::DOWN_ARROW;
break;
case 'LEFT':
$keys[] = behat_keys::LEFT_ARROW;
break;
case 'RIGHT':
$keys[] = behat_keys::RIGHT_ARROW;
break;
case 'HOME':
$keys[] = behat_keys::HOME;
break;
case 'END':
$keys[] = behat_keys::END;
break;
case 'INSERT':
$keys[] = behat_keys::INSERT;
break;
case 'BACKSPACE':
$keys[] = behat_keys::BACKSPACE;
break;
case 'DELETE':
$keys[] = behat_keys::DELETE;
break;
case 'PAGEUP':
case 'PAGE_UP':
$keys[] = behat_keys::PAGE_UP;
break;
case 'PAGEDOWN':
case 'PAGE_DOWN':
$keys[] = behat_keys::PAGE_DOWN;
break;
case 'ESCAPE':
$keys[] = behat_keys::ESCAPE;
break;
case 'ENTER':
$keys[] = behat_keys::ENTER;
break;
case 'TAB':
$keys[] = behat_keys::TAB;
break;
case 'SPACE':
$keys[] = behat_keys::SPACE;
break;
default:
throw new \coding_exception("Unknown key '$key'}");
}
// Always send the NULL key as the last key.
$keys[] = behat_keys::NULL_KEY;
behat_base::type_keys($this->getSession(), $keys);
}
/** /**
* Trigger a keydown event for a key on a specific element. * Trigger a keydown event for a key on a specific element.
* *
@ -1761,12 +1898,8 @@ EOF;
} }
// Gets the node based on the requested selector type and locator. // Gets the node based on the requested selector type and locator.
$node = $this->get_selected_node($selectortype, $element); $node = $this->get_selected_node($selectortype, $element);
$driver = $this->getSession()->getDriver(); $this->execute('behat_general::i_click_on', [$node, 'NodeElement']);
if ($driver instanceof \Moodle\BehatExtension\Driver\MoodleSelenium2Driver) { $this->execute('behat_general::i_press_named_key', ['', 'tab']);
$driver->post_key("\xEE\x80\x84", $node->getXpath());
} else {
$driver->keyDown($node->getXpath(), "\t");
}
} }
/** /**
@ -1863,12 +1996,11 @@ EOF;
* @throws DriverException * @throws DriverException
*/ */
public function i_manually_press_tab($shift = '') { public function i_manually_press_tab($shift = '') {
if (!$this->running_javascript()) { if (empty($shift)) {
throw new DriverException($shift . ' Tab press step is not available with Javascript disabled'); $this->execute('behat_general::i_press_named_key', ['', 'tab']);
} else {
$this->execute('behat_general::i_press_named_key', ['shift', 'tab']);
} }
$value = ($shift == ' shift') ? [\WebDriver\Key::SHIFT . \WebDriver\Key::TAB] : [\WebDriver\Key::TAB];
$this->getSession()->getDriver()->getWebDriverSession()->activeElement()->postValue(['value' => $value]);
} }
/** /**
@ -1930,12 +2062,7 @@ EOF;
* @throws DriverException * @throws DriverException
*/ */
public function i_manually_press_enter() { public function i_manually_press_enter() {
if (!$this->running_javascript()) { $this->execute('behat_general::i_press_named_key', ['', 'enter']);
throw new DriverException('Enter press step is not available with Javascript disabled');
}
$value = [\WebDriver\Key::ENTER];
$this->getSession()->getDriver()->getWebDriverSession()->activeElement()->postValue(['value' => $value]);
} }
/** /**

View file

@ -102,7 +102,7 @@ Feature: Manage preferences
And I open messaging And I open messaging
And I select "Student 2" user in messaging And I select "Student 2" user in messaging
And I set the field with xpath "//textarea[@data-region='send-message-txt']" to "Hi!" And I set the field with xpath "//textarea[@data-region='send-message-txt']" to "Hi!"
And I press key "13" in "//textarea[@data-region='send-message-txt']" "xpath_element" And I press the enter key
Then I should see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element" Then I should see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element"
Scenario: Sending a message after 'Use enter to send' is disabled Scenario: Sending a message after 'Use enter to send' is disabled
@ -113,7 +113,7 @@ Feature: Manage preferences
And I go back in "view-settings" message drawer And I go back in "view-settings" message drawer
Then I select "Student 2" user in messaging Then I select "Student 2" user in messaging
And I set the field with xpath "//textarea[@data-region='send-message-txt']" to "Hi!" And I set the field with xpath "//textarea[@data-region='send-message-txt']" to "Hi!"
And I press key "13" in "//textarea[@data-region='send-message-txt']" "xpath_element" And I press the enter key
And I should not see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element" And I should not see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element"
And I press "Send message" And I press "Send message"
And I should see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element" And I should see "Hi!" in the "//*[@data-region='message-drawer']//div[@data-region='content-message-container']" "xpath_element"

View file

@ -131,7 +131,7 @@ Feature: The forum search allows users to perform advanced searches for forum po
And I should see "Advanced search" And I should see "Advanced search"
And I set the field "Is tagged with" to "SearchedTag" And I set the field "Is tagged with" to "SearchedTag"
And I click on "[data-value='SearchedTag']" "css_element" And I click on "[data-value='SearchedTag']" "css_element"
And I press key "27" in the field "Is tagged with" And I press the escape key
When I press "Search forums" When I press "Search forums"
Then I should see "My subject" Then I should see "My subject"
And I should not see "Your subjective" And I should not see "Your subjective"

View file

@ -23,7 +23,7 @@ Feature: Rename external tools via inline editing
| Activity name | Test tool activity 1 | | Activity name | Test tool activity 1 |
And I click on "Edit title" "link" in the "li#section-1" "css_element" And I click on "Edit title" "link" in the "li#section-1" "css_element"
And I set the field "New name for activity Test tool activity 1" to "Test tool activity renamed" And I set the field "New name for activity Test tool activity 1" to "Test tool activity renamed"
And I press key "13" in the field "New name for activity Test tool activity 1" And I press the enter key
And I navigate to "Setup > Gradebook setup" in the course gradebook And I navigate to "Setup > Gradebook setup" in the course gradebook
Then I should not see "Test tool activity 1" Then I should not see "Test tool activity 1"
And I should see "Test tool activity renamed" And I should see "Test tool activity renamed"

View file

@ -44,7 +44,7 @@ Feature: Adding questions to a quiz from the question bank
And I should see "bar" in the "question 02 name" "table_row" And I should see "bar" in the "question 02 name" "table_row"
And I should see "qidnum" in the "question 02 name" "table_row" And I should see "qidnum" in the "question 02 name" "table_row"
And I set the field "Filter by tags..." to "foo" And I set the field "Filter by tags..." to "foo"
And I press key "13" in the field "Filter by tags..." And I press the enter key
And I should see "question 01 name" in the "categoryquestions" "table" And I should see "question 01 name" in the "categoryquestions" "table"
And I should not see "question 02 name" in the "categoryquestions" "table" And I should not see "question 02 name" in the "categoryquestions" "table"

View file

@ -36,8 +36,7 @@ Feature: Edit quiz marks with no attempts
And I should see "Total of marks: 10.00" And I should see "Total of marks: 10.00"
When I follow "Edit maximum mark" When I follow "Edit maximum mark"
And I wait until "li input[name=maxmark]" "css_element" exists And I press the escape key
And I take focus off "li input[name=maxmark]" "css_element"
Then I should see "7.00" Then I should see "7.00"
And I should see "3.00" And I should see "3.00"
And I should see "Total of marks: 10.00" And I should see "Total of marks: 10.00"

View file

@ -46,8 +46,7 @@ Feature: Edit quiz marks with attempts
And I should see "Total of marks: 10.00" And I should see "Total of marks: 10.00"
When I follow "Edit maximum mark" When I follow "Edit maximum mark"
And I wait until "li input[name=maxmark]" "css_element" exists And I press the escape key
And I take focus off "li input[name=maxmark]" "css_element"
Then I should see "7.00" Then I should see "7.00"
And I should see "3.00" And I should see "3.00"
And I should see "Total of marks: 10.00" And I should see "Total of marks: 10.00"

View file

@ -36,6 +36,6 @@ Feature: The questions in the question bank can be filtered by tags
@javascript @javascript
Scenario: The questions can be filtered by tag Scenario: The questions can be filtered by tag
When I set the field "Filter by tags..." to "foo" When I set the field "Filter by tags..." to "foo"
And I press key "13" in the field "Filter by tags..." And I press the enter key
Then I should see "question 1 name" in the "categoryquestions" "table" Then I should see "question 1 name" in the "categoryquestions" "table"
And I should not see "question 2 name" in the "categoryquestions" "table" And I should not see "question 2 name" in the "categoryquestions" "table"

View file

@ -80,10 +80,10 @@ class behat_qtype_ddimageortext extends behat_base {
public function i_type_on_place_in_the_drag_and_drop_onto_image_question($keys, $placenumber) { public function i_type_on_place_in_the_drag_and_drop_onto_image_question($keys, $placenumber) {
$node = $this->get_selected_node('xpath_element', $this->drop_xpath($placenumber)); $node = $this->get_selected_node('xpath_element', $this->drop_xpath($placenumber));
$this->ensure_node_is_visible($node); $this->ensure_node_is_visible($node);
$node->focus();
foreach (str_split($keys) as $key) { foreach (str_split($keys) as $key) {
$node->keyDown($key); behat_base::type_keys($this->getSession(), [$key]);
$node->keyPress($key);
$node->keyUp($key);
$this->wait_for_pending_js(); $this->wait_for_pending_js();
} }
} }

View file

@ -103,18 +103,11 @@ class behat_qtype_ddmarker extends behat_base {
* @Given /^I type "(?P<direction>up|down|left|right)" "(?P<repeats>\d+)" times on marker "(?P<marker>[^"]*)" in the drag and drop markers question$/ * @Given /^I type "(?P<direction>up|down|left|right)" "(?P<repeats>\d+)" times on marker "(?P<marker>[^"]*)" in the drag and drop markers question$/
*/ */
public function i_type_on_marker_in_the_drag_and_drop_markers_question($direction, $repeats, $marker) { public function i_type_on_marker_in_the_drag_and_drop_markers_question($direction, $repeats, $marker) {
$keycodes = array(
'up' => chr(38),
'down' => chr(40),
'left' => chr(37),
'right' => chr(39),
);
$node = $this->get_selected_node('xpath_element', $this->marker_xpath($marker, true)); $node = $this->get_selected_node('xpath_element', $this->marker_xpath($marker, true));
$this->ensure_node_is_visible($node); $this->ensure_node_is_visible($node);
$node->focus();
for ($i = 0; $i < $repeats; $i++) { for ($i = 0; $i < $repeats; $i++) {
$node->keyDown($keycodes[$direction]); $this->execute('behat_general::i_press_named_key', ['', $direction]);
$node->keyPress($keycodes[$direction]);
$node->keyUp($keycodes[$direction]);
} }
} }
} }

View file

@ -50,8 +50,8 @@ Feature: Preview a drag-drop marker question
# Keep window large else drag will scroll the window to find element. # Keep window large else drag will scroll the window to find element.
And I change window size to "medium" And I change window size to "medium"
And I wait "2" seconds And I wait "2" seconds
And I type "up" "44" times on marker "Railway station" in the drag and drop markers question And I type "up" "88" times on marker "Railway station" in the drag and drop markers question
And I type "right" "13" times on marker "Railway station" in the drag and drop markers question And I type "right" "26" times on marker "Railway station" in the drag and drop markers question
And I press "Submit and finish" And I press "Submit and finish"
Then the state of "Please place the markers on the map of Milton Keynes" question is shown as "Partially correct" Then the state of "Please place the markers on the map of Milton Keynes" question is shown as "Partially correct"
And I should see "Mark 0.25 out of 1.00" And I should see "Mark 0.25 out of 1.00"

View file

@ -79,10 +79,9 @@ class behat_qtype_ddwtos extends behat_base {
public function i_type_into_space_in_the_drag_and_drop_into_text_question($keys, $spacenumber) { public function i_type_into_space_in_the_drag_and_drop_into_text_question($keys, $spacenumber) {
$node = $this->get_selected_node('xpath_element', $this->drop_xpath($spacenumber)); $node = $this->get_selected_node('xpath_element', $this->drop_xpath($spacenumber));
$this->ensure_node_is_visible($node); $this->ensure_node_is_visible($node);
$node->focus();
foreach (str_split($keys) as $key) { foreach (str_split($keys) as $key) {
$node->keyDown($key); behat_base::type_keys($this->getSession(), [$key]);
$node->keyPress($key);
$node->keyUp($key);
$this->wait_for_pending_js(); $this->wait_for_pending_js();
} }
} }

View file

@ -47,7 +47,7 @@ Feature: See the competencies for an activity
Scenario: Go to the competency breakdown report Scenario: Go to the competency breakdown report
When I navigate to "Reports > Competency breakdown" in current page administration When I navigate to "Reports > Competency breakdown" in current page administration
And I set the field "Filter competencies by resource or activity" to "PageName1" And I set the field "Filter competencies by resource or activity" to "PageName1"
And I press key "13" in the field "Filter competencies by resource or activity" And I press the enter key
Then I should see "Test-Comp1" Then I should see "Test-Comp1"
And I should not see "Test-Comp2" And I should not see "Test-Comp2"
And I click on "Not rated" "link" And I click on "Not rated" "link"
@ -56,6 +56,6 @@ Feature: See the competencies for an activity
And I click on "Rate" "button" in the ".competency-grader" "css_element" And I click on "Rate" "button" in the ".competency-grader" "css_element"
And I click on "Close" "button" And I click on "Close" "button"
And I set the field "Filter competencies by resource or activity" to "No filters applied" And I set the field "Filter competencies by resource or activity" to "No filters applied"
And I press key "13" in the field "Filter competencies by resource or activity" And I press the enter key
And I should see "Test-Comp1" And I should see "Test-Comp1"
And I should see "Test-Comp2" And I should see "Test-Comp2"

View file

@ -33,7 +33,7 @@ Feature: Managers can create and manage tag collections
Scenario: Editing tag collections Scenario: Editing tag collections
When I click on "Edit tag collection name" "link" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Hobbies')]" "xpath_element" When I click on "Edit tag collection name" "link" in the "//table[contains(@class,'tag-collections-table')]//tr[contains(.,'Hobbies')]" "xpath_element"
And I set the field "New name for tag collection Hobbies" to "Newname" And I set the field "New name for tag collection Hobbies" to "Newname"
And I press key "13" in the field "New name for tag collection Hobbies" And I press the enter key
Then I should not see "Hobbies" Then I should not see "Hobbies"
And I should see "Newname" And I should see "Newname"
And I log out And I log out

View file

@ -52,7 +52,6 @@ Feature: Users can edit tags to add description or rename
And I should see "Dog" in the ".tag_list" "css_element" And I should see "Dog" in the ".tag_list" "css_element"
And I should see "Turtle" in the ".tag_list" "css_element" And I should see "Turtle" in the ".tag_list" "css_element"
And I should see "Fish" in the ".tag_list" "css_element" And I should see "Fish" in the ".tag_list" "css_element"
And I log out
@javascript @javascript
Scenario: Manager can change tag description, related tags and rename the tag from tag view page Scenario: Manager can change tag description, related tags and rename the tag from tag view page
@ -87,7 +86,6 @@ Feature: Users can edit tags to add description or rename
And I should see "Turtle" in the ".tag_list" "css_element" And I should see "Turtle" in the ".tag_list" "css_element"
And I should see "Fish" in the ".tag_list" "css_element" And I should see "Fish" in the ".tag_list" "css_element"
And I should not see "Dog" And I should not see "Dog"
And I log out
Scenario: Renaming the tag from tag view page Scenario: Renaming the tag from tag view page
When I log in as "manager1" When I log in as "manager1"
@ -112,7 +110,6 @@ Feature: Users can edit tags to add description or rename
| Tag name | KITTEN | | Tag name | KITTEN |
And I press "Update" And I press "Update"
And "KITTEN" "text" should exist in the ".breadcrumb" "css_element" And "KITTEN" "text" should exist in the ".breadcrumb" "css_element"
And I log out
@javascript @javascript
Scenario: Manager can change tag description and rename the tag from tag manage page Scenario: Manager can change tag description and rename the tag from tag manage page
@ -133,7 +130,6 @@ Feature: Users can edit tags to add description or rename
And I should see "Dog" in the ".tag_list" "css_element" And I should see "Dog" in the ".tag_list" "css_element"
And I should see "Turtle" in the ".tag_list" "css_element" And I should see "Turtle" in the ".tag_list" "css_element"
And I should see "Fish" in the ".tag_list" "css_element" And I should see "Fish" in the ".tag_list" "css_element"
And I log out
Scenario: Renaming the tag in edit tag form from tag manage page Scenario: Renaming the tag in edit tag form from tag manage page
When I log in as "manager1" When I log in as "manager1"
@ -155,7 +151,6 @@ Feature: Users can edit tags to add description or rename
And "Default collection" "text" should exist in the ".breadcrumb" "css_element" And "Default collection" "text" should exist in the ".breadcrumb" "css_element"
And I should see "KITTEN" And I should see "KITTEN"
And I should not see "Kitten" And I should not see "Kitten"
And I log out
@javascript @javascript
Scenario: Renaming the tag using quick edit field on tag manage page Scenario: Renaming the tag using quick edit field on tag manage page
@ -165,7 +160,7 @@ Feature: Users can edit tags to add description or rename
# Renaming tag to a valid name # Renaming tag to a valid name
And I click on "Edit tag name" "link" in the "Cat" "table_row" And I click on "Edit tag name" "link" in the "Cat" "table_row"
And I set the field "New name for tag Cat" to "Kitten" And I set the field "New name for tag Cat" to "Kitten"
And I press key "13" in the field "New name for tag Cat" And I press the enter key
Then I should not see "Cat" Then I should not see "Cat"
And "New name for tag" "field" should not exist And "New name for tag" "field" should not exist
And I wait until "Kitten" "link" exists And I wait until "Kitten" "link" exists
@ -175,7 +170,7 @@ Feature: Users can edit tags to add description or rename
# Renaming tag to an invalid name # Renaming tag to an invalid name
And I click on "Edit tag name" "link" in the "Turtle" "table_row" And I click on "Edit tag name" "link" in the "Turtle" "table_row"
And I set the field "New name for tag Turtle" to "DOG" And I set the field "New name for tag Turtle" to "DOG"
And I press key "13" in the field "New name for tag Turtle" And I press the enter key
And I should see "The tag name is already in use. Do you want to combine these tags?" And I should see "The tag name is already in use. Do you want to combine these tags?"
And I click on "Cancel" "button" in the "Confirm" "dialogue" And I click on "Cancel" "button" in the "Confirm" "dialogue"
And "New name for tag" "field" should not exist And "New name for tag" "field" should not exist
@ -189,14 +184,13 @@ Feature: Users can edit tags to add description or rename
# Cancel tag renaming # Cancel tag renaming
And I click on "Edit tag name" "link" in the "Dog" "table_row" And I click on "Edit tag name" "link" in the "Dog" "table_row"
And I set the field "New name for tag Dog" to "Penguin" And I set the field "New name for tag Dog" to "Penguin"
And I press key "27" in the field "New name for tag Dog" And I press the escape key
And "New name for tag" "field" should not exist And "New name for tag" "field" should not exist
And I should see "Turtle" And I should see "Turtle"
And I should not see "Penguin" And I should not see "Penguin"
And I follow "Default collection" And I follow "Default collection"
And I should see "Turtle" And I should see "Turtle"
And I should not see "Penguin" And I should not see "Penguin"
And I log out
@javascript @javascript
Scenario: Combining tags when renaming Scenario: Combining tags when renaming
@ -205,13 +199,12 @@ Feature: Users can edit tags to add description or rename
And I follow "Default collection" And I follow "Default collection"
And I click on "Edit tag name" "link" in the "Turtle" "table_row" And I click on "Edit tag name" "link" in the "Turtle" "table_row"
And I set the field "New name for tag Turtle" to "DOG" And I set the field "New name for tag Turtle" to "DOG"
And I press key "13" in the field "New name for tag Turtle" And I press the enter key
And I should see "The tag name is already in use. Do you want to combine these tags?" And I should see "The tag name is already in use. Do you want to combine these tags?"
And I press "Yes" And I press "Yes"
Then I should not see "Turtle" Then I should not see "Turtle"
And I should not see "DOG" And I should not see "DOG"
And I should see "Dog" And I should see "Dog"
And I log out
@javascript @javascript
Scenario: Combining multiple tags Scenario: Combining multiple tags
@ -232,7 +225,6 @@ Feature: Users can edit tags to add description or rename
And I should see "Turtle" And I should see "Turtle"
# Even though Turtle was not standard but at least one of combined tags was (Neverusedtag). Now Turtle is also standard. # Even though Turtle was not standard but at least one of combined tags was (Neverusedtag). Now Turtle is also standard.
And "Remove from standard tags" "link" should exist in the "Turtle" "table_row" And "Remove from standard tags" "link" should exist in the "Turtle" "table_row"
And I log out
Scenario: Filtering tags Scenario: Filtering tags
When I log in as "manager1" When I log in as "manager1"
@ -249,4 +241,3 @@ Feature: Users can edit tags to add description or rename
And I should see "Dog" And I should see "Dog"
And I should see "Cat" And I should see "Cat"
And I should see "Turtle" And I should see "Turtle"
And I log out

View file

@ -27,7 +27,7 @@ Feature: Edit user roles
And I click on "Student 1's role assignments" "link" And I click on "Student 1's role assignments" "link"
And I click on ".form-autocomplete-downarrow" "css_element" in the "student1" "table_row" And I click on ".form-autocomplete-downarrow" "css_element" in the "student1" "table_row"
And I click on "Non-editing teacher" item in the autocomplete list And I click on "Non-editing teacher" item in the autocomplete list
And I press key "27" in the field "Student 1's role assignments" And I press the escape key
When I click on "Save changes" "link" When I click on "Save changes" "link"
Then I should see "Student, Non-editing teacher" in the "Student 1" "table_row" Then I should see "Student, Non-editing teacher" in the "Student 1" "table_row"
@ -38,6 +38,6 @@ Feature: Edit user roles
And I navigate to course participants And I navigate to course participants
And I click on "Student 1's role assignments" "link" And I click on "Student 1's role assignments" "link"
And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element" And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element"
And I press key "27" in the field "Student 1's role assignments" And I press the escape key
When I click on "Save changes" "link" When I click on "Save changes" "link"
Then I should see "No roles" in the "Student 1" "table_row" Then I should see "No roles" in the "Student 1" "table_row"

View file

@ -238,7 +238,7 @@ Feature: Course participants can be filtered
And I navigate to course participants And I navigate to course participants
And I click on "Student 1's role assignments" "link" And I click on "Student 1's role assignments" "link"
And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element" And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element"
And I press key "27" in the field "Student 1's role assignments" And I press the escape key
And I click on "Save changes" "link" And I click on "Save changes" "link"
And I set the field "type" in the "Filter 1" "fieldset" to "Roles" And I set the field "type" in the "Filter 1" "fieldset" to "Roles"
And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset" And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
@ -350,7 +350,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 3" "fieldset" to "Any" And I set the field "Match" in the "Filter 3" "fieldset" to "Any"
And I set the field "type" in the "Filter 3" "fieldset" to "Keyword" And I set the field "type" in the "Filter 3" "fieldset" to "Keyword"
And I set the field "Type..." to "teacher1" And I set the field "Type..." to "teacher1"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
And I should see "Student 4" in the "participants" "table" And I should see "Student 4" in the "participants" "table"
@ -396,7 +396,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 3" "fieldset" to "Any" And I set the field "Match" in the "Filter 3" "fieldset" to "Any"
And I set the field "type" in the "Filter 3" "fieldset" to "Keyword" And I set the field "type" in the "Filter 3" "fieldset" to "Keyword"
And I set the field "Type..." to "3@" And I set the field "Type..." to "3@"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 1" in the "participants" "table" And I should see "Student 1" in the "participants" "table"
And I should not see "Student 2" in the "participants" "table" And I should not see "Student 2" in the "participants" "table"
@ -419,7 +419,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 1" "fieldset" to "Any" And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
And I set the field "type" in the "Filter 1" "fieldset" to "Keyword" And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
And I set the field "Type..." to "1@example" And I set the field "Type..." to "1@example"
And I press key "13" in the field "Type..." And I press the enter key
When I click on "Apply filters" "button" When I click on "Apply filters" "button"
Then I should see "Student 1" in the "participants" "table" Then I should see "Student 1" in the "participants" "table"
And I should see "Teacher 1" in the "participants" "table" And I should see "Teacher 1" in the "participants" "table"
@ -449,7 +449,7 @@ Feature: Course participants can be filtered
And I should not see "Teacher 1" in the "participants" "table" And I should not see "Teacher 1" in the "participants" "table"
# Add a second keyword filter value # Add a second keyword filter value
And I set the field "Type..." to "moodle" And I set the field "Type..." to "moodle"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
And I should see "Student 3" in the "participants" "table" And I should see "Student 3" in the "participants" "table"
@ -534,7 +534,7 @@ Feature: Course participants can be filtered
And I set the field "type" in the "Filter 1" "fieldset" to "Keyword" And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
# Search by email (only). # Search by email (only).
And I set the field "Type..." to "student1@example.com" And I set the field "Type..." to "student1@example.com"
And I press key "13" in the field "Type..." And I press the enter key
When I click on "Apply filters" "button" When I click on "Apply filters" "button"
Then I should see "Student 1" in the "participants" "table" Then I should see "Student 1" in the "participants" "table"
And I should not see "Student 2" in the "participants" "table" And I should not see "Student 2" in the "participants" "table"
@ -542,7 +542,7 @@ Feature: Course participants can be filtered
# Search by idnumber (only). # Search by idnumber (only).
And I click on "student1@example.com" "autocomplete_selection" And I click on "student1@example.com" "autocomplete_selection"
And I set the field "Type..." to "SID" And I set the field "Type..." to "SID"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 1" in the "participants" "table" And I should see "Student 1" in the "participants" "table"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
@ -552,7 +552,7 @@ Feature: Course participants can be filtered
# Search by city (only). # Search by city (only).
And I click on "SID" "autocomplete_selection" And I click on "SID" "autocomplete_selection"
And I set the field "Type..." to "SCITY" And I set the field "Type..." to "SCITY"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 1" in the "participants" "table" And I should see "Student 1" in the "participants" "table"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
@ -562,13 +562,13 @@ Feature: Course participants can be filtered
# Search by country text (only) - should not match. # Search by country text (only) - should not match.
And I click on "SCITY" "autocomplete_selection" And I click on "SCITY" "autocomplete_selection"
And I set the field "Type..." to "GB" And I set the field "Type..." to "GB"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Nothing to display" And I should see "Nothing to display"
# Check no match. # Check no match.
And I click on "GB" "autocomplete_selection" And I click on "GB" "autocomplete_selection"
And I set the field "Type..." to "NOTHING" And I set the field "Type..." to "NOTHING"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Nothing to display" And I should see "Nothing to display"
@ -586,7 +586,7 @@ Feature: Course participants can be filtered
# Search by email (only) - should only see visible email + own. # Search by email (only) - should only see visible email + own.
And I set the field "type" in the "Filter 1" "fieldset" to "Keyword" And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
And I set the field "Type..." to "@example." And I set the field "Type..." to "@example."
And I press key "13" in the field "Type..." And I press the enter key
When I click on "Apply filters" "button" When I click on "Apply filters" "button"
Then I should not see "Student 1" in the "participants" "table" Then I should not see "Student 1" in the "participants" "table"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
@ -596,25 +596,25 @@ Feature: Course participants can be filtered
# Search for other fields - should only see own results. # Search for other fields - should only see own results.
And I click on "@example." "autocomplete_selection" And I click on "@example." "autocomplete_selection"
And I set the field "Type..." to "SID" And I set the field "Type..." to "SID"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Nothing to display" And I should see "Nothing to display"
And I click on "SID" "autocomplete_selection" And I click on "SID" "autocomplete_selection"
And I set the field "Type..." to "TID" And I set the field "Type..." to "TID"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Teacher 1" in the "participants" "table" And I should see "Teacher 1" in the "participants" "table"
And I should not see "Student 1" in the "participants" "table" And I should not see "Student 1" in the "participants" "table"
And I click on "TID" "autocomplete_selection" And I click on "TID" "autocomplete_selection"
And I set the field "Type..." to "CITY" And I set the field "Type..." to "CITY"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Teacher 1" in the "participants" "table" And I should see "Teacher 1" in the "participants" "table"
And I should not see "Student 1" in the "participants" "table" And I should not see "Student 1" in the "participants" "table"
# Check no match. # Check no match.
And I click on "CITY" "autocomplete_selection" And I click on "CITY" "autocomplete_selection"
And I set the field "Type..." to "NOTHING" And I set the field "Type..." to "NOTHING"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Nothing to display" And I should see "Nothing to display"
@ -633,7 +633,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 2" "fieldset" to "Any" And I set the field "Match" in the "Filter 2" "fieldset" to "Any"
And I set the field "type" in the "Filter 2" "fieldset" to "Keyword" And I set the field "type" in the "Filter 2" "fieldset" to "Keyword"
And I set the field "Type..." to "@example" And I set the field "Type..." to "@example"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 1" in the "participants" "table" And I should see "Student 1" in the "participants" "table"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
@ -662,7 +662,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 2" "fieldset" to "Any" And I set the field "Match" in the "Filter 2" "fieldset" to "Any"
And I set the field "type" in the "Filter 2" "fieldset" to "Keyword" And I set the field "type" in the "Filter 2" "fieldset" to "Keyword"
And I set the field "Type..." to "@example" And I set the field "Type..." to "@example"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Apply filters" "button" And I click on "Apply filters" "button"
And I should see "Student 1" in the "participants" "table" And I should see "Student 1" in the "participants" "table"
And I should see "Student 2" in the "participants" "table" And I should see "Student 2" in the "participants" "table"
@ -684,7 +684,7 @@ Feature: Course participants can be filtered
And I set the field "Match" in the "Filter 1" "fieldset" to "Any" And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
And I set the field "type" in the "Filter 1" "fieldset" to "Keyword" And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
And I set the field "Type..." to "@example.com" And I set the field "Type..." to "@example.com"
And I press key "13" in the field "Type..." And I press the enter key
And I click on "Add condition" "button" And I click on "Add condition" "button"
# Set filterset to match none. # Set filterset to match none.
And I set the field "Match" to "None" And I set the field "Match" to "None"