itemengine-cypress-automation 1.0.245-2AugustRepoUpdate-589ab5f.0 → 1.0.246-revertedSaveAsYouGo-5fef93d.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +1 -1
  2. package/cypress/e2e/ILC/ChartsBar/headerSection.js +1 -16
  3. package/cypress/e2e/ILC/ChartsLine/headerSection.js +1 -18
  4. package/cypress/e2e/ILC/ContentBlocks/editTabBasics.js +3 -2
  5. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +4 -2
  6. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/draggableOptions.js +4 -2
  7. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/headerSection.js +5 -2
  8. package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +2 -0
  9. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +4 -2
  10. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/draggableOptions.js +4 -2
  11. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/editTabBasicSection.js +2 -2
  12. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/headerSection.js +5 -3
  13. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/dropdownOptionsSection.js +2 -2
  14. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/editTabBasicSection.js +2 -2
  15. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/headerSection.js +5 -2
  16. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +6 -4
  17. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/draggableOptions.js +1 -0
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/headerSection.js +8 -2
  19. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/dropdownOptionsSection.js +1 -1
  20. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editTabBasicSection.js +2 -3
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/headerSection.js +6 -2
  22. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/supportedFileTypes.js +3 -2
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/HeaderSection.js +4 -2
  24. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabBasicSection.js +2 -3
  25. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +3 -2
  26. package/cypress/e2e/ILC/Graphing/headerSection.js +3 -2
  27. package/cypress/e2e/ILC/GridFill/headerSection.js +3 -1
  28. package/cypress/e2e/ILC/GridFill/specifyCorrectAnswerSection.js +3 -3
  29. package/cypress/e2e/ILC/ImageHighlight/additionalSettingsBasic.js +2 -0
  30. package/cypress/e2e/ILC/ImageHighlight/headerSection.js +4 -2
  31. package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +8 -6
  32. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +8 -2
  33. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +225 -0
  34. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialDifferentWeightsBasic.js +89 -0
  35. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +225 -0
  36. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +225 -0
  37. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +405 -0
  38. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +201 -0
  39. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialEqualWeightsBasic.js +147 -0
  40. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +171 -0
  41. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +203 -0
  42. package/cypress/e2e/ILC/Matching/clickAndDrop.js +5 -3
  43. package/cypress/e2e/ILC/Matching/headerSection.js +10 -2
  44. package/cypress/e2e/ILC/Matching/questionInstructionsAndPromptSection.js +17 -4
  45. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDropzoneBorderStyleProperties.js +113 -0
  46. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDropzoneProperties.js +251 -0
  47. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationLayoutProperties.js +227 -0
  48. package/cypress/e2e/ILC/MultipleSelection/headerSection.js +5 -2
  49. package/cypress/e2e/ILC/MultipleSelectionGridNew/headerSection.js +9 -2
  50. package/cypress/e2e/ILC/NumberLine/headerSection.js +3 -2
  51. package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +4 -3
  52. package/cypress/e2e/ILC/ShortTextResponseNew/headerSection.js +4 -2
  53. package/cypress/e2e/ILC/SingleSelection/headerSection.js +5 -2
  54. package/cypress/e2e/ILC/SingleSelectionGridNew/headerSection.js +9 -2
  55. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +1 -1
  56. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +1 -1
  57. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +1 -1
  58. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
  59. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +1 -1
  60. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +1 -1
  61. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsScoringBasic.js +4 -4
  62. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
  63. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +1 -1
  64. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +1 -1
  65. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasic.js +2 -2
  66. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +3 -3
  67. package/cypress/e2e/ILC/TextEntryMath/editTabBasicSection.js +4 -4
  68. package/cypress/e2e/ILC/TextEntryMath/editTabScoringSection.js +6 -6
  69. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodEquivalentStructures.js +5 -5
  70. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchExact.js +1 -1
  71. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchValue.js +1 -1
  72. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodSymbolsAreEquivalent.js +1 -1
  73. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodValueIsEquivalent.js +1 -1
  74. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodsWithoutSetResponse.js +10 -10
  75. package/cypress/e2e/ILC/TextEntryMath/minimumScoringPenaltyPointsAndRoundingDropdown.js +3 -3
  76. package/cypress/e2e/ILC/TextEntryMath/previewContentsForAllViews.smoke.js +1 -1
  77. package/cypress/e2e/ILC/TextSelection/headerSection.js +5 -2
  78. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +2 -1
  79. package/cypress/e2e/ILC/ToolAudioPlayerNew/headerSection.js +2 -3
  80. package/cypress/e2e/ILC/UploadResponse/editTabBasicSection.js +2 -1
  81. package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +2 -2
  82. package/cypress/pages/components/autoScoredSetCorrectAnswerSection.js +11 -0
  83. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +27 -9
  84. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +3 -2
  85. package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +2 -1
  86. package/cypress/pages/components/optionsWrapperComponent.js +2 -2
  87. package/cypress/pages/components/scoringSectionBaseEditTab.js +2 -2
  88. package/cypress/pages/createItemPage.js +1 -1
  89. package/cypress/pages/dialogBoxBase.js +7 -13
  90. package/cypress/pages/dragAndDropIntoCategoriesPage.js +5 -4
  91. package/cypress/pages/graphingPage.js +7 -4
  92. package/cypress/pages/gridFillPage.js +16 -15
  93. package/cypress/pages/matchingPage.js +613 -6
  94. package/cypress/pages/multipleSelectionGridPage.js +5 -4
  95. package/cypress/pages/multipleSelectionPage.js +5 -4
  96. package/cypress/pages/numberLinePage.js +13 -2
  97. package/cypress/pages/shortTextResponsePage.js +3 -2
  98. package/cypress/pages/textEntryMathPage.js +7 -0
  99. package/package.json +1 -1
@@ -32,8 +32,8 @@ export const drawingToolbarOptionsAndAdditionalOptions = {
32
32
  toolType: 'dialog'
33
33
  },
34
34
  {
35
- displayName: 'Upload image ',
36
- tooltipText: 'The \'Upload image \' tool uploads an image.',
35
+ displayName: 'Insert image',
36
+ tooltipText: 'The \'Insert image\' tool uploads an image.',
37
37
  toolType: 'dialog'
38
38
  },
39
39
  {
@@ -222,6 +222,17 @@ const tests = {
222
222
  });
223
223
  },
224
224
 
225
+ verifyWarningPopupAndTabNavigationWhenNoPointsAddedInAlternateTab: () => {
226
+ it('When user clicks on Correct tab when all the mandatory fields are not filled in Alternate tab a warning popup should be displayed and on closing the popup user should be on the Alternate 2 tab.', () => {
227
+ autoScoredSetCorrectAnswerSection.correctTab()
228
+ .click();
229
+ dialogBoxBase.steps.allFieldsRequiredWarningPopupContents();
230
+ dialogBoxBase.steps.closeWarningPopup();
231
+ autoScoredSetCorrectAnswerSection.alternateAnswerTab(2)
232
+ .should('have.attr', 'aria-selected', 'true');
233
+ });
234
+ },
235
+
225
236
  verifyAutoScoredPointsErrorMessageWhenPointsFieldIsEmpty: (tabName) => {
226
237
  it(`When the user focuses in and out of the empty points input field, \'Error: Please enter points.\' validation text should be displayed below the points input field and error icon should be displayed on the \'${tabName}\'`, () => {
227
238
  scoringSectionBase.pointsInputField()
@@ -317,15 +317,33 @@ const tests = {
317
317
  .verifyPseudoClassBeforeProperty('color', css.color.activeButtons);
318
318
  });
319
319
 
320
- it('If user has not selected correct answer in the correct accordion, then the Add alternative answer button should be in disabled state', () => {
321
- utilities.verifyElementDisabled(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
320
+ it('If user has not selected correct answer in the correct accordion, the user should get a warning popup', () => {
321
+ autoScoredSpecifyCorrectAnswerSection.steps.clickOnAddAlternativeAnswerButton();
322
+ dialogBoxBase.steps.allFieldsRequiredWarningPopupContents();
322
323
  });
323
324
 
324
- it('When user hovers over the disabled \'Add alternative answer\' button then \'Please set a correct answer\' message should be displayed in a tooltip', () => {
325
- autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton()
326
- .realHover();
327
- utilities.verifyInnerText(commonComponents.tooltipText(), 'Please set a correct answer');
328
- utilities.hoverAwayFromElement(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
325
+ it('Warning popup should close on clicking the Close icon button', () => {
326
+ dialogBoxBase.steps.closeWarningPopup();
327
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
328
+ });
329
+
330
+ it('\'Error: Please set a correct answer.\' validation error messages should be displayed in the correct accordion, points error message should not be displayed', () => {
331
+ autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
332
+ .within(() => {
333
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
334
+ });
335
+ scoringSectionBaseEditTab.pointsWrapper()
336
+ .within(() => {
337
+ utilities.verifyElementVisibilityState(scoringSectionBaseEditTab.pleaseEnterPointsErrorMessage(), 'notExist');
338
+ });
339
+ if (questionType != 'list ordering' && questionType != 'short text response' && questionType != 'text entry math' && questionType != 'text selection' && questionType != 'fill in the gaps with text' && questionType != 'fill in the gaps over image text') {
340
+ steps.verifySpecifyCorrectAnswerErrorMessage();
341
+ }
342
+ else if (questionType === 'short text response' || questionType === 'fill in the gaps with text' || questionType === 'fill in the gaps over image text' || questionType === 'text entry math') {
343
+ utilities.verifyInnerText(utilities.getNthElement(commonComponents.errorMessage(), -1), 'Error: Answer is required.');
344
+ } else if (questionType === 'text selection') {
345
+ utilities.verifyInnerText(commonComponents.alertMessage(), 'Error: Please set a correct answer.');
346
+ }
329
347
  });
330
348
 
331
349
  it('CSS of warning popup', { tags: 'css' }, () => {
@@ -353,8 +371,8 @@ const tests = {
353
371
  it('When user tries to expand correct accordion when all the mandatory fields are not filled in the alternative accordion, then a warning popup should be displayed and on closing the popup, alternative 2 accordion should be in expanded state', () => {
354
372
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
355
373
  .click();
356
- //TODO: Need to add error message according to question types
357
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
374
+ dialogBoxBase.steps.allFieldsRequiredWarningPopupContents();
375
+ dialogBoxBase.steps.closeWarningPopup();
358
376
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
359
377
  .eq(1)
360
378
  .should('have.attr', 'aria-expanded', 'true');
@@ -764,9 +764,10 @@ const tests = {
764
764
  });
765
765
 
766
766
  //Note: the expand and close dropdown does not work hence selecting one option here, the error message appears
767
- it('When user expands and collapses the dropdown without selecting any option, \'Error: Please set a correct answer.\' error message should not be displayed', () => {
767
+ it('When user expands and collapses the dropdown without selecting any option, \'Error: Please set a correct answer.\' error message should be displayed', () => {
768
768
  fillInTheGapsDropdownCommonComponent.steps.selectResponseFromDropdownSpecifyCorrectAnswerSection(0, 'Flower');
769
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
769
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible');
770
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
770
771
  });
771
772
 
772
773
  it('When the user selects any option from the dropdown, then error message should disappear and that option should be displayed on the dropdown', () => {
@@ -1237,7 +1237,8 @@ const tests = {
1237
1237
 
1238
1238
  it('When user focuses in and out of the response accordion \'Answer\' input field, \'Error: Answer is required.\' error message should be displayed', () => {
1239
1239
  fillInTheGapsTextCommonComponent.steps.focusInAndFocusOutOfResponseAnswerInputFieldSpecifyCorrectAnswer(0, 0);
1240
- commonComponents.steps.verifyErrorMessageIsNotDisplayed();
1240
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible');
1241
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Answer is required.');
1241
1242
  });
1242
1243
 
1243
1244
  it('When gives an input to \'Answer\' input field, then error message should disappear', () => {
@@ -78,7 +78,7 @@ const steps = {
78
78
  .eq(index)
79
79
  .within(() => {
80
80
  commonComponents.errorMessage()
81
- .should('not.exist');
81
+ .should('have.text', 'Error: Option is required.');
82
82
  });
83
83
  },
84
84
 
@@ -345,7 +345,7 @@ const tests = {
345
345
  .eq(inputFieldIndex)
346
346
  .click()
347
347
  .blur();
348
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
348
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Option is required.');
349
349
  });
350
350
 
351
351
  it('User should be able to enter text in options input field and \'Error: Option is required.\' error message should disappear', () => {
@@ -362,13 +362,13 @@ const tests = {
362
362
  utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
363
363
  });
364
364
 
365
- it('If the user enters points more than the allocated points in Minimum points input field, an error message \'Error: Minimum score cannot be greater than allocated points.: *points in points field*\' should not be displayed', () => {
365
+ it('If the user enters points more than the allocated points in Minimum points input field, an error message \'Error: Minimum score cannot be greater than allocated points.: *points in points field*\' should be displayed', () => {
366
366
  scoringSectionBaseEditTab.steps.allotMinimumPoints(20);
367
367
  scoringSectionBaseEditTab.minimumPointsInputField()
368
368
  .focus();
369
369
  scoringSectionBaseEditTab.minimumPointsInputField()
370
370
  .blur();
371
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
371
+ utilities.verifyInnerText(commonComponents.errorMessage().last(), 'Error: Minimum score cannot be greater than allocated points.: 10');
372
372
  });
373
373
 
374
374
  it('The error message should disappear once the user removes the entered points from the Minimum score awarded (if attempted) input field', () => {
@@ -17,7 +17,7 @@ const selectors = {
17
17
  itemTitle: () => cy.get('.ItemLevel-Header'),
18
18
  tagsButton: () => cy.get('.ngie-button').contains('Tags'),
19
19
  tagsInputField: () => cy.get('.tags-chip-container'),
20
- settingsBtn: () => cy.get('.ngie-icon-with-label-btn').eq(2),
20
+ settingsBtn: () => cy.get('.ngie-icon-with-label-btn').contains('Settings'),
21
21
  rowQuestionWrapper: () => cy.get('[class*="Widgetstyles__RowWrapper"]'),
22
22
  columnQuestionWrapper: () => cy.get('[class*="ColumnComponentstyles__WidgetsWrapper"]'),
23
23
  panelWrapper: () => cy.get('.column-tab-without-scroll'),
@@ -15,15 +15,11 @@ const selectors = {
15
15
  }
16
16
 
17
17
  const steps = {
18
- allFieldsRequiredWarningPopupContents: (requiredFieldsArray = null) => {
18
+ allFieldsRequiredWarningPopupContents: () => {
19
19
  utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
20
- utilities.verifyInnerText(dialogBoxBase.dialogBoxTitle(), 'Incomplete question');
21
- utilities.verifyInnerText(dialogBoxBase.dialogBoxHelpText(), "Are you sure you want to save? Required fields are missing:");
22
- if (requiredFieldsArray != null) {
23
- requiredFieldsArray.forEach((field, index) => {
24
- utilities.verifyInnerText(utilities.getNthElement(dialogBoxBase.dialogBoxWarningFieldList(), index), field);
25
- });
26
- }
20
+ utilities.verifyInnerText(dialogBoxBase.dialogBoxTitle(), 'Warning!');
21
+ utilities.verifyInnerText(dialogBoxBase.dialogBoxContent(), 'Please fill the required fields.');
22
+ utilities.verifyElementVisibilityState(dialogBoxBase.buttonClose(), 'visible');
27
23
  },
28
24
 
29
25
  closeWarningPopup: () => {
@@ -52,13 +48,11 @@ const tests = {
52
48
  it('When user has made no edits and clicks on Save Question button, the user should get a warning popup', () => {
53
49
  createQuestionBasePage.saveQuestionButton()
54
50
  .click();
55
- if (requiredFieldsArray != null) {
56
- dialogBoxBase.steps.allFieldsRequiredWarningPopupContents(requiredFieldsArray);
57
- }
51
+ dialogBoxBase.steps.allFieldsRequiredWarningPopupContents();
58
52
  });
59
53
 
60
- it('Leave page popup should close on clicking the reject button', () => {
61
- dialogBoxBase.steps.clickOnRejectButtonInDialogBox();
54
+ it('Warning popup should close on clicking the Close icon button', () => {
55
+ dialogBoxBase.steps.closeWarningPopup();
62
56
  utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
63
57
  });
64
58
  },
@@ -2315,18 +2315,19 @@ const tests = {
2315
2315
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Bat': 0 });
2316
2316
  });
2317
2317
 
2318
- it(`When the user has removed all the options from the dropzone in the ${accordionName} accordion, error message should not be thrown on the \'${accordionName}\' accordion`, () => {
2318
+ it(`When the user has removed all the options from the dropzone in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
2319
2319
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInOptionsContainerInSpecifyCorrectAnswerSection('Bat');
2320
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist')
2320
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
2321
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
2321
2322
  if (accordionName == 'Correct') {
2322
2323
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
2323
2324
  .within(() => {
2324
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
2325
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
2325
2326
  });
2326
2327
  } else {
2327
2328
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
2328
2329
  .within(() => {
2329
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
2330
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
2330
2331
  });
2331
2332
  };
2332
2333
  });
@@ -1761,25 +1761,28 @@ const tests = {
1761
1761
  graphingPage.steps.verifyPointsPlottedOnSpecifyCorrectAnswerSection([{ x: 0, xRange: 20, y: 1, yRange: 20 }, { x: 0, xRange: 20, y: 2, yRange: 20 }]);
1762
1762
  });
1763
1763
 
1764
- it(`When the user resets the graph in the ${accordionName} accordion, error message should not be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
1764
+ it(`When the user resets the graph in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
1765
1765
  graphingPage.graphControlOptionSpecifyCorrectAnswer('Reset')
1766
1766
  .click();
1767
1767
  graphingPage.resetPopupConfirmResetButton()
1768
1768
  .click();
1769
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
1769
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
1770
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
1770
1771
  if (accordionName == 'Correct') {
1771
1772
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
1772
1773
  .within(() => {
1773
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
1774
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
1774
1775
  });
1775
1776
  } else {
1776
1777
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
1777
1778
  .within(() => {
1778
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
1779
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
1779
1780
  });
1780
1781
  };
1781
1782
  });
1782
1783
 
1784
+ autoScoredSpecifyCorrectAnswerSection.tests.verifyAutoScoredCorrectAnswerErrorMessageCSSAndA11y();
1785
+
1783
1786
  it('When the user plots on the graph then the error message should disappear', () => {
1784
1787
  graphingPage.steps.selectGraphToolOptionSpecifyCorrectAnswer('Circle');
1785
1788
  graphingPage.steps.plotPointsOnGraphSpecifyCorrectAnswerSection([{ x: 0, xRange: 20, y: 1, yRange: 20 }, { x: 0, xRange: 20, y: 2, yRange: 20 }]);
@@ -2990,18 +2990,19 @@ const tests = {
2990
2990
  gridFillPage.steps.selectCellSpecifyCorrectAnswerSection(0, 0);
2991
2991
  });
2992
2992
 
2993
- it(`When user deselect all the cells in the grid in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should not be displayed \'${accordionName}\' accordion`, () => {
2993
+ it(`When user deselect all the cells in the grid in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
2994
2994
  gridFillPage.steps.deselectCellSpecifyCorrectAnswerSection(0, 0);
2995
- commonComponents.steps.verifyErrorMessageIsNotDisplayed();
2995
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
2996
+ utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
2996
2997
  if (accordionName == 'Correct') {
2997
2998
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
2998
2999
  .within(() => {
2999
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
3000
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
3000
3001
  });
3001
3002
  } else {
3002
3003
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
3003
3004
  .within(() => {
3004
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
3005
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
3005
3006
  });
3006
3007
  };
3007
3008
  });
@@ -3009,17 +3010,6 @@ const tests = {
3009
3010
  it('When user selects a cell by clicking on it, then error message should not be displayed', () => {
3010
3011
  gridFillPage.steps.selectCellSpecifyCorrectAnswerSection(0, 0);
3011
3012
  commonComponents.steps.verifyErrorMessageIsNotDisplayed();
3012
- if (accordionName == 'Correct') {
3013
- autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
3014
- .within(() => {
3015
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
3016
- });
3017
- } else {
3018
- autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
3019
- .within(() => {
3020
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
3021
- });
3022
- };
3023
3013
  });
3024
3014
 
3025
3015
  it(`\'Match exact position of cells\' label and checkbox should be displayed in the ${accordionName} accordion and the checkbox should be checked`, () => {
@@ -3050,6 +3040,17 @@ const tests = {
3050
3040
  gridFillPage.steps.clearCellShadeCountInputField();
3051
3041
  utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
3052
3042
  utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
3043
+ if (accordionName == 'Correct') {
3044
+ autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
3045
+ .within(() => {
3046
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
3047
+ });
3048
+ } else {
3049
+ autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
3050
+ .within(() => {
3051
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
3052
+ });
3053
+ };
3053
3054
  });
3054
3055
 
3055
3056
  it('CSS of \'Cell shade count\' input field error message', { tags: 'css' }, () => {