itemengine-cypress-automation 1.0.204-graphQLUpdate-b0c0036.0 → 1.0.204

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingBasicForGroupedOptionsLayout.js +22 -22
  2. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +1 -1
  3. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perCorrectOptionCorrectPointsEqualToAlternativePoints.js +1 -1
  4. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneBasic.js +4 -4
  5. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneCorrectPointsEqualToAlternativePoints.js +2 -2
  6. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneCorrectPointsGreaterThanAlternativePoints.js +1 -1
  7. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneMinimumAndPenaltyScoring.js +2 -2
  8. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +2 -2
  9. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/specifyCorrectAnswerSection.js +1 -1
  10. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/studentViewSettings.js +8 -8
  11. package/cypress/e2e/ILC/DrawingResponse/drawingResponseAdditionalSettings.js +5 -1
  12. package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +2 -0
  13. package/cypress/e2e/ILC/EssayResponse/createCustomCategory.smoke.js +19 -21
  14. package/cypress/e2e/ILC/EssayResponseMath/mathCharacters.js +2 -4
  15. package/cypress/e2e/ILC/FeedbackScaleNew/previewContentsForAllViews.smoke.js +1 -1
  16. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/backgroundImageAndCanvasProperties.js +14 -1
  17. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/dropdownOptionsSection.js +6 -2
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editTabBasicSection.js +4 -3
  19. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +3 -2
  20. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/conditionalCheckboxScoring.js +56 -56
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
  22. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +6 -4
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/editTabScoringSection.js +1 -1
  24. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +4 -4
  25. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabScoringSection.js +3 -3
  26. package/cypress/e2e/ILC/FillInTheGapsTextNew/specifyCorrectAnswerSection.js +2 -2
  27. package/cypress/e2e/ILC/GridFill/customizeLayoutFillImageBackgroundImage.js +8 -3
  28. package/cypress/e2e/ILC/ImageHighlight/additionalSettingsBasic.js +1 -1
  29. package/cypress/e2e/ILC/Matching/Scoring/partialDifferentWeightsScoringBasic.js +2 -2
  30. package/cypress/e2e/ILC/Matching/toolSettings.js +1 -1
  31. package/cypress/e2e/ILC/MultipleSelection/additionalSettings.js +248 -0
  32. package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +1 -1
  33. package/cypress/e2e/ILC/ShortTextResponseNew/editTabBasicSections.js +3 -0
  34. package/cypress/e2e/ILC/SingleSelection/additionalSettings.js +249 -0
  35. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +1 -1
  36. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodEquivalentStructures.js +6 -6
  37. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchValue.js +0 -1
  38. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsBasic.js +1 -1
  39. package/cypress/e2e/ILC/chartsDotsPlot/allOrNothingForAllViews.smoke.js +4 -4
  40. package/cypress/e2e/ILC/chartsDotsPlot/dotTypeFunctionality.js +235 -0
  41. package/cypress/e2e/ILC/chartsDotsPlot/minimumScoringPenaltyPointsAndRoundingDropdown.js +5 -5
  42. package/cypress/e2e/ILC/chartsDotsPlot/numberLineAxisSettings.js +265 -0
  43. package/cypress/e2e/ILC/chartsDotsPlot/previewContentsForAllViews.smoke.js +6 -6
  44. package/cypress/e2e/ILC/chartsDotsPlot/scoring/manualAndNonScoredScoring.js +3 -3
  45. package/cypress/e2e/ILC/chartsDotsPlot/selectChartTypeSection.js +594 -0
  46. package/cypress/e2e/ILC/chartsDotsPlot/studentViewSettings.js +2 -3
  47. package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +1 -1
  48. package/cypress/fixtures/fillColorDefaultProperties.js +2 -2
  49. package/cypress/pages/chartsDotPlotPage.js +588 -59
  50. package/cypress/pages/components/autoScoredScoringPreviewTab.js +1 -1
  51. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +1 -0
  52. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +1 -1
  53. package/cypress/pages/components/backgroundImageUploadComponent.js +1 -1
  54. package/cypress/pages/components/chartsCommonComponent.js +10 -1
  55. package/cypress/pages/components/customizeMathCharacterComponent.js +10 -5
  56. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +2 -2
  57. package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +4 -3
  58. package/cypress/pages/components/gridQuestionCommonComponent.js +11 -11
  59. package/cypress/pages/components/imageCanvasComponent.js +2 -2
  60. package/cypress/pages/components/layoutSectionComponent.js +20 -18
  61. package/cypress/pages/components/mcqAdditionalSettingsBase.js +164 -24
  62. package/cypress/pages/dialogBoxBase.js +1 -1
  63. package/cypress/pages/dragAndDropIntoCategoriesPage.js +1 -5
  64. package/cypress/pages/drawingResponsePage.js +3 -3
  65. package/cypress/pages/feedbackScalePage.js +16 -9
  66. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +6 -1
  67. package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +2 -1
  68. package/cypress/pages/gridFillPage.js +17 -14
  69. package/cypress/pages/itemPreviewSettingsPage.js +1 -0
  70. package/cypress/pages/matchingPage.js +1 -1
  71. package/cypress/pages/multipleSelectionPage.js +173 -1
  72. package/cypress/pages/singleSelectionPage.js +171 -1
  73. package/package.json +2 -2
@@ -324,7 +324,7 @@ describe('Create item page - Matching: Partial different weights', () => {
324
324
  matchingPage.steps.allotTotalPenaltyPoints(4);
325
325
  matchingPage.steps.switchToPreviewTab();
326
326
  matchingPage.steps.clickAndDropOptionInDropzonePreviewTab([{ optionText: 'Eagle', dropzoneIndex: 0 }]);
327
- matchingPage.steps.verifyPreviewScore(-3.99, 20);
327
+ matchingPage.steps.verifyPreviewScore(-2.01, 20);
328
328
  });
329
329
 
330
330
  it('When the user attempts the question correctly along with an incorrect option, then penalty points should get deducted from the awarded points', () => {
@@ -393,7 +393,7 @@ describe('Create item page - Matching: Partial different weights', () => {
393
393
  matchingPage.steps.checkAutomaticallySetPenaltyPointsCheckbox();
394
394
  matchingPage.steps.switchToPreviewTab();
395
395
  matchingPage.steps.clickAndDropOptionInDropzonePreviewTab([{ optionText: 'Eagle', dropzoneIndex: 0 }]);
396
- matchingPage.steps.verifyPreviewScore(-19.98, 20);
396
+ matchingPage.steps.verifyPreviewScore(-9.99, 20);
397
397
  });
398
398
 
399
399
  it('When the user attempts the question correctly along with an incorrect option, then penalty points should get deducted from the awarded points', () => {
@@ -39,7 +39,7 @@ describe('Create Item page: Tool settings', () => {
39
39
  rulerPage.steps.expandRotationDropdown();
40
40
  rulerPage.steps.selectOptionFromRotationDropdown('Allow rotation and display angle');
41
41
  rulerPage.steps.enterInputToOpacityInputField(60);
42
- dialogBoxBase.steps.clickOnAcceptButtonInDialogBox();
42
+ rulerPage.steps.clickOnOkButton();
43
43
  utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
44
44
  toolSettingsComponent.steps.verifyToolSelectedState(0);
45
45
  });
@@ -0,0 +1,248 @@
1
+ import { multipleSelectionPage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+
5
+ const enumerationOptions = {
6
+ 'Numerical': ['1', '2'],
7
+ 'Uppercase alphabet': ['A', 'B'],
8
+ 'Lowercase alphabet': ['a', 'b'],
9
+ 'uppercase roman numeral': ['I', 'II'],
10
+ 'lowercase roman numeral': ['i', 'ii'],
11
+ };
12
+ const optionStyle = ['block with check box', 'Block without check box']
13
+ const optionAlignment = ['Left', 'Center', 'Right'];
14
+
15
+ describe('Multiple selection - Additional settings', () => {
16
+ before(() => {
17
+ cy.loginAs('admin');
18
+ });
19
+
20
+ describe('Additional settings accordion: Option style edit tab contents and functionality', () => {
21
+ abortEarlySetup();
22
+ before(() => {
23
+ multipleSelectionPage.steps.navigateToCreateQuestion('multiple selection');
24
+ cy.barsPreLoaderWait();
25
+ multipleSelectionPage.steps.expandAdditionalSettings();
26
+ });
27
+
28
+ it('\'Option style and layout\' label should be displayed', () => {
29
+ utilities.verifyInnerText(multipleSelectionPage.optionStyleAndLayoutLabel(), 'Option style and layout');
30
+ });
31
+
32
+ it('\'Option design\' label and dropdown should be displayed and by default \'Block with check box\' should be selected', () => {
33
+ utilities.verifyInnerText(multipleSelectionPage.optionDesignDropdownLabel(), 'Option design');
34
+ utilities.verifyInnerText(multipleSelectionPage.optionDesignDropdown(), 'Block with check box');
35
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionDesignDropdown(), 'visible');
36
+ });
37
+
38
+ it('When user expands the dropdown then \'Block with check box\' and \'Block without check box\' options should be displayed', () => {
39
+ multipleSelectionPage.steps.expandOptionDesignDropdown();
40
+ optionStyle.forEach((option) => {
41
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionDesignDropdownListOptions(option), 'exist');
42
+ });
43
+ multipleSelectionPage.steps.verifyOptionDesignOptionSelected('block with check box');
44
+ });
45
+
46
+ it('When user selects \'Block without check box\' then \'Option numeration\' dropdown and label should be displayed and by default \'Numerical\' should be displayed', () => {
47
+ multipleSelectionPage.steps.selectOptionDesignDropdownOption('Block without check box');
48
+ utilities.verifyInnerText(multipleSelectionPage.optionNumerationLabel(), 'Option numeration');
49
+ utilities.verifyInnerText(multipleSelectionPage.optionNumerationDropdown(), 'Numerical');
50
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionNumerationDropdown(), 'visible');
51
+ });
52
+
53
+ it(`When user expands \'Option numeration\' then ${enumerationOptions} options should be displayed`, () => {
54
+ multipleSelectionPage.steps.expandOptionNumerationDropdown();
55
+ Object.keys(enumerationOptions).forEach((option) => {
56
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionNumerationDropdownListOptions(option), 'exist');
57
+ });
58
+ multipleSelectionPage.steps.verifyOptionNumerationDropdownOptionSelected('Numerical');
59
+ multipleSelectionPage.steps.selectOptionNumerationDropdownOption('Numerical');
60
+ });
61
+
62
+ it('When user selects \'Block with check box\' then \'Option numeration\' label and dropdown should not be displayed', () => {
63
+ multipleSelectionPage.steps.expandOptionDesignDropdown();
64
+ multipleSelectionPage.steps.selectOptionDesignDropdownOption('block with check box');
65
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionNumerationLabel(), 'notExist');
66
+ utilities.verifyElementVisibilityState(multipleSelectionPage.optionNumerationDropdown(), 'notExist');
67
+ });
68
+
69
+ it('When user selects \'Block with check box\' then the options in the specify correct answer section should be displayed with checkboxes', () => {
70
+ multipleSelectionPage.steps.verifyBlockWithCheckboxOptionExistSpecifyCorrectAnswer();
71
+ });
72
+
73
+ it('When user selects \'Block without check box\' then options in the specify correct answer section should not be displayed with numeration', () => {
74
+ multipleSelectionPage.steps.expandOptionDesignDropdown();
75
+ multipleSelectionPage.steps.selectOptionDesignDropdownOption('Block without check box');
76
+ multipleSelectionPage.steps.verifyBlockWithoutCheckboxOptionSpecifyCorrectAnswer();
77
+ });
78
+
79
+ it('When user selects \'None\' option from the option numeration dropdown then options in the specify correct answer section should not be displayed with numeration', () => {
80
+ multipleSelectionPage.steps.expandOptionNumerationDropdown();
81
+ multipleSelectionPage.steps.selectOptionNumerationDropdownOption('None');
82
+ multipleSelectionPage.steps.verifyNoneNumerationSpecifyCorrectAnswer();
83
+ });
84
+
85
+ Object.keys(enumerationOptions).forEach(option => {
86
+ it(`When user selects ${option} from the option numeration dropdown then the options in the specify correct answer section should be displayed with ${option}`, () => {
87
+ multipleSelectionPage.steps.expandOptionNumerationDropdown();
88
+ multipleSelectionPage.steps.selectOptionNumerationDropdownOption(option);
89
+ multipleSelectionPage.steps.verifyOptionNumeration(enumerationOptions[option]);
90
+ });
91
+ });
92
+ });
93
+
94
+ describe('Additional settings accordion: Option style preview tab functionality', () => {
95
+ abortEarlySetup();
96
+ before(() => {
97
+ multipleSelectionPage.steps.navigateToCreateQuestion('multiple selection');
98
+ cy.barsPreLoaderWait();
99
+ multipleSelectionPage.steps.expandAdditionalSettings();
100
+ });
101
+
102
+ it('When user has selected \'Block with check box\' then the options in the preview tab should be displayed with checkboxes', () => {
103
+ multipleSelectionPage.steps.switchToPreviewTab();
104
+ multipleSelectionPage.steps.verifyBlockWithCheckboxOptionExistPreviewTab();
105
+ });
106
+
107
+ it('When user selects \'Block without check box\' and then the None option from the option numeration dropdown then options in the preview tab should not be displayed with numeration', () => {
108
+ multipleSelectionPage.steps.switchToEditTab();
109
+ multipleSelectionPage.steps.expandOptionDesignDropdown();
110
+ multipleSelectionPage.steps.selectOptionDesignDropdownOption('Block without check box');
111
+ multipleSelectionPage.steps.switchToPreviewTab();
112
+ multipleSelectionPage.steps.verifyBlockWithCheckboxOptionNotExistPreviewTab();
113
+ });
114
+
115
+ Object.keys(enumerationOptions).forEach(option => {
116
+ it(`When user selects ${option} from the option numeration dropdown then the options in the preview tab should be displayed with ${option}`, () => {
117
+ multipleSelectionPage.steps.switchToEditTab();
118
+ multipleSelectionPage.steps.expandOptionNumerationDropdown();
119
+ multipleSelectionPage.steps.selectOptionNumerationDropdownOption(option);
120
+ multipleSelectionPage.steps.switchToPreviewTab();
121
+ multipleSelectionPage.steps.verifyOptionNumeration(enumerationOptions[option]);
122
+ });
123
+ });
124
+ });
125
+
126
+ describe('Additional settings accordion: Multiple columns contents', () => {
127
+ abortEarlySetup();
128
+ before(() => {
129
+ multipleSelectionPage.steps.navigateToCreateQuestion('multiple selection');
130
+ cy.barsPreLoaderWait();
131
+ multipleSelectionPage.steps.expandAdditionalSettings();
132
+ });
133
+
134
+ multipleSelectionPage.tests.verifyMultipleColumnsFunctionality();
135
+ });
136
+
137
+ describe('Additional settings accordion: Multiple columns edit tab functionality', () => {
138
+ abortEarlySetup();
139
+ before(() => {
140
+ multipleSelectionPage.steps.navigateToCreateQuestion('multiple selection');
141
+ cy.barsPreLoaderWait();
142
+ multipleSelectionPage.steps.expandAdditionalSettings();
143
+ multipleSelectionPage.steps.addMultipleOptionFields(2);
144
+ });
145
+
146
+ it('When \'Multiple columns\' checkbox is unchecked then the options should be displayed in a single column', () => {
147
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(1);
148
+ });
149
+
150
+ it('When user checks the \'Multiple columns\' checkbox then options should be displayed in 2 columns', () => {
151
+ multipleSelectionPage.steps.checkMultipleColumnsCheckbox();
152
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(2);
153
+ });
154
+
155
+ numberOfOptionColumn.forEach((option) => {
156
+ it(`When user selects ${option} from the dropdown then the number of option column dropdown then ${option} column should be displayed`, () => {
157
+ multipleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
158
+ multipleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(option);
159
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(option);
160
+ });
161
+ });
162
+
163
+ it('When row by row option is selected for \'Option direction\' then the options numeration should be row wise', () => {
164
+ cy.log('Pre step: Select number of option column 2')
165
+ multipleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
166
+ multipleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(3);
167
+ multipleSelectionPage.steps.verifyOptionDirectionSpecifyCorrectOption('row');
168
+ });
169
+
170
+ it('When user selects column by column option for \'Option direction\' then the options numeration should be column wise', () => {
171
+ multipleSelectionPage.steps.selectOptionDirectionOption('column by column');
172
+ multipleSelectionPage.steps.verifyOptionDirectionSpecifyCorrectOption('column');
173
+ cy.log('Post step: Select row by row option')
174
+ multipleSelectionPage.steps.selectOptionDirectionOption('row by row');
175
+ multipleSelectionPage.steps.deleteOption(0);
176
+ multipleSelectionPage.steps.deleteOption(1);
177
+ });
178
+
179
+ optionAlignment.forEach((option) => {
180
+ it(`When user selects ${option} from the option alignment button then the options should be aligned ${option}`, () => {
181
+ multipleSelectionPage.steps.selectOptionAlignmentOption(option.toLowerCase());
182
+ multipleSelectionPage.steps.verifyOptionAlignmentSpecifyCorrectAnswer(option)
183
+ });
184
+ });
185
+ });
186
+
187
+ describe('Additional settings accordion: Multiple columns preview tab functionality', () => {
188
+ abortEarlySetup();
189
+ before(() => {
190
+ multipleSelectionPage.steps.navigateToCreateQuestion('multiple selection');
191
+ cy.barsPreLoaderWait();
192
+ multipleSelectionPage.steps.expandAdditionalSettings();
193
+ multipleSelectionPage.steps.addMultipleOptionFields(2);
194
+ multipleSelectionPage.steps.switchToPreviewTab();
195
+ });
196
+
197
+ it('When \'Multiple columns\' checkbox is unchecked then the options should be displayed in a single column', () => {
198
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(1);
199
+ });
200
+
201
+ it('When user checks the \'Multiple columns\' checkbox then options should be displayed in 2 columns', () => {
202
+ multipleSelectionPage.steps.switchToEditTab();
203
+ multipleSelectionPage.steps.checkMultipleColumnsCheckbox();
204
+ multipleSelectionPage.steps.switchToPreviewTab();
205
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(2);
206
+ });
207
+
208
+ numberOfOptionColumn.forEach((option) => {
209
+ it(`When user selects ${option} from the dropdown then the number of option column dropdown then ${option} column should be displayed`, () => {
210
+ multipleSelectionPage.steps.switchToEditTab();
211
+ multipleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
212
+ multipleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(option);
213
+ multipleSelectionPage.steps.switchToPreviewTab();
214
+ multipleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(option);
215
+ });
216
+ });
217
+
218
+ it('When row by row option is selected for \'Option direction\' then the options numeration should be row wise', () => {
219
+ cy.log('Pre step: Select number of option column 2')
220
+ multipleSelectionPage.steps.switchToEditTab();
221
+ multipleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
222
+ multipleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(3);
223
+ multipleSelectionPage.steps.switchToPreviewTab();
224
+ multipleSelectionPage.steps.verifyOptionDirectionPreviewTab('row');
225
+ });
226
+
227
+ it('When user selects column by column option for \'Option direction\' then the options numeration should be column wise', () => {
228
+ multipleSelectionPage.steps.switchToEditTab();
229
+ multipleSelectionPage.steps.selectOptionDirectionOption('column by column');
230
+ multipleSelectionPage.steps.switchToPreviewTab();
231
+ multipleSelectionPage.steps.verifyOptionDirectionPreviewTab('column');
232
+ multipleSelectionPage.steps.switchToEditTab();
233
+ cy.log('Post step: Select row by row option')
234
+ multipleSelectionPage.steps.selectOptionDirectionOption('row by row');
235
+ multipleSelectionPage.steps.deleteOption(0);
236
+ multipleSelectionPage.steps.deleteOption(1);
237
+ });
238
+
239
+ optionAlignment.forEach((option) => {
240
+ it(`When user selects ${option} from the option alignment button then the options should be aligned ${option}`, () => {
241
+ multipleSelectionPage.steps.selectOptionAlignmentOption(option.toLowerCase());
242
+ multipleSelectionPage.steps.switchToPreviewTab();
243
+ multipleSelectionPage.steps.verifyOptionAlignmentPreviewTab(option);
244
+ multipleSelectionPage.steps.switchToEditTab();
245
+ });
246
+ });
247
+ });
248
+ });
@@ -206,7 +206,7 @@ describe('Create Item page - Reading ruler: Edit Tab', () => {
206
206
  it('\'Cancel\' and \'Ok\' buttons should be displayed', () => {
207
207
  utilities.verifyInnerText(readingRulerPage.cancelButton(), 'Cancel');
208
208
  utilities.verifyElementVisibilityState(readingRulerPage.cancelButton(), 'visible');
209
- utilities.verifyInnerText(readingRulerPage.okButton(), 'OK');
209
+ utilities.verifyInnerText(readingRulerPage.okButton(), 'Ok');
210
210
  utilities.verifyElementVisibilityState(readingRulerPage.okButton(), 'visible');
211
211
  });
212
212
 
@@ -121,6 +121,7 @@ describe('Create question page - Short text response: Question Instructions, Set
121
121
  shortTextResponsePage.steps.verifyErrorMessageIsNotDisplayed();
122
122
  });
123
123
 
124
+ //Failed due to https://redmine.zeuslearning.com/issues/573591
124
125
  it('\'Always show maximum limit\' and \'Always show minimum limit\' labels and checkbox should be displayed and by default \'Always show maximum limit\' should be checked', () => {
125
126
  utilities.verifyInnerText(shortTextResponsePage.alwaysShowMaxLimitLabel(), 'Always show maximum limit');
126
127
  utilities.verifyElementVisibilityState(shortTextResponsePage.alwaysShowMaxLimitLabel(), 'visible');
@@ -342,6 +343,7 @@ describe('Create question page - Short text response: Question Instructions, Set
342
343
  shortTextResponsePage.steps.switchToPreviewTab();
343
344
  });
344
345
 
346
+ //Failed due to https://redmine.zeuslearning.com/issues/573591
345
347
  it('When user switched to the preview tab then \'Maximum 50 characters\' should be displayed in the preview tab', () => {
346
348
  utilities.verifyElementVisibilityState(shortTextResponsePage.responseFieldCountPreviewTab(), 'visible');
347
349
  shortTextResponsePage.steps.verifyCharacterLimitPreviewTab(50);
@@ -420,6 +422,7 @@ describe('Create question page - Short text response: Question Instructions, Set
420
422
  cy.barsPreLoaderWait();
421
423
  });
422
424
 
425
+ //Failed due to https://redmine.zeuslearning.com/issues/573591
423
426
  it('When the user selects \'Word\' radio button then \'Maximum 20 words\' should be displayed in the preview tab', () => {
424
427
  shortTextResponsePage.steps.selectWordRadioButton();
425
428
  shortTextResponsePage.steps.switchToPreviewTab();
@@ -0,0 +1,249 @@
1
+ import { singleSelectionPage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+
5
+ const enumerationOptions = {
6
+ 'Numerical': ['1', '2'],
7
+ 'Uppercase alphabet': ['A', 'B'],
8
+ 'Lowercase alphabet': ['a', 'b'],
9
+ 'uppercase roman numeral': ['I', 'II'],
10
+ 'lowercase roman numeral': ['i', 'ii'],
11
+ };
12
+ const optionStyle = ['block with radio button', 'Block without radio button']
13
+ const numberOfOptionColumn = ['2', '3', '4', '5', '6'];
14
+ const optionAlignment = ['Left', 'Center', 'Right'];
15
+
16
+ describe('Multiple selection - Additional settings', () => {
17
+ before(() => {
18
+ cy.loginAs('admin');
19
+ });
20
+
21
+ describe('Additional settings accordion: Option style edit tab contents and functionality', () => {
22
+ abortEarlySetup();
23
+ before(() => {
24
+ singleSelectionPage.steps.navigateToCreateQuestion('single selection');
25
+ cy.barsPreLoaderWait();
26
+ singleSelectionPage.steps.expandAdditionalSettings();
27
+ });
28
+
29
+ it('\'Option style and layout\' label should be displayed', () => {
30
+ utilities.verifyInnerText(singleSelectionPage.optionStyleAndLayoutLabel(), 'Option style and layout');
31
+ });
32
+
33
+ it('\'Option design\' label and dropdown should be displayed and by default \'Block with radio button\' should be selected', () => {
34
+ utilities.verifyInnerText(singleSelectionPage.optionDesignDropdownLabel(), 'Option design');
35
+ utilities.verifyInnerText(singleSelectionPage.optionDesignDropdown(), 'Block with radio button');
36
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionDesignDropdown(), 'visible');
37
+ });
38
+
39
+ it('When user expands the dropdown then \'Block with radio button\' and \'Block without radio button\' options should be displayed', () => {
40
+ singleSelectionPage.steps.expandOptionDesignDropdown();
41
+ optionStyle.forEach((option) => {
42
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionDesignDropdownListOptions(option), 'exist');
43
+ });
44
+ singleSelectionPage.steps.verifyOptionDesignOptionSelected('block with radio button');
45
+ });
46
+
47
+ it('When user selects \'Block without radio button\' then \'Option numeration\' dropdown and label should be displayed and by default \'Numerical\' should be displayed', () => {
48
+ singleSelectionPage.steps.selectOptionDesignDropdownOption('Block without radio button');
49
+ utilities.verifyInnerText(singleSelectionPage.optionNumerationLabel(), 'Option numeration');
50
+ utilities.verifyInnerText(singleSelectionPage.optionNumerationDropdown(), 'Numerical');
51
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionNumerationDropdown(), 'visible');
52
+ });
53
+
54
+ it(`When user expands \'Option numeration\' then ${enumerationOptions} options should be displayed`, () => {
55
+ singleSelectionPage.steps.expandOptionNumerationDropdown();
56
+ Object.keys(enumerationOptions).forEach((option) => {
57
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionNumerationDropdownListOptions(option), 'exist');
58
+ });
59
+ singleSelectionPage.steps.verifyOptionNumerationDropdownOptionSelected('Numerical');
60
+ singleSelectionPage.steps.selectOptionNumerationDropdownOption('Numerical');
61
+ });
62
+
63
+ it('When user selects \'Block with radio button\' then \'Option numeration\' label and dropdown should not be displayed', () => {
64
+ singleSelectionPage.steps.expandOptionDesignDropdown();
65
+ singleSelectionPage.steps.selectOptionDesignDropdownOption('block with radio button');
66
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionNumerationLabel(), 'notExist');
67
+ utilities.verifyElementVisibilityState(singleSelectionPage.optionNumerationDropdown(), 'notExist');
68
+ });
69
+
70
+ it('When user selects \'Block with radio button\' then the options in the specify correct answer section should be displayed with checkboxes', () => {
71
+ singleSelectionPage.steps.verifyBlockWithCheckboxOptionExistSpecifyCorrectAnswer();
72
+ });
73
+
74
+ it('When user selects \'Block without radio button\' then options in the specify correct answer section should not be displayed with numeration', () => {
75
+ singleSelectionPage.steps.expandOptionDesignDropdown();
76
+ singleSelectionPage.steps.selectOptionDesignDropdownOption('Block without radio button');
77
+ singleSelectionPage.steps.verifyBlockWithoutCheckboxOptionSpecifyCorrectAnswer();
78
+ });
79
+
80
+ it('When user selects \'None\' option from the option numeration dropdown then options in the specify correct answer section should not be displayed with numeration', () => {
81
+ singleSelectionPage.steps.expandOptionNumerationDropdown();
82
+ singleSelectionPage.steps.selectOptionNumerationDropdownOption('None');
83
+ singleSelectionPage.steps.verifyNoneNumerationSpecifyCorrectAnswer();
84
+ });
85
+
86
+ Object.keys(enumerationOptions).forEach(option => {
87
+ it(`When user selects ${option} from the option numeration dropdown then the options in the specify correct answer section should be displayed with ${option}`, () => {
88
+ singleSelectionPage.steps.expandOptionNumerationDropdown();
89
+ singleSelectionPage.steps.selectOptionNumerationDropdownOption(option);
90
+ singleSelectionPage.steps.verifyOptionNumeration(enumerationOptions[option]);
91
+ });
92
+ });
93
+ });
94
+
95
+ describe('Additional settings accordion: Option style preview tab functionality', () => {
96
+ abortEarlySetup();
97
+ before(() => {
98
+ singleSelectionPage.steps.navigateToCreateQuestion('single selection');
99
+ cy.barsPreLoaderWait();
100
+ singleSelectionPage.steps.expandAdditionalSettings();
101
+ });
102
+
103
+ it('When user has selected \'Block with radio button\' then the options in the preview tab should be displayed with checkboxes', () => {
104
+ singleSelectionPage.steps.switchToPreviewTab();
105
+ singleSelectionPage.steps.verifyBlockWithCheckboxOptionExistPreviewTab();
106
+ });
107
+
108
+ it('When user selects \'Block without radio button\' and then the None option from the option numeration dropdown then options in the preview tab should not be displayed with numeration', () => {
109
+ singleSelectionPage.steps.switchToEditTab();
110
+ singleSelectionPage.steps.expandOptionDesignDropdown();
111
+ singleSelectionPage.steps.selectOptionDesignDropdownOption('Block without radio button');
112
+ singleSelectionPage.steps.switchToPreviewTab();
113
+ singleSelectionPage.steps.verifyBlockWithCheckboxOptionNotExistPreviewTab();
114
+ });
115
+
116
+ Object.keys(enumerationOptions).forEach(option => {
117
+ it(`When user selects ${option} from the option numeration dropdown then the options in the preview tab should be displayed with ${option}`, () => {
118
+ singleSelectionPage.steps.switchToEditTab();
119
+ singleSelectionPage.steps.expandOptionNumerationDropdown();
120
+ singleSelectionPage.steps.selectOptionNumerationDropdownOption(option);
121
+ singleSelectionPage.steps.switchToPreviewTab();
122
+ singleSelectionPage.steps.verifyOptionNumeration(enumerationOptions[option]);
123
+ });
124
+ });
125
+ });
126
+
127
+ describe('Additional settings accordion: Multiple columns contents', () => {
128
+ abortEarlySetup();
129
+ before(() => {
130
+ singleSelectionPage.steps.navigateToCreateQuestion('single selection');
131
+ cy.barsPreLoaderWait();
132
+ singleSelectionPage.steps.expandAdditionalSettings();
133
+ });
134
+
135
+ singleSelectionPage.tests.verifyMultipleColumnsFunctionality();
136
+ });
137
+
138
+ describe('Additional settings accordion: Multiple columns edit tab functionality', () => {
139
+ abortEarlySetup();
140
+ before(() => {
141
+ singleSelectionPage.steps.navigateToCreateQuestion('single selection');
142
+ cy.barsPreLoaderWait();
143
+ singleSelectionPage.steps.expandAdditionalSettings();
144
+ singleSelectionPage.steps.addMultipleOptionFields(2);
145
+ });
146
+
147
+ it('When \'Multiple columns\' checkbox is unchecked then the options should be displayed in a single column', () => {
148
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(1);
149
+ });
150
+
151
+ it('When user checks the \'Multiple columns\' checkbox then options should be displayed in 2 columns', () => {
152
+ singleSelectionPage.steps.checkMultipleColumnsCheckbox();
153
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(2);
154
+ });
155
+
156
+ numberOfOptionColumn.forEach((option) => {
157
+ it(`When user selects ${option} from the dropdown then the number of option column dropdown then ${option} column should be displayed`, () => {
158
+ singleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
159
+ singleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(option);
160
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnSpecifyCorrectAnswerSection(option);
161
+ });
162
+ });
163
+
164
+ it('When row by row option is selected for \'Option direction\' then the options numeration should be row wise', () => {
165
+ cy.log('Pre step: Select number of option column 2')
166
+ singleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
167
+ singleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(3);
168
+ singleSelectionPage.steps.verifyOptionDirectionSpecifyCorrectOption('row');
169
+ });
170
+
171
+ it('When user selects column by column option for \'Option direction\' then the options numeration should be column wise', () => {
172
+ singleSelectionPage.steps.selectOptionDirectionOption('column by column');
173
+ singleSelectionPage.steps.verifyOptionDirectionSpecifyCorrectOption('column');
174
+ cy.log('Post step: Select row by row option')
175
+ singleSelectionPage.steps.selectOptionDirectionOption('row by row');
176
+ singleSelectionPage.steps.deleteOption(0);
177
+ singleSelectionPage.steps.deleteOption(1);
178
+ });
179
+
180
+ optionAlignment.forEach((option) => {
181
+ it(`When user selects ${option} from the option alignment button then the options should be aligned ${option}`, () => {
182
+ singleSelectionPage.steps.selectOptionAlignmentOption(option.toLowerCase());
183
+ singleSelectionPage.steps.verifyOptionAlignmentSpecifyCorrectAnswer(option)
184
+ });
185
+ });
186
+ });
187
+
188
+ describe('Additional settings accordion: Multiple columns preview tab functionality', () => {
189
+ abortEarlySetup();
190
+ before(() => {
191
+ singleSelectionPage.steps.navigateToCreateQuestion('single selection');
192
+ cy.barsPreLoaderWait();
193
+ singleSelectionPage.steps.expandAdditionalSettings();
194
+ singleSelectionPage.steps.addMultipleOptionFields(2);
195
+ singleSelectionPage.steps.switchToPreviewTab();
196
+ });
197
+
198
+ it('When \'Multiple columns\' checkbox is unchecked then the options should be displayed in a single column', () => {
199
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(1);
200
+ });
201
+
202
+ it('When user checks the \'Multiple columns\' checkbox then options should be displayed in 2 columns', () => {
203
+ singleSelectionPage.steps.switchToEditTab();
204
+ singleSelectionPage.steps.checkMultipleColumnsCheckbox();
205
+ singleSelectionPage.steps.switchToPreviewTab();
206
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(2);
207
+ });
208
+
209
+ numberOfOptionColumn.forEach((option) => {
210
+ it(`When user selects ${option} from the dropdown then the number of option column dropdown then ${option} column should be displayed`, () => {
211
+ singleSelectionPage.steps.switchToEditTab();
212
+ singleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
213
+ singleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(option);
214
+ singleSelectionPage.steps.switchToPreviewTab();
215
+ singleSelectionPage.steps.verifyNumberOfOptionsColumnPreviewTab(option);
216
+ });
217
+ });
218
+
219
+ it('When row by row option is selected for \'Option direction\' then the options numeration should be row wise', () => {
220
+ cy.log('Pre step: Select number of option column 2')
221
+ singleSelectionPage.steps.switchToEditTab();
222
+ singleSelectionPage.steps.expandNumberOfOptionsColumnDropdown();
223
+ singleSelectionPage.steps.selectNumberOfOptionColumnDropdownOption(3);
224
+ singleSelectionPage.steps.switchToPreviewTab();
225
+ singleSelectionPage.steps.verifyOptionDirectionPreviewTab('row');
226
+ });
227
+
228
+ it('When user selects column by column option for \'Option direction\' then the options numeration should be column wise', () => {
229
+ singleSelectionPage.steps.switchToEditTab();
230
+ singleSelectionPage.steps.selectOptionDirectionOption('column by column');
231
+ singleSelectionPage.steps.switchToPreviewTab();
232
+ singleSelectionPage.steps.verifyOptionDirectionPreviewTab('column');
233
+ singleSelectionPage.steps.switchToEditTab();
234
+ cy.log('Post step: Select row by row option')
235
+ singleSelectionPage.steps.selectOptionDirectionOption('row by row');
236
+ singleSelectionPage.steps.deleteOption(0);
237
+ singleSelectionPage.steps.deleteOption(1);
238
+ });
239
+
240
+ optionAlignment.forEach((option) => {
241
+ it(`When user selects ${option} from the option alignment button then the options should be aligned ${option}`, () => {
242
+ singleSelectionPage.steps.selectOptionAlignmentOption(option.toLowerCase());
243
+ singleSelectionPage.steps.switchToPreviewTab();
244
+ singleSelectionPage.steps.verifyOptionAlignmentPreviewTab(option);
245
+ singleSelectionPage.steps.switchToEditTab();
246
+ });
247
+ });
248
+ });
249
+ });
@@ -146,7 +146,7 @@ describe('Create item page - Single selection grid: Question instructions, Speci
146
146
  });
147
147
 
148
148
  it('When user has navigated to the rightmost column of the table, then the right pagination button should be disabled', () => {
149
- for (let index = 0; index < 4; index++) {
149
+ for (let index = 0; index < 3; index++) {
150
150
  singleSelectionGridPage.steps.clickOnRightPaginationButtonEditCellPropertyTable();
151
151
  }
152
152
  utilities.verifyElementDisabled(singleSelectionGridPage.editCellPropertyTableRightPaginationButton());
@@ -729,14 +729,14 @@ describe('Create item page - Text entry math: Equivalent structure evaluation me
729
729
  textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
730
730
  });
731
731
 
732
- it('When user has selected \'Fraction or decimal\' from the syntax dropdown and user enters input using percentage in preview tab response fields they should be treated as incorrect', () => {
732
+ it('When user has selected \'Fraction or decimal\' from the syntax dropdown and user enters input using percentage in preview tab response fields they should be treated as correct', () => {
733
733
  textEntryMathPage.steps.resetQuestionPreview();
734
734
  textEntryMathPage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
735
735
  equationEditorFlyout.steps.enterTextInPreviewInputField('9000%');
736
736
  equationEditorFlyout.steps.clickOnOkButton();
737
737
  textEntryMathPage.steps.switchToGradingView();
738
- textEntryMathPage.steps.verifyIncorrectResponseIcon(0);
739
- textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
738
+ textEntryMathPage.steps.verifyCorrectResponseIcon(0);
739
+ textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('correct');
740
740
  });
741
741
 
742
742
  it('When user has selected \'Fraction or decimal\' from the syntax dropdown and user enters input using factors in preview tab response fields they should be treated as incorrect', () => {
@@ -1013,15 +1013,15 @@ describe('Create item page - Text entry math: Equivalent structure evaluation me
1013
1013
  textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('correct');
1014
1014
  });
1015
1015
 
1016
- it('When user has selected \'Expression\' from the syntax dropdown and user enters input using comparison in preview tab response fields they should be treated as incorrect', () => {
1016
+ it('When user has selected \'Expression\' from the syntax dropdown and user enters input using comparison in preview tab response fields they should be treated as correct', () => {
1017
1017
  textEntryMathPage.steps.resetQuestionPreview();
1018
1018
  textEntryMathPage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
1019
1019
  equationEditorFlyout.steps.enterTextInPreviewInputField('2*3.14');
1020
1020
  equationEditorFlyout.steps.enterEquation([{ categoryName: 'intermediate', symbolName: ['lessThan'] }, { categoryName: 'numPad', symbolName: ['two'] }, { categoryName: 'greek', symbolName: ['pi'] }]);
1021
1021
  equationEditorFlyout.steps.clickOnOkButton();
1022
1022
  textEntryMathPage.steps.switchToGradingView();
1023
- textEntryMathPage.steps.verifyIncorrectResponseIcon(0);
1024
- textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
1023
+ textEntryMathPage.steps.verifyCorrectResponseIcon(0);
1024
+ textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('correct');
1025
1025
  });
1026
1026
 
1027
1027
  it('When user has selected \'Expression\' from the syntax dropdown and user enters input addition of matrices in preview tab response fields they should be treated as correct', () => {
@@ -190,7 +190,6 @@ describe('Create item page - Text entry math: Match value evaluation method', ()
190
190
  textEntryMathPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
191
191
  });
192
192
 
193
- //Failing due to https://weldnorthed.atlassian.net/browse/IEI-3006
194
193
  it('When the user enters a equation with parenthesis equation with epsilon in \'Specify correct answer\' response field and then the user enters the exact same equation then it should be treated as correct', () => {
195
194
  textEntryMathPage.steps.switchToEditTab();
196
195
  textEntryMathPage.steps.expandResponseAccordionSpecifyCorrectAnswer(0);
@@ -342,7 +342,7 @@ describe('Create item page - Text selection: Partial different weights', () => {
342
342
  textSelectionPage.steps.allotTotalPenaltyPoints(4);
343
343
  textSelectionPage.steps.switchToPreviewTab();
344
344
  textSelectionPage.steps.selectOptionInPreviewTab(paragraphTextArray[3]);
345
- textSelectionPage.steps.verifyPreviewScore(-4, 20);
345
+ textSelectionPage.steps.verifyPreviewScore(-3, 20);
346
346
  });
347
347
 
348
348
  it('When the user attempts the question correctly along with an incorrect option, then penalty points should get deducted from the awarded points', () => {