itemengine-cypress-automation 1.0.119 → 1.0.121

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. package/cypress/e2e/ILC/AudioResponseNew/editTabBasicSection.js +13 -1
  2. package/cypress/e2e/ILC/AudioResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +2 -0
  3. package/cypress/e2e/ILC/AudioResponseNew/previewContentsForAllViews.smoke.js +1 -0
  4. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +2 -0
  5. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +1 -1
  6. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +2 -2
  7. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/studentViewSettings.js +1 -4
  8. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/Scoring/allOrNothingForAllViews.smoke.js +273 -0
  9. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/checkAnswerFunctionalityForAllViews.smoke.js +116 -0
  10. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +136 -0
  11. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/allOrNothingForAllView.smoke.js +224 -0
  12. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/checkAnswerFunctionalityForAllViews.smoke.js +120 -0
  13. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/previewContentsForAllViews.smoke.js +158 -0
  14. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/backgroundImageAndCanvasProperties.js +1 -1
  15. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +1 -4
  16. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/dropdownAndDropdownMenuSection.js +246 -0
  17. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/dropdownOptionsSection.js +332 -0
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editTabBasicSection.js +409 -0
  19. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/headerSection.js +80 -0
  20. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +213 -0
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/HeaderSection.js +1 -1
  22. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsBasic.js +2 -2
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsBasic.js +1 -1
  24. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/allOrNothingForAllViews.smoke.js +2 -2
  25. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/backgroundImageAndCanvasProperties.js +68 -68
  26. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/editTabScoringSection.js +6 -6
  27. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/previewContentsForAllViews.smoke.js +1 -1
  28. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/setLimitSection.js +3 -289
  29. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/specialCharactersSection.js +1 -1
  30. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/specifyCorrectAnswerSection.js +2 -2
  31. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +2 -23
  32. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +191 -0
  33. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +190 -0
  34. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +284 -0
  35. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/allOrNothingPenaltyScoring.js +52 -0
  36. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/manuallyAndNonScored.js +113 -0
  37. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +217 -0
  38. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsBasic.js +234 -0
  39. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +217 -0
  40. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +217 -0
  41. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsBasic.js +136 -0
  42. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +197 -0
  43. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +169 -0
  44. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +197 -0
  45. package/cypress/e2e/ILC/FillInTheGapsTextNew/allOrNothingForAllViews.smoke.js +219 -0
  46. package/cypress/e2e/ILC/FillInTheGapsTextNew/checkAnswerFunctionalityForAllViews.smoke.js +115 -0
  47. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabBasicSection.js +142 -0
  48. package/cypress/e2e/ILC/FillInTheGapsTextNew/previewContentsForAllViews.smoke.js +152 -0
  49. package/cypress/e2e/ILC/FillInTheGapsTextNew/setLimitSection.js +39 -0
  50. package/cypress/e2e/ILC/MultipleSelection/studentViewSettings.js +2 -12
  51. package/cypress/e2e/ILC/ShortTextResponseNew/conditionalCheckboxes.js +497 -0
  52. package/cypress/e2e/ILC/ShortTextResponseNew/editTabBasicSections.js +503 -0
  53. package/cypress/e2e/ILC/ShortTextResponseNew/responseAnswersAndAcceptedStudentInput.js +233 -0
  54. package/cypress/e2e/ILC/ShortTextResponseNew/specialCharactersSection.js +291 -0
  55. package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +332 -0
  56. package/cypress/e2e/ILC/SingleSelection/studentViewSettings.js +2 -12
  57. package/cypress/e2e/ILC/TextEntryMath/editTabBasicSection.js +9 -8
  58. package/cypress/e2e/ILC/TextEntryMath/editTabScoringSection.js +4 -4
  59. package/cypress/e2e/ILC/TextEntryMath/minimumScoringPenaltyPointsAndRoundingDropdown.js +8 -2
  60. package/cypress/e2e/ILC/TextEntryMath/specifyCorrectAnswerSection.js +5 -2
  61. package/cypress/e2e/ILC/TextEntryMathWithImage/allOrNothingScoringForAllViews.smoke.js +334 -0
  62. package/cypress/e2e/ILC/TextEntryMathWithImage/backgroundImageAndCanvasProperties.js +419 -0
  63. package/cypress/e2e/ILC/TextEntryMathWithImage/checkAnswerFunctionalityForAllViews.smoke.js +166 -0
  64. package/cypress/e2e/ILC/TextEntryMathWithImage/previewTabContentsForAllViews.smoke.js +166 -0
  65. package/cypress/e2e/ILC/UploadResponse/editTabScoringSection.js +51 -0
  66. package/cypress/e2e/ILC/UploadResponse/gradingViewAndCorrectAnswerViewContents.smoke.js +99 -0
  67. package/cypress/e2e/ILC/UploadResponse/manuallyAndNonScoredScoring.js +71 -0
  68. package/cypress/e2e/ILC/UploadResponse/previewContentsForAllViews.smoke.js +155 -0
  69. package/cypress/e2e/ILC/UploadResponse/uploadResponseHeaderSection.js +66 -0
  70. package/cypress/e2e/migration/migration.js +6 -5
  71. package/cypress/e2e/migration/migration2.js +4 -3
  72. package/cypress/e2e/migration/migration3.js +4 -3
  73. package/cypress/e2e/migration/migration4.js +4 -3
  74. package/cypress/e2e/migration/migration5.js +4 -3
  75. package/cypress/fixtures/theme/ilc.json +3 -1
  76. package/cypress/pages/audioResponsePage.js +2 -1
  77. package/cypress/pages/components/additionalSettingsPanel.js +27 -0
  78. package/cypress/pages/components/autoScoredPreviewBase.js +1 -1
  79. package/cypress/pages/components/autoScoredScoringSection.js +1 -1
  80. package/cypress/pages/components/autoScoredScoringSectionMultipleResponsesType.js +1 -1
  81. package/cypress/pages/components/autoScoredSetCorrectAnswerSection.js +1 -1
  82. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +2 -2
  83. package/cypress/pages/components/autoScoredStudentViewSettings.js +8 -1
  84. package/cypress/pages/components/backgroundImageUploadComponent.js +5 -5
  85. package/cypress/pages/components/createQuestionBasePage.js +8 -2
  86. package/cypress/pages/components/essayResponseCommonComponents.js +6 -0
  87. package/cypress/pages/components/fillInTheGapsCommonComponents.js +13 -0
  88. package/cypress/pages/components/fillInTheGapsDragAndDropCommonComponents.js +40 -0
  89. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +422 -314
  90. package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +438 -710
  91. package/cypress/pages/components/{figOverImageCanvasComponent.js → imageCanvasComponent.js} +274 -272
  92. package/cypress/pages/components/index.js +3 -3
  93. package/cypress/pages/components/maximumRecorderLengthComponent.js +55 -11
  94. package/cypress/pages/components/previewScoringAndShowCorrectAnswerComponent.js +1 -1
  95. package/cypress/pages/components/questionInputFieldComponent.js +49 -23
  96. package/cypress/pages/components/scoringSectionBase.js +1 -1
  97. package/cypress/pages/createItemPage.js +67 -2
  98. package/cypress/pages/fillInTheGapsDragAndDropPage.js +172 -711
  99. package/cypress/pages/fillInTheGapsDropdownPage.js +75 -72
  100. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +4 -4
  101. package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +109 -273
  102. package/cypress/pages/fillInTheGapsOverImageTextPage.js +49 -291
  103. package/cypress/pages/fillInTheGapsTextPage.js +52 -199
  104. package/cypress/pages/index.js +5 -5
  105. package/cypress/pages/multipleSelectionPage.js +1 -0
  106. package/cypress/pages/shortTextResponsePage.js +575 -33
  107. package/cypress/pages/singleSelectionGridPage.js +1 -2
  108. package/cypress/pages/singleSelectionPage.js +5 -6
  109. package/cypress/pages/textEntryMathPage.js +46 -22
  110. package/cypress/pages/textEntryMathWithImagePage.js +212 -0
  111. package/cypress/pages/uploadResponsePage.js +74 -21
  112. package/cypress/support/migrationHelpers/extractLrnQuestionData.js +73 -2
  113. package/cypress/support/migrationHelpers/lrnQestionTypesENUM.js +1 -0
  114. package/cypress/support/migrationHelpers/verifyIeQuestionData.js +49 -2
  115. package/package.json +1 -1
  116. package/cypress/e2e/ILC/AudioResponseNew/minimalRecorderStyle.js +0 -482
  117. package/cypress/e2e/ILC/EssayResponse/essayResponseEquationEditor.smoke.js +0 -412
  118. package/cypress/pages/components/figOverImageCommonComponent.js +0 -1113
  119. package/cypress/pages/dragAndDropIntoCategoriesAllOrNothingScoring.js +0 -1155
  120. package/cypress/pages/dragAndDropIntoCategoriesCellsScoring.js +0 -1561
  121. package/cypress/pages/dragAndDropIntoCategoriesResponseScoring.js +0 -1396
  122. package/cypress/pages/fillInTheGapsScoring.js +0 -5872
  123. package/cypress/pages/fillInTheGapsSetCorrectAnswerSection.js +0 -260
@@ -0,0 +1,419 @@
1
+ import { textEntryMathWithImagePage } from "../../../pages";
2
+ import utilities from "../../../support/helpers/utilities";
3
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
4
+ const css = Cypress.env('css');
5
+
6
+ const textContainerPointerStyles = ['None', 'Bottom', 'Bottom right', 'Right', 'Top right', 'Top', 'Top left', 'Left', 'Bottom left'];
7
+
8
+ describe('Create item page - Text entry math: Question instructions, Options section', () => {
9
+ before(() => {
10
+ cy.loginAs('admin');
11
+ });
12
+
13
+ describe('Question instructions input field - Edit tab', () => {
14
+ abortEarlySetup();
15
+ before(() => {
16
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
17
+ cy.barsPreLoaderWait();
18
+ });
19
+
20
+ textEntryMathWithImagePage.tests.verifyQuestionInstructionsInputFieldEditTab();
21
+ });
22
+
23
+ describe('Question instructions input field - Edit tab functionality', () => {
24
+ abortEarlySetup();
25
+ before(() => {
26
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
27
+ cy.barsPreLoaderWait();
28
+ });
29
+
30
+ textEntryMathWithImagePage.tests.verifyQuestionInstructionsInputFieldPreviewTab();
31
+ });
32
+
33
+ describe('Background image section - Edit tab', () => {
34
+ abortEarlySetup();
35
+ before(() => {
36
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
37
+ cy.barsPreLoaderWait();
38
+ textEntryMathWithImagePage.steps.addBackground();
39
+ });
40
+
41
+ textEntryMathWithImagePage.tests.verifyBackgroundImageSectionContentWithCSSAndA11y();
42
+
43
+ textEntryMathWithImagePage.tests.verifyDeleteImagePopupContentAndFunctionality();
44
+ });
45
+
46
+ describe('Canvas section - Edit tab', () => {
47
+ abortEarlySetup();
48
+ before(() => {
49
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
50
+ cy.barsPreLoaderWait();
51
+ textEntryMathWithImagePage.steps.addBackground();
52
+ });
53
+
54
+ textEntryMathWithImagePage.tests.verifyCanvasLabelAndCanvas();
55
+
56
+ it('Select text container, Insert text container and Insert text buttons should be displayed.', () => {
57
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.selectResponseAreaButton(), 'visible');
58
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.insertResponseAreaButton(), 'visible');
59
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.insertTextAreaButton(), 'visible');
60
+ });
61
+
62
+ it('When \'Insert text container\' button is selected, then \'Insert text container\' label should be displayed inside canvas', () => {
63
+ textEntryMathWithImagePage.steps.verifyCanvasMenuButtonSelected('Insert text container');
64
+ textEntryMathWithImagePage.steps.verifyCanvasSelectedMenuText('Insert text container');
65
+ });
66
+
67
+ it('When user hovers over select text container button, then \'Select text container\' tooltip should be displayed', () => {
68
+ textEntryMathWithImagePage.steps.verifyTooltipInnerText(textEntryMathWithImagePage.selectResponseAreaButton, 'Select text container');
69
+ });
70
+
71
+ it('When user hovers over insert text container button, then \'Insert text container\' tooltip should be displayed', () => {
72
+ textEntryMathWithImagePage.steps.verifyTooltipInnerText(textEntryMathWithImagePage.insertResponseAreaButton, 'Insert text container');
73
+ });
74
+
75
+ textEntryMathWithImagePage.tests.verifyInsertTextTooltip();
76
+
77
+ textEntryMathWithImagePage.tests.verifyUndoRedoClearAllButtons();
78
+ });
79
+
80
+ describe('Canvas : Insert text container, Delete, Undo, Redo - Specify correct answer section', () => {
81
+ abortEarlySetup();
82
+ before(() => {
83
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
84
+ cy.barsPreLoaderWait();
85
+ textEntryMathWithImagePage.steps.addBackground();
86
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
87
+ });
88
+
89
+ it('When user inserts 3 text container in canvas, then 3 response accordion should be added in specify correct answer section', () => {
90
+ textEntryMathWithImagePage.steps.insertResponseArea(60);
91
+ textEntryMathWithImagePage.steps.insertResponseArea(80);
92
+ textEntryMathWithImagePage.steps.insertResponseArea(20);
93
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAccordion(), 3);
94
+ });
95
+
96
+ it('When user deletes a text container in canvas, then response accordion should be removed from specify correct answer section and remaining response accordion should be numbered appropriately', () => {
97
+ textEntryMathWithImagePage.steps.removeResponseArea(1);
98
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAccordion(), 2);
99
+ for (let i = 0; i < 2; i++) {
100
+ utilities.verifyInnerText(utilities.getNthElement(textEntryMathWithImagePage.responseAccordionLabel(), i), `Response ${i + 1}`);
101
+ }
102
+ });
103
+
104
+ it('When user clicks on undo button in canvas section, then previous action should reversed and previously deleted response accordion should be added in specify correct answer section', () => {
105
+ textEntryMathWithImagePage.steps.undoAction();
106
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAccordion(), 3);
107
+ });
108
+
109
+ it('When the user clicks on the redo button after performing an undo action in canvas section, then the previously added response accordion should be deleted again in specify correct answer section', () => {
110
+ textEntryMathWithImagePage.steps.redoAction();
111
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAccordion(), 2);
112
+ });
113
+
114
+ it('When the user reaches the initial state by performing undo actions in canvas section, then specify correct answer section should not have response accordion', () => {
115
+ for (var i = 0; i < 4; i++) {
116
+ textEntryMathWithImagePage.steps.undoAction();
117
+ };
118
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.responseAccordion(), 'notExist');
119
+ });
120
+
121
+ it('When the user reaches the latest state by performing redo actions in canvas section, then 3 response accordions should be visible in specify correct answer section', () => {
122
+ for (var i = 0; i < 4; i++) {
123
+ textEntryMathWithImagePage.steps.redoAction();
124
+ };
125
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAccordion(), 2);
126
+ });
127
+
128
+ it('When user clicks on clear all in canvas, then response accordions in specified correct answer should disappear', () => {
129
+ textEntryMathWithImagePage.steps.clearAll();
130
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.responseAccordion(), 'notExist');
131
+ });
132
+ });
133
+
134
+ describe('Canvas : Select text container - Edit tab canvas section functionality', () => {
135
+ abortEarlySetup();
136
+ before(() => {
137
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
138
+ cy.barsPreLoaderWait();
139
+ textEntryMathWithImagePage.steps.addBackground();
140
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
141
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
142
+ textEntryMathWithImagePage.steps.insertResponseArea(20);
143
+ textEntryMathWithImagePage.steps.insertResponseArea(30);
144
+ });
145
+
146
+ it('When user clicks on \'Select text container\' button is selected, then \'Select\' label should be displayed inside canvas', () => {
147
+ textEntryMathWithImagePage.steps.selectCanvasMenuButton('Select text container');
148
+ textEntryMathWithImagePage.steps.verifyCanvasSelectedMenuText('Select');
149
+ });
150
+
151
+ it(`When user selects text container, then 9 options ${textContainerPointerStyles} should be displayed and by default ${textContainerPointerStyles[7]} should be selected`, () => {
152
+ textEntryMathWithImagePage.steps.selectResponseArea(1);
153
+ utilities.verifyElementCount(textEntryMathWithImagePage.responseAreaStyle(), 9);
154
+ textEntryMathWithImagePage.steps.verifyResponseAreaPointerStyle(textContainerPointerStyles[7], 1);
155
+ });
156
+
157
+ it('CSS of text container', { tags: 'css' }, () => {
158
+ utilities.verifyCSS(utilities.getNthElement(textEntryMathWithImagePage.responseArea(), 1), {
159
+ 'border': `1px solid ${css.color.activeComponentBorder}`
160
+ });
161
+ utilities.verifyCSS(utilities.getNthElement(textEntryMathWithImagePage.responseArea(), 0), {
162
+ 'border': `1px dashed ${css.color.activeComponentBorder}`
163
+ });
164
+ });
165
+
166
+ it(`When user hovers over the pointer styles, then ${textContainerPointerStyles} tooltip should be displayed`, () => {
167
+ textEntryMathWithImagePage.steps.verifyPointerStyleTooltip();
168
+ });
169
+
170
+ it(`When the user has selected a text container and chooses ${textContainerPointerStyles[0]}, then selected text container should have the specified effect applied, and the other text containers should remain unaffected.`, () => {
171
+ textEntryMathWithImagePage.steps.selectResponseAreaPointerStyle(textContainerPointerStyles[0]);
172
+ textEntryMathWithImagePage.steps.verifyResponseAreaPointerStyle(textContainerPointerStyles[0], 1);
173
+ textEntryMathWithImagePage.steps.verifyResponseAreaPointerStyle(textContainerPointerStyles[7], 0);
174
+ });
175
+
176
+ it(`When the user chooses ${textContainerPointerStyles[5]}, then selected text containers should have the specified effect applied, and the other drop zones should remain unaffected.`, () => {
177
+ textEntryMathWithImagePage.steps.selectResponseAreaPointerStyle(textContainerPointerStyles[5]);
178
+ textEntryMathWithImagePage.steps.verifyResponseAreaPointerStyle(textContainerPointerStyles[5], 1);
179
+ textEntryMathWithImagePage.steps.verifyResponseAreaPointerStyle(textContainerPointerStyles[7], 0);
180
+ });
181
+ });
182
+
183
+ describe('Canvas : Insert and delete text container - Edit tab canvas section functionality', () => {
184
+ abortEarlySetup();
185
+ before(() => {
186
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
187
+ cy.barsPreLoaderWait();
188
+ textEntryMathWithImagePage.steps.addBackground();
189
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
190
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
191
+ });
192
+
193
+ textEntryMathWithImagePage.tests.verifyCanvasResponseAreaContents();
194
+
195
+ textEntryMathWithImagePage.tests.verifyInsertAndDeleteResponseAreaFunctionality('text container');
196
+ });
197
+
198
+ describe('Canvas : Undo, Redo, Clear all - Edit tab canvas section functionality', () => {
199
+ abortEarlySetup();
200
+ before(() => {
201
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
202
+ cy.barsPreLoaderWait();
203
+ textEntryMathWithImagePage.steps.addBackground();
204
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
205
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
206
+ });
207
+
208
+ textEntryMathWithImagePage.tests.verifyUndoRedoClearAllButtonFunctionality('text container');
209
+ });
210
+
211
+ describe('Canvas : Insert text - Edit tab canvas section functionality', () => {
212
+ abortEarlySetup();
213
+ before(() => {
214
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
215
+ cy.barsPreLoaderWait();
216
+ textEntryMathWithImagePage.steps.addBackground();
217
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
218
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
219
+ });
220
+
221
+ textEntryMathWithImagePage.tests.verifyInsertTextAndTextColorButton();
222
+
223
+ textEntryMathWithImagePage.tests.verifyTextColorPopupFunctionality();
224
+
225
+ it('When the user clicks on the \'Edit color\' present in an \'Text color\' popup, then a select color popup should be displayed', () => {
226
+ textEntryMathWithImagePage.steps.clickOnEditColorButton();
227
+ textEntryMathWithImagePage.steps.verifyColorPopupIsDisplayed();
228
+ });
229
+
230
+ textEntryMathWithImagePage.tests. verifyColorPopupSelectColorTitle();
231
+
232
+ textEntryMathWithImagePage.tests.verifySaturationAndOpacityGradientPalette('rgb(0, 0, 46)');
233
+
234
+ textEntryMathWithImagePage.tests.verifyColorHuePaletteAndHexInputField('rgb(0, 0, 255)', '#00002E');
235
+
236
+ textEntryMathWithImagePage.tests.verifyColorPopupFunctionality();
237
+
238
+ it('When the user has modified the selected color in the color popup and clicks on \'Ok\' button, then the popup should close, the color block should change to the new selected color and the modifications in the color popup should persist', () => {
239
+ textEntryMathWithImagePage.steps.clickOnOkButton();
240
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.dialogBox(), 'notExist');
241
+ textEntryMathWithImagePage.steps.verifyTextColorOfTextBox('rgba(255, 0, 0, 0.5)');
242
+ });
243
+
244
+ it('When the user modifies the selected color in the color popup and clicks on \'Cancel\' button, then the popup should close, the color block should not change and the modifications in the color popup should not persist', () => {
245
+ textEntryMathWithImagePage.steps.clickOnTextColorButton();
246
+ textEntryMathWithImagePage.steps.clickOnEditColorButton()
247
+ textEntryMathWithImagePage.steps.addInputToHexInputField('#00002E');
248
+ textEntryMathWithImagePage.steps.clickOnCancelButton();
249
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.dialogBox(), 'notExist');
250
+ textEntryMathWithImagePage.steps.verifyTextColorOfTextBox('rgba(255, 0, 0, 0.5)');
251
+ });
252
+ });
253
+
254
+ describe('Image properties section - Edit tab', () => {
255
+ abortEarlySetup();
256
+ before(() => {
257
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
258
+ cy.barsPreLoaderWait();
259
+ textEntryMathWithImagePage.steps.addBackground();
260
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
261
+ textEntryMathWithImagePage.steps.verifyFileNameLabel('highlightImage.jpg');
262
+ });
263
+
264
+ textEntryMathWithImagePage.tests.verifyImagePropertiesSectionContent();
265
+ });
266
+
267
+ describe('Image properties section - Edit tab canvas section functionality', () => {
268
+ abortEarlySetup();
269
+ before(() => {
270
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
271
+ cy.barsPreLoaderWait();
272
+ textEntryMathWithImagePage.steps.addBackground();
273
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
274
+ textEntryMathWithImagePage.steps.verifyFileNameLabel('highlightImage.jpg');
275
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
276
+ });
277
+
278
+ textEntryMathWithImagePage.tests.verifyImageAlignmentEditTabFunctionality();
279
+
280
+ textEntryMathWithImagePage.tests.verifyImageOpacityEditTabFunctionality();
281
+
282
+ textEntryMathWithImagePage.tests.verifyFillImageToCanvasEditTabFunctionality();
283
+ });
284
+
285
+ describe('Canvas width, Canvas height, Image alternative text - Edit tab canvas section functionality', () => {
286
+ abortEarlySetup();
287
+ before(() => {
288
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
289
+ cy.barsPreLoaderWait();
290
+ textEntryMathWithImagePage.steps.addBackground();
291
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
292
+ textEntryMathWithImagePage.steps.verifyFileNameLabel('highlightImage.jpg');
293
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
294
+ });
295
+
296
+ textEntryMathWithImagePage.tests.verifyAspectRatioAndResetDimensionsButtonFunctionality();
297
+
298
+ textEntryMathWithImagePage.tests.verifyImageAlternativeTextEditTabFunctionality();
299
+ });
300
+
301
+ describe('Canvas : Select text container, Insert text container, Insert text, Undo, Redo and Clear all - Preview tab functionality', () => {
302
+ abortEarlySetup();
303
+ before(() => {
304
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
305
+ cy.barsPreLoaderWait();
306
+ textEntryMathWithImagePage.steps.addBackground();
307
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
308
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
309
+ });
310
+
311
+ it('When user insert text container in edit tab, then text container should be visible in preview tab', () => {
312
+ textEntryMathWithImagePage.steps.insertResponseArea(20);
313
+ textEntryMathWithImagePage.steps.insertResponseArea(90);
314
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
315
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.responseFieldPreviewTab(), 'visible');
316
+ });
317
+
318
+ it('When user selects a text container and changes text container pointer style in edit tab, then changes in text container pointer should be reflected in preview tab', () => {
319
+ textEntryMathWithImagePage.steps.switchToEditTab();
320
+ textEntryMathWithImagePage.steps.selectResponseArea(0);
321
+ textEntryMathWithImagePage.steps.selectResponseAreaPointerStyle(textContainerPointerStyles[1]);
322
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
323
+ textEntryMathWithImagePage.steps.verifyResponsePointerStyleInPreviewTab(textContainerPointerStyles[1], 0);
324
+ textEntryMathWithImagePage.steps.verifyResponsePointerStyleInPreviewTab(textContainerPointerStyles[8], 1);
325
+ });
326
+
327
+ it('When user insert text and changes color for text in edit tab, then inserted text should be displayed in canvas in preview tab', () => {
328
+ textEntryMathWithImagePage.steps.switchToEditTab();
329
+ textEntryMathWithImagePage.steps.insertTextArea(60, 'Inserted text');
330
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
331
+ textEntryMathWithImagePage.steps.verifyTextBoxExistInPreviewTab();
332
+ textEntryMathWithImagePage.steps.verifyTextColorOfTextBoxInPreviewTab('rgb(0, 0, 46)');
333
+ textEntryMathWithImagePage.steps.verifyTextOfTextBoxInPreviewTab('Inserted text');
334
+ });
335
+
336
+ it('When the user clicks on the undo button in edit tab, then previous action should be reversed and same should reflect in preview tab', () => {
337
+ textEntryMathWithImagePage.steps.switchToEditTab();
338
+ textEntryMathWithImagePage.steps.undoAction();
339
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
340
+ textEntryMathWithImagePage.steps.verifyTextOfTextBoxInPreviewTab('');
341
+ });
342
+
343
+ it('When the user clicks on the redo button in edit tab, then previous action should be reinstated and same should reflect in preview tab', () => {
344
+ textEntryMathWithImagePage.steps.switchToEditTab();
345
+ textEntryMathWithImagePage.steps.redoAction();
346
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
347
+ textEntryMathWithImagePage.steps.verifyTextBoxExistInPreviewTab();
348
+ });
349
+
350
+ it('When user clicks on \'Clear all\' button, then all text containers should be deleted in preview tab', () => {
351
+ textEntryMathWithImagePage.steps.switchToEditTab();
352
+ textEntryMathWithImagePage.steps.clearAll();
353
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
354
+ textEntryMathWithImagePage.steps.verifyTextBoxNotExistInPreviewTab();
355
+ textEntryMathWithImagePage.steps.verifyTextContainerNotExistInPreviewTab();
356
+ });
357
+ });
358
+
359
+ describe('Image properties, Image alignment, Opacity section - Preview tab functionality', () => {
360
+ abortEarlySetup();
361
+ before(() => {
362
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
363
+ cy.barsPreLoaderWait();
364
+ textEntryMathWithImagePage.steps.addBackground();
365
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
366
+ textEntryMathWithImagePage.steps.verifyFileNameLabel('highlightImage.jpg');
367
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
368
+ });
369
+
370
+ textEntryMathWithImagePage.tests.verifyImageAlignmentPreviewTabFunctionality();
371
+
372
+ textEntryMathWithImagePage.tests.verifyImageOpacityPreviewTabFunctionality();
373
+
374
+ textEntryMathWithImagePage.tests.verifyFillImageToCanvasPreviewTabFunctionality();
375
+ });
376
+
377
+ describe('Canvas width, Canvas height, Image alternative text - Preview tab functionality', () => {
378
+ abortEarlySetup();
379
+ before(() => {
380
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
381
+ cy.barsPreLoaderWait();
382
+ textEntryMathWithImagePage.steps.addBackground();
383
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
384
+ textEntryMathWithImagePage.steps.verifyFileNameLabel('highlightImage.jpg');
385
+ utilities.verifyElementVisibilityState(textEntryMathWithImagePage.uploadImageProgressBar(), 'visible');
386
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
387
+ });
388
+
389
+ it('When the user has uploaded canvas image, then switching to the preview tab should display canvas image with same dimensions', () => {
390
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
391
+ textEntryMathWithImagePage.steps.verifyImageIsUploadedInPreviewTab();
392
+ utilities.verifyElementVisibilityState( textEntryMathWithImagePage.canvasImageInPreviewTab(), 'visible');
393
+ textEntryMathWithImagePage.steps.verifyCanvasWidthInPreviewTab(768);
394
+ textEntryMathWithImagePage.steps.verifyCanvasHeightInPreviewTab(432);
395
+ });
396
+
397
+ it('When user updates width and height in edit tab, then updated changes should be reflected in preview tab', () => {
398
+ textEntryMathWithImagePage.steps.switchToEditTab();
399
+ textEntryMathWithImagePage.steps.unlockAspectRatio();
400
+ textEntryMathWithImagePage.steps.updateCanvasWidth(800);
401
+ textEntryMathWithImagePage.steps.updateCanvasHeight(450);
402
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
403
+ textEntryMathWithImagePage.steps.verifyCanvasWidthInPreviewTab(800);
404
+ textEntryMathWithImagePage.steps.verifyCanvasHeightInPreviewTab(450);
405
+ });
406
+
407
+ it('When user resets image dimensions in edit tab, then updated changes should be reflected in preview tab', () => {
408
+ textEntryMathWithImagePage.steps.switchToEditTab();
409
+ textEntryMathWithImagePage.steps.resetDimensions();
410
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
411
+ textEntryMathWithImagePage.steps.verifyCanvasWidthInPreviewTab(768);
412
+ textEntryMathWithImagePage.steps.verifyCanvasHeightInPreviewTab(432);
413
+ });
414
+
415
+ textEntryMathWithImagePage.tests.verifyImageAlternativeTextPreviewTabFunctionality();
416
+
417
+ textEntryMathWithImagePage.tests.verifyImageNotExistPreviewTab();
418
+ });
419
+ });
@@ -0,0 +1,166 @@
1
+ import { textEntryMathWithImagePage, itemPreviewPage, studentViewPage } from "../../../pages";
2
+ import { equationEditorFlyout } from "../../../pages/components";
3
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
4
+ import utilities from "../../../support/helpers/utilities";
5
+ let checkAnswerViews = ['Question preview', 'Item preview', 'Student view'];
6
+ const views = utilities.getViews(checkAnswerViews);
7
+ var itemReferenceID = "";
8
+
9
+ describe('Create item page - Text entry math - Check answer functionality', () => {
10
+ before(() => {
11
+ cy.loginAs('admin');
12
+ });
13
+
14
+ views.forEach((view) => {
15
+ const checkAnswer = (view) => {
16
+ switch (view) {
17
+ case checkAnswerViews[0]:
18
+ case checkAnswerViews[1]:
19
+ textEntryMathWithImagePage.steps.checkAnswer();
20
+ break;
21
+ case checkAnswerViews[2]:
22
+ studentViewPage.steps.checkAnswer();
23
+ break;
24
+ default:
25
+ throw new Error(`Unsupported page identifier: ${view}`);
26
+ }
27
+ };
28
+
29
+ describe(`Check answer functionality - ${view}`, { tags: 'smoke' }, () => {
30
+ abortEarlySetup();
31
+ before(() => {
32
+ switch (view) {
33
+ case 'Question preview':
34
+ textEntryMathWithImagePage.steps.navigateToCreateQuestion('Text Entry Math');
35
+ cy.barsPreLoaderWait();
36
+ textEntryMathWithImagePage.steps.addBackground();
37
+ textEntryMathWithImagePage.steps.addTextInQuestionInstructionsInputField('Enter the correct answer in the response field');
38
+ textEntryMathWithImagePage.steps.uploadFile('highlightImage.jpg');
39
+ textEntryMathWithImagePage.steps.verifyImageIsUploaded();
40
+ textEntryMathWithImagePage.steps.insertResponseArea(10);
41
+ textEntryMathWithImagePage.steps.insertResponseArea(40);
42
+ textEntryMathWithImagePage.steps.insertResponseArea(80);
43
+ textEntryMathWithImagePage.steps.expandResponseAccordionSpecifyCorrectAnswer(0);
44
+ textEntryMathWithImagePage.steps.addInputToResponseAnswerInputFieldSpecifyCorrectAnswer(0, 'Correct answer 1');
45
+ textEntryMathWithImagePage.steps.expandResponseAccordionSpecifyCorrectAnswer(1);
46
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldSpecifyCorrectAnswerSection(1);
47
+ textEntryMathWithImagePage.steps.selectEquationEditorOptionFromCKEditorToolbar();
48
+ equationEditorFlyout.steps.enterQuadraticEquation();
49
+ textEntryMathWithImagePage.steps.expandResponseAccordionSpecifyCorrectAnswer(2);
50
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldSpecifyCorrectAnswerSection(2);
51
+ textEntryMathWithImagePage.steps.selectEquationEditorOptionFromCKEditorToolbar();
52
+ equationEditorFlyout.steps.enterEquationUsingPiSymbol();
53
+ textEntryMathWithImagePage.steps.allotPoints(20);
54
+ textEntryMathWithImagePage.steps.checkAllowStudentToCheckAnswerCheckbox();
55
+ textEntryMathWithImagePage.steps.switchToPreviewTab();
56
+ break;
57
+ case 'Item preview':
58
+ cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
59
+ itemPreviewPage.steps.switchToPreviewTab();
60
+ break;
61
+ case 'Student view':
62
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
63
+ break;
64
+ }
65
+ });
66
+
67
+ beforeEach(() => {
68
+ switch (view) {
69
+ case 'Question preview':
70
+ textEntryMathWithImagePage.steps.switchToStudentView();
71
+ textEntryMathWithImagePage.steps.resetQuestionPreview();
72
+ break;
73
+ case 'Item preview':
74
+ textEntryMathWithImagePage.steps.switchToStudentView();
75
+ itemPreviewPage.steps.resetQuestionPreview();
76
+ break;
77
+ case 'Student view':
78
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
79
+ break;
80
+ }
81
+ });
82
+
83
+ if (view === 'Question preview') {
84
+ after(() => {
85
+ textEntryMathWithImagePage.steps.clickOnSaveQuestionButton();
86
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
87
+ itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
88
+ });
89
+ };
90
+
91
+ it('When the user selects \'Check answer\' button without attempting the question, then correct/incorrect icons, correct/incorrect answer label and border should not be displayed', () => {
92
+ checkAnswer(view);
93
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectIconNotExist(0);
94
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectIconNotExist(1);
95
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectIconNotExist(2);
96
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectAnswerLabelNotExist();
97
+ textEntryMathWithImagePage.steps.verifyCorrectAnswerSectionNotExists();
98
+ });
99
+
100
+ it('When the user attempts the question incorrectly, then on clicking Check answer button, incorrect icons should be displayed besides all responses, and \'Your answer is incorrect\' should be displayed', () => {
101
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
102
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Incorrect answer 1');
103
+ equationEditorFlyout.steps.clickOnOkButton();
104
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(1);
105
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Incorrect answer 2');
106
+ equationEditorFlyout.steps.clickOnOkButton();
107
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(2);
108
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Incorrect answer 3');
109
+ equationEditorFlyout.steps.clickOnOkButton();
110
+ checkAnswer(view);
111
+ textEntryMathWithImagePage.steps.verifyIncorrectResponseIcon(0);
112
+ textEntryMathWithImagePage.steps.verifyIncorrectResponseIcon(1);
113
+ textEntryMathWithImagePage.steps.verifyIncorrectResponseIcon(2);
114
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
115
+ textEntryMathWithImagePage.steps.verifyCorrectAnswerSectionNotExists();
116
+ });
117
+
118
+ it('When the user attempts the question partially correct, then on clicking Check answer button, correct icons should be displayed beside the correct responses, incorrect icons should be displayed beside the incorrect responses, and \'Your answer is incorrect\' should be displayed', () => {
119
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
120
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Correct answer 1');
121
+ equationEditorFlyout.steps.clickOnOkButton();
122
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(1);
123
+ equationEditorFlyout.steps.enterQuadraticEquation();
124
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(2);
125
+ equationEditorFlyout.steps.enterTextInPreviewInputField('6*3.14');
126
+ equationEditorFlyout.steps.clickOnOkButton();
127
+ checkAnswer(view);
128
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(0);
129
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(1);
130
+ textEntryMathWithImagePage.steps.verifyIncorrectResponseIcon(2);
131
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
132
+ textEntryMathWithImagePage.steps.verifyCorrectAnswerSectionNotExists();
133
+ });
134
+
135
+ it('When the user attempts the question partially correct with a incomplete response, then on clicking Check answer button, incorrect icons should be displayed beside the incorrect responses, no icons should be displayed beside unattempted responses and \'Your answer is incorrect\' should be displayed', () => {
136
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
137
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Correct answer 1');
138
+ equationEditorFlyout.steps.clickOnOkButton();
139
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(1);
140
+ equationEditorFlyout.steps.enterQuadraticEquation();
141
+ checkAnswer(view);
142
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(0);
143
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(1);
144
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectIconNotExist(2);
145
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
146
+ textEntryMathWithImagePage.steps.verifyCorrectAnswerSectionNotExists();
147
+ });
148
+
149
+ it('When user attempts the question correctly, then on clicking Check answer button, then correct icons should be displayed beside all the responses, and \'Your answer is correct\' should be displayed', () => {
150
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(0);
151
+ equationEditorFlyout.steps.enterTextInPreviewInputField('Correct answer 1');
152
+ equationEditorFlyout.steps.clickOnOkButton();
153
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(1)
154
+ equationEditorFlyout.steps.enterQuadraticEquation();
155
+ textEntryMathWithImagePage.steps.focusInResponseAnswerInputFieldPreviewTab(2);
156
+ equationEditorFlyout.steps.enterEquationUsingPiSymbol();
157
+ checkAnswer(view);
158
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(0);
159
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(1);
160
+ textEntryMathWithImagePage.steps.verifyCorrectResponseIcon(2);
161
+ textEntryMathWithImagePage.steps.verifyCorrectIncorrectAnswerLabel('correct');
162
+ textEntryMathWithImagePage.steps.verifyCorrectAnswerSectionNotExists();
163
+ });
164
+ });
165
+ });
166
+ });