4499aaad4804c16210b16a17a0139d720ae7139a
[moodle.git] / mod / quiz / tests / behat / attempt_redo_questions.feature
1 @mod @mod_quiz
2 Feature: Allow students to redo questions in a practice quiz, without starting a whole new attempt
3   In order to practice particular skills I am struggling with
4   As a student
5   I need to be able to redo each question in a quiz as often as necessary without starting a whole new attempt, if my teacher allows it.
7   Background:
8     Given the following "users" exist:
9       | username | firstname | lastname | email               |
10       | student  | Student   | One      | student@example.com |
11       | teacher  | Teacher   | One      | teacher@example.com |
12     And the following "courses" exist:
13       | fullname | shortname | category |
14       | Course 1 | C1        | 0        |
15     And the following "course enrolments" exist:
16       | user     | course | role    |
17       | student  | C1     | student |
18       | teacher  | C1     | teacher |
19     And the following "question categories" exist:
20       | contextlevel | reference | name           |
21       | Course       | C1        | Test questions |
22     And the following "questions" exist:
23       | questioncategory | qtype       | name  | questiontext    |
24       | Test questions   | truefalse   | TF1   | First question  |
25       | Test questions   | truefalse   | TF2   | Second question |
26     And the following "activities" exist:
27       | activity   | name   | intro              | course | idnumber | preferredbehaviour | canredoquestions |
28       | quiz       | Quiz 1 | Quiz 1 description | C1     | quiz1    | immediatefeedback  | 1                |
29     And quiz "Quiz 1" contains the following questions:
30       | question | page | maxmark |
31       | TF1      | 1    | 2       |
32       | TF2      | 1    | 1       |
34   @javascript
35   Scenario: After completing a question, there is a redo question button that restarts the question
36     Given I log in as "student"
37     And I am on "Course 1" course homepage
38     When I follow "Quiz 1"
39     And I press "Attempt quiz now"
40     And I click on "False" "radio" in the "First question" "question"
41     And I click on "Check" "button" in the "First question" "question"
42     And I press "Try another question like this one"
43     Then the state of "First question" question is shown as "Not complete"
44     And I should see "Marked out of 2.00" in the "First question" "question"
46   @javascript
47   Scenario: The redo question button is visible but disabled for teachers
48     Given I log in as "student"
49     And I am on "Course 1" course homepage
50     When I follow "Quiz 1"
51     And I press "Attempt quiz now"
52     And I click on "False" "radio" in the "First question" "question"
53     And I click on "Check" "button" in the "First question" "question"
54     And I log out
55     And I log in as "teacher"
56     And I am on "Course 1" course homepage
57     And I follow "Quiz 1"
58     And I follow "Attempts: 1"
59     And I follow "Review attempt"
60     Then the "Try another question like this one" "button" should be disabled
62   @javascript
63   Scenario: The redo question buttons are no longer visible after the attempt is submitted.
64     Given I log in as "student"
65     And I am on "Course 1" course homepage
66     When I follow "Quiz 1"
67     And I press "Attempt quiz now"
68     And I click on "False" "radio" in the "First question" "question"
69     And I click on "Check" "button" in the "First question" "question"
70     And I press "Finish attempt ..."
71     And I press "Submit all and finish"
72     And I click on "Submit all and finish" "button" in the "Confirmation" "dialogue"
73     Then "Try another question like this one" "button" should not exist
75   @javascript @_switch_window
76   Scenario: Teachers reviewing can see all the qestions attempted in a slot
77     Given I log in as "student"
78     And I am on "Course 1" course homepage
79     When I follow "Quiz 1"
80     And I press "Attempt quiz now"
81     And I click on "False" "radio" in the "First question" "question"
82     And I click on "Check" "button" in the "First question" "question"
83     And I press "Try another question like this one"
84     And I press "Finish attempt ..."
85     And I press "Submit all and finish"
86     And I click on "Submit all and finish" "button" in the "Confirmation" "dialogue"
87     And I log out
88     And I log in as "teacher"
89     And I am on "Course 1" course homepage
90     And I follow "Quiz 1"
91     And I follow "Attempts: 1"
92     And I follow "Review attempt"
93     And I click on "1" "link" in the "First question" "question"
94     And I switch to "reviewquestion" window
95     Then the state of "First question" question is shown as "Incorrect"
96     And I click on "1" "link" in the "First question" "question"
97     And the state of "First question" question is shown as "Not complete"
98     And I switch to the main window
99     And the state of "First question" question is shown as "Not answered"
100     And I should not see "Submit" in the ".history" "css_element"
101     And I navigate to "Results > Statistics" in current page administration
102     And I follow "TF1"
103     And "False" row "Frequency" column of "quizresponseanalysis" table should contain "100.00%"
104     And "True" row "Frequency" column of "quizresponseanalysis" table should contain "0.00%"
105     And "[No response]" row "Frequency" column of "quizresponseanalysis" table should contain "100.00%"
107   @javascript
108   Scenario: Redoing question 1 should save any changes to question 2 on the same page
109     Given I log in as "student"
110     And I am on "Course 1" course homepage
111     When I follow "Quiz 1"
112     And I press "Attempt quiz now"
113     And I click on "False" "radio" in the "First question" "question"
114     And I click on "Check" "button" in the "First question" "question"
115     And I click on "True" "radio" in the "Second question" "question"
116     And I press "Try another question like this one"
117     And I click on "Check" "button" in the "Second question" "question"
118     Then the state of "Second question" question is shown as "Correct"