MDL-69107 user: Fix autocomplete usages
authorAndrew Nicols <andrew@nicols.co.uk>
Mon, 22 Jun 2020 04:21:47 +0000 (12:21 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Tue, 15 Dec 2020 23:50:56 +0000 (07:50 +0800)
19 files changed:
admin/tool/dataprivacy/tests/behat/manage_purposes.feature
admin/tool/lp/tests/behat/plan_crud.feature
analytics/tests/behat/manage_models.feature
course/tests/behat/coursetags.feature
course/tests/behat/rename_roles.feature
enrol/manual/tests/behat/quickenrolment.feature
group/tests/behat/create_groups.feature
group/tests/behat/group_description.feature
lib/behat/form_field/behat_form_autocomplete.php
lib/tests/behat/behat_forms.php
mod/data/tests/behat/view_entries.feature
mod/feedback/tests/behat/coursemapping.feature
mod/forum/tests/behat/advanced_search.feature
report/competency/tests/behat/breakdown_by_activity.feature
user/tests/behat/edit_user_roles.feature
user/tests/behat/filter_participants.feature
user/tests/behat/filter_participants_showall.feature
user/tests/behat/full_name_display.feature
user/tests/behat/view_participants_groups.feature

index 6619bda..ff4b208 100644 (file)
@@ -10,16 +10,12 @@ Feature: Manage data storage purposes
     And I open the action menu in "region-main" "region"
     And I choose "Purposes" in the open action menu
     And I press "Add purpose"
-    And I set the field "Name" to "Purpose 1"
-    And I set the field "Description" to "Purpose 1 description"
-    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 "Legal obligation (GDPR Art 6.1(c))" "list_item"
-    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 "Explicit consent (GDPR Art. 9.2(a))" "list_item"
-    And I press the escape key
-    And I set the field "retentionperiodnumber" to "2"
+    And I set the following fields to these values:
+      | Name                                       | Purpose 1                                                      |
+      | Description                                | Purpose 1 description                                          |
+      | Lawful bases                               | Contract (GDPR Art. 6.1(b)),Legal obligation (GDPR Art 6.1(c)) |
+      | Sensitive personal data processing reasons | Explicit consent (GDPR Art. 9.2(a))                            |
+      | retentionperiodnumber                      | 2                                                              |
     When I press "Save"
     Then I should see "Purpose 1" in the "List of data purposes" "table"
     And I should see "Contract (GDPR Art. 6.1(b))" in the "Purpose 1" "table_row"
@@ -31,14 +27,13 @@ Feature: Manage data storage purposes
   Scenario: Update a data storage purpose
     Given I open the action menu in "Purpose 1" "table_row"
     And I choose "Edit" in the open action menu
-    And I set the field "Name" to "Purpose 1 edited"
-    And I set the field "Description" to "Purpose 1 description edited"
-    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 "Vital interests (GDPR Art. 6.1(d))" "list_item"
-    And I press the escape key
-    And I set the field "retentionperiodnumber" to "3"
-    And I click on "protected" "checkbox"
+    And I set the following fields to these values:
+      | Name                                       | Purpose 1 edited                                                |
+      | Description                                | Purpose 1 description edited                                    |
+      | Lawful bases                               | Contract (GDPR Art. 6.1(b)), Vital interests (GDPR Art. 6.1(d)) |
+      | Sensitive personal data processing reasons | Explicit consent (GDPR Art. 9.2(a))                             |
+      | retentionperiodnumber                      | 3                                                               |
+      | protected                                  | 1                                                               |
     When I press "Save changes"
     Then I should see "Purpose 1 edited" in the "List of data purposes" "table"
     And I should see "Purpose 1 description edited" in the "Purpose 1 edited" "table_row"
index 55c085a..9f3dc07 100644 (file)
@@ -53,9 +53,7 @@ Feature: Manage plearning plan
     And I follow "Home"
     And I navigate to "Competencies > Learning plan templates" in site administration
     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 "cohort plan" item in the autocomplete list
-    And I press the escape key
+    And I set the field "Select cohorts to sync" to "cohort plan"
     When I click on "Add cohorts" "button"
     Then I should see "2 learning plans were created."
     And I follow "Learning plan templates"
index 816a253..d68ed78 100644 (file)
@@ -55,10 +55,7 @@ Feature: Manage analytics models
     And I choose "Create model" in the open action menu
     And I set the field "Enabled" to "Enable"
     And I select "__core_course__analytics__target__course_completion" from the "target" singleselect
-    And I open the autocomplete suggestions list
-    And I click on "Read actions amount" item in the autocomplete list
-    And I open the autocomplete suggestions list
-    And I click on "Any write action in the course" item in the autocomplete list
+    And I set the field "Indicators" to "Read actions amount, Any write action in the course"
     And I select "__core__analytics__time_splitting__single_range" from the "timesplitting" singleselect
     And I press "Save changes"
     Then I should see "No predictions available yet" in the "Students at risk of not meeting the course completion conditions" "table_row"
index c2655fc..3506893 100644 (file)
@@ -38,7 +38,7 @@ Feature: Tagging courses
     And I expand all fieldsets
     Then "Mathematics" "autocomplete_suggestions" should exist
     And I set the following fields to these values:
-      | Tags | Algebra |
+      | Tags | Mathematics, Algebra |
     And I press "Save and display"
     And I am on "Course 2" course homepage
     And I navigate to "Edit settings" in current page administration
@@ -75,7 +75,7 @@ Feature: Tagging courses
     And I navigate to "Course tags" in current page administration
     Then I should see "Mathematics" in the ".form-autocomplete-selection" "css_element"
     And I set the following fields to these values:
-      | Tags | Algebra |
+      | Tags | Mathematics, Algebra |
     And I press "Save changes"
     And I am on "Course 2" course homepage
     And I navigate to "Course tags" in current page administration
index 1b3c581..00f7c81 100644 (file)
@@ -31,9 +31,11 @@ Feature: Rename roles within a course
     And "Learner" "button" should exist
     And I navigate to course participants
     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 should see "Tutor (Non-editing teacher)" in the ".form-autocomplete-suggestions" "css_element"
+    And I open the autocomplete suggestions list in the "Filter 1" "fieldset"
     And I should see "Learner (Student)" in the ".form-autocomplete-suggestions" "css_element"
+    And I press the escape key
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Tutor (Non-editing teacher)"
+
     And I click on "Student 1's role assignments" "link"
     And I click on ".form-autocomplete-downarrow" "css_element" in the "Student 1" "table_row"
     And "Tutor (Non-editing teacher)" "autocomplete_suggestions" should exist
@@ -53,6 +55,6 @@ Feature: Rename roles within a course
     And "Learner" "button" should not exist
     And I navigate to course participants
     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 open the autocomplete suggestions list in the "Filter 1" "fieldset"
     And I should see "Non-editing teacher" in the ".form-autocomplete-suggestions" "css_element"
     And I should see "Student" in the ".form-autocomplete-suggestions" "css_element"
index cd3c979..564f69f 100644 (file)
@@ -130,18 +130,17 @@ Feature: Teacher can search and enrol users one by one into the course
   Scenario: Searching for a non-existing user
     Given I navigate to course participants
     And I press "Enrol users"
-    And I set the field "Select users" to "qwertyuiop"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
+    And I click on "Select users" "field"
+    And I type "qwertyuiop"
     Then I should see "No suggestions"
 
   @javascript
   Scenario: If there are less than 100 matching users, all are displayed for selection
     Given I navigate to course participants
     And I press "Enrol users"
-    When I set the field "Select users" to "example.com"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
-    And I click on "Student 099" item in the autocomplete list
-    Then I should see "Student 099"
+    When I click on "Select users" "field"
+    And I type "example.com"
+    Then "Student 099" "autocomplete_suggestions" should exist
 
   @javascript
   Scenario: If there are more than 100 matching users, inform there are too many.
@@ -151,8 +150,8 @@ Feature: Teacher can search and enrol users one by one into the course
       | student101  | Student   | 101      | student101@example.com  |
     And I navigate to course participants
     And I press "Enrol users"
-    When I set the field "Select users" to "example.com"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
+    When I click on "Select users" "field"
+    And I type "example.com"
     Then I should see "Too many users (>100) to show"
 
   @javascript
@@ -161,8 +160,8 @@ Feature: Teacher can search and enrol users one by one into the course
       | maxusersperpage | 5 |
     And I navigate to course participants
     And I press "Enrol users"
-    When I set the field "Select users" to "student00"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
+    When I click on "Select users" "field"
+    And I type "student00"
     Then I should see "Too many users (>5) to show"
 
   @javascript
@@ -177,18 +176,18 @@ Feature: Teacher can search and enrol users one by one into the course
     When I am on "Course 001" course homepage
     Then I navigate to course participants
     And I press "Enrol users"
-    When I set the field "Select users" to "student100@example.com"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
+    And I click on "Select users" "field"
+    And I type "student100@example.com"
     Then I should see "student100@example.com, CITY1, GB, 1234567892, 1234567893, ABC1, ABC2"
     # Remove identity field in setting User policies
     And the following config values are set as admin:
       | showuseridentity | idnumber,email,phone1,phone2,department,institution |
-    When I am on "Course 001" course homepage
+    And I am on "Course 001" course homepage
     And I navigate to course participants
     And I press "Enrol users"
-    When I set the field "Select users" to "student100@example.com"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
-    Then I should see "student100@example.com, 1234567892, 1234567893, ABC1, ABC2"
+    And I click on "Select users" "field"
+    And I type "student100@example.com"
+    And I should see "student100@example.com, 1234567892, 1234567893, ABC1, ABC2"
 
 # The following tests are commented out as a result of MDL-66339.
 #  @javascript
index 7e50089..2b4a65a 100644 (file)
@@ -50,15 +50,12 @@ Feature: Organize students into groups
     And the "members" select box should not contain "Student 1 (student1@example.com)"
     And I navigate to course participants
     And I set the field "type" in the "Filter 1" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Group 1" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group 1"
     And I click on "Apply filters" "button"
     And I should see "Student 0"
     And I should see "Student 1"
     And I should not see "Student 2"
-    And I click on "Group 1" "autocomplete_selection"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Group 2" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group 2"
     And I click on "Apply filters" "button"
     And I should see "Student 2"
     And I should see "Student 3"
index e63ee05..087fecb 100644 (file)
@@ -46,8 +46,7 @@ Feature: The description of a group can be viewed by students and teachers
     And I should see "Description for Group A"
     And ".groupinfobox" "css_element" should exist
     And I set the field "type" in the "Filter 1" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Group B" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group B"
     And I click on "Apply filters" "button"
     And I click on "Student 2" "link" in the "participants" "table"
     And I click on "Group B" "link"
@@ -96,8 +95,7 @@ Feature: The description of a group can be viewed by students and teachers
     And I should see "Description for Group A"
     And ".groupinfobox" "css_element" should exist
     And I set the field "type" in the "Filter 1" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Group B" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group B"
     And I click on "Apply filters" "button"
     And I click on "Student 2" "link" in the "participants" "table"
     And I click on "Group B" "link"
index 6c4b59c..b8144f0 100644 (file)
@@ -51,7 +51,7 @@ class behat_form_autocomplete extends behat_form_text {
         // Clear all current selections.
         $rootnode = $this->field->getParent()->getParent();
         $selections = $rootnode->findAll('css', '.form-autocomplete-selection [role=option]');
-        foreach ($selections as $selection) {
+        foreach (array_reverse($selections) as $selection) {
             $selection->click();
             $this->wait_for_pending_js();
         }
index 1d2a3e4..2b92271 100644 (file)
@@ -698,11 +698,16 @@ class behat_forms extends behat_base {
     /**
      * Open the auto-complete suggestions list (Assuming there is only one on the page.).
      *
-     * @Given /^I open the autocomplete suggestions list$/
+     * @Given I open the autocomplete suggestions list
+     * @Given I open the autocomplete suggestions list in the :container :containertype
      */
-    public function i_open_the_autocomplete_suggestions_list() {
+    public function i_open_the_autocomplete_suggestions_list($container = null, $containertype = null) {
         $csstarget = ".form-autocomplete-downarrow";
-        $this->execute('behat_general::i_click_on', [$csstarget, 'css_element']);
+        if ($container && $containertype) {
+            $this->execute('behat_general::i_click_on', [$csstarget, 'css_element', $container, $containertype]);
+        } else {
+            $this->execute('behat_general::i_click_on', [$csstarget, 'css_element']);
+        }
     }
 
     /**
index 61bdfee..95b4a93 100644 (file)
@@ -94,7 +94,6 @@ Feature: Users can view and search database entries
       | Test field name   | Student original entry tagged   |
       | Test field 2 name | Student original entry tagged 2 |
     And I set the field with xpath "//div[@class='datatagcontrol']//input[@type='text']" to "Tag1"
-    And I click on "[data-value='Tag1']" "css_element"
     And I press "Save and view"
     And I should see "Student original entry"
     And I should see "Tag1" in the "div.tag_list" "css_element"
index 112ead2..cb66f94 100644 (file)
@@ -136,8 +136,7 @@ Feature: Mapping courses in a feedback
     And I am on site homepage
     And I follow "Course feedback"
     And I follow "Map feedback to courses"
-    And I set the field "Courses" to "Course 2"
-    And I set the field "Courses" to "Course 3"
+    And I set the field "Courses" to "Course 2, Course 3"
     And I press "Save changes"
     And I should see "Course mapping has been changed"
     And I log out
@@ -224,7 +223,6 @@ Feature: Mapping courses in a feedback
     And I should see "1 (33.33 %)" in the "option d" "table_row"
     And I should see "2 (66.67 %)" in the "option e" "table_row"
     And I should see "0" in the "option f" "table_row"
-    And I log out
 
   Scenario: Site feedback deletion hides feedback block completely
     When I log in as "manager"
@@ -239,4 +237,3 @@ Feature: Mapping courses in a feedback
     Then "Feedback" "block" should not exist
     And I am on "Course 1" course homepage
     And "Feedback" "block" should not exist
-    And I log out
index dbcca3b..b26e61a 100644 (file)
@@ -130,7 +130,6 @@ Feature: The forum search allows users to perform advanced searches for forum po
     And I press "Search forums"
     And I should see "Advanced search"
     And I set the field "Is tagged with" to "SearchedTag"
-    And I press the enter key
     When I press "Search forums"
     Then I should see "My subject"
     And I should not see "Your subjective"
index 62368c9..db8a055 100644 (file)
@@ -47,7 +47,6 @@ Feature: See the competencies for an activity
   Scenario: Go to the competency breakdown report
     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 press the enter key
     Then I should see "Test-Comp1"
     And I should not see "Test-Comp2"
     And I click on "Not rated" "link"
@@ -55,7 +54,6 @@ Feature: See the competencies for an activity
     And I set the field "Rating" to "A"
     And I click on "Rate" "button" in the ".competency-grader" "css_element"
     And I click on "Close" "button"
-    And I set the field "Filter competencies by resource or activity" to "No filters applied"
-    And I press the enter key
+    And I click on "PageName1" "autocomplete_selection"
     And I should see "Test-Comp1"
     And I should see "Test-Comp2"
index dbf1130..90fdfea 100644 (file)
@@ -25,9 +25,8 @@ Feature: Edit user roles
     And I am on "Course 1" course homepage
     And I navigate to course participants
     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 "Non-editing teacher" item in the autocomplete list
-    And I press the escape key
+    And I type "Non-editing teacher"
+    And I press the enter key
     When I click on "Save changes" "link"
     Then I should see "Student, Non-editing teacher" in the "Student 1" "table_row"
 
@@ -37,7 +36,6 @@ Feature: Edit user roles
     And I am on "Course 1" course homepage
     And I navigate to course participants
     And I click on "Student 1's role assignments" "link"
-    And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element"
-    And I press the escape key
+    And I click on "Student" "autocomplete_selection"
     When I click on "Save changes" "link"
     Then I should see "No roles" in the "Student 1" "table_row"
index e962dfc..50343b1 100644 (file)
@@ -11,13 +11,13 @@ Feature: Course participants can be filtered
       | Course 2 | C2        |     0     | ##4 months ago## |
       | Course 3 | C3        |     0     | ##3 months ago## |
     And the following "users" exist:
-      | username | firstname | lastname | email                | idnumber | country | city   | maildisplay |
-      | student1 | Student   | 1        | student1@example.com | SID1     |         | SCITY1 | 0           |
-      | student2 | Student   | 2        | student2@example.com | SID2     | GB      | SCITY2 | 1           |
-      | student3 | Student   | 3        | student3@example.com | SID3     | AU      | SCITY3 | 0           |
-      | student4 | Student   | 4        | student4@moodle.com  | SID4     | AT      | SCITY4 | 0           |
-      | student5 | Trendy    | Learnson | trendy@learnson.com  | SID5     | AU      | SCITY5 | 0           |
-      | teacher1 | Teacher   | 1        | teacher1@example.org | TID1     | US      | TCITY1 | 0           |
+      | username | firstname | lastname | email                     | idnumber | country | city   | maildisplay |
+      | student1 | Student   | 1        | student1@example.com      | SID1     |         | SCITY1 | 0           |
+      | student2 | Student   | 2        | student2@example.com      | SID2     | GB      | SCITY2 | 1           |
+      | student3 | Student   | 3        | student3@example.com      | SID3     | AU      | SCITY3 | 0           |
+      | student4 | Student   | 4        | student4@moodle.com       | SID4     | AT      | SCITY4 | 0           |
+      | student5 | Trendy    | Learnson | trendy@learnson.com       | SID5     | AU      | SCITY5 | 0           |
+      | patricia | Patricia  | Pea      | patricia.pea1@example.org | TID1     | US      | TCITY1 | 0           |
     And the following "course enrolments" exist:
       | user     | course | role           | status | timeend       |
       | student1 | C1     | student        |    0   |               |
@@ -31,9 +31,9 @@ Feature: Course participants can be filtered
       | student1 | C3     | student        |    0   |               |
       | student2 | C3     | student        |    0   |               |
       | student3 | C3     | student        |    0   |               |
-      | teacher1 | C1     | editingteacher |    0   |               |
-      | teacher1 | C2     | editingteacher |    0   |               |
-      | teacher1 | C3     | editingteacher |    0   |               |
+      | patricia | C1     | editingteacher |    0   |               |
+      | patricia | C2     | editingteacher |    0   |               |
+      | patricia | C3     | editingteacher |    0   |               |
     And the following "last access times" exist:
       | user     | course | lastaccess      |
       | student1 | C1     | ##yesterday##   |
@@ -58,23 +58,22 @@ Feature: Course participants can be filtered
 
   @javascript
   Scenario: No filters applied
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
     Then I should see "Student 1" 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 "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario Outline: Filter users for a course with a single value
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
     And I set the field "Match" in the "Filter 1" "fieldset" to "<matchtype>"
     And I set the field "type" in the "Filter 1" "fieldset" to "<filtertype>"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "<filtervalue>" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "<filtervalue>"
     When I click on "Apply filters" "button"
     Then I should see "<expected1>" in the "participants" "table"
     And I should see "<expected2>" in the "participants" "table"
@@ -84,30 +83,28 @@ Feature: Course participants can be filtered
     # Note the 'XX-IGNORE-XX' elements are for when there is less than 2 'not expected' items.
 
     Examples:
-      | matchtype | filtertype             | filtervalue | expected1 | expected2 | expected3 | notexpected1 | notexpected2 |
-      | Any       | Groups                 | No group    | Student 1 | Student 4 | Teacher 1 | Student 2    | Student 3    |
-      | All       | Groups                 | No group    | Student 1 | Student 4 | Teacher 1 | Student 2    | Student 3    |
-      | None      | Groups                 | No group    | Student 2 | Student 3 |           | Student 1    | Teacher 1    |
-      | Any       | Role                   | Student     | Student 1 | Student 2 | Student 3 | Teacher 1    | XX-IGNORE-XX |
-      | All       | Role                   | Student     | Student 1 | Student 2 | Student 3 | Teacher 1    | XX-IGNORE-XX |
-      | None      | Role                   | Student     | Teacher 1 |           |           | Student 1    | Student 2    |
-      | Any       | Status                 | Active      | Student 1 | Student 3 | Teacher 1 | Student 2    | Student 4    |
-      | All       | Status                 | Active      | Student 1 | Student 3 | Teacher 1 | Student 2    | Student 4    |
-      | None      | Status                 | Active      | Student 2 | Student 4 |           | Student 1    | Student 3    |
-      | Any       | Inactive for more than | 1 week      | Student 3 | Student 4 |           | Student 1    | Student 2    |
-      | All       | Inactive for more than | 1 week      | Student 3 | Student 4 |           | Student 1    | Student 2    |
-      | None      | Inactive for more than | 1 week      | Student 1 | Student 2 | Teacher 1 | Student 3    | XX-IGNORE-XX |
+      | matchtype | filtertype             | filtervalue | expected1    | expected2 | expected3    | notexpected1 | notexpected2 |
+      | Any       | Groups                 | No group    | Student 1    | Student 4 | Patricia Pea | Student 2    | Student 3    |
+      | All       | Groups                 | No group    | Student 1    | Student 4 | Patricia Pea | Student 2    | Student 3    |
+      | None      | Groups                 | No group    | Student 2    | Student 3 |              | Student 1    | Patricia Pea |
+      | Any       | Role                   | Student     | Student 1    | Student 2 | Student 3    | Patricia Pea | XX-IGNORE-XX |
+      | All       | Role                   | Student     | Student 1    | Student 2 | Student 3    | Patricia Pea | XX-IGNORE-XX |
+      | None      | Role                   | Student     | Patricia Pea |           |              | Student 1    | Student 2    |
+      | Any       | Status                 | Active      | Student 1    | Student 3 | Patricia Pea | Student 2    | Student 4    |
+      | All       | Status                 | Active      | Student 1    | Student 3 | Patricia Pea | Student 2    | Student 4    |
+      | None      | Status                 | Active      | Student 2    | Student 4 |              | Student 1    | Student 3    |
+      | Any       | Inactive for more than | 1 week      | Student 3    | Student 4 |              | Student 1    | Student 2    |
+      | All       | Inactive for more than | 1 week      | Student 3    | Student 4 |              | Student 1    | Student 2    |
+      | None      | Inactive for more than | 1 week      | Student 1    | Student 2 | Patricia Pea | Student 3    | XX-IGNORE-XX |
 
   @javascript
   Scenario Outline: Filter users for a course with multiple values for a single filter
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
     And I set the field "Match" in the "Filter 1" "fieldset" to "<matchtype>"
     And I set the field "type" in the "Filter 1" "fieldset" to "<filtertype>"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "<filtervalue1>" "list_item"
-    And I click on "<filtervalue2>" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "<filtervalue1>,<filtervalue2>"
     When I click on "Apply filters" "button"
     Then I should see "<expected1>" in the "participants" "table"
     And I should see "<expected2>" in the "participants" "table"
@@ -120,16 +117,15 @@ Feature: Course participants can be filtered
       | matchtype | filtertype | filtervalue1 | filtervalue2 | expected1 | expected2 | expected3 | notexpected1 | notexpected2 |
       | Any       | Groups     | Group 1      | Group 2      | Student 2 | Student 3 |           | Student 1    | XX-IGNORE-XX |
       | All       | Groups     | Group 1      | Group 2      | Student 2 |           |           | Student 1    | Student 3    |
-      | None      | Groups     | Group 1      | Group 2      | Student 1 | Teacher 1 |           | Student 2    | Student 3    |
+      | None      | Groups     | Group 1      | Group 2      | Student 1 | Patricia Pea |           | Student 2    | Student 3    |
 
   @javascript
   Scenario Outline: Filter users which are group members in several courses
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 3" course homepage
     And I navigate to course participants
     And I set the field "type" in the "Filter 1" "fieldset" to "<filtertype>"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "<filtervalue>" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "<filtervalue>"
     When I click on "Apply filters" "button"
     Then I should see "<expected1>" in the "participants" "table"
     And I should see "<expected2>" in the "participants" "table"
@@ -145,62 +141,84 @@ Feature: Course participants can be filtered
 
   @javascript
   Scenario: In separate groups mode, a student in a single group can only view and filter by users in their own group
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
+
     # Unsuspend student 2 for to improve coverage of this test.
     And I click on "Edit enrolment" "icon" in the "Student 2" "table_row"
     And I set the field "Status" to "Active"
     And I click on "Save changes" "button"
     And I log out
+
+    # Default view should have groups filter pre-set.
+    # Match:
+    #   Groups Any ["Group 2"].
+
     When I log in as "student3"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    # Default view should have groups filter pre-set.
+
     Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
     And I should see "Group 2" in the "Filter 1" "fieldset"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Group 1" in the "Filter 1" "fieldset"
-    And I should see "Student 2" in the "participants" "table"
-    And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+
     # Testing result of removing groups filter row.
-    And I click on "Remove filter row" "button" in the "Filter 1" "fieldset"
-    And I should see "Student 2" in the "participants" "table"
+    # Match any available user.
+    When I click on "Remove filter row" "button" in the "Filter 1" "fieldset"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+
     # Testing result of applying groups filter manually.
-    And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
+    # Match:
+    #   Group Any ["Group 2"].
+
+    # Match Groups Any ["Group 2"]
+    Given I set the field "Match" in the "Filter 1" "fieldset" to "Any"
     And I set the field "type" in the "Filter 1" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I should see "Group 2" in the ".form-autocomplete-suggestions" "css_element"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group 2"
+
+    And I open the autocomplete suggestions list in the "Filter 1" "fieldset"
     And I should not see "Group 1" in the ".form-autocomplete-suggestions" "css_element"
-    And I click on "Group 2" "list_item"
+
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+
     # Testing result of removing groups filter by clearing all filters.
-    And I click on "Clear filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+    # Match any available user.
+    When I click on "Clear filters" "button"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
 
   @javascript
   Scenario: In separate groups mode, a student in multiple groups can only view and filter by users in their own groups
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
+
     # Unsuspend student 2 for to improve coverage of this test.
     And I click on "Edit enrolment" "icon" in the "Student 2" "table_row"
     And I set the field "Status" to "Active"
     And I click on "Save changes" "button"
     And I log out
+
     When I log in as "student2"
     And I am on "Course 1" course homepage
     And I navigate to course participants
+
     # Default view should have groups filter pre-set.
+    # Match:
+    #   Groups Any ["Group 1", "Group 2"].
+
     Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
     And I should not see "Student 1" in the "participants" "table"
@@ -209,291 +227,416 @@ Feature: Course participants can be filtered
     And I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
     And I should not see "Student 1" in the "participants" "table"
+
     # Testing result of removing groups filter row.
-    And I click on "Remove filter row" "button" in the "Filter 1" "fieldset"
-    And I should see "Student 2" in the "participants" "table"
+    # Match any available user.
+    When I click on "Remove filter row" "button" in the "Filter 1" "fieldset"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+
     # Testing result of applying groups filter manually.
+    # Match:
+    #   Groups Any ["Group 1"].
+
+    # Match Groups Any ["Group 1"]
     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 "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I should see "Group 1" in the ".form-autocomplete-suggestions" "css_element"
+
+    And I open the autocomplete suggestions list in the "Filter 1" "fieldset"
     And I should see "Group 2" in the ".form-autocomplete-suggestions" "css_element"
-    And I click on "Group 1" "list_item"
+    And I press the escape key
+
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group 1"
+
     And I click on "Apply filters" "button"
     And I should see "Student 2" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
+
     # Testing result of removing groups filter by clearing all filters.
-    And I click on "Clear filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+    # Match any available user.
+    When I click on "Clear filters" "button"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
 
   @javascript
   Scenario: Filter users who have no role in a course
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
+
+    # Remove the user role.
     And I click on "Student 1's role assignments" "link"
     And I click on ".form-autocomplete-selection [aria-selected=true]" "css_element"
     And I press the escape key
     And I click on "Save changes" "link"
-    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 "No roles" "list_item"
-    When I click on "Apply filters" "button"
+
+    # Match:
+    #   Roles All ["No roles"].
+
+    # Match Roles All ["No roles"].
+    When I set the field "type" in the "Filter 1" "fieldset" to "Roles"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "No roles"
+
+    And I click on "Apply filters" "button"
+
     Then I should see "Student 1" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Multiple filters applied (All filterset match type)
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+
+    # Match Any:
+    #   Roles All ["Student"] and
+    #   Status Any ["Active"].
+
+    # Match Roles All ["Student"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
+
+    # Match Status All ["Active"].
     And I click on "Add condition" "button"
     # Set filterset to match all.
     And I set the field "Match" to "All"
     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 "Status"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Active" "list_item"
-    When I click on "Apply filters" "button"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Active"
+
+    And I click on "Apply filters" "button"
+
     Then I should see "Student 1" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
-    # Add more filters.
-    And I click on "Add condition" "button"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match Any:
+    #   Roles All ["Student"]; and
+    #   Status Any ["Active"]; and
+    #   Enrolment method Any ["Manual"]; and
+    #   Groups Any ["Group 2"].
+
+    # Match enrolment method Any ["Manual"]
+    When I click on "Add condition" "button"
     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 "Enrolment methods"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 3" "fieldset"
-    And I click on "Manual enrolments" "list_item"
+    And I set the field "Type or select..." in the "Filter 3" "fieldset" to "Manual enrolments"
+
+    # Match Groups Any ["Group 2"]
     And I click on "Add condition" "button"
     And I set the field "Match" in the "Filter 4" "fieldset" to "All"
     And I set the field "type" in the "Filter 4" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 4" "fieldset"
-    And I click on "Group 2" "list_item"
+    And I set the field "Type or select..." in the "Filter 4" "fieldset" to "Group 2"
     And I click on "Apply filters" "button"
-    And I should see "Student 3" in the "participants" "table"
-    But I should not see "Teacher 1" in the "participants" "table"
+
+    Then I should see "Student 3" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
     And I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
+
     # Change the active status filter to inactive.
+    # Match Any:
+    #   Roles All ["Student"]; and
+    #   Status Any ["Inactive"]; and
+    #   Enrolment method Any ["Manual"]; and
+    #   Groups Any ["Group 2"].
+
+    # Match Status All ["Inactive"].
     And I click on "Active" "autocomplete_selection"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Inactive" "list_item"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Inactive"
     And I click on "Apply filters" "button"
+
     Then I should see "Student 2" in the "participants" "table"
     But I should not see "Student 4" in the "participants" "table"
     And I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
     # Set both statuses (match any).
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Active" "list_item"
+    # Match Any:
+    #   Roles All ["Student"]; and
+    #   Status Any ["Active", "Inactive"]; and
+    #   Enrolment method Any ["Manual"]; and
+    #   Groups Any ["Group 2"].
+
+    # Match Status Any ["Active", "Inactive"].
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Active,Inactive"
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    # Switch to match all.
-    And I set the field "Match" in the "Filter 2" "fieldset" to "All"
+
+    # Set both statuses (match all).
+    # Match Any:
+    #   Roles All ["Student"]; and
+    #   Status Any ["Active", "Inactive"]; and
+    #   Enrolment method Any ["Manual"]; and
+    #   Groups Any ["Group 2"].
+
+    # Match Status All ["Active", "Inactive"].
+    When I set the field "Match" in the "Filter 2" "fieldset" to "All"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
 
   @javascript
   Scenario: Multiple filters applied (Any filterset match type)
-    Given I log in as "teacher1"
-    #Avoid 'Teacher' list item collisions with profile dropdown.
-    And I open my profile in edit mode
-    And I set the field "First name" to "Patricia"
-    And I press "Update profile"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+
+    # Match Any:
+    #   Roles All ["Teacher"] and
+    #   Status Any ["Active"].
+
+    # Match Roles all Roles ["Teacher"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Teacher" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Teacher"
+
+    # Match Status Any ["Active"].
     And I click on "Add condition" "button"
-    # Set filterset to match any.
-    And I set the field "Match" 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 "Status"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Active" "list_item"
-    When I click on "Apply filters" "button"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Active"
+
+    # Set filterset to match any.
+    And I set the field "Match" to "Any"
+    And I click on "Apply filters" "button"
+
     Then I should see "Student 1" in the "participants" "table"
-    And I should see "Patricia 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I set the field "Match" in the "Filter 2" "fieldset" to "None"
+
+    # Match Any:
+    #   Roles All ["Teacher"] and
+    #   Status None ["Active"].
+
+    # Match Status Not ["Active"]
+    When I set the field "Match" in the "Filter 2" "fieldset" to "None"
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should see "Patricia 1" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
+
     # Add a keyword filter.
-    And I click on "Add condition" "button"
+    # Match Any:
+    #   Roles All ["Teacher"]; and
+    #   Status None ["Active"]; and
+    #   Keyword Any ["patricia"].
+
+    # Match Keyword Any ["patricia"].
+    When I click on "Add condition" "button"
     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..." to "teacher1"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 3" "fieldset" to "patricia"
+
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should see "Patricia 1" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
 
   @javascript
   Scenario: Multiple filters applied (None filterset match type)
-    Given I log in as "teacher1"
-    #Avoid 'Teacher' list item collisions with profile dropdown.
-    And I open my profile in edit mode
-    And I set the field "First name" to "Patricia"
-    And I press "Update profile"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+
+    # Match None:
+    #   Roles All ["Teacher"] and
+    #   Status Any ["Active"].
+
+    # Set the Roles to "All" ["Teacher"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Teacher" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Teacher"
+
+    # Set the Status to "Any" ["Active"].
     And I click on "Add condition" "button"
-    # Set filterset to match none.
-    And I set the field "Match" to "None"
     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 "Status"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Active" "list_item"
-    When I click on "Apply filters" "button"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Active"
+
+    # Set filterset to match None.
+    And I set the field "Match" to "None"
+    And I click on "Apply filters" "button"
+
     Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I should not see "Patricia 1" in the "participants" "table"
-    And I set the field "Match" in the "Filter 2" "fieldset" to "None"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match None:
+    #   Roles All ["Teacher"] and
+    #   Status None ["Active"]
+    # Set the Status to "None ["Active"]
+    When I set the field "Match" in the "Filter 2" "fieldset" to "None"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+    Then I should see "Student 1" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should not see "Patricia 1" in the "participants" "table"
-    # Add a keyword filter.
-    And I click on "Add condition" "button"
-    And I set the field "Match" in the "Filter 3" "fieldset" to "Any"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match None:
+    #   Roles All ["Teacher"] and
+    #   Status None ["Active"] and
+    #   Keyword Any ["3@"]
+    # Set the Keyword to "Any" ["3@"]
+    When I click on "Add condition" "button"
+    Then 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..." to "3@"
-    And I press the enter key
-    And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+    And I set the field "Type..." in the "Filter 3" "fieldset" to "3@"
+
+    When I click on "Apply filters" "button"
+    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 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should not see "Patricia 1" in the "participants" "table"
-    And I set the field "Match" in the "Filter 3" "fieldset" to "None"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match None:
+    #   Roles All ["Teacher"] and
+    #   Status None ["Active"] and
+    #   Keyword None ["3@"].
+
+    # Set the Keyword to "None" ["3@"]
+    When I set the field "Match" in the "Filter 3" "fieldset" to "None"
     And I click on "Apply filters" "button"
-    And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 3" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should not see "Patricia 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Filter match by one or more keywords and modified match types
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
+
+    # Match:
+    #   Keyword Any ["1@example"].
+
+    # Set the Keyword to "Any" ["1@example"]
+    When 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..." to "1@example"
-    And I press the enter key
-    When I click on "Apply filters" "button"
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "1@example"
+    And I click on "Apply filters" "button"
+
     Then I should see "Student 1" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I set the field "Match" in the "Filter 1" "fieldset" to "None"
-    And I click on "Apply filters" "button"
-    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 4" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+
+    # Match:
+    #   Keyword All ["1@example"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I set the field "Match" in the "Filter 1" "fieldset" to "None"
+
+    # Match:
+    #   Keyword None ["1@example"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "None"
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
-    # Add a second keyword filter value
-    And I set the field "Type..." to "moodle"
-    And I press the enter key
+    But I should not see "Student 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Set two keyword values.
+    # Match:
+    #   Keyword None ["1@example", "moodle"].
+    When I set the field "Type..." to "1@example, moodle"
     And I click on "Apply filters" "button"
-    And I should see "Student 2" in the "participants" "table"
+
+    Then I should see "Student 2" in the "participants" "table"
     And I should see "Student 3" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
+
+    # Set two keyword values.
+    # Match:
+    #   Keyword Any ["1@example", "moodle"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "Any"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+
+    Then I should see "Student 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should not see "Student 2" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+
+    # Match:
+    #   Keyword All ["1@example", "moodle"].
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
 
   @javascript
   Scenario: Reorder users without losing filter
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    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 "Student" "list_item"
+
+    When I set the field "type" in the "Filter 1" "fieldset" to "Roles"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
     And I click on "Apply filters" "button"
+
     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 3" in the "participants" "table"
     And I should see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
     When I click on "Surname" "link"
     Then I should see "Student 1" 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 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Only possible to add filter rows for the number of filters available
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
+    When I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
     And I click on "Add condition" "button"
     And I set the field "type" in the "Filter 2" "fieldset" to "Status"
     And I click on "Add condition" "button"
@@ -504,11 +647,12 @@ Feature: Course participants can be filtered
     And I set the field "type" in the "Filter 5" "fieldset" to "Groups"
     And I click on "Add condition" "button"
     And I set the field "type" in the "Filter 6" "fieldset" to "Inactive for more than"
-    And the "Add condition" "button" should be disabled
+
+    Then the "Add condition" "button" should be disabled
 
   @javascript
   Scenario: Rendering filter options for teachers in a course that don't support groups
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And I am on "Course 2" course homepage
     When I navigate to course participants
     Then I should see "Roles" in the "type" "field"
@@ -526,51 +670,76 @@ Feature: Course participants can be filtered
 
   @javascript
   Scenario: Filter by user identity fields
-    Given I log in as "teacher1"
+    Given I log in as "patricia"
     And the following config values are set as admin:
         | showuseridentity | idnumber,email,city,country |
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
-    # Search by email (only).
-    And I set the field "Type..." to "student1@example.com"
-    And I press the enter key
-    When I click on "Apply filters" "button"
+
+    # Search by email (only) - should only see visible email + own.
+    # Match:
+    #   Keyword Any ["student1@example.com"].
+
+    # Set the Keyword to "Any" ["student1@example.com"]
+    When I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "student1@example.com"
+    And I click on "Apply filters" "button"
+
     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 "Teacher 1" in the "participants" "table"
+    But I should not see "Student 2" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
     # Search by idnumber (only).
+    # Match:
+    #   Keyword Any ["SID"].
+
+    # Set the Keyword to "Any" ["SID"]
     And I click on "student1@example.com" "autocomplete_selection"
-    And I set the field "Type..." to "SID"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "SID"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 1" 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 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
+
     # Search by city (only).
+    # Match:
+    #   Keyword Any ["SCITY"].
+
+    # Set the Keyword to "Any" ["SCITY"]
     And I click on "SID" "autocomplete_selection"
-    And I set the field "Type..." to "SCITY"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "SCITY"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 1" 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 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
+
     # Search by country text (only) - should not match.
+    # Match:
+    #   Keyword Any ["GB"].
+
+    # Set the Keyword to "Any" ["GB"]
     And I click on "SCITY" "autocomplete_selection"
-    And I set the field "Type..." to "GB"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "GB"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
+
     # Check no match.
+    # Match:
+    #   Keyword Any ["NOTHING"].
+
+    # Set the Keyword to "Any" ["NOTHING"]
     And I click on "GB" "autocomplete_selection"
-    And I set the field "Type..." to "NOTHING"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "NOTHING"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
 
   @javascript
   Scenario: Filter by user identity fields when cannot see the field data
@@ -580,215 +749,290 @@ Feature: Course participants can be filtered
     And the following config values are set as admin:
       | showuseridentity | idnumber,email,city,country |
     And I log out
-    And I log in as "teacher1"
+
+    And I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
+
+    # Match:
+    #   Keyword Any ["@example.com"].
+
     # 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..." to "@example."
-    And I press the enter key
-    When I click on "Apply filters" "button"
-    Then I should not see "Student 1" in the "participants" "table"
-    And I should see "Student 2" in the "participants" "table"
+    # Set the Keyword to "Any" ["@example.com"]
+    When I set the field "type" in the "Filter 1" "fieldset" to "Keyword"
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "@example."
+    And I click on "Apply filters" "button"
+
+    Then I should see "Student 2" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+
     # Search for other fields - should only see own results.
+
+    # Match:
+    #   Keyword Any ["SID"].
+    # Set the Keyword to "Any" ["SID"]
     And I click on "@example." "autocomplete_selection"
-    And I set the field "Type..." to "SID"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "SID"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
+
+    # Match:
+    #   Keyword Any ["TID"].
+
+    # Set the Keyword to "Any" ["TID"]
     And I click on "SID" "autocomplete_selection"
-    And I set the field "Type..." to "TID"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "TID"
     And I click on "Apply filters" "button"
-    And I should see "Teacher 1" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+
+    Then I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+
+    # Match:
+    #   Keyword Any ["CITY"].
+
+    # Set the Keyword to "Any" ["CITY"]
     And I click on "TID" "autocomplete_selection"
-    And I set the field "Type..." to "CITY"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "CITY"
     And I click on "Apply filters" "button"
-    And I should see "Teacher 1" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
-    # Check no match.
+
+    Then I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
+
+    # No data matches regardless of capabilities.
+    # Match:
+    #   Keyword Any ["NOTHING"].
+
+    # Set the Keyword to "Any" ["NOTHING"]
     And I click on "CITY" "autocomplete_selection"
-    And I set the field "Type..." to "NOTHING"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 1" "fieldset" to "NOTHING"
     And I click on "Apply filters" "button"
-    And I should see "Nothing to display"
+
+    Then I should see "Nothing to display"
 
   @javascript
   Scenario: Individual filters can be removed, which will automatically refresh the participants list
-    Given I log in as "teacher1"
+    # Match All:
+    #   Roles All ["Student"]; and
+    #   Keyword Any ["@example.com"].
+
+    # Set the Roles to "All" ["Student"].
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
     And I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
+
+    # Set the Keyword to "Any" ["@example.com"]
     And I click on "Add condition" "button"
-    # Set filterset to match all.
-    And I set the field "Match" to "All"
     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..." to "@example"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 2" "fieldset" to "@example"
+
+    # Set filterset to match all.
+    And I set the field "Match" to "All"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 1" 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 not see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Student 4" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match:
+    #   Keyword Any ["@example.com"].
     When I click on "Remove filter row" "button" in the "Filter 1" "fieldset"
     Then I should see "Student 1" 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 "Teacher 1" in the "participants" "table"
-    And I should not see "Student 4" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 4" in the "participants" "table"
 
   @javascript
   Scenario: All filters can be cleared at once
-    Given I log in as "teacher1"
+    # Match All:
+    #   Roles All ["Student"]; and
+    #   Keyword Any ["@example.com"].
+
+    # Set the Roles to "All" ["Student"].
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "All"
+    When I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
+
+    # Set the Keyword to "All" ["@example.com"].
     And I click on "Add condition" "button"
-    # Set filterset to match all.
-    And I set the field "Match" to "All"
     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..." to "@example"
-    And I press the enter key
+    And I set the field "Type..." in the "Filter 2" "fieldset" to "@example"
+
+    # Set filterset to match all.
+    And I set the field "Match" to "All"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 1" 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 not see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Student 4" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match Any.
     When I click on "Clear filters" "button"
     Then I should see "Student 1" 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 4" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Filterset match type is reset when reducing to a single filter
-    Given I log in as "teacher1"
+    # Match None:
+    #   Keyword Any ["@example.com"]; and
+    #   Roles All ["Teacher"].
+    Given I log in as "patricia"
     And I am on "Course 1" course homepage
     And I navigate to course participants
-    And I set the field "Match" in the "Filter 1" "fieldset" to "Any"
+
+    # Set the Keyword to "Any" ["@example.com"]
+    When 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..." to "@example.com"
-    And I press the enter key
+
+    # Set the Roles to "All" ["Student"].
     And I click on "Add condition" "button"
-    # Set filterset to match none.
-    And I set the field "Match" to "None"
     And I set the field "Match" in the "Filter 2" "fieldset" to "All"
     And I set the field "type" in the "Filter 2" "fieldset" to "Roles"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Student"
+
     # Match none of student role and @example.com keyword.
+    And I set the field "Match" to "None"
     And I click on "Apply filters" "button"
-    And I should see "Teacher 1" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+
+    Then I should see "Patricia Pea" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
     And I should not see "Student 4" in the "participants" "table"
+
+    # Match:
+    #   Keyword Any ["@example.com"].
+    # When removing the pen-ultimate filter, the filterset match type is removed too.
     When I click on "Remove filter row" "button" in the "Filter 2" "fieldset"
-    # Filterset match type and role filter are removed, leaving keyword filter only.
     Then I should see "Student 1" 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 not see "Student 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
-    And I click on "Add condition" "button"
-    # Re-add a second filter and ensure the default (any) filterset match type is set.
+    But I should not see "Student 4" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
+
+    # Match Any:
+    #   Keyword Any ["@example.com"]; and
+    #   Role All ["Student"].
+    # The default filterset match (Any) should apply.
+    # Set the Roles to "All" ["Student"].
+    When I click on "Add condition" "button"
     And I set the field "Match" in the "Filter 2" "fieldset" to "All"
     And I set the field "type" in the "Filter 2" "fieldset" to "Role"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Student"
     And I click on "Apply filters" "button"
-    And I should see "Student 1" in the "participants" "table"
+
+    Then I should see "Student 1" 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 4" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Filter users by first initial
-    Given I log in as "teacher1"
+    # Match:
+    #   No filters; and
+    # First initial "T".
+    Given I log in as "patricia"
     And I am on "Course 2" course homepage
     And I navigate to course participants
     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 3" in the "participants" "table"
     And I should see "Trendy Learnson" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
     When I click on "T" "link" in the ".firstinitial" "css_element"
     Then I should see "Trendy Learnson" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    But I should not see "Patricia Pea" in the "participants" "table"
     And I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
 
   @javascript
   Scenario: Filter users by last initial
-    Given I log in as "teacher1"
+    # Match:
+    #   No filters; and
+    # Last initial "L".
+    Given I log in as "patricia"
     And I am on "Course 2" course homepage
     And I navigate to course participants
     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 3" in the "participants" "table"
     And I should see "Trendy Learnson" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
     When I click on "L" "link" in the ".lastinitial" "css_element"
     Then I should see "Trendy Learnson" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Filter users by first and last initials
-    Given I log in as "teacher1"
+    # Match:
+    #   No filters; and
+    # First initial "T"; and
+    # Last initial "L".
+    Given I log in as "patricia"
     And I am on "Course 2" course homepage
     And I navigate to course participants
     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 3" in the "participants" "table"
     And I should see "Trendy Learnson" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
     When I click on "T" "link" in the ".firstinitial" "css_element"
     And I click on "L" "link" in the ".lastinitial" "css_element"
     Then I should see "Trendy Learnson" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
 
   @javascript
   Scenario: Initials filtering is always applied in addition to any other filtering
-    Given I log in as "teacher1"
+    # Match:
+    #   Roles All ["Teacher"]; and
+    # First initial "T".
+    Given I log in as "patricia"
     And I am on "Course 2" course homepage
     And I navigate to course participants
     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 3" in the "participants" "table"
     And I should see "Trendy Learnson" in the "participants" "table"
-    And I should see "Teacher 1" in the "participants" "table"
+    And I should see "Patricia Pea" in the "participants" "table"
+
+    # Set the Role to "Any" ["Student"].
     When I set the field "Match" in the "Filter 1" "fieldset" to "Any"
     And I set the field "type" in the "Filter 1" "fieldset" to "Role"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
     And I click on "Apply filters" "button"
-    When I click on "T" "link" in the ".firstinitial" "css_element"
+
+    # Last initial "T".
+    And I click on "T" "link" in the ".firstinitial" "css_element"
     Then I should see "Trendy Learnson" in the "participants" "table"
-    And I should not see "Student 1" in the "participants" "table"
+    But I should not see "Student 1" in the "participants" "table"
     And I should not see "Student 2" in the "participants" "table"
     And I should not see "Student 3" in the "participants" "table"
-    And I should not see "Teacher 1" in the "participants" "table"
+    And I should not see "Patricia Pea" in the "participants" "table"
index 51c35c0..1ebbcb3 100644 (file)
@@ -76,8 +76,7 @@ Feature: Course participants can be filtered to display all the users
     And I navigate to course participants
     And I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
     When I click on "Apply filters" "button"
     Then I should see "24 participants found"
     And I should see "Show all 24"
@@ -94,15 +93,14 @@ Feature: Course participants can be filtered to display all the users
     And I navigate to course participants
     And I set the field "Match" in the "Filter 1" "fieldset" to "All"
     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 "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
     When I click on "Apply filters" "button"
-    Then I should see "24 participants found"
-    And I should see "Show all 24"
+    Then I should see "23 participants found"
+    And I should see "Show all 23"
     And I should not see "Show 20 per page"
-    And I click on "Show all 24" "link"
+    And I click on "Show all 23" "link"
     And I should see "Show 20 per page"
-    And I should not see "Show all 24"
+    And I should not see "Show all 23"
 
   @javascript
   Scenario: Apply one value for more than one filter and show all matching users
@@ -113,12 +111,10 @@ Feature: Course participants can be filtered to display all the users
     And I set the field "Match" to "All"
     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 "Roles"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Student" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Student"
     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 "Status"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 2" "fieldset"
-    And I click on "Active" "list_item"
+    And I set the field "Type or select..." in the "Filter 2" "fieldset" to "Active"
     When I click on "Apply filters" "button"
     And I click on "Show all 23" "link"
     Then I should see "23 participants found"
index f056317..8e0d7a0 100644 (file)
@@ -79,6 +79,6 @@ Feature: Users' names are displayed across the site according to the user policy
     And I am on "Course 1" course homepage
     When I navigate to course participants
     And I press "Enrol users"
-    And I set the field "Select users" to "three@example.com"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Select users" "form_row"
+    And I click on "Select users" "field"
+    And I type "three@example.com"
     Then I should see "Sarah, Sev, Siobhan, Desforges"
index f15572e..11f2ddc 100644 (file)
@@ -60,8 +60,7 @@ Feature: View course participants groups
     And I should see "Student 1x"
     And I should see "Student 2x"
     And I set the field "type" in the "Filter 1" "fieldset" to "Groups"
-    And I click on ".form-autocomplete-downarrow" "css_element" in the "Filter 1" "fieldset"
-    And I click on "Group B" "list_item"
+    And I set the field "Type or select..." in the "Filter 1" "fieldset" to "Group B"
     And I click on "Apply filters" "button"
     And I should see "Student 3x"
     And I should see "Student 4x"