itemengine-cypress-automation 1.0.165-migrationScripts-e27d6f2.0 → 1.0.166

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/cypress/e2e/ILC/BrainingCampManipulative/additionalSettings.js +83 -0
  2. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +200 -0
  3. package/cypress/e2e/ILC/BrainingCampManipulative/editTabScoringSection.js +56 -0
  4. package/cypress/e2e/ILC/BrainingCampManipulative/gradingViewAndCorrectAnswerViewContents.smoke.js +95 -0
  5. package/cypress/e2e/ILC/BrainingCampManipulative/headerSection.js +71 -0
  6. package/cypress/e2e/ILC/BrainingCampManipulative/previewTabContent.smoke.js +72 -0
  7. package/cypress/e2e/ILC/BrainingCampManipulative/toolSettings.js +71 -0
  8. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +2 -2
  9. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +22 -11
  10. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +432 -0
  11. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +134 -0
  12. package/cypress/e2e/ILC/FeedbackScaleNew/feedbackScaleStylePreviewTab.js +161 -0
  13. package/cypress/e2e/ILC/FeedbackScaleNew/numbersFeedbackScaleStyle.js +308 -0
  14. package/cypress/e2e/ILC/FeedbackScaleNew/previewContentsForAllViews.smoke.js +216 -0
  15. package/cypress/e2e/ILC/FeedbackScaleNew/starsHeartsFeedbackScaleStyle.js +336 -0
  16. package/cypress/e2e/ILC/FeedbackScaleNew/textFeedbackScaleStyle.js +570 -0
  17. package/cypress/e2e/ILC/FeedbackScaleNew/thumbsFeedbackScaleStyle.js +214 -0
  18. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettings.js +356 -0
  19. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettingsResponseAccordion.js +299 -0
  20. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +18 -7
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +11 -6
  22. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +355 -0
  23. package/cypress/e2e/ILC/Graphing/previewContentsForAllViews.smoke.js +0 -1
  24. package/cypress/e2e/ILC/Graphing/toolsControlsAndBackgroundSection.js +2 -36
  25. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +22 -34
  26. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +8 -24
  27. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +5 -25
  28. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +68 -114
  29. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +67 -111
  30. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +71 -123
  31. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +41 -63
  32. package/cypress/e2e/ILC/GridFill/scoring/manuallyAndNonScored.js +21 -25
  33. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsBasic.js +50 -85
  34. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +68 -115
  35. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +54 -98
  36. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +72 -120
  37. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +3 -3
  38. package/cypress/e2e/ILC/Matching/maximumCapacityPerDropzoneSection.js +309 -0
  39. package/cypress/e2e/ILC/Matching/specifyCorrectAnswerSection.js +1 -1
  40. package/cypress/e2e/ILC/Matching/toolSettings.js +72 -0
  41. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +1033 -0
  42. package/cypress/e2e/ILC/MultipleSelectionGridNew/test.js +28 -0
  43. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +236 -0
  44. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +239 -0
  45. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +278 -0
  46. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +178 -0
  47. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +407 -0
  48. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +273 -0
  49. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +278 -0
  50. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +228 -0
  51. package/cypress/e2e/ILC/NumberLine/additionalSettings.js +120 -0
  52. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +659 -0
  53. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +149 -0
  54. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +151 -0
  55. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +171 -0
  56. package/cypress/e2e/ILC/NumberLine/headerSection.js +76 -0
  57. package/cypress/e2e/ILC/NumberLine/minimumScoringPenaltyPointsAndRoundingDropdown.js +54 -0
  58. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +200 -0
  59. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +67 -0
  60. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +135 -0
  61. package/cypress/e2e/ILC/NumberLine/toolSettings.js +73 -0
  62. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +372 -0
  63. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +1014 -0
  64. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +235 -0
  65. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +235 -0
  66. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +235 -0
  67. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsBasic.js +457 -0
  68. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithAlternativePointsGreaterThanCorrectPoints.js +342 -0
  69. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +342 -0
  70. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +342 -0
  71. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsBasic.js +155 -0
  72. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +314 -0
  73. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +275 -0
  74. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +314 -0
  75. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +290 -0
  76. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +142 -0
  77. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.js +137 -0
  78. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +4 -4
  79. package/cypress/fixtures/theme/ilc.json +14 -26
  80. package/cypress/pages/brainingCampManipulativePage.js +122 -0
  81. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +1 -1
  82. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -0
  83. package/cypress/pages/components/autoScoredStudentViewSettings.js +1 -1
  84. package/cypress/pages/components/colorPopupComponent.js +2 -2
  85. package/cypress/pages/components/defaultToolDropdown.js +77 -0
  86. package/cypress/pages/components/gridQuestionCommonComponent.js +629 -2
  87. package/cypress/pages/components/index.js +3 -0
  88. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  89. package/cypress/pages/components/measuringToolComponent.js +2 -2
  90. package/cypress/pages/components/resetPopupComponent.js +74 -0
  91. package/cypress/pages/components/scoringSectionBaseEditTab.js +1 -1
  92. package/cypress/pages/components/setPointsPopupBase.js +6 -4
  93. package/cypress/pages/components/specifyRowsAndColumnsComponent.js +60 -3
  94. package/cypress/pages/components/toolSettingsComponent.js +80 -12
  95. package/cypress/pages/components/toolsAndControlsComponent.js +69 -0
  96. package/cypress/pages/dragAndDropIntoCategoriesPage.js +0 -8
  97. package/cypress/pages/feedbackScalePage copy.js +716 -0
  98. package/cypress/pages/feedbackScalePage.js +591 -449
  99. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +3 -1
  100. package/cypress/pages/graphingPage.js +9 -145
  101. package/cypress/pages/gridFillPage.js +135 -120
  102. package/cypress/pages/highlightPage.js +0 -394
  103. package/cypress/pages/index.js +5 -2
  104. package/cypress/pages/matchingPage.js +78 -20
  105. package/cypress/pages/multipleSelectionGridPage.js +88 -1
  106. package/cypress/pages/numberLinePage.js +723 -0
  107. package/cypress/pages/singleSelectionGridPage.js +86 -0
  108. package/cypress/pages/textSelectionPage.js +582 -0
  109. package/package.json +2 -2
@@ -0,0 +1,372 @@
1
+ import { dialogBoxBase, numberLinePage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+ const unselectedToolOption = ['Left/down ray', 'Right/up ray', 'Left/down ray w/ hollow pt', 'Right/up ray w/ hollow pt'];
5
+ const selectedToolOption = ['Point', 'Segment', 'Segment left/down hollow pt', 'Segment right/up hollow pt', 'Segment both hollow pts'];
6
+ const controlOptions = ['Undo', 'Redo', 'Reset'];
7
+ const toolOptions = [...selectedToolOption, ...unselectedToolOption];
8
+ const range = 20;
9
+ const css = Cypress.env('css');
10
+
11
+ describe('Number line: Tools and controls - Edit tab and preview tab tool options', () => {
12
+ before(() => {
13
+ cy.loginAs('admin');
14
+ });
15
+
16
+ describe('Tools and controls - Edit tab content and functionality', () => {
17
+ const unselectedToolOption = ['Left/down ray', 'Right/up ray', 'Left/down ray w/hollow pt', 'Right/up ray w/hollow pt'];
18
+ const selectedToolOption = ['Point', 'Segment', 'Segment left/down hollow pt', 'Segment right/up hollow pt', 'Segment both hollow pts'];
19
+ const toolOptions = [...selectedToolOption, ...unselectedToolOption];
20
+ abortEarlySetup();
21
+ before(() => {
22
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
23
+ cy.barsPreLoaderWait();
24
+ });
25
+
26
+ it('\'Tools\' label should be displayed with 9 tools', () => {
27
+ utilities.verifyInnerText(numberLinePage.toolsLabel(), 'Tools');
28
+ utilities.verifyElementVisibilityState(numberLinePage.toolsLabel(), 'visible');
29
+ utilities.verifyElementCount(numberLinePage.toolOptions(), 9);
30
+ });
31
+
32
+ it(`The ${selectedToolOption} should be in selected state with tick icons and all the options should be in unselected state`, () => {
33
+ selectedToolOption.forEach((toolOption, index) => {
34
+ utilities.verifyElementVisibilityState(numberLinePage.toolOptions(`${toolOption} selected`), 'visible');
35
+ utilities.verifyInnerText(utilities.getNthElement(numberLinePage.toolOptionsLabel(), index), toolOption);
36
+ utilities.verifyElementVisibilityState(utilities.getNthElement(numberLinePage.toolOptionsTickIcon(), index), 'visible');
37
+ });
38
+ unselectedToolOption.forEach((toolOption, index) => {
39
+ utilities.verifyElementVisibilityState(numberLinePage.toolOptions(`${toolOption} not-selected`), 'visible');
40
+ utilities.verifyInnerText(utilities.getNthElement(numberLinePage.toolOptionsLabel(), index + 5), toolOption);
41
+ utilities.verifyElementVisibilityState(utilities.getNthElement(numberLinePage.toolOptionsTickIcon(), index + 5), 'hidden');
42
+ });
43
+ });
44
+
45
+ it('\'Controls\' label should be displayed with 2 control options', () => {
46
+ utilities.verifyInnerText(numberLinePage.controlsLabel(), 'Controls');
47
+ utilities.verifyElementVisibilityState(numberLinePage.controlsLabel(), 'visible');
48
+ });
49
+
50
+ it('All the control options should be displayed in selected state', () => {
51
+ let controlOptions = ['Undo/Redo', 'Reset'];
52
+ controlOptions.forEach((controlOption, index) => {
53
+ utilities.verifyElementVisibilityState(numberLinePage.controlOptions(`${controlOption} selected`), 'visible');
54
+ utilities.verifyInnerText(utilities.getNthElement(numberLinePage.controlsOptionsLabel(), index), controlOption);
55
+ utilities.verifyElementVisibilityState(utilities.getNthElement(numberLinePage.controlsTickIcon(), index), 'visible');
56
+ });
57
+ });
58
+
59
+ numberLinePage.tests.verifyDefaultToolDropdown(toolOptions);
60
+
61
+ it(`The ${selectedToolOption} options should be displayed in the \'Specify correct answer\' section`, () => {
62
+ selectedToolOption.forEach((toolOption) => {
63
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionSpecifyCorrectAnswer(`${toolOption}`), 'visible');
64
+ });
65
+ utilities.verifyElementCount(numberLinePage.numberLineToolOptionSpecifyCorrectAnswer(), 5);
66
+ });
67
+
68
+ it('By default, the \'Point\' option should be in selected state in the \'Specify correct answer\' section', () => {
69
+ numberLinePage.steps.verifyToolOptionSelectedSpecifyCorrectAnswerSection(toolOptions[0]);
70
+ numberLinePage.steps.verifyToolOptionNotSelectedSpecifyCorrectAnswerSection(toolOptions.slice(1, 5));
71
+ });
72
+
73
+ it('When the user de-selects an selected option it should be removed from the \'Specify correct answer\' section', () => {
74
+ numberLinePage.steps.deselectToolOptions(['Point']);
75
+ selectedToolOption.slice(1, selectedToolOption.length).forEach((toolOption) => {
76
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionSpecifyCorrectAnswer(`${toolOption}`), 'visible');
77
+ });
78
+ });
79
+
80
+ it('When user selects any of the default unselected options it should be added to the \'Specify correct answer\' section', () => {
81
+ numberLinePage.steps.selectToolOptions(['Left/down ray']);
82
+ toolOptions.slice(1, 6).forEach((toolOption) => {
83
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionSpecifyCorrectAnswer(`${toolOption}`), 'visible');
84
+ });
85
+ numberLinePage.steps.selectToolOptions(['Point']);
86
+ });
87
+
88
+ //Controls
89
+ it('All the controls should be displayed in the \'Specify correct answer\' section', () => {
90
+ controlOptions.forEach((controlOption) => {
91
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer(controlOption), 'visible');
92
+ });
93
+ });
94
+
95
+ it('When the user de-selects any control it should be removed from the \'Specify correct answer\' section ', () => {
96
+ numberLinePage.steps.deselectControl('Undo/Redo');
97
+ controlOptions.slice(0, 1).forEach((controlOption) => {
98
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer(controlOption), 'notExist');
99
+ });
100
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer(controlOptions[2]), 'visible');
101
+ });
102
+
103
+ it('When the user selects a un-selected option it should be displayed again in the \'Specify correct answer\' section', () => {
104
+ numberLinePage.steps.selectControl('Undo/Redo');
105
+ controlOptions.forEach((controlOption) => {
106
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer(controlOption), 'visible');
107
+ });
108
+ });
109
+
110
+ //Default tool
111
+ it('When the user selects another tool as the default tool it should be displayed as selected and the \'Point\' tool should be displayed unselected in the \'Specify correct answer\' section', () => {
112
+ numberLinePage.steps.expandDefaultToolDropdown();
113
+ numberLinePage.steps.selectOptionFromDefaultToolDropdown('Segment');
114
+ numberLinePage.steps.verifyToolOptionSelectedSpecifyCorrectAnswerSection('Segment');
115
+ numberLinePage.steps.verifyToolOptionNotSelectedSpecifyCorrectAnswerSection(['Point']);
116
+ });
117
+
118
+ it('CSS of tools and controls', { tags: 'css' }, () => {
119
+ utilities.verifyCSS(numberLinePage.toolOptions('Right/up ray').find('svg circle'), {
120
+ 'fill': css.color.secondaryBtn
121
+ });
122
+ utilities.verifyCSS(numberLinePage.toolOptions('Right/up ray'), {
123
+ 'background-color': css.color.secondaryBtnBg
124
+ });
125
+ utilities.verifyCSS(numberLinePage.toolOptions('Segment').find('svg path'), {
126
+ 'fill': css.color.primaryBtn
127
+ });
128
+ utilities.verifyCSS(numberLinePage.toolOptions('Segment'), {
129
+ 'background-color': css.color.activeButtons
130
+ });
131
+ utilities.verifyCSS(numberLinePage.toolOptionsTickIcon().eq(1).find('[data-name="Icon feather-check"]'), {
132
+ 'color': css.color.activeButtons,
133
+ 'fill': css.color.activeButtons
134
+ });
135
+ });
136
+
137
+ it('Accessibility of tools and controls', { tags: 'a11y' }, () => {
138
+ cy.checkAccessibility(numberLinePage.toolOptions().parents('[class*="CustomizedOptionWrapper"]'));
139
+ });
140
+ });
141
+
142
+ describe('Tools and controls - Preview tab functionality', () => {
143
+ abortEarlySetup();
144
+ before(() => {
145
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
146
+ cy.barsPreLoaderWait();
147
+ });
148
+
149
+ it(`The ${selectedToolOption} options should be displayed in the preview tab`, () => {
150
+ numberLinePage.steps.switchToPreviewTab();
151
+ selectedToolOption.forEach((toolOption) => {
152
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionPreviewTab(`${toolOption}`), 'visible');
153
+ });
154
+ utilities.verifyElementCount(numberLinePage.numberLineToolOptionPreviewTab(), 5);
155
+ });
156
+
157
+ it('By default, the \'Point\' option should be in selected state in the preview tab tool options', () => {
158
+ numberLinePage.steps.verifyToolOptionSelectedPreviewTab(selectedToolOption[0]);
159
+ numberLinePage.steps.verifyToolOptionNotSelectedPreviewTab(selectedToolOption.slice(1, selectedToolOption.length));
160
+ utilities.verifyElementCount(numberLinePage.numberLineToolOptionPreviewTab(), 5)
161
+ });
162
+
163
+ it('When the user de-selects an selected option it should be removed from the preview tab tool options', () => {
164
+ numberLinePage.steps.switchToEditTab();
165
+ numberLinePage.steps.deselectToolOptions(['Point']);
166
+ numberLinePage.steps.switchToPreviewTab();
167
+ selectedToolOption.slice(1, selectedToolOption.length).forEach((toolOption) => {
168
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionPreviewTab(`${toolOption}`), 'visible');
169
+ });
170
+ });
171
+
172
+ it('When user selects any of the default unselected options it should be added to the preview tab tool options', () => {
173
+ numberLinePage.steps.switchToEditTab();
174
+ numberLinePage.steps.selectToolOptions(['Left/down ray']);
175
+ numberLinePage.steps.switchToPreviewTab();
176
+ toolOptions.slice(1, 5).forEach((toolOption) => {
177
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionPreviewTab(`${toolOption}`), 'visible');
178
+ });
179
+ });
180
+
181
+ //Controls
182
+ it('All the controls should be displayed in the preview tab tool options', () => {
183
+ controlOptions.forEach((controlOption) => {
184
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionPreviewTab(controlOption), 'visible');
185
+ });
186
+ });
187
+
188
+ it('When the user de-selects any control it should be removed from the preview tab tool options', () => {
189
+ numberLinePage.steps.switchToEditTab();
190
+ numberLinePage.steps.deselectControl('Undo/Redo');
191
+ numberLinePage.steps.switchToPreviewTab();
192
+ controlOptions.slice(0, 1).forEach((controlOption) => {
193
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionPreviewTab(controlOption), 'notExist');
194
+ });
195
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionPreviewTab(controlOptions[2]), 'visible');
196
+ });
197
+
198
+ it('When the user selects a un-selected option it should be displayed again in the preview tab tool options', () => {
199
+ numberLinePage.steps.switchToEditTab();
200
+ numberLinePage.steps.selectControl('Undo/Redo');
201
+ numberLinePage.steps.switchToPreviewTab();
202
+ controlOptions.forEach((controlOption) => {
203
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionPreviewTab(controlOption), 'visible');
204
+ });
205
+ });
206
+
207
+ //Default tool
208
+ it('When the user selects another tool as the default tool it should be displayed as selected and the \'Point\' tool should be displayed unselected in the preview tab tool options', () => {
209
+ numberLinePage.steps.switchToEditTab();
210
+ numberLinePage.steps.selectToolOptions(['Point']);
211
+ numberLinePage.steps.expandDefaultToolDropdown();
212
+ numberLinePage.steps.selectOptionFromDefaultToolDropdown('Left/down ray');
213
+ numberLinePage.steps.switchToPreviewTab();
214
+ numberLinePage.steps.verifyToolOptionSelectedPreviewTab('Left/down ray');
215
+ numberLinePage.steps.verifyToolOptionNotSelectedPreviewTab(['Point']);
216
+ });
217
+ });
218
+
219
+ describe('Undo/Redo and Reset functionality specify correct answer section', () => {
220
+ abortEarlySetup();
221
+ before(() => {
222
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
223
+ cy.barsPreLoaderWait();
224
+ });
225
+
226
+ it('By default, the \'Undo\', \'Redo\' and \'Reset\' buttons should be displayed in disabled state', () => {
227
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
228
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
229
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Reset'));
230
+ });
231
+
232
+ it('When the user plots points on the number line then the \'Undo\' and \'Reset\' buttons should be displayed in enabled state whereas, \'Redo\' button should be displayed in disabled state', () => {
233
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
234
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
235
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
236
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Reset'));
237
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
238
+ });
239
+
240
+ it('When the user selects \'Undo\' button then the latest action should be reversed and the \'Redo\' button should become enabled', () => {
241
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Undo');
242
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }]);
243
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineNotExistSpecifyCorrectAnswer([{ x: 3, xRange: range }]);
244
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
245
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
246
+ });
247
+
248
+ it('When the user clicks on the \'Redo\' button the latest action should be reinstated and the the \'Redo\' button should be disabled again', () => {
249
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Redo');
250
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
251
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
252
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
253
+ });
254
+
255
+ it('When the user reaches the initial state by performing \'Undo\' actions then the \'Redo\' button should be in enabled state and \'Undo\' button should be in disabled state', () => {
256
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Undo');
257
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Undo');
258
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineNotExistSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
259
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
260
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
261
+ });
262
+
263
+ it('When the user reaches the latest state by performing \'Redo\' actions then the \'Undo\' button should be in enabled state and \'Redo\' button should be in disabled state', () => {
264
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Redo');
265
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Redo');
266
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
267
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
268
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
269
+ });
270
+
271
+ it('User should be able to select \'Reset\' control', () => {
272
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Reset');
273
+ });
274
+
275
+ numberLinePage.tests.verifyResetPopupContentWithCSSAndA11y();
276
+
277
+ it('When the user clicks on the \'Cancel\' button then the plotted number line should not be \'Reset\'', () => {
278
+ numberLinePage.steps.cancelReset();
279
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
280
+ });
281
+
282
+ it('When the user clicks on \'Confirm \'Reset\'\' then the plotted number line should be \'Reset\'', () => {
283
+ numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Reset');
284
+ numberLinePage.steps.confirmReset();
285
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineNotExistSpecifyCorrectAnswer([{ x: 2, xRange: range }, { x: 3, xRange: range }]);
286
+ });
287
+
288
+ it('When the user \'Reset\'s the number line then the \'Undo\', \'Redo\' and \'Reset\' buttons should be in disabled state', () => {
289
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Undo'));
290
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Redo'));
291
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionSpecifyCorrectAnswer('Reset'));
292
+ });
293
+ });
294
+
295
+ describe('Undo/Redo and Reset functionality preview tab', () => {
296
+ abortEarlySetup();
297
+ before(() => {
298
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
299
+ cy.barsPreLoaderWait();
300
+ numberLinePage.steps.switchToPreviewTab();
301
+ });
302
+
303
+ it('By default, the \'Undo\', \'Redo\' and \'Reset\' buttons should be displayed in disabled state', () => {
304
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
305
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
306
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Reset'));
307
+ });
308
+
309
+ it('When the user plots points on the number line then the \'Undo\' button should be displayed in enabled state whereas, \'Redo\' and \'Reset\' buttons should be displayed in disabled state', () => {
310
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
311
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
312
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
313
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
314
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Reset'));
315
+ });
316
+
317
+ it('When the user selects \'Undo\' button then the latest action should be reversed and the \'Redo\' button should become enabled', () => {
318
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Undo');
319
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: range }]);
320
+ numberLinePage.steps.verifyPointsNotExistOnNumberLinePreviewTab([{ x: 2, xRange: range }]);
321
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
322
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
323
+ });
324
+
325
+ it('When the user clicks on the \'Redo\' button the latest action should be reinstated and the the \'Redo\' button should be disabled again', () => {
326
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Redo');
327
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
328
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
329
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
330
+ });
331
+
332
+ it('When the user reaches the initial state by performing \'Undo\' actions then the \'Redo\' button should be in enabled state and \'Undo\' button should be in disabled state', () => {
333
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Undo');
334
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Undo');
335
+ numberLinePage.steps.verifyPointsNotExistOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
336
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
337
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
338
+ });
339
+
340
+ it('When the user reaches the latest state by performing \'Redo\' actions then the \'Undo\' button should be in enabled state and \'Redo\' button should be in disabled state', () => {
341
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Redo');
342
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Redo');
343
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
344
+ utilities.verifyElementNotDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
345
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
346
+ });
347
+
348
+ it('User should be able to select \'Reset\' control', () => {
349
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Reset');
350
+ });
351
+
352
+ numberLinePage.tests.verifyResetPopupContentWithCSSAndA11y();
353
+
354
+ it('When the user clicks on the \'Cancel\' button then the plotted points on number line should not \'Reset\' and the dialog box should not be displayed', () => {
355
+ numberLinePage.steps.cancelReset();
356
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
357
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
358
+ });
359
+
360
+ it('When the user clicks on \'Confirm reset\'\' then the plotted number line should be \'Reset\'', () => {
361
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Reset');
362
+ numberLinePage.steps.confirmReset();
363
+ numberLinePage.steps.verifyPointsNotExistOnNumberLinePreviewTab([{ x: 1, xRange: range }, { x: 2, xRange: range }]);
364
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
365
+ });
366
+
367
+ it('When the user \'Reset\'s the number line then the \'Undo\' and \'Redo\' buttons should be in disabled state', () => {
368
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
369
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
370
+ });
371
+ });
372
+ });