itemengine-cypress-automation 1.0.573-IEI-7065-Improve-test-coverage-for-essay-response-c25d1ee.0 → 1.0.573
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cypress/e2e/ILC/EssayResponse/additionalSettings.js +2 -8
- package/cypress/e2e/ILC/EssayResponse/additionalSettingsBasic.js +0 -15
- package/cypress/e2e/ILC/EssayResponse/createCustomCategory.smoke.js +1 -14
- package/cypress/e2e/ILC/EssayResponse/editTabBasicSections.js +5 -155
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions2.js +4 -116
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions3.js +0 -93
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions4.js +0 -114
- package/cypress/e2e/ILC/EssayResponse/essayResponseSpecialCharacters.js +1 -11
- package/cypress/e2e/ILC/EssayResponse/previewAddTable.js +2 -29
- package/cypress/e2e/ILC/EssayResponse/previewContentsForAllViews.smoke.js +1 -11
- package/cypress/e2e/ILC/EssayResponse/previewEditTable.js +0 -75
- package/cypress/e2e/ILC/EssayResponse/previewHyperlink.js +0 -13
- package/cypress/e2e/ILC/EssayResponse/studentViewSettings.js +0 -71
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +108 -7
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +108 -7
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +108 -7
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +123 -8
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +123 -8
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +123 -8
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +108 -7
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +93 -6
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +108 -7
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/responseLevelAlternateAnswersBasicScoring.js +23 -2
- package/cypress/pages/components/equationEditorSectionCommonComponent.js +0 -21
- package/cypress/pages/components/essayResponseCommonComponents.js +1 -20
- package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +36 -0
- package/cypress/pages/essayResponsePage.js +0 -2
- package/package.json +1 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { fillInTheGapsTextPage } from "../../../../pages";
|
|
2
|
+
import { showAlternativeAnswersComponent } from "../../../../pages/components";
|
|
2
3
|
import abortEarlySetup from "../../../../support/helpers/abortEarly";
|
|
3
4
|
|
|
5
|
+
const alternativeAnswerCheck = Cypress.env('ENABLE_ALTERNATIVE_ANSWER_ENHANCEMENT') === 'true';
|
|
6
|
+
|
|
4
7
|
describe('Create item page - Fill in the gaps with text: All or nothing with alternative answers', () => {
|
|
5
8
|
before(() => {
|
|
6
9
|
cy.loginAs('admin');
|
|
@@ -25,7 +28,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
25
28
|
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
26
29
|
fillInTheGapsTextPage.steps.verifyResponseAreaNumeration();
|
|
27
30
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
28
|
-
|
|
31
|
+
if (alternativeAnswerCheck) {
|
|
32
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
33
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
34
|
+
{
|
|
35
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
36
|
+
points: ['(20 points)'],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
40
|
+
points: ['(20 points)'],
|
|
41
|
+
}
|
|
42
|
+
]);
|
|
43
|
+
} else {
|
|
44
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
45
|
+
}
|
|
29
46
|
});
|
|
30
47
|
|
|
31
48
|
it('When the user attempts the question with responses from the correct accordion, then the user should be awarded full points and on switching to \'Grading\' view, correct icons should be displayed beside all the correct responses, a status message with text \'Your answer is correct\' and correct answer section should not be displayed', () => {
|
|
@@ -77,7 +94,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
77
94
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
78
95
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
79
96
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
80
|
-
|
|
97
|
+
if (alternativeAnswerCheck) {
|
|
98
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
99
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
100
|
+
{
|
|
101
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
102
|
+
points: ['(20 points)'],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
106
|
+
points: ['(20 points)'],
|
|
107
|
+
}
|
|
108
|
+
]);
|
|
109
|
+
} else {
|
|
110
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
111
|
+
}
|
|
81
112
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
82
113
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the correct accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
83
114
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -97,7 +128,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
97
128
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
98
129
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
99
130
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
100
|
-
|
|
131
|
+
if (alternativeAnswerCheck) {
|
|
132
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
133
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
134
|
+
{
|
|
135
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
136
|
+
points: ['(20 points)'],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
140
|
+
points: ['(20 points)'],
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
143
|
+
} else {
|
|
144
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
145
|
+
}
|
|
101
146
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
102
147
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
103
148
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -117,7 +162,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
117
162
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
118
163
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
119
164
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
120
|
-
|
|
165
|
+
if (alternativeAnswerCheck) {
|
|
166
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
167
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
168
|
+
{
|
|
169
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
170
|
+
points: ['(20 points)'],
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
174
|
+
points: ['(20 points)'],
|
|
175
|
+
}
|
|
176
|
+
]);
|
|
177
|
+
} else {
|
|
178
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
179
|
+
}
|
|
121
180
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
122
181
|
/*cy.log('When the user has attempted the question with partially correct with all the response correct as per the alternative accordion but one response incomplete and clicks on \'Check answer\' button, then correct icon should be displayed besides the response from the alternative accordion, incorrect icon should be displayed besides the empty response, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
123
182
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -137,7 +196,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
137
196
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
138
197
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
139
198
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
140
|
-
|
|
199
|
+
if (alternativeAnswerCheck) {
|
|
200
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
201
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
202
|
+
{
|
|
203
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
204
|
+
points: ['(20 points)'],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
208
|
+
points: ['(20 points)'],
|
|
209
|
+
}
|
|
210
|
+
]);
|
|
211
|
+
} else {
|
|
212
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
213
|
+
}
|
|
141
214
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
142
215
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, incorrect icon should be displayed beside option from the alternative accordion a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
143
216
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -157,7 +230,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
157
230
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
158
231
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(2);
|
|
159
232
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
160
|
-
|
|
233
|
+
if (alternativeAnswerCheck) {
|
|
234
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
235
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
236
|
+
{
|
|
237
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
238
|
+
points: ['(20 points)'],
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
242
|
+
points: ['(20 points)'],
|
|
243
|
+
}
|
|
244
|
+
]);
|
|
245
|
+
} else {
|
|
246
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
247
|
+
}
|
|
161
248
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
162
249
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
163
250
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -177,7 +264,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
177
264
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
178
265
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
179
266
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
180
|
-
|
|
267
|
+
if (alternativeAnswerCheck) {
|
|
268
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
269
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
270
|
+
{
|
|
271
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
272
|
+
points: ['(20 points)'],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
276
|
+
points: ['(20 points)'],
|
|
277
|
+
}
|
|
278
|
+
]);
|
|
279
|
+
} else {
|
|
280
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
281
|
+
}
|
|
181
282
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
182
283
|
/*cy.log('When the user has attempted the question incorrectly and clicks on \'Check answer\' button, then incorrect icons should be displayed besides all incorrect responses, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
183
284
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { fillInTheGapsTextPage } from "../../../../pages";
|
|
2
|
+
import { showAlternativeAnswersComponent } from "../../../../pages/components";
|
|
2
3
|
import abortEarlySetup from "../../../../support/helpers/abortEarly";
|
|
3
4
|
import utilities from "../../../../support/helpers/utilities";
|
|
4
5
|
const css = Cypress.env('css');
|
|
5
6
|
|
|
7
|
+
const alternativeAnswerCheck = Cypress.env('ENABLE_ALTERNATIVE_ANSWER_ENHANCEMENT') === 'true';
|
|
8
|
+
|
|
6
9
|
describe('Create item page - Fill in the gaps with text: All or nothing with alternative answers', () => {
|
|
7
10
|
before(() => {
|
|
8
11
|
cy.loginAs('admin');
|
|
@@ -27,7 +30,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
27
30
|
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
28
31
|
fillInTheGapsTextPage.steps.verifyResponseAreaNumeration();
|
|
29
32
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
30
|
-
|
|
33
|
+
if (alternativeAnswerCheck) {
|
|
34
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
35
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
36
|
+
{
|
|
37
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
38
|
+
points: ['(20 points)'],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
42
|
+
points: ['(10 points)'],
|
|
43
|
+
}
|
|
44
|
+
]);
|
|
45
|
+
} else {
|
|
46
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
47
|
+
}
|
|
31
48
|
});
|
|
32
49
|
|
|
33
50
|
it('CSS of correct answer section and response area numeration', { tags: 'css' }, () => {
|
|
@@ -130,7 +147,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
130
147
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
131
148
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
132
149
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
133
|
-
|
|
150
|
+
if (alternativeAnswerCheck) {
|
|
151
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
152
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
153
|
+
{
|
|
154
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
155
|
+
points: ['(20 points)'],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
159
|
+
points: ['(10 points)'],
|
|
160
|
+
}
|
|
161
|
+
]);
|
|
162
|
+
} else {
|
|
163
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
164
|
+
}
|
|
134
165
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
135
166
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the correct accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
136
167
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -150,7 +181,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
150
181
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
151
182
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
152
183
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
153
|
-
|
|
184
|
+
if (alternativeAnswerCheck) {
|
|
185
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
186
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
187
|
+
{
|
|
188
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
189
|
+
points: ['(20 points)'],
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
193
|
+
points: ['(10 points)'],
|
|
194
|
+
}
|
|
195
|
+
]);
|
|
196
|
+
} else {
|
|
197
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
198
|
+
}
|
|
154
199
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
155
200
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
156
201
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -170,7 +215,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
170
215
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
171
216
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
172
217
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
173
|
-
|
|
218
|
+
if (alternativeAnswerCheck) {
|
|
219
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
220
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
221
|
+
{
|
|
222
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
223
|
+
points: ['(20 points)'],
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
227
|
+
points: ['(10 points)'],
|
|
228
|
+
}
|
|
229
|
+
]);
|
|
230
|
+
} else {
|
|
231
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
232
|
+
}
|
|
174
233
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
175
234
|
/*cy.log('When the user has attempted the question with partially correct with all the response correct as per the alternative accordion but one response incomplete and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct responses and no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
176
235
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -190,7 +249,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
190
249
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
191
250
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
192
251
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
193
|
-
|
|
252
|
+
if (alternativeAnswerCheck) {
|
|
253
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
254
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
255
|
+
{
|
|
256
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
257
|
+
points: ['(20 points)'],
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
261
|
+
points: ['(10 points)'],
|
|
262
|
+
}
|
|
263
|
+
]);
|
|
264
|
+
} else {
|
|
265
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
266
|
+
}
|
|
194
267
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
195
268
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, incorrect icon should be displayed beside empty responses a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
196
269
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -210,7 +283,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
210
283
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
211
284
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(2);
|
|
212
285
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
213
|
-
|
|
286
|
+
if (alternativeAnswerCheck) {
|
|
287
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
288
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
289
|
+
{
|
|
290
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
291
|
+
points: ['(20 points)'],
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
295
|
+
points: ['(10 points)'],
|
|
296
|
+
}
|
|
297
|
+
]);
|
|
298
|
+
} else {
|
|
299
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
300
|
+
}
|
|
214
301
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
215
302
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
216
303
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -230,7 +317,21 @@ describe('Create item page - Fill in the gaps with text: All or nothing with alt
|
|
|
230
317
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
231
318
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
232
319
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
|
|
233
|
-
|
|
320
|
+
if (alternativeAnswerCheck) {
|
|
321
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
322
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
323
|
+
{
|
|
324
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
325
|
+
points: ['(20 points)'],
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
329
|
+
points: ['(10 points)'],
|
|
330
|
+
}
|
|
331
|
+
]);
|
|
332
|
+
} else {
|
|
333
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Flower', 'Leaf', 'Stem']);
|
|
334
|
+
}
|
|
234
335
|
// fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
235
336
|
/*cy.log('When the user has attempted the question incorrectly and clicks on \'Check answer\' button, then incorrect icons should be displayed besides all incorrect responses, no icon should be displayed beside unattempted response area, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed')
|
|
236
337
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { fillInTheGapsTextPage } from "../../../../pages";
|
|
2
|
+
import { showAlternativeAnswersComponent } from "../../../../pages/components";
|
|
2
3
|
import abortEarlySetup from "../../../../support/helpers/abortEarly";
|
|
3
4
|
|
|
5
|
+
const alternativeAnswerCheck = Cypress.env('ENABLE_ALTERNATIVE_ANSWER_ENHANCEMENT') === 'true';
|
|
6
|
+
|
|
4
7
|
describe('Create item page - Fill in the gaps with text: Partial different weights', () => {
|
|
5
8
|
before(() => {
|
|
6
9
|
cy.loginAs('admin');
|
|
@@ -25,7 +28,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
25
28
|
it('When the user selects \'Grading\' view without attempting the question, response area numeration should be displayed, correct answers section should be displayed with correct answers from the alternative accordion and respective response area numeration', () => {
|
|
26
29
|
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
27
30
|
fillInTheGapsTextPage.steps.verifyResponseAreaNumeration();
|
|
28
|
-
|
|
31
|
+
if (alternativeAnswerCheck) {
|
|
32
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
33
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
34
|
+
{
|
|
35
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
36
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
40
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
41
|
+
}
|
|
42
|
+
]);
|
|
43
|
+
} else {
|
|
44
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
45
|
+
}
|
|
29
46
|
});
|
|
30
47
|
|
|
31
48
|
it('When the user attempts the question with responses from the correct accordion, then the user should be awarded points of the correct accordion (less than full points) and on switching to \'Grading\' view, correct icons should be displayed beside all the correct responses, status message and correct answer section should not be displayed', () => {
|
|
@@ -77,7 +94,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
77
94
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(1);
|
|
78
95
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
79
96
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
80
|
-
|
|
97
|
+
if (alternativeAnswerCheck) {
|
|
98
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
99
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
100
|
+
{
|
|
101
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
102
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
106
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
107
|
+
}
|
|
108
|
+
]);
|
|
109
|
+
} else {
|
|
110
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
111
|
+
}
|
|
81
112
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
82
113
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the correct accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, status message and correct answer section should not be displayed')
|
|
83
114
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -97,7 +128,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
97
128
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
98
129
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
99
130
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
100
|
-
|
|
131
|
+
if (alternativeAnswerCheck) {
|
|
132
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
133
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
134
|
+
{
|
|
135
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
136
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
140
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
143
|
+
} else {
|
|
144
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
145
|
+
}
|
|
101
146
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
102
147
|
/*cy.log('When the user has attempted the question with partially correct options exclusively from the alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response status message and correct answer section should not be displayed')
|
|
103
148
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -117,7 +162,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
117
162
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
118
163
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
119
164
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
120
|
-
|
|
165
|
+
if (alternativeAnswerCheck) {
|
|
166
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
167
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
168
|
+
{
|
|
169
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
170
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
174
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
175
|
+
}
|
|
176
|
+
]);
|
|
177
|
+
} else {
|
|
178
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
179
|
+
}
|
|
121
180
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
122
181
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the alternative answer responses, incorrect icon should be displayed beside responses of the correct accordion status message and correct answer section should not be displayed')
|
|
123
182
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -137,7 +196,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
137
196
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
138
197
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
139
198
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
140
|
-
|
|
199
|
+
if (alternativeAnswerCheck) {
|
|
200
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
201
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
202
|
+
{
|
|
203
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
204
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
208
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
209
|
+
}
|
|
210
|
+
]);
|
|
211
|
+
} else {
|
|
212
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
213
|
+
}
|
|
141
214
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
142
215
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, incorrect icon should be displayed beside empty responses status message and correct answer section should not be displayed')
|
|
143
216
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -157,7 +230,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
157
230
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
158
231
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(2);
|
|
159
232
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
160
|
-
|
|
233
|
+
if (alternativeAnswerCheck) {
|
|
234
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
235
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
236
|
+
{
|
|
237
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
238
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
242
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
243
|
+
}
|
|
244
|
+
]);
|
|
245
|
+
} else {
|
|
246
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
247
|
+
}
|
|
161
248
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
162
249
|
/*cy.log('When the user has attempted the question with equal number of correct responses from correct and alternative accordion and clicks on \'Check answer\' button, then correct icon should be displayed besides the correct answer responses, no icon should be displayed beside unattempted response status message and correct answer section should not be displayed')
|
|
163
250
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -177,7 +264,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
177
264
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
178
265
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(2);
|
|
179
266
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
180
|
-
|
|
267
|
+
if (alternativeAnswerCheck) {
|
|
268
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
269
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
270
|
+
{
|
|
271
|
+
correctAnswers: [['Petals'],['Leaves'],['Stem']],
|
|
272
|
+
points: ['(15 points)', '(6 points)', '(4 points)', '(5 points)'],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
276
|
+
points: ['(13 points)', '(7 points)', '(1 point)', '(5 points)'],
|
|
277
|
+
}
|
|
278
|
+
]);
|
|
279
|
+
} else {
|
|
280
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Stem']);
|
|
281
|
+
}
|
|
181
282
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
182
283
|
/*cy.log('When the user has attempted the question incorrectly and clicks on \'Check answer\' button, then incorrect icon should be displayed besides all incorrect responses, no icon should be displayed beside unattempted response status message and correct answer section should not be displayed')
|
|
183
284
|
fillInTheGapsTextPage.steps.checkAnswer();
|
|
@@ -204,7 +305,21 @@ describe('Create item page - Fill in the gaps with text: Partial different weigh
|
|
|
204
305
|
fillInTheGapsTextPage.steps.verifyIncorrectOptionIcon(1);
|
|
205
306
|
fillInTheGapsTextPage.steps.verifyCorrectOptionIcon(2);
|
|
206
307
|
fillInTheGapsTextPage.steps.verifyCorrectIncorrectStatusMessageNotExists();
|
|
207
|
-
|
|
308
|
+
if (alternativeAnswerCheck) {
|
|
309
|
+
showAlternativeAnswersComponent.steps.clickShowAlternativeAnswersToggle();
|
|
310
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerSectionWithAlternateAnswer([
|
|
311
|
+
{
|
|
312
|
+
correctAnswers: [['Petals'],['Leaves'],['Branch']],
|
|
313
|
+
points: ['(23 points)', '(11.4 points)', '(1.2 points)', '(10.4 points)'],
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
correctAnswers: [['Flower'],['Leaf'],['Stem']],
|
|
317
|
+
points: ['(5 points)', '(1.2 points)', '(2.2 point)', '(1.6 points)'],
|
|
318
|
+
}
|
|
319
|
+
]);
|
|
320
|
+
} else {
|
|
321
|
+
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount(['Petals', 'Leaves', 'Branch']);
|
|
322
|
+
}
|
|
208
323
|
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
209
324
|
/*cy.log('When the user attempts the question with more number of correct responses from the correct accordion than the alternative accordion but the score of the individual response selected from the alternative accordion overpowers the combined score of the correct accordion answers and clicks on the \'Check answer\' button, correct icon icons should be displayed beside the correct responses from the correct accordion, incorrect icons should be displayed beside the incorrectly answered responses, correct/incorrect answer status message and correct answer section should not be displayed')
|
|
210
325
|
fillInTheGapsTextPage.steps.checkAnswer();
|