itemengine-cypress-automation 1.0.166 → 1.0.169-uploadResponseMigration-83ab996.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +2 -2
  2. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +11 -22
  3. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +7 -18
  4. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +6 -11
  5. package/cypress/e2e/ILC/Graphing/previewContentsForAllViews.smoke.js +1 -0
  6. package/cypress/e2e/ILC/Graphing/toolsControlsAndBackgroundSection.js +36 -2
  7. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +34 -22
  8. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +24 -8
  9. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +25 -5
  10. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +114 -68
  11. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +111 -67
  12. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +123 -71
  13. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +63 -41
  14. package/cypress/e2e/ILC/GridFill/scoring/manuallyAndNonScored.js +25 -21
  15. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsBasic.js +85 -50
  16. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +115 -68
  17. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +98 -54
  18. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +120 -72
  19. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +3 -3
  20. package/cypress/e2e/ILC/Matching/specifyCorrectAnswerSection.js +1 -1
  21. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +4 -4
  22. package/cypress/fixtures/theme/ilc.json +26 -14
  23. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +1 -1
  24. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +0 -3
  25. package/cypress/pages/components/autoScoredStudentViewSettings.js +1 -1
  26. package/cypress/pages/components/colorPopupComponent.js +2 -2
  27. package/cypress/pages/components/gridQuestionCommonComponent.js +2 -629
  28. package/cypress/pages/components/index.js +0 -3
  29. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  30. package/cypress/pages/components/measuringToolComponent.js +2 -2
  31. package/cypress/pages/components/scoringSectionBaseEditTab.js +1 -1
  32. package/cypress/pages/components/setPointsPopupBase.js +4 -6
  33. package/cypress/pages/components/specifyRowsAndColumnsComponent.js +3 -60
  34. package/cypress/pages/components/toolSettingsComponent.js +12 -80
  35. package/cypress/pages/dragAndDropIntoCategoriesPage.js +8 -0
  36. package/cypress/pages/feedbackScalePage.js +449 -591
  37. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +1 -3
  38. package/cypress/pages/graphingPage.js +145 -9
  39. package/cypress/pages/gridFillPage.js +120 -135
  40. package/cypress/pages/highlightPage.js +394 -0
  41. package/cypress/pages/index.js +2 -5
  42. package/cypress/pages/matchingPage.js +20 -78
  43. package/cypress/pages/multipleSelectionGridPage.js +1 -88
  44. package/cypress/pages/singleSelectionGridPage.js +0 -86
  45. package/cypress/support/migrationHelpers/extractLrnQuestionData.js +38 -1
  46. package/cypress/support/migrationHelpers/lrnQestionTypesENUM.js +1 -0
  47. package/cypress/support/migrationHelpers/migrationScript.js +4 -0
  48. package/cypress/support/migrationHelpers/verifyIeQuestionData.js +34 -2
  49. package/package.json +2 -2
  50. package/cypress/e2e/ILC/BrainingCampManipulative/additionalSettings.js +0 -83
  51. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +0 -200
  52. package/cypress/e2e/ILC/BrainingCampManipulative/editTabScoringSection.js +0 -56
  53. package/cypress/e2e/ILC/BrainingCampManipulative/gradingViewAndCorrectAnswerViewContents.smoke.js +0 -95
  54. package/cypress/e2e/ILC/BrainingCampManipulative/headerSection.js +0 -71
  55. package/cypress/e2e/ILC/BrainingCampManipulative/previewTabContent.smoke.js +0 -72
  56. package/cypress/e2e/ILC/BrainingCampManipulative/toolSettings.js +0 -71
  57. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +0 -432
  58. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +0 -134
  59. package/cypress/e2e/ILC/FeedbackScaleNew/feedbackScaleStylePreviewTab.js +0 -161
  60. package/cypress/e2e/ILC/FeedbackScaleNew/numbersFeedbackScaleStyle.js +0 -308
  61. package/cypress/e2e/ILC/FeedbackScaleNew/previewContentsForAllViews.smoke.js +0 -216
  62. package/cypress/e2e/ILC/FeedbackScaleNew/starsHeartsFeedbackScaleStyle.js +0 -336
  63. package/cypress/e2e/ILC/FeedbackScaleNew/textFeedbackScaleStyle.js +0 -570
  64. package/cypress/e2e/ILC/FeedbackScaleNew/thumbsFeedbackScaleStyle.js +0 -214
  65. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettings.js +0 -356
  66. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettingsResponseAccordion.js +0 -299
  67. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +0 -355
  68. package/cypress/e2e/ILC/Matching/maximumCapacityPerDropzoneSection.js +0 -309
  69. package/cypress/e2e/ILC/Matching/toolSettings.js +0 -72
  70. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +0 -1033
  71. package/cypress/e2e/ILC/MultipleSelectionGridNew/test.js +0 -28
  72. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +0 -236
  73. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +0 -239
  74. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +0 -278
  75. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +0 -178
  76. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +0 -407
  77. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +0 -273
  78. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +0 -278
  79. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +0 -228
  80. package/cypress/e2e/ILC/NumberLine/additionalSettings.js +0 -120
  81. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +0 -659
  82. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +0 -149
  83. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +0 -151
  84. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +0 -171
  85. package/cypress/e2e/ILC/NumberLine/headerSection.js +0 -76
  86. package/cypress/e2e/ILC/NumberLine/minimumScoringPenaltyPointsAndRoundingDropdown.js +0 -54
  87. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +0 -200
  88. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +0 -67
  89. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +0 -135
  90. package/cypress/e2e/ILC/NumberLine/toolSettings.js +0 -73
  91. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +0 -372
  92. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +0 -1014
  93. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +0 -235
  94. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +0 -235
  95. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +0 -235
  96. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsBasic.js +0 -457
  97. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithAlternativePointsGreaterThanCorrectPoints.js +0 -342
  98. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +0 -342
  99. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +0 -342
  100. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsBasic.js +0 -155
  101. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +0 -314
  102. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +0 -275
  103. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +0 -314
  104. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +0 -290
  105. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +0 -142
  106. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.js +0 -137
  107. package/cypress/pages/brainingCampManipulativePage.js +0 -122
  108. package/cypress/pages/components/defaultToolDropdown.js +0 -77
  109. package/cypress/pages/components/resetPopupComponent.js +0 -74
  110. package/cypress/pages/components/toolsAndControlsComponent.js +0 -69
  111. package/cypress/pages/feedbackScalePage copy.js +0 -716
  112. package/cypress/pages/numberLinePage.js +0 -723
  113. package/cypress/pages/textSelectionPage.js +0 -582
@@ -1,6 +1,6 @@
1
1
  import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
- import { createQuestionBasePage, questionInstructionsComponent, autoScoredScoringPreviewTab, scoringSectionBaseEditTab, draggableOptionContainer, draggableOptionsSectionComponent, correctIncorrectAnswerLabelComponent, maximumCapacityPerDropzoneComponent, optionsWrapperComponent, ckEditorToolbar, equationEditorFlyout, autoScoredStudentViewSettings, autoScoredSpecifyCorrectAnswerSection, commonComponents, randomizeOptionsComponent, autoScoredScoringSectionMultiResponseType, allowMultipleInstancesOfSameDraggableOptionComponent, studentViewSettingsLabelComponent, ariaLabelSectionComponent, additionalSettingsAccessibilitySectionComponent, gradingViewEnumerationComponent, additionalSettingsPanel, toolSettingsComponent } from "./components";
3
+ import { createQuestionBasePage, questionInstructionsComponent, autoScoredScoringPreviewTab, scoringSectionBaseEditTab, draggableOptionContainer, draggableOptionsSectionComponent, correctIncorrectAnswerLabelComponent, maximumCapacityPerDropzoneComponent, optionsWrapperComponent, ckEditorToolbar, equationEditorFlyout, autoScoredStudentViewSettings, autoScoredSpecifyCorrectAnswerSection, commonComponents, randomizeOptionsComponent, autoScoredScoringSectionMultiResponseType, allowMultipleInstancesOfSameDraggableOptionComponent, studentViewSettingsLabelComponent, ariaLabelSectionComponent, additionalSettingsAccessibilitySectionComponent, gradingViewEnumerationComponent, additionalSettingsPanel, } from "./components";
4
4
  import { dialogBoxBase } from "./dialogBoxBase";
5
5
  const css = Cypress.env('css');
6
6
  const options = ['option 1', 'option 2', 'option 3'];
@@ -15,21 +15,20 @@ const selectors = {
15
15
  ...autoScoredScoringSectionMultiResponseType,
16
16
  ...autoScoredSpecifyCorrectAnswerSection,
17
17
  ...draggableOptionContainer,
18
- ...maximumCapacityPerDropzoneComponent,
19
- ...toolSettingsComponent,
20
18
  ...allowMultipleInstancesOfSameDraggableOptionComponent,
21
19
  ...randomizeOptionsComponent,
22
20
  ...gradingViewEnumerationComponent,
23
21
  ...ariaLabelSectionComponent,
24
22
  ...scoringSectionBaseEditTab,
25
23
  ...additionalSettingsPanel,
24
+ ...maximumCapacityPerDropzoneComponent,
26
25
 
27
26
  //Edit tab
28
27
  promptInputField: () => cy.get('.edit-mcq-stems-wrapper [role="textbox"]'),
29
28
  promptInputFieldWrapper: () => cy.get('.edit-mcq-stems-wrapper [class*="SingleOptionstyle__EditorBlockWrapper"]'),
30
29
  optionInputField: () => cy.get('.edit-mcq-options-wrapper [data-rbd-draggable-id*="option-draggable"] [role="textbox"]'),
31
- optionsLabel: () => cy.get('.cloze-with-drag-and-drop-options-label'),
32
30
  optionWrapper: () => cy.get('.response-options-wrapper [data-rbd-draggable-id*="option-draggable"]'),
31
+ optionNumeration: () => cy.get('.response-options-wrapper [class*="SingleOptionstyle__AdornmentDiv"]'),
33
32
  promptNumeration: () => cy.get('[class*="SingleOptionstyle__AdornmentDiv"]'),
34
33
  promptLabel: () => cy.get('.match-list-stem-label'),
35
34
  promptHeaderLabel: () => cy.get('.prompt-header-container [class*="InlineTextFieldWithDebouncestyles__PropertyLabel"]'),
@@ -42,15 +41,18 @@ const selectors = {
42
41
  dropzoneColumnHeaderPreviewTab: () => cy.get('.preview-container [class*="ClozeWithDragAndDropstyles__HeaderContainer"]').eq(1),
43
42
  dropzoneColumnAndPromptHeaderWrapperSpecifyCorrectAnswerSection: () => cy.get('.correct-answer-accordion [class*="ClozeWithDragAndDropstyles__ResponseHeaderWrapper"]'),
44
43
  //Specify correct answer section
45
- dropzoneSpecifyCorrectAnswerSection: () => cy.get('.authoring-droppable-hotspot-wrapper:visible'),
44
+ dropzoneSpecifyCorrectAnswerSection: () => cy.get('.authoring-droppable-hotspot-wrapper'),
46
45
  optionContainerOptionsSpecifyCorrectAnswerSection: () => cy.get('.draggable-selected-item'),
46
+ optionsLabel: () => cy.get('.cloze-with-drag-and-drop-options-label'),
47
47
  addPromptButton: () => cy.get('.add-option-wrapper-cls button').contains('Add prompt'),
48
48
  deletePromptButton: () => cy.get('[aria-label*="Delete prompt "]'),
49
+ optionsLabel: () => cy.get('.cloze-with-drag-and-drop-options-label'),
50
+ optionWrapper: () => cy.get('.response-options-wrapper [data-rbd-draggable-id*="option-draggable"]'),
49
51
  optionNumeration: () => cy.get('.response-options-wrapper [class*="SingleOptionstyle__AdornmentDiv"]'),
50
- promptSpecifyCorrectAnswerSection: () => cy.get('.stem-container [data-testid="question-instruction-element"]'),
51
- draggableOptionInDropzoneInSpecifyCorrectAnswer: () => cy.get('.item-content-wrapper'),
52
52
  droppedDraggableOptionInDropzoneSpecifyCorrectAnswerSection: () => cy.get('[class*="MultipleDroppedItemstyles__ItemWrapper"]'),
53
53
  optionsContainerSpecifyCorrectAnswerSection: () => cy.get('.draggable-wrapper'),
54
+ promptSpecifyCorrectAnswerSection: () => cy.get('.stem-container [data-testid="question-instruction-element"]'),
55
+ draggableOptionInDropzoneInSpecifyCorrectAnswer: () => cy.get('.item-content-wrapper'),
54
56
 
55
57
  //Penalty points
56
58
  penaltyPointsForEachIncorrectDropzoneInputField: () => cy.get('input[aria-label="Penalty points for each incorrect dropzone"]'),
@@ -72,7 +74,6 @@ const selectors = {
72
74
  correctAnswersNumeration: () => cy.get('.answer-numeration-number-box'),
73
75
  correctAnswerResponseWrapper: () => cy.get('[class*="ClozeWithDragAndDropstyles__AnswerCell"]'),
74
76
  correctAnswersOptions: () => cy.get('.match-list-drag-and-drop .question-text-wrapper'),
75
- correctAnswersWrapper: () => cy.get('.match-list-drag-and-drop'),
76
77
  correctAnswersOptionContainer: () => cy.get('.draggable-selected-option'),
77
78
  questionBorderPreviewTab: () => cy.get('[class*="ClozeWithDragAndDropstyles__WrapperDiv"]'),
78
79
  correctAnswerResponseWrapperWithoutEnumeration: () => cy.get('.answer-status-response-preview-wrapper .item-wrapper'),
@@ -80,8 +81,6 @@ const selectors = {
80
81
  correctIncorrectAnswerLabel: () => cy.get('[class*="AnswerStatusText"]'),
81
82
  previewResponseWrapper: () => cy.get('[class*="ClozeWithDragAndDropstyles__PreviewResponseContainer"]:visible'),
82
83
  droppedDraggableOptionInDropzonePreviewTab: () => cy.get('[class*="MultipleDroppedItemstyles__ItemWrapper"]'),
83
- warningMessage: () => cy.get('[class*="DropzoneLimitErrorMessagestyles__ErrorWrapper"] [class*="DropzoneLimitErrorMessagestyles__ErrorMessage"]'),
84
- warningMessageContainer: () => cy.get('[class*="DropzoneLimitErrorMessagestyles__ErrorWrapper"]'),
85
84
  dropzoneColumnAndPromptHeaderWrapperPreviewTab: () => cy.get('.edit-question-preview-wrapper [class*="ClozeWithDragAndDropstyles__ResponseHeaderWrapper"]')
86
85
  }
87
86
 
@@ -97,16 +96,22 @@ const steps = {
97
96
  ...equationEditorFlyout.steps,
98
97
  ...autoScoredStudentViewSettings.steps,
99
98
  ...autoScoredSpecifyCorrectAnswerSection.steps,
99
+ ...draggableOptionContainer.steps,
100
100
  ...randomizeOptionsComponent.steps,
101
101
  ...draggableOptionsSectionComponent.steps,
102
102
  ...autoScoredScoringSectionMultiResponseType.steps,
103
+ ...draggableOptionsSectionComponent.steps,
103
104
  ...draggableOptionContainer.steps,
104
105
  ...commonComponents.steps,
105
- ...toolSettingsComponent.steps,
106
+ ...draggableOptionsSectionComponent.steps,
107
+ ...draggableOptionContainer.steps,
108
+ ...autoScoredScoringSectionMultiResponseType.steps,
106
109
  ...allowMultipleInstancesOfSameDraggableOptionComponent.steps,
110
+ ...randomizeOptionsComponent.steps,
107
111
  ...additionalSettingsPanel.steps,
108
112
  ...gradingViewEnumerationComponent.steps,
109
113
  ...ariaLabelSectionComponent.steps,
114
+ ...maximumCapacityPerDropzoneComponent.steps,
110
115
 
111
116
  //Edit tab
112
117
  addPrompt: () => {
@@ -601,20 +606,6 @@ const steps = {
601
606
  return matchingPage.optionWrapper().its('length')
602
607
  },
603
608
 
604
- /**
605
- * @param {number} categoryIndex optionIndex of the dropzone in set correct answer section
606
- * @param {string[]} responseArray array of options set as correct responses in a dropzone
607
- */
608
- verifyDraggableOptionInDropzoneSpecifyCorrectAnswerSection: (dropzoneIndex, responseArray) => {
609
- matchingPage.dropzoneSpecifyCorrectAnswerSection()
610
- .eq(dropzoneIndex)
611
- .within(() => {
612
- responseArray.forEach((response, count) => {
613
- utilities.verifyTextContent(utilities.getNthElement(matchingPage.droppedDraggableOptionInDropzoneSpecifyCorrectAnswerSection(), count), response);
614
- });
615
- });
616
- },
617
-
618
609
  //Preview tab
619
610
  /**
620
611
  * Enter text in the answer input fields of the specify correct answer section.
@@ -846,14 +837,6 @@ const steps = {
846
837
  utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'exist');
847
838
  });
848
839
  });
849
- matchingPage.dropzonePreviewTab()
850
- .eq(dropzoneIndex)
851
- .within(() => {
852
- matchingPage.dropzoneOptionPreviewTab()
853
- .eq(optionIndex)
854
- .find('.item-content-wrapper')
855
- .should('have.css', 'border', `1px solid ${css.color.correctAnswer}`)
856
- });
857
840
  },
858
841
 
859
842
  /**
@@ -871,14 +854,6 @@ const steps = {
871
854
  utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'exist');
872
855
  });
873
856
  });
874
- matchingPage.dropzonePreviewTab()
875
- .eq(dropzoneIndex)
876
- .within(() => {
877
- matchingPage.dropzoneOptionPreviewTab()
878
- .eq(optionIndex)
879
- .find('.item-content-wrapper')
880
- .should('have.css', 'border', `1px solid ${css.color.incorrectAnswer}`)
881
- });
882
857
  },
883
858
 
884
859
  /**
@@ -908,19 +883,6 @@ const steps = {
908
883
  });
909
884
  },
910
885
 
911
- /**
912
- * Verifies correct answer responses in the correct answer section and counts the number of correct answer groups.
913
- * @param {string[][]} correctAnswerArray - An array of arrays containing correct answer responses for each group.
914
- */
915
- verifyCorrectAnswerResponsesInCorrectAnswerSectionForMultipleOptions: (correctAnswerArray) => {
916
- correctAnswerArray.forEach((correctAnswerGroup, index) => {
917
- utilities.verifyTextContent(utilities.getNthElement(matchingPage.correctAnswersNumeration(), index), index + 1);
918
- correctAnswerGroup.forEach((answerOption, optionIndex) => {
919
- utilities.verifyTextContent(utilities.getNthElement(matchingPage.correctAnswersWrapper(), index).find('.question-text-wrapper').eq(optionIndex), answerOption);
920
- });
921
- });
922
- },
923
-
924
886
  /**
925
887
  * @param {("correct" | "incorrect")} answerStatus - The status of the answer.
926
888
  * @description Verifies the visibility and content of the correct/incorrect answer label block.
@@ -1137,21 +1099,12 @@ const steps = {
1137
1099
  .eq(dropzoneIndex)
1138
1100
  .within(() => {
1139
1101
  responseArray.forEach((response, count) => {
1140
- utilities.verifyInnerText(utilities.getNthElement(matchingPage.droppedDraggableOptionInDropzonePreviewTab(), count), response);
1102
+ utilities.verifyInnerText(utilities.getNthElement(cy.get('.item-content-container'), count), response);
1141
1103
  });
1142
1104
  });
1143
1105
  },
1144
1106
 
1145
1107
  /**
1146
- * @description this function verifies warning text for limit reached
1147
- * @param {string} warningText warning message displayed
1148
- */
1149
- verifyWarningMessage: (warningText) => {
1150
- utilities.verifyElementVisibilityState(matchingPage.warningMessage(), 'visible');
1151
- utilities.verifyInnerText(matchingPage.warningMessage(), warningText);
1152
- },
1153
-
1154
- /**
1155
1108
  * @param {number} responseAreaIndex Index of the dropzone in preview tab
1156
1109
  * @description Verify drag handle is not visible in filled category cell in preview tab
1157
1110
  */
@@ -1342,17 +1295,7 @@ const steps = {
1342
1295
  */
1343
1296
  verifyDropzoneColumnHeaderTextSpecifyCorrectAnswerSection: (text) => {
1344
1297
  utilities.verifyInnerText(matchingPage.dropzoneColumnHeaderSpecifyCorrectAnswerSection(), text);
1345
- },
1346
-
1347
- clickOnOptionContainerSpecifyCorrectAnswerSection: () => {
1348
- matchingPage.optionsContainerSpecifyCorrectAnswerSection()
1349
- .click()
1350
- },
1351
-
1352
- clickOnOptionContainerPreviewTab: () => {
1353
- matchingPage.optionsContainerPreviewTab()
1354
- .click()
1355
- },
1298
+ }
1356
1299
  }
1357
1300
 
1358
1301
  const tests = {
@@ -1369,7 +1312,6 @@ const tests = {
1369
1312
  ...createQuestionBasePage.tests,
1370
1313
  ...commonComponents.tests,
1371
1314
  ...draggableOptionsSectionComponent.tests,
1372
- ...toolSettingsComponent.tests,
1373
1315
  ...studentViewSettingsLabelComponent.tests,
1374
1316
  ...randomizeOptionsComponent.tests,
1375
1317
  ...allowMultipleInstancesOfSameDraggableOptionComponent.tests,
@@ -1769,8 +1711,8 @@ const tests = {
1769
1711
 
1770
1712
  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`, () => {
1771
1713
  matchingPage.steps.clickAndDropOptionInOptionsContainerInSpecifyCorrectAnswerSection('Petals');
1772
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
1773
- utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
1714
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage().eq(1), 'visible')
1715
+ utilities.verifyInnerText(commonComponents.errorMessage().eq(1), 'Error: Please set a correct answer.');
1774
1716
  if (accordionName == 'Correct') {
1775
1717
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
1776
1718
  .within(() => {
@@ -10,11 +10,8 @@ const selectors = {
10
10
  ...autoScoredScoringSectionMultiResponseType,
11
11
  ...autoScoredScoringPreviewTab,
12
12
  ...randomizeOptionsComponent,
13
- ...specifyRowsAndColumnsComponent,
14
13
  ...commonComponents,
15
14
  ...additionalSettingsPanel,
16
- sameCheckboxTextInEachColumnCheckbox: () => cy.get('[data-ngie-testid="same-checkbox-text-in-each-column-checkbox"] input'),
17
- sameCheckboxTextInEachColumnCheckboxLabel: () => cy.get('[data-ngie-testid="same-checkbox-text-in-each-column-checkbox"] [class*="label"]'),
18
15
  }
19
16
 
20
17
  const steps = {
@@ -114,29 +111,7 @@ const steps = {
114
111
  .should('have.class', 'selected');
115
112
  });
116
113
  });
117
- },
118
-
119
- verifySameCheckboxTextInColumnCheckboxCheckedState: () => {
120
- multipleSelectionGridPage.sameCheckboxTextInEachColumnCheckbox()
121
- .should('be.checked');
122
- },
123
-
124
- verifySameCheckboxTextInColumnCheckboxUncheckedState: () => {
125
- multipleSelectionGridPage.sameCheckboxTextInEachColumnCheckbox()
126
- .should('not.be.checked');
127
- },
128
-
129
- uncheckSameCheckboxTextInColumnCheckbox: () => {
130
- multipleSelectionGridPage.sameCheckboxTextInEachColumnCheckbox()
131
- .click()
132
- .should('not.be.checked');
133
- },
134
-
135
- checkSameCheckboxTextInColumnCheckbox: () => {
136
- multipleSelectionGridPage.sameCheckboxTextInEachColumnCheckbox()
137
- .click()
138
- .should('be.checked');
139
- },
114
+ }
140
115
  }
141
116
 
142
117
  const tests = {
@@ -149,7 +124,6 @@ const tests = {
149
124
  ...autoScoredStudentViewSettings.tests,
150
125
  ...studentViewSettingsLabelComponent.tests,
151
126
  ...randomizeOptionsComponent.tests,
152
- ...specifyRowsAndColumnsComponent.tests,
153
127
  ...createQuestionBasePage.tests,
154
128
  ...commonComponents.tests,
155
129
  ...additionalSettingsPanel.tests,
@@ -233,67 +207,6 @@ const tests = {
233
207
  it('Accessibility of \'Correct\' accordion contents', { tags: 'a11y' }, () => {
234
208
  cy.checkAccessibility(gridQuestionCommonComponent.tableCell().parents('.correct-answer-accordion'));
235
209
  });
236
- },
237
-
238
- verifyOptionCellPropertyMenu: () => {
239
- const optionCellPropertyMenuOptions = ['Checkbox', 'Checkbox with text', 'No checkbox'];
240
- it(`When user expands cell property menu of an answer cell, then ${optionCellPropertyMenuOptions.join('')} option should be displayed with the corresponding cell property displayed as active selection`, () => {
241
- multipleSelectionGridPage.steps.expandCellPropertyMenu({ row: 2, column: 2 });
242
- optionCellPropertyMenuOptions.forEach((cellType, index) => {
243
- utilities.verifyInnerText(utilities.getNthElement(multipleSelectionGridPage.editCellPropertyListOption(), index), cellType);
244
- });
245
- multipleSelectionGridPage.steps.verifyCellPropertyMenuOptionIsSelected(optionCellPropertyMenuOptions[2]);
246
- });
247
-
248
- it('CSS of default option type dropdown in active state', { tags: 'css' }, () => {
249
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyButton().eq(5).find('g g'), {
250
- 'fill': css.color.primaryBtn
251
- });
252
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyButton().eq(8).find('g g'), {
253
- 'fill': css.color.selectToolbarOptionBg
254
- });
255
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().find('span[class*="MuiListItemText"]'), {
256
- 'color': css.color.liText,
257
- 'font-size': css.fontSize.default,
258
- 'font-weight': css.fontWeight.regular
259
- });
260
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(0).find('span').eq(0), {
261
- 'fill': css.color.liText
262
- });
263
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(1).find('span').eq(0), {
264
- 'fill': css.color.liText
265
- });
266
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(2).find('span').eq(0), {
267
- 'fill': css.color.liText
268
- });
269
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(3).find('span').eq(0), {
270
- 'fill': css.color.liText
271
- });
272
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(1), {
273
- 'background-color': css.color.defaultBackground
274
- });
275
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(0), {
276
- 'background-color': css.color.liTextSelectedBg
277
- });
278
- });
279
-
280
- it('Accessibility of default option type dropdown in active state', { tags: 'a11y' }, () => {
281
- cy.checkAccessibility(gridQuestionCommonComponent.editCellPropertyList())
282
- });
283
-
284
- it('On selecting an option from the default option dropdown, the dropdown should close', () => {
285
- multipleSelectionGridPage.editCellPropertyListOption()
286
- .contains('Checkbox', { matchCase: false })
287
- .click();
288
- utilities.verifyElementVisibilityState(gridQuestionCommonComponent.editCellPropertyList(), 'notExist');
289
- });
290
-
291
- optionCellPropertyMenuOptions.forEach((cellType) => {
292
- it(`When user selects ${cellType} option from the cell property menu, the table cell should be set to ${cellType}`, () => {
293
- multipleSelectionGridPage.steps.modifyTableCellPropertyForOptionCells({ row: 2, column: 2 }, cellType);
294
- multipleSelectionGridPage.steps.verifyEditCellCategoryTableCellProperty({ row: 2, column: 2 }, cellType);
295
- });
296
- });
297
210
  }
298
211
  }
299
212
 
@@ -15,8 +15,6 @@ const selectors = {
15
15
  ...randomizeOptionsComponent,
16
16
  ...commonComponents,
17
17
  ...additionalSettingsPanel,
18
- sameRadioButtonTextInEachColumnCheckbox: () => cy.get('[data-ngie-testid="same-radio-button-text-in-each-column-checkbox"] input'),
19
- sameRadioButtonTextInEachColumnCheckboxLabel: () => cy.get('[data-ngie-testid="same-radio-button-text-in-each-column-checkbox"] [class*="label"]'),
20
18
  }
21
19
 
22
20
  const steps = {
@@ -119,28 +117,6 @@ const steps = {
119
117
  });
120
118
  });
121
119
  },
122
-
123
- verifySameRadioButtonTextInColumnCheckboxCheckedState: () => {
124
- singleSelectionGridPage.sameRadioButtonTextInEachColumnCheckbox()
125
- .should('be.checked');
126
- },
127
-
128
- verifySameRadioButtonTextInColumnCheckboxUncheckedState: () => {
129
- singleSelectionGridPage.sameRadioButtonTextInEachColumnCheckbox()
130
- .should('not.be.checked');
131
- },
132
-
133
- uncheckSameRadioButtonTextInColumnCheckbox: () => {
134
- singleSelectionGridPage.sameRadioButtonTextInEachColumnCheckbox()
135
- .click()
136
- .should('not.be.checked');
137
- },
138
-
139
- checkSameRadioButtonTextInColumnCheckbox: () => {
140
- singleSelectionGridPage.sameRadioButtonTextInEachColumnCheckbox()
141
- .click()
142
- .should('be.checked');
143
- },
144
120
  }
145
121
 
146
122
  const tests = {
@@ -153,7 +129,6 @@ const tests = {
153
129
  ...randomizeOptionsComponent.tests,
154
130
  ...studentViewSettingsLabelComponent.tests,
155
131
  ...autoScoredStudentViewSettings.tests,
156
- ...specifyRowsAndColumnsComponent.tests,
157
132
  ...commonComponents.tests,
158
133
  ...createQuestionBasePage.tests,
159
134
  ...additionalSettingsPanel.tests,
@@ -213,67 +188,6 @@ const tests = {
213
188
  it(`Accessibility of ${accordionName} accordion contents`, { tags: 'a11y' }, () => {
214
189
  cy.checkAccessibility(gridQuestionCommonComponent.tableCell().parents('.correct-answer-accordion'));
215
190
  });
216
- },
217
-
218
- verifyOptionCellPropertyMenu: () => {
219
- const optionCellPropertyMenuOptions = ['Radio button', 'Radio button with text', 'No radio button'];
220
- it(`When user expands cell property menu of an answer cell, then ${optionCellPropertyMenuOptions.join('')} option should be displayed with the corresponding cell property displayed as active selection`, () => {
221
- singleSelectionGridPage.steps.expandCellPropertyMenu({ row: 2, column: 2 });
222
- optionCellPropertyMenuOptions.forEach((cellType, index) => {
223
- utilities.verifyInnerText(utilities.getNthElement(singleSelectionGridPage.editCellPropertyListOption(), index), cellType);
224
- });
225
- singleSelectionGridPage.steps.verifyCellPropertyMenuOptionIsSelected(optionCellPropertyMenuOptions[2]);
226
- });
227
-
228
- it('CSS of default option type dropdown in active state', { tags: 'css' }, () => {
229
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyButton().eq(5).find('g g'), {
230
- 'fill': css.color.primaryBtn
231
- });
232
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyButton().eq(8).find('g g'), {
233
- 'fill': css.color.selectToolbarOptionBg
234
- });
235
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().find('span[class*="MuiListItemText"]'), {
236
- 'color': css.color.liText,
237
- 'font-size': css.fontSize.default,
238
- 'font-weight': css.fontWeight.regular
239
- });
240
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(0).find('span').eq(0), {
241
- 'fill': css.color.liText
242
- });
243
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(1).find('span').eq(0), {
244
- 'fill': css.color.liText
245
- });
246
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(2).find('span').eq(0), {
247
- 'fill': css.color.liText
248
- });
249
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(3).find('span').eq(0), {
250
- 'fill': css.color.liText
251
- });
252
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(1), {
253
- 'background-color': css.color.defaultBackground
254
- });
255
- utilities.verifyCSS(gridQuestionCommonComponent.editCellPropertyListOption().eq(0), {
256
- 'background-color': css.color.liTextSelectedBg
257
- });
258
- });
259
-
260
- it('Accessibility of default option type dropdown in active state', { tags: 'a11y' }, () => {
261
- cy.checkAccessibility(gridQuestionCommonComponent.editCellPropertyList())
262
- });
263
-
264
- it('On selecting an option from the default option dropdown, the dropdown should close', () => {
265
- singleSelectionGridPage.editCellPropertyListOption()
266
- .contains('Radio button', { matchCase: false })
267
- .click();
268
- utilities.verifyElementVisibilityState(gridQuestionCommonComponent.editCellPropertyList(), 'notExist');
269
- });
270
-
271
- optionCellPropertyMenuOptions.forEach((cellType) => {
272
- it(`When user selects ${cellType} option from the cell property menu, the table cell should be set to ${cellType}`, () => {
273
- singleSelectionGridPage.steps.modifyTableCellPropertyForOptionCells({ row: 2, column: 2 }, cellType);
274
- singleSelectionGridPage.steps.verifyEditCellCategoryTableCellProperty({ row: 2, column: 2 }, cellType);
275
- });
276
- });
277
191
  }
278
192
  }
279
193
 
@@ -27,6 +27,9 @@ export const lrnPage = {
27
27
  draggableResponseMathMl: () => cy.get('[aria-label="Possible responses"] .lrn_btn_drag math'),
28
28
  questionContainerPreviewTab: () => cy.get('.lrn_response_input'),
29
29
  specialCharactersButton: () => cy.get('.lrn_charactermapbutton'),
30
+ uploadResponseSupportedFileTypes: () => cy.get('.lrn-fileupload-support-copy'),
31
+ uploadResponseFileLimit: () => cy.get('.lrn-limit-status'),
32
+ uploadResponseToolbar: () => cy.get('[data-lrn-component="toolbar"]'),
30
33
  steps: {
31
34
  checkShowAnswersToggle: () => {
32
35
  lrnPage.showAnswersToggle()
@@ -496,7 +499,7 @@ export const extractLrnQuestionData = {
496
499
  .parent()
497
500
  .then(($responseField) => {
498
501
  obj.isMultiline = $responseField[0].type === 'textarea' ? true : false;
499
- if($responseField[0].innerHTML.includes('lrn_charactermapbutton')) {
502
+ if ($responseField[0].innerHTML.includes('lrn_charactermapbutton')) {
500
503
  obj.specialCharactersEnabled = true;
501
504
  }
502
505
  });
@@ -550,6 +553,40 @@ export const extractLrnQuestionData = {
550
553
  lrnQuestionDataArr.push(obj);
551
554
  },
552
555
 
556
+ uploadResponse: (lrnQuestionDataArr, index) => {
557
+ let obj = {};
558
+ cy.log(`Extracting the question instructions, question, response count, response field properties from question ${index}`);
559
+ obj.questionIndex = index;
560
+ obj.questionType = 'uploadResponse';
561
+ lrnPage.steps.extractQuestionInstructions(obj, index);
562
+ lrnPage.questionWrapper()
563
+ .eq(index)
564
+ .within(() => {
565
+ lrnPage.uploadResponseSupportedFileTypes()
566
+ .invoke('text')
567
+ .then((text) => {
568
+ const supportedFormatsText = text.trim().replace('Supported file formats:', '').replace(/\.$/, '').trim();
569
+ const supportedFormatsArray = supportedFormatsText.split(',').map(format => format.trim());
570
+ obj.supportedFormatsArray = supportedFormatsArray;
571
+ });
572
+ lrnPage.uploadResponseFileLimit()
573
+ .then(($element) => {
574
+ let innerText = $element[0].innerText;
575
+ let normalizedFileUploadLimitText = innerText.trim().replace(/\s+/g, '');
576
+ obj.fileLimit = normalizedFileUploadLimitText;
577
+ });
578
+ lrnPage.uploadResponseToolbar()
579
+ .then(($element) => {
580
+ if ($element[0].innerHTML.includes('lrn-icon-camera')) {
581
+ obj.captureImage = true;
582
+ } else {
583
+ obj.captureImage = false;
584
+ }
585
+ });
586
+ });
587
+ lrnQuestionDataArr.push(obj);
588
+ },
589
+
553
590
  /* singleSelection: (lrnQuestionDataArr, index) => {
554
591
  let obj = {};
555
592
  cy.log(`Extracting the question instructions and options from question ${index}`);
@@ -10,6 +10,7 @@ const lrnQuestionTypesENUM = {
10
10
  multipleSelection: 'Multiple choice – multiple response',
11
11
  trueOrFalse: 'True or false',
12
12
  figText: 'Cloze with text',
13
+ uploadResponse: 'File upload'
13
14
  }
14
15
 
15
16
  export default lrnQuestionTypesENUM;
@@ -24,6 +24,7 @@ const extractLrnPreviewData = (currQuestionType, lrnQuestionDataArr, index) => {
24
24
  case lrnQuestionTypesENUM.drawingResponse: return extractLrnQuestionData.drawingResponse(lrnQuestionDataArr, index);
25
25
  case lrnQuestionTypesENUM.dndIntoCategories: return extractLrnQuestionData.dndIntoCategories(lrnQuestionDataArr, index);
26
26
  case lrnQuestionTypesENUM.figText: return extractLrnQuestionData.figText(lrnQuestionDataArr, index);
27
+ case lrnQuestionTypesENUM.uploadResponse: return extractLrnQuestionData.uploadResponse(lrnQuestionDataArr, index);
27
28
  default: throw new Error('Invalid lrn question type');
28
29
  }
29
30
  }
@@ -38,6 +39,7 @@ const verifyIePreviewData = (questionType, questionData, index) => {
38
39
  case 'drawingResponse': return verifyIeQuestionData.drawingResponse(questionData, index);
39
40
  case 'dndIntoCategories': return verifyIeQuestionData.dndIntoCategories(questionData, index);
40
41
  case 'figText': return verifyIeQuestionData.figText(questionData, index);
42
+ case 'uploadResponse': return verifyIeQuestionData.uploadResponse(questionData, index);
41
43
  default: throw new Error('Invalid ngie question type');
42
44
  }
43
45
  }
@@ -49,6 +51,7 @@ const extractLrnGradingData = (currQuestionType, lrnGradingDataArr, index) => {
49
51
  case lrnQuestionTypesENUM.textEntryMathImage: return extractLrnQuestionData.textEntryMathImageGrading(lrnGradingDataArr, index);
50
52
  case lrnQuestionTypesENUM.dndIntoCategories: return extractLrnQuestionData.dndIntoCategoriesGrading(lrnGradingDataArr, index);
51
53
  case lrnQuestionTypesENUM.figText: return extractLrnQuestionData.figTextGrading(lrnGradingDataArr, index);
54
+ case lrnQuestionTypesENUM.uploadResponse: return cy.log('Manually Graded Question Type');
52
55
  default: throw new Error('Invalid lrn question type');
53
56
  }
54
57
  }
@@ -60,6 +63,7 @@ const verifyIeGradingData = (questionType, questionData, index) => {
60
63
  case 'textEntryMathImage': return verifyIeQuestionData.textEntryMathImageGrading(questionData, index);
61
64
  case 'dndIntoCategories': return verifyIeQuestionData.dndIntoCategoriesGrading(questionData, index);
62
65
  case 'figText': return verifyIeQuestionData.figTextGrading(questionData, index);
66
+ case 'uploadResponse': return cy.log('Manually Graded Question Type');
63
67
  default: throw new Error('Invalid ngie question type');
64
68
  }
65
69
  }
@@ -1,4 +1,4 @@
1
- import { essayResponsePage, fillInTheGapsTextPage, multipleSelectionPage, textEntryMathPage } from "../../pages";
1
+ import { essayResponsePage, fillInTheGapsTextPage, multipleSelectionPage, textEntryMathPage, uploadResponsePage } from "../../pages";
2
2
  import { draggableOptionContainer } from "../../pages/components";
3
3
  import { singleSelectionPage } from "../../pages/singleSelectionPage"
4
4
  import utilities from "../helpers/utilities";
@@ -23,6 +23,7 @@ export const iePage = {
23
23
  drawingResponseLowerCanvas: () => cy.get('.lower-canvas'),
24
24
  figCorrectAnswerBlock: () => cy.get('[class*="AnswerCell"]'),
25
25
  figTextResponseField: () => cy.get('[class*="response"][class*="-input"] .MuiInputBase-input'),
26
+ uploadResponseCaptureImage: () => cy.get('[aria-label="capture an image"]'),
26
27
 
27
28
  steps: {
28
29
  verifyQuestionInstructions: (expectedQuestionData) => {
@@ -476,7 +477,7 @@ export const verifyIeQuestionData = {
476
477
  .eq(0)
477
478
  .click()
478
479
  .then(() => {
479
- if(expectedQuestionData.specialCharactersEnabled) {
480
+ if (expectedQuestionData.specialCharactersEnabled) {
480
481
  utilities.verifyElementVisibilityState(fillInTheGapsTextPage.specialCharactersButtonPreviewTab(), 'visible');
481
482
  } else {
482
483
  utilities.verifyElementVisibilityState(fillInTheGapsTextPage.specialCharactersButtonPreviewTab(), 'notExist');
@@ -510,6 +511,37 @@ export const verifyIeQuestionData = {
510
511
  });
511
512
  },
512
513
 
514
+ uploadResponse: (expectedQuestionData, index) => {
515
+ cy.get('.ngie-upload-response')
516
+ .eq(index)
517
+ .within(() => {
518
+ iePage.steps.verifyQuestionInstructions(expectedQuestionData);
519
+ uploadResponsePage.supportedFileInfoIcon()
520
+ .invoke('attr', 'aria-label')
521
+ .then((ariaLabel) => {
522
+ let supportedFormatsText = ariaLabel.replace('Supported file formats: ', '').replace(/\.$/, '').trim();
523
+ let supportedFormatsArray = supportedFormatsText.split(', ');
524
+ expect(supportedFormatsArray).to.have.lengthOf(expectedQuestionData.supportedFormatsArray.length);
525
+ cy.wrap(supportedFormatsArray).each((element) => {
526
+ expect(expectedQuestionData.supportedFormatsArray).to.include(element);
527
+ });
528
+ });
529
+ uploadResponsePage.uploadedFileCount()
530
+ .then(($element) => {
531
+ let fileLimit = $element[0].innerText;
532
+ let normalizedFileUploadLimitText = fileLimit.trim().replace(/\s+/g, '');
533
+ expect(normalizedFileUploadLimitText).to.be.eq(expectedQuestionData.fileLimit);
534
+ });
535
+ if (expectedQuestionData.captureImage) {
536
+ uploadResponsePage.fileUploadOptionsLabel()
537
+ .within(() => {
538
+ iePage.uploadResponseCaptureImage()
539
+ .should('exist');
540
+ });
541
+ }
542
+ });
543
+ }
544
+
513
545
  /* singleSelection: (expectedQuestionData, index) => {
514
546
  cy.get('.ngie-single-select')
515
547
  .eq(index)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itemengine-cypress-automation",
3
- "version": "1.0.166",
3
+ "version": "1.0.169-uploadResponseMigration-83ab996.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -35,4 +35,4 @@
35
35
  "node-fetch": "^3.3.2",
36
36
  "react-uuid": "^2.0.0"
37
37
  }
38
- }
38
+ }