itemengine-cypress-automation 1.0.189-e2e-execution-crash-83cdbd4.0 → 1.0.190-repoUpdate3May-f180558.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (244) hide show
  1. package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +79 -0
  2. package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +647 -0
  3. package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +429 -0
  4. package/cypress/e2e/ILC/AudioPlayerNew/customizePlayerLayoutSettings.js +596 -0
  5. package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +162 -0
  6. package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +792 -0
  7. package/cypress/e2e/ILC/AudioPlayerNew/studentViewSettings.js +253 -0
  8. package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +313 -0
  9. package/cypress/e2e/ILC/AudioResponseNew/additionalSettingsBasic.js +1 -22
  10. package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.smoke.js +1 -1
  11. package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +1 -1
  12. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +1 -1
  13. package/cypress/e2e/ILC/AudioResponseNew/studentViewSettings.js +2 -11
  14. package/cypress/e2e/ILC/ChartsBar/previewContentsForAllViews.smoke.js +359 -0
  15. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +1 -1
  16. package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +6 -8
  17. package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +417 -28
  18. package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +1 -1
  19. package/cypress/e2e/ILC/FeedbackScaleNew/headerSection.js +29 -1
  20. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +2 -2
  21. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +1 -1
  22. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/studentViewSettings.js +1 -1
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/editTabScoring.js +1 -0
  24. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +2 -2
  25. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +1 -1
  26. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +1 -1
  27. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -4
  28. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  29. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +1 -1
  30. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +5 -5
  31. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -4
  32. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  33. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +1 -0
  34. package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +1 -1
  35. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
  36. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +2 -2
  37. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +2 -2
  38. package/cypress/e2e/ILC/Graphing/addBackgroundShapesSection.js +2 -2
  39. package/cypress/e2e/ILC/Graphing/studentViewSettings.js +1 -1
  40. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +3 -2
  41. package/cypress/e2e/ILC/GridFill/gridLayoutContents.js +11 -3
  42. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +3 -3
  43. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +2 -2
  44. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountAllOrNothingCorrectPointsGreaterThanAlternativePoints.js +143 -0
  45. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +132 -0
  46. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +143 -0
  47. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +144 -0
  48. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountallOrNothingCorrectPointsEqualToAlternativePoints.js +143 -0
  49. package/cypress/e2e/ILC/GridFill/scoring/cellshadeCountAllOrNothingAlternativePointsGreaterThanCorrectPoints.js +131 -0
  50. package/cypress/e2e/ILC/GridFill/scoring/matchExactAndCellShadeCountCombinedScoring.js +87 -0
  51. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsCellShadeCountBasics.js +446 -0
  52. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +1 -1
  53. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +194 -0
  54. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +195 -0
  55. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +274 -0
  56. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingPenaltyScoring.js +48 -0
  57. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/manuallyAndNonScored.js +144 -0
  58. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +252 -0
  59. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsBasic.js +102 -0
  60. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +256 -0
  61. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +253 -0
  62. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +308 -0
  63. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +225 -0
  64. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsBasic.js +151 -0
  65. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +196 -0
  66. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +227 -0
  67. package/cypress/e2e/ILC/ListOrderingDropdown/additionalSettings.js +91 -0
  68. package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +230 -0
  69. package/cypress/e2e/ILC/ListOrderingDropdown/checkAnswerFunctionalityForAllViews.smoke.js +124 -0
  70. package/cypress/e2e/ILC/ListOrderingDropdown/editTabBasicSection.js +221 -0
  71. package/cypress/e2e/ILC/ListOrderingDropdown/editTabScoring.js +203 -0
  72. package/cypress/e2e/ILC/ListOrderingDropdown/manuallyAndNonScoredEditTab.js +71 -0
  73. package/cypress/e2e/ILC/ListOrderingDropdown/minimumScoringPenaltyPointsAndRoundingDropdown.js +197 -0
  74. package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +201 -0
  75. package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +115 -0
  76. package/cypress/e2e/ILC/ListOrderingDropdown/studentViewSettings.js +183 -0
  77. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +216 -0
  78. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +214 -0
  79. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +273 -0
  80. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingPenaltyScoring.js +52 -0
  81. package/cypress/e2e/ILC/ListOrderingNew/Scoring/manuallyAndNonScored.js +128 -0
  82. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +279 -0
  83. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsBasic.js +109 -0
  84. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +278 -0
  85. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +278 -0
  86. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +335 -0
  87. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +250 -0
  88. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsBasic.js +161 -0
  89. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +216 -0
  90. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +252 -0
  91. package/cypress/e2e/ILC/ListOrderingNew/additionalSettings.js +118 -0
  92. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +243 -0
  93. package/cypress/e2e/ILC/ListOrderingNew/checkAnswerFunctionalityForAllViews.smoke.js +128 -0
  94. package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +155 -0
  95. package/cypress/e2e/ILC/ListOrderingNew/editTabScoring.js +195 -0
  96. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +78 -0
  97. package/cypress/e2e/ILC/ListOrderingNew/manuallyAndNonScoredEditTab.js +69 -0
  98. package/cypress/e2e/ILC/ListOrderingNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +194 -0
  99. package/cypress/e2e/ILC/ListOrderingNew/previewContentsForAllViews.smoke.js +176 -0
  100. package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +112 -0
  101. package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +244 -0
  102. package/cypress/e2e/ILC/Matching/studentViewSettings.js +1 -1
  103. package/cypress/e2e/ILC/MultipleSelection/allOrNothingWithAlternativeAnswer.js +1 -0
  104. package/cypress/e2e/ILC/MultipleSelectionGridNew/studentViewSettings.js +1 -1
  105. package/cypress/e2e/ILC/NumberLine/LayoutSection.js +209 -0
  106. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +1 -1
  107. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +1 -1
  108. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +4 -4
  109. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +1 -1
  110. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +1 -1
  111. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +1 -1
  112. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +1 -1
  113. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +1 -1
  114. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +58 -2
  115. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +1 -1
  116. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +1 -1
  117. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +2 -2
  118. package/cypress/e2e/ILC/NumberLine/headerSection.js +1 -1
  119. package/cypress/e2e/ILC/NumberLine/lineSettingsSection.js +33 -0
  120. package/cypress/e2e/ILC/NumberLine/numberLineSection.js +50 -0
  121. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +2 -2
  122. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +1 -1
  123. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +2 -2
  124. package/cypress/e2e/ILC/NumberLine/toolSettings.js +2 -1
  125. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +1 -1
  126. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/allOrNothingScoringForAllViews.smoke.js +696 -0
  127. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +173 -0
  128. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/layoutSection.js +211 -0
  129. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/numberLineSection.js +75 -0
  130. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/previewTabContentsForAllViews.smoke.js +204 -0
  131. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +229 -0
  132. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +229 -0
  133. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +229 -0
  134. package/cypress/e2e/ILC/NumberLineLabel/Scoring/manualAndNonScoredScoring.js +169 -0
  135. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +274 -0
  136. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsBasic.js +433 -0
  137. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +274 -0
  138. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +274 -0
  139. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +249 -0
  140. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsBasic.js +135 -0
  141. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +210 -0
  142. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +248 -0
  143. package/cypress/e2e/ILC/NumberLineLabel/additionalSettingsBasic.js +115 -0
  144. package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +288 -0
  145. package/cypress/e2e/ILC/NumberLineLabel/checkAnswerFunctionalityForAllViews.smoke.js +153 -0
  146. package/cypress/e2e/ILC/NumberLineLabel/editTabBasicSection.js +326 -0
  147. package/cypress/e2e/ILC/NumberLineLabel/editTabScoring.js +234 -0
  148. package/cypress/e2e/ILC/NumberLineLabel/gradingViewAndCorrectAnswerView.smoke.js +164 -0
  149. package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +80 -0
  150. package/cypress/e2e/ILC/NumberLineLabel/layoutSection.js +204 -0
  151. package/cypress/e2e/ILC/NumberLineLabel/manuallyAndNonScoredEditTab.js +79 -0
  152. package/cypress/e2e/ILC/NumberLineLabel/minimumScoringPenaltyPointsAndRoundingDropdown.js +85 -0
  153. package/cypress/e2e/ILC/NumberLineLabel/numberLineSection.js +51 -0
  154. package/cypress/e2e/ILC/NumberLineLabel/previewContentsForAllViews.smoke.js +120 -0
  155. package/cypress/e2e/ILC/NumberLineLabel/specifyCorrectAnswerSection.js +74 -0
  156. package/cypress/e2e/ILC/NumberLineLabel/studentViewSettings.js +183 -0
  157. package/cypress/e2e/ILC/NumberLineLabel/toolSettings.js +76 -0
  158. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/allOrNothingForAllViews.smoke.js +292 -0
  159. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/checkAnswerFunctionalityForAllViews.smoke.js +155 -0
  160. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +166 -0
  161. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/layoutSection.js +360 -0
  162. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/numberLineSection.js +80 -0
  163. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/previewContentsForAllViews.smoke.js +111 -0
  164. package/cypress/e2e/ILC/Protractor/protractorPreviewContents.smoke.js +1 -1
  165. package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +49 -1
  166. package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +1 -1
  167. package/cypress/e2e/ILC/SingleSelectionGridNew/studentViewSettings.js +1 -1
  168. package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +2 -2
  169. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +0 -1
  170. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +0 -1
  171. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +0 -1
  172. package/cypress/e2e/ILC/TextSelection/Scoring/basicScoringForAllTextSelectionTypes.smoke.js +0 -1
  173. package/cypress/e2e/ILC/TextSelection/additionalSettings.js +125 -0
  174. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +0 -1
  175. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +2 -2
  176. package/cypress/e2e/ILC/TextSelection/editTabScoringSection.js +5 -4
  177. package/cypress/e2e/ILC/TextSelection/headerSection.js +73 -0
  178. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +6 -7
  179. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +179 -0
  180. package/cypress/e2e/ILC/TextSelection/specifyCorrectAnswerSection.js +89 -0
  181. package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +436 -0
  182. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordion.js +277 -0
  183. package/cypress/e2e/ILC/TextSelection/textSelectionModesInPreviewTab.js +222 -0
  184. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyCorrectAnswerSection.js +260 -0
  185. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +380 -0
  186. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +5 -5
  187. package/cypress/e2e/ILC/ToolSettings/toolSettingsPreviewContents.smoke.js +3 -3
  188. package/cypress/e2e/ILC/VideoResponseNew/additionalSettingsBasic.js +77 -0
  189. package/cypress/e2e/ILC/VideoResponseNew/customizePlaybackControls.js +313 -0
  190. package/cypress/e2e/ILC/VideoResponseNew/editAndPreviewTabScoringSection.js +99 -0
  191. package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +171 -0
  192. package/cypress/e2e/ILC/VideoResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +179 -0
  193. package/cypress/e2e/ILC/VideoResponseNew/headerSection.js +79 -0
  194. package/cypress/e2e/ILC/VideoResponseNew/previewContentsForAllViews.smoke.js +201 -0
  195. package/cypress/e2e/ILC/VideoResponseNew/standardRecorderStyle.js +567 -0
  196. package/cypress/e2e/ILC/VideoResponseNew/studentViewSettings.js +194 -0
  197. package/cypress/fixtures/constants.js +1 -1
  198. package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +1 -1
  199. package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +20 -20
  200. package/cypress/fixtures/theme/ilc.json +22 -18
  201. package/cypress/pages/audioPlayerPage.js +668 -446
  202. package/cypress/pages/audioResponsePage.js +8 -80
  203. package/cypress/pages/brainingCampManipulativePage.js +1 -1
  204. package/cypress/pages/chartsBarPage.js +231 -0
  205. package/cypress/pages/chartsDotPlotPage.js +8 -0
  206. package/cypress/pages/chartsLinePage.js +42 -0
  207. package/cypress/pages/components/allowTeachersToDownloadStudentResponseComponent.js +58 -0
  208. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +13 -23
  209. package/cypress/pages/components/autoScoredStudentViewSettings.js +6 -6
  210. package/cypress/pages/components/barAndLineChartComponent.js +120 -0
  211. package/cypress/pages/components/chartsCommonComponent.js +105 -0
  212. package/cypress/pages/components/commonComponents.js +1 -0
  213. package/cypress/pages/components/draggableOptionContainer.js +2 -1
  214. package/cypress/pages/components/equationEditorFlyout.js +3 -2
  215. package/cypress/pages/components/essayResponseCommonComponents.js +8 -2
  216. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +1 -0
  217. package/cypress/pages/components/imageCanvasComponent.js +2 -1
  218. package/cypress/pages/components/index.js +7 -0
  219. package/cypress/pages/components/layoutSectionComponent.js +1156 -0
  220. package/cypress/pages/components/limitNumberOfRetakeComponent.js +90 -0
  221. package/cypress/pages/components/numberLineCommonComponent.js +685 -0
  222. package/cypress/pages/components/optionsWrapperComponent.js +13 -2
  223. package/cypress/pages/components/playbackControlsBaseComponent.js +20 -13
  224. package/cypress/pages/components/questionInstructionsComponent.js +3 -19
  225. package/cypress/pages/components/styleAndLayoutCustomizationAccordionComponent.js +46 -0
  226. package/cypress/pages/components/toolSettingsComponent.js +6 -0
  227. package/cypress/pages/contentBlocksPage.js +18 -2
  228. package/cypress/pages/createItemPage.js +75 -8
  229. package/cypress/pages/dialogBoxBase.js +2 -2
  230. package/cypress/pages/drawingResponsePage.js +24 -4
  231. package/cypress/pages/feedbackScalePage.js +3 -0
  232. package/cypress/pages/graphingPage.js +19 -1
  233. package/cypress/pages/gridFillPage.js +47 -59
  234. package/cypress/pages/index.js +5 -1
  235. package/cypress/pages/itemPreviewSettingsPage.js +4 -0
  236. package/cypress/pages/listOrderingPage.js +561 -555
  237. package/cypress/pages/matchingPage.js +1 -1
  238. package/cypress/pages/multipleSelectionPage.js +23 -1
  239. package/cypress/pages/numberLineLabelPage.js +1086 -0
  240. package/cypress/pages/numberLinePage.js +696 -78
  241. package/cypress/pages/rulerPage.js +6 -2
  242. package/cypress/pages/textSelectionPage.js +461 -23
  243. package/cypress/pages/videoResponsePage.js +393 -81
  244. package/package.json +1 -1
@@ -1,405 +1,300 @@
1
1
  import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
- import { additionalSettingsPanel, autoScoredAdditionalSettings, autoScoredPreviewBase, autoScoredScoringSection, autoScoredScoringSectionMultipleResponsesType, autoScoredSetCorrectAnswerSection, ckEditorToolbar, commonComponents, createQuestionBasePage, equationEditorFlyout, optionsWrapperComponent, previewScoringAndShowCorrectAnswerComponent, questionInstructionsComponent, scoringSectionBase } from "./components"
4
- import { answerNumerationComponent } from "./components/answerNumerationComponent";
5
- import { listSortingAndOrderingBase } from "./components/listSortingAndOrderingBase";
6
- import { setPointsPopupBase } from "./components/setPointsPopupBase";
7
- import { studentResponseAndLayoutComponent } from "./components/studentResponseAreaAndLayoutComponent";
3
+ import { autoScoredScoringPreviewTab, autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, autoScoredStudentViewSettings, commonComponents, correctIncorrectAnswerLabelComponent, createQuestionBasePage, optionsWrapperComponent, questionInstructionsComponent, randomizeOptionsComponent, scoringSectionBaseEditTab, studentViewSettingsLabelComponent, additionalSettingsPanel, additionalSettingsAccessibilitySectionComponent } from "./components"
4
+ const options = ['sprout', 'plant', 'flower', 'seed'];
8
5
  const css = Cypress.env('css');
9
6
 
10
7
  const selectors = {
11
- ...commonComponents,
12
8
  ...optionsWrapperComponent,
13
- ...scoringSectionBase,
14
- ...autoScoredScoringSectionMultipleResponsesType,
15
- ...autoScoredSetCorrectAnswerSection,
16
- ...autoScoredAdditionalSettings,
17
- ...previewScoringAndShowCorrectAnswerComponent,
18
- ...autoScoredPreviewBase,
19
- ...additionalSettingsPanel,
20
9
  ...questionInstructionsComponent,
21
- ...answerNumerationComponent,
22
- ...setPointsPopupBase,
23
- ...listSortingAndOrderingBase,
24
- //Set correct answer section
25
- setCorrectAnswerSectionOption: () => cy.get('.list-ordering-set-correct-answer .draggable-item-wrapper[role="button"]'),
26
- setCorrectAnswerSectionOptionsWrapper: () => cy.get('[class*="ListOrderingResponsestyles__DroppableWrapper"]'),
10
+ ...commonComponents,
11
+ ...autoScoredScoringSectionMultiResponseType,
12
+ ...randomizeOptionsComponent,
13
+ ...autoScoredScoringPreviewTab,
14
+ ...additionalSettingsPanel,
15
+ ...correctIncorrectAnswerLabelComponent,
16
+ ...autoScoredSpecifyCorrectAnswerSection,
17
+ //Specify correct answer section
18
+ optionSpecifyCorrectAnswerSection: () => cy.get('.list-ordering-set-correct-answer .draggable-item-wrapper[role="button"]'),
19
+ optionWrapperSpecifyCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__DroppableWrapper"]'),
20
+ partialDifferentWeightsPointsLabel: () => cy.get('.partial-points-per-response-label'),
21
+ pointsPerResponseValue: () => cy.get('.alternate-points-points-per-value-span'),
22
+ //Student view settings
23
+ enableOuterBorderForQuestionLabel: () => cy.get('[data-ngie-testid*="enable-outer-border-for-question-checkbox"] .MuiFormControlLabel-label'),
24
+ enableOuterBorderForQuestionCheckbox: () => cy.get('[data-ngie-testid*="enable-outer-border-for-question-checkbox"] input'),
27
25
  //Preview Tab
28
- pointsPerResponseLabel: () => cy.get('.list-ordering-points-text'),
29
- previewTabOption: () => cy.get('.edit-question-preview-wrapper .draggable-item-wrapper[role="button"]'),
30
- previewTabOptionsWrapper: () => cy.get('.edit-question-preview-wrapper [class*="ListOrderingResponsestyles__DroppableWrapper"]'),
31
- partialEqualWeightsPointsPerResponseScore: () => cy.get('.orderlist-points-wrapper'),
32
- partialDifferentWeightsPointsInputField: () => cy.get('.orderlist-points-wrapper input'),
33
- partialDifferentWeightsPointsPerResponseLabel: () => cy.get('.list-ordering-points-wrapper'),
34
- //Additional Settings
35
- optionNumeration: () => cy.get('[class*="__IndexWrapper"]'),
36
- setCorrectAnswerSectionTopLabel: () => cy.get('[class*="TopLabelWrapper"].top-bottom-label'),
37
- setCorrectAnswerSectionBottomLabel: () => cy.get('[class*="BottomLabelWrapper"].top-bottom-label'),
38
- previewTabTopLabel: () => cy.get('.edit-question-preview-wrapper [class*="TopLabelWrapper"].top-bottom-label'),
39
- previewTabBottomLabel: () => cy.get('.edit-question-preview-wrapper [class*="BottomLabelWrapper"].top-bottom-label'),
40
- pointsPerResponseLabelForInlineOption: () => cy.get('[class*="ListOrderingstyles__EqualPointsWrapper"]'),
41
- pointsPerResponseScoreForInlineOption: () => cy.get('[class*="ListOrderingstyles__EqualPointsWrapper"] span'),
42
- //Set points popup
43
- buttonSetPoints: () => cy.get('[class*="SetPointsstyle__Button"]'),
44
- setPointsIcon: () => cy.get('[class*="SetPointsstyle__Button"] svg'),
45
- //Remove after https://redmine.zeuslearning.com/issues/518498 is fixed
46
- dragHandleButton: () => cy.get('[class*="DragIcon"]')
26
+ optionPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .draggable-item-wrapper[role="button"]'),
27
+ optionWrapperPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .orderlist-option-wrapper'),
28
+ correctAnswersLabel: () => cy.get('.check-answer-and-status-wrapper [class*="CorrectAnswerLabel"]'),
29
+ correctAnswerSectionAnswerWrapper: () => cy.get('[class*="CorrectAnswers"] [class*="__OptionsWrapper"]'),
30
+ correctAnswerSectionWrapper: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"]'),
31
+ correctAnswerSectionAnswerText: () => cy.get('.question-text-wrapper'),
32
+ questionBorderPreviewTab: () => cy.get('[class*="ListOrderingResponsestyles__DroppableDiv"]'),
33
+ //grading view and correct answer view
34
+ optionGradingView: () => cy.get('[class*="DraggableItemsWrapper"] [class*="OptionTextWrapper"]'),
35
+ optionWrapperGradingView: () => cy.get('[class*="DraggableItemsWrapper"] [class*="OptionsWrapper"]'),
36
+ //Orientation and layout
37
+ orderingLayoutLabel: () => cy.get('.list-ordering-order-layout .options-label'),
38
+ reorderInTheSameListButton: () => cy.get('[data-ngie-testid="reorder-in-the-same-list-toggle-button"]'),
39
+ reorderAsSeparateListButton: () => cy.get('[data-ngie-testid="reorder-as-a-separate-list-toggle-button"]'),
40
+ dropdownMenuButton: () => cy.get('[data-ngie-testid="dropdown-menu-toggle-button"]'),
41
+ optionOrientationLabel: () => cy.get('.option-orientation-toggle-button-wrapper .options-label'),
42
+ verticalButton: () => cy.get('button[aria-label*="Vertical"]'),
43
+ horizontalButton: () => cy.get('button[aria-label*="Horizontal"]'),
44
+
45
+ //Dropdown menu selectors
46
+ dropdownMenuOptionsDropdown: () => cy.get('#Dropdown-menu-options-select'),
47
+ dropdownMenuOptionsDropdownLabel: () => cy.get('#Dropdown-menu-options-dropdown-label'),
48
+ dropdownMenuListOptions: (ariaLabel = null) => {
49
+ if (ariaLabel) {
50
+ return cy.get(`[aria-labelledby*="Dropdown-menu-options-dropdown-label"] [role="option"][aria-label*="${ariaLabel}"]`)
51
+ } else {
52
+ return cy.get('[aria-labelledby*="Dropdown-menu-options-dropdown-label"] [role="option"]')
53
+ }
54
+ },
55
+ dropdownOptionWrapperSpecifyCorrectAnswerSection: () => cy.get('.dropdown-menu-wrapper [class*="DropdownLayoutstyles__OptionsWrapper"]'),
56
+ positionDropdownSpecifyCorrectAnswerSection: () => cy.get('.response-dropdown-wrapper [role="combobox"]'),
57
+ positionDropdownListOption: (ariaLabel = null) => {
58
+ if (ariaLabel) {
59
+ return cy.get(`[aria-labelledby*="-dropdown-label"] [role="option"][aria-label*="${ariaLabel}"]`)
60
+ } else {
61
+ return cy.get('[aria-labelledby*="-dropdown-label"] [role="option"]')
62
+ }
63
+ },
64
+ dropdownSelectedOptionLabel: () => cy.get('.dropdown-label-text'),
65
+ dropdownOptionWrapperGradingView: () => cy.get('[class*="DropdownLayoutstyles__OptionsWrapper"]'),
66
+ dropdownWrapperPreviewTab: () => cy.get('[class*="ListOrderingResponsestyles__DroppableDiv"] [class*="DropdownLayoutstyles__ResponseWrapper"]'),
67
+ dropdownOptionWrapperPreviewTab: () => cy.get('[class*="DropdownLayoutstyles__OptionsWrapper"]'),
68
+ positionDropdownPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .response-dropdown-wrapper [role="combobox"]'),
69
+ positionDropdownCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"] .response-dropdown-wrapper [role="combobox"]'),
70
+ dropdownWrapperCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"] [class*="DropdownLayoutstyles__ResponseWrapper"]'),
71
+ alertMessage: () => cy.get('[class*="ListOrderingResponsestyles__DisabledWrapper"]')
47
72
  }
48
73
 
49
74
  const steps = {
50
75
  ...createQuestionBasePage.steps,
51
76
  ...questionInstructionsComponent.steps,
52
- ...scoringSectionBase.steps,
53
- ...autoScoredSetCorrectAnswerSection.steps,
54
- ...commonComponents.steps,
77
+ ...scoringSectionBaseEditTab.steps,
55
78
  ...optionsWrapperComponent.steps,
56
- ...ckEditorToolbar.steps,
57
- ...equationEditorFlyout.steps,
58
- ...autoScoredScoringSectionMultipleResponsesType.steps,
79
+ ...autoScoredScoringPreviewTab.steps,
80
+ ...correctIncorrectAnswerLabelComponent.steps,
81
+ ...autoScoredStudentViewSettings.steps,
82
+ ...autoScoredScoringSectionMultiResponseType.steps,
83
+ ...autoScoredSpecifyCorrectAnswerSection.steps,
84
+ ...randomizeOptionsComponent.steps,
85
+ ...commonComponents.steps,
59
86
  ...additionalSettingsPanel.steps,
60
- ...previewScoringAndShowCorrectAnswerComponent.steps,
61
- ...autoScoredPreviewBase.steps,
62
- ...autoScoredAdditionalSettings.steps,
63
- ...autoScoredScoringSection.steps,
64
- ...answerNumerationComponent.steps,
65
- ...setPointsPopupBase.steps,
66
- ...listSortingAndOrderingBase.steps,
67
- /**
68
- * @param {number} index set correct answer option index
69
- * @description this function verfies contents of options
70
- */
71
- verifyDragHandleButtonOfOptionInSetCorrectAnswerSection: (index) => {
72
- listOrderingPage.setCorrectAnswerSectionOption()
73
- .eq(index)
74
- .within(() => {
75
- listOrderingPage.dragHandleButton()
76
- .should('exist');
77
- });
87
+ /**
88
+ * @param {string} optionsText text content of the option
89
+ * @param {number} targetIndex the position at which the options is being dropped
90
+ * @description click and drop a option into a position in the specify correct answer section
91
+ */
92
+ clickAndReorderOptionInSpecifyCorrectAnswerSection: (optionsText, targetIndex) => {
93
+ listOrderingPage.optionSpecifyCorrectAnswerSection()
94
+ .contains(optionsText)
95
+ .click();
96
+ listOrderingPage.optionSpecifyCorrectAnswerSection()
97
+ .eq(targetIndex)
98
+ .click();
78
99
  },
79
100
 
80
101
  /**
81
- * @param {string[]} optionsTextArray options array for set correct answer option
82
- * @description this function verifies options text content
102
+ * @param {string} optionsText text content of the option
103
+ * @param {number} targetIndex the position at which the options is being dropped
104
+ * @description click and drop a option into a position in the preview tab
83
105
  */
84
- verifyOptionsTextContentInSetCorrectAnswerSection: (optionsTextArray) => {
85
- optionsTextArray.forEach((optionsText, index) => {
86
- listOrderingPage.setCorrectAnswerSectionOption()
87
- .eq(index)
88
- .should('have.text', optionsText);
89
- });
106
+ clickAndReorderOptionInPreviewTab: (optionsText, targetIndex) => {
107
+ listOrderingPage.optionPreviewTab()
108
+ .contains(optionsText)
109
+ .click();
110
+ listOrderingPage.optionPreviewTab()
111
+ .eq(targetIndex)
112
+ .click();
90
113
  },
91
114
 
92
115
  /**
93
- * @param {number} index of option
94
- * @description this function verifies image in set correct answer option input field
95
- */
96
- verifyImageAddedToOptionInSetCorrectAnswerSection: (index) => {
97
- listOrderingPage.setCorrectAnswerSectionOption()
98
- .eq(index)
116
+ * @description Verifies that the image in the Preview tab has the correct source and alt text.
117
+ * @param {number} optionIndex - The index of the option in the Preview tab.
118
+ */
119
+ verifyOptionWithImageInPreviewTab: (optionIndex) => {
120
+ listOrderingPage.optionWrapperPreviewTab()
121
+ .eq(optionIndex)
99
122
  .find('img')
100
123
  .should('have.attr', 'src', constants.foxImageLink)
101
124
  .and('have.attr', 'alt', constants.foxImageAltText);
102
125
  },
103
126
 
104
127
  /**
105
- * @param {number} index of option
106
- * @description this function verifies equation in set correct answer option input field
128
+ * @description Verifies that the bold text in the Preview tab is correct.
129
+ * @param {number} optionIndex - The index of the option in the Preview tab.
107
130
  */
108
- verifyEquationAddedToOptionInSetCorrectAnswerSection: (index) => {
109
- listOrderingPage.setCorrectAnswerSectionOption()
110
- .eq(index)
111
- .contains(constants.CKEditorInputFieldEnteredEquationText)
112
- listOrderingPage.setCorrectAnswerSectionOption()
113
- .find('[role="math"]')
114
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
131
+ verifyOptionWithBoldTextInPreviewTab: (optionIndex) => {
132
+ listOrderingPage.optionWrapperPreviewTab()
133
+ .eq(optionIndex)
134
+ .find('strong')
135
+ .should('have.text', 'This is a bold option');
115
136
  },
116
137
 
117
138
  /**
118
- * @param {number} index of option
119
- * @description this function link in set correct answer option input field
139
+ * @description Verifies that the equation text in the Preview tab is correct.
140
+ * @param {number} optionIndex - The index of the option in the Preview tab.
120
141
  */
121
- verifyLinkAddedToOptionInSetCorrectAnswerSection: (index) => {
122
- listOrderingPage.setCorrectAnswerSectionOption()
123
- .eq(index)
124
- .should('have.text', 'lorem')
125
- .find('a')
126
- .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
142
+ verifyOptionWithEquationTextInPreviewTab: (optionIndex) => {
143
+ listOrderingPage.optionWrapperPreviewTab()
144
+ .eq(optionIndex)
145
+ .find('[role="math"]')
146
+ .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
147
+ .contains(constants.CKEditorInputFieldEnteredEquationText);
127
148
  },
128
149
 
129
150
  /**
130
- * @param {number} index of option
131
- * @description this function bold text in set correct answer option input field
151
+ * @param {string[]} optionsTextArray options array for preview tab options
152
+ * @description this function verifies options text content
132
153
  */
133
- verifyBoldTextAddedToOptionInSetCorrectAnswerSection: (index) => {
134
- listOrderingPage.setCorrectAnswerSectionOption()
135
- .eq(index)
136
- .find('strong')
137
- .eq(0)
138
- .should('have.text', 'This is a bold option');
139
- },
140
-
141
- verifyDefaultAndActiveStateOfOptionInSetCorrectAnswerSection: () => {
142
- listOrderingPage.setCorrectAnswerSectionOption()
143
- .eq(0)
144
- .realHover()
145
- .should('have.css', 'border', `2px solid ${css.color.activeButtons}`)
146
- .find('.question-text-wrapper')
147
- .and('have.css', 'color', css.color.activeButtons);
148
- listOrderingPage.setCorrectAnswerSectionOption()
149
- .eq(0)
150
- .realHover({ position: 'topLeft' })
151
- .should('have.css', 'border', `1px solid ${css.color.figDefaultComponentBorder}`)
152
- .find('.question-text-wrapper')
153
- .and('have.css', 'color', css.color.text)
154
+ verifyTextContentOfOptionInPreviewTab: (optionsText, index) => {
155
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionPreviewTab(), index), optionsText);
154
156
  },
155
157
 
156
158
  /**
157
- *
158
- * @param {string} optionsText text content of the option
159
- * @param {number} index the position at which the options is being dropped
160
- * @description click and drop a option into a position in the set correct answer section
159
+ * @param {string[]} optionsTextArray options array for set correct answer options
160
+ * @description this function verifies options text content
161
161
  */
162
- clickAndReorderOptionInSetCorrectAnswerSection: (optionsText, index) => {
163
- listOrderingPage.setCorrectAnswerSectionOption()
164
- .contains(optionsText)
165
- .click();
166
- listOrderingPage.setCorrectAnswerSectionOption()
167
- .eq(index)
168
- .click();
162
+ verifyTextContentOfOptionInSpecifyCorrectAnswerSection: (optionsText, index) => {
163
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index), optionsText);
169
164
  },
170
165
 
171
- verifyPointsInputFieldErrorMessage: () => {
172
- commonComponents.errorMessage()
173
- .eq(0)
174
- .should('have.text', 'Error: Please enter points.');
166
+ /**
167
+ * @param {string} optionsText option to be checked for the correct icon
168
+ * @description This function verifies the correct icon in the preview tab
169
+ */
170
+ verifyCorrectOptionIcon: (optionsText) => {
171
+ listOrderingPage.optionWrapperPreviewTab()
172
+ .contains(optionsText)
173
+ .parents('.orderlist-option-wrapper')
174
+ .within(() => {
175
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'exist');
176
+ });
175
177
  },
176
178
 
177
- //Preview tab
178
179
  /**
179
- * @param {number} index set correct answer option index
180
- * @description this function verfies contents of options
180
+ * @param {string} optionsText option to be checked for the correct icon
181
+ * @description This function verifies the correct icon in the preview tab
181
182
  */
182
- verifyDragHandleButtonOfOptionInPreviewTab: (index) => {
183
- listOrderingPage.previewTabOption()
184
- .eq(index)
183
+ verifyIncorrectOptionIcon: (optionsText) => {
184
+ listOrderingPage.optionWrapperPreviewTab()
185
+ .contains(optionsText)
186
+ .parents('.orderlist-option-wrapper')
185
187
  .within(() => {
186
- listOrderingPage.dragHandleButton()
187
- .should('exist');
188
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'exist');
188
189
  });
189
190
  },
190
191
 
192
+ verifyCorrectAnswerSectionNotExists: () => {
193
+ utilities.verifyElementVisibilityState(listOrderingPage.correctAnswersLabel(), 'notExist');
194
+ utilities.verifyElementVisibilityState(listOrderingPage.correctAnswerSectionAnswerWrapper(), 'notExist');
195
+ },
196
+
191
197
  /**
192
- * @param {string[]} optionsTextArray options array for set correct answer option
193
- * @description this function verifies options text content
198
+ * @param {string[]} optionsTextArray array of options in the correct answer section
199
+ * @description this function verifies the correct order of options in correct answer section
194
200
  */
195
- verifyTextContentOfOptionsInPreviewTab: (optionsTextArray) => {
201
+ verifyOptionsInCorrectAnswerSection: (optionsTextArray) => {
196
202
  optionsTextArray.forEach((optionsText, index) => {
197
- listOrderingPage.previewTabOption()
198
- .eq(index)
199
- .should('have.text', optionsText);
203
+ utilities.getNthElement(listOrderingPage.correctAnswerSectionAnswerWrapper(), index)
204
+ .within(() => {
205
+ utilities.verifyTextContent(listOrderingPage.correctAnswerSectionAnswerText(), optionsText);
206
+ });
200
207
  });
201
208
  },
202
209
 
203
210
  /**
204
- * @param {number} index of option
205
- * @description this function verifies image text in preview tab options
211
+ * @description Verifies that the image in the Preview tab has the correct source and alt text.
212
+ * @param {number} optionIndex - The index of the option in the Preview tab.
206
213
  */
207
- verifyImageAddedToOptionInPreviewTab: (index) => {
208
- listOrderingPage.previewTabOption()
209
- .eq(index)
214
+ verifyOptionWithImageInGradingView: (optionIndex) => {
215
+ listOrderingPage.optionGradingView()
216
+ .eq(optionIndex)
210
217
  .find('img')
211
218
  .should('have.attr', 'src', constants.foxImageLink)
212
219
  .and('have.attr', 'alt', constants.foxImageAltText);
213
220
  },
214
221
 
215
222
  /**
216
- * @param {number} index of option
217
- * @description this function verifies equation text in preview tab options
218
- */
219
- verifyEquationAddedToOptionInPreviewTab: (index) => {
220
- listOrderingPage.previewTabOption()
221
- .eq(index)
222
- .contains(constants.CKEditorInputFieldEnteredEquationText)
223
- listOrderingPage.previewTabOption()
224
- .find('[role="math"]')
225
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
226
- },
227
-
228
- /**
229
- * @param {number} index of option
230
- * @description this function verifies link in preview tab options
231
- */
232
- verifyLinkAddedToOptionInPreviewTab: (index) => {
233
- listOrderingPage.previewTabOption()
234
- .eq(index)
235
- .should('have.text', 'lorem')
236
- .find('a')
237
- .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
238
- },
239
-
240
- /**
241
- * @param {number} index of option
242
- * @description this function verifies bold text in preview tab options
243
- */
244
- verifyBoldTextAddedToOptionInPreviewTab: (index) => {
245
- listOrderingPage.previewTabOption()
246
- .eq(index)
223
+ * @description Verifies that the bold text in the Preview tab is correct.
224
+ * @param {number} optionIndex - The index of the option in the Preview tab.
225
+ */
226
+ verifyOptionWithBoldTextInGradingView: (optionIndex) => {
227
+ listOrderingPage.optionGradingView()
228
+ .eq(optionIndex)
247
229
  .find('strong')
248
- .should('exist')
249
- .should('have.text', 'This is a bold option')
250
- },
251
-
252
- verifyDefaultAndActiveStateOfOptionInPreviewTab: () => {
253
- listOrderingPage.previewTabOption()
254
- .eq(0)
255
- .realHover()
256
- .should('have.css', 'border', `2px solid ${css.color.activeButtons}`)
257
- .find('.question-text-wrapper')
258
- .and('have.css', 'color', css.color.activeButtons);
259
- listOrderingPage.previewTabOption()
260
- .eq(0)
261
- .realHover({ position: 'topLeft' })
262
- .should('have.css', 'border', `1px solid ${css.color.figDefaultComponentBorder}`)
263
- .find('.question-text-wrapper')
264
- .and('have.css', 'color', css.color.text)
265
- },
266
-
267
- //Scoring
268
- /**
269
- * @param {number} points the points to be displayed in the partial equal weights points field
270
- * @description this function checks the points per response in partial equal weights
271
- */
272
- verifyPartialEqualWeightsPointsPerResponseScore: (points) => {
273
- listOrderingPage.partialEqualWeightsPointsPerResponseScore()
274
- .each(($element) => {
275
- cy.wrap($element)
276
- .verifyInnerText(points);
277
- });
230
+ .should('have.text', 'This is a bold option');
278
231
  },
279
232
 
280
233
  /**
281
- * @description this function checks if the partial different weights points field is empty and visible
282
- */
283
- verifyPartialDifferentWeightsPointsInputFieldIsEmptyAndEnabled: () => {
284
- listOrderingPage.partialDifferentWeightsPointsInputField()
285
- .each(($element) => {
286
- cy.wrap($element)
287
- .should('have.value', '')
288
- .and('be.visible')
289
- .and('be.enabled');
290
- });
234
+ * @description Verifies that the equation text in the Preview tab is correct.
235
+ * @param {number} optionIndex - The index of the option in the Preview tab.
236
+ */
237
+ verifyOptionWithEquationTextInGradingView: (optionIndex) => {
238
+ listOrderingPage.optionGradingView()
239
+ .eq(optionIndex)
240
+ .find('[role="math"]')
241
+ .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
242
+ .contains(constants.CKEditorInputFieldEnteredEquationText);
291
243
  },
292
244
 
293
245
  /**
294
- * @param {number[]} pointsArray the array of points to be alloted to each option
295
- * @description this function allots points to all the options
246
+ * @param {string[]} optionsTextArray options array for set correct answer option
247
+ * @description this function verifies options text content
296
248
  */
297
- allotPartialDifferentWeightsToAllPointsFields: (pointsArray) => {
298
- pointsArray.forEach((points, columnIndex) => {
299
- listOrderingPage.partialDifferentWeightsPointsInputField()
300
- .eq(columnIndex)
301
- .clear()
302
- .type(points, { delay: 0 })
303
- .should('have.value', points);
304
- });
305
- },
306
-
307
- verifyPartialDifferentWeightsPointsPerResponseLabel: () => {
308
- listOrderingPage.partialDifferentWeightsPointsPerResponseLabel()
309
- .verifyInnerText('Points per response')
310
- .should('be.visible');
311
- },
312
-
313
- verifyPointsPerResponseLabel: () => {
314
- listOrderingPage.pointsPerResponseLabel()
315
- .verifyInnerText('Points per response')
316
- .should('be.visible');
249
+ verifyTextContentOfOptionInGradingView: (optionsText, index) => {
250
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionGradingView(), index), optionsText);
317
251
  },
318
252
 
319
253
  /**
320
- *
321
254
  * @param {string} optionsText text content of the option
322
255
  * @param {number} index the position at which the options is being dropped
323
256
  * @description click and drop a option into a position in the set correct answer section
324
257
  */
325
- clickAndReorderOptionInPrevewTab: (optionsText, index) => {
326
- listOrderingPage.previewTabOption()
258
+ clickAndReorderOptionInGradingView: (optionsText, index) => {
259
+ listOrderingPage.optionGradingView()
327
260
  .contains(optionsText)
328
261
  .click();
329
- listOrderingPage.previewTabOption()
262
+ listOrderingPage.optionGradingView()
330
263
  .eq(index)
331
264
  .click();
332
265
  },
333
266
 
334
267
  /**
335
- *
336
- * @param {string[]} optionsArray array of options set in options section
337
- * @description this function resets the question preview
268
+ * Verifies the order of options in the "Specify Correct Answer" section.
269
+ * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
338
270
  */
339
- resetQuestionPreview: (optionsArray) => {
340
- createQuestionBasePage.steps.switchToEditTab();
341
- createQuestionBasePage.steps.switchToPreviewTab();
342
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(optionsArray);
343
- },
344
-
345
- /**
346
- * @param {string[]} numerationArray array of numeration numbers, lowercase, uppercase
347
- * @description this function verifies the numeration of options
348
- */
349
- verifyOptionsNumeration: (numerationArray) => {
350
- numerationArray.forEach((optionNumeration, index) => {
351
- listOrderingPage.previewTabOption()
352
- .eq(index)
353
- .within(() => {
354
- listOrderingPage.optionNumeration()
355
- .should('have.text', optionNumeration);
356
- });
271
+ verifyOptionsOrderInSpecifyCorrectAnswerSection: (optionsTextArray) => {
272
+ optionsTextArray.forEach((option, index) => {
273
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index), option);
357
274
  });
358
275
  },
359
276
 
360
277
  /**
361
- * @param {string} optionsText option to be checked for the correct icon
362
- * @description This function verifies the correct icon in the preview tab
363
- */
364
- verifyCorrectOptionsCheckmarkIcon: (optionsText) => {
365
- listOrderingPage.previewTabOption()
366
- .contains(optionsText)
367
- .parents('.orderlist-option-wrapper')
368
- .within(() => {
369
- autoScoredPreviewBase.correctIcon()
370
- .and('be.visible');
371
- });
278
+ * Verifies the order of options in the preview tab
279
+ * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
280
+ */
281
+ verifyOptionsOrderInPreviewTab: (optionsTextArray) => {
282
+ optionsTextArray.forEach((option, index) => {
283
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionPreviewTab(), index), option);
284
+ });
372
285
  },
373
286
 
374
287
  /**
375
- * @param {string} optionsText option to be checked for the correct icon
376
- * @description This function verifies the correct icon in the preview tab
377
- */
378
- verifyIncorrectOptionsCrossmarkIcon: (optionsText) => {
379
- listOrderingPage.previewTabOption()
380
- .contains(optionsText)
381
- .parents('.orderlist-option-wrapper')
382
- .within(() => {
383
- autoScoredPreviewBase.incorrectIcon()
384
- .and('be.visible');
385
- });
386
- },
387
-
388
- verifyQuestionPreviewStateWhenShowCorrectAnswerIsUnchecked: () => {
389
- cy.log('After deselecting Show correct answer checkbox, the question preview should return to the previous state');
390
- previewScoringAndShowCorrectAnswerComponent.steps.uncheckShowCorrectAnswerCheckbox();
391
- autoScoredPreviewBase.correctIcon()
392
- .should('not.exist');
393
- autoScoredPreviewBase.incorrectIcon()
394
- .should('not.exist');
395
- autoScoredPreviewBase.correctIncorrectAnswerLabel()
396
- .should('not.exist');
397
- autoScoredPreviewBase.steps.verifyCorrectIncorrectBorderNotVisible()
288
+ * Verifies the points per response score against a given value.
289
+ * @param {number} value - The expected points per response score.
290
+ */
291
+ verifyPointsPerResponseScore: (value) => {
292
+ utilities.verifyTextContent(listOrderingPage.pointsPerResponseValue(), value)
398
293
  },
399
294
 
400
295
  getOptionsArray: () => {
401
296
  const optionsArray = []
402
- listOrderingPage.previewTabOption()
297
+ listOrderingPage.optionPreviewTab()
403
298
  .each(($el) => {
404
299
  cy.wrap($el)
405
300
  .invoke('text')
@@ -417,339 +312,450 @@ const steps = {
417
312
  verifyRandomizeOptionOrder: (optionsArray) => {
418
313
  let currentOptionsArray = [...optionsArray]
419
314
  for (let index = 0; index < currentOptionsArray.length; index++) {
420
- listOrderingPage.previewTabOption()
315
+ listOrderingPage.optionPreviewTab()
421
316
  .eq(index)
422
317
  .then(($element) => {
423
318
  expect($element.text()).to.be.oneOf(currentOptionsArray);
424
319
  currentOptionsArray = currentOptionsArray.filter((value) => value !== $element.text())
425
320
  });
426
321
  };
427
- listOrderingPage.steps.verifyOptionsAreRerandomized(optionsArray)
322
+ listOrderingPage.steps.verifyOptionsAreReRandomized(optionsArray)
428
323
  },
429
324
 
430
325
  /**
431
326
  * @param {string[]} previousOrderOfOptionsArray array of previous order of options
432
327
  * @description this function verifies that the order of the options is different from the previous order
433
328
  */
434
- verifyOptionsAreRerandomized: (previousOrderOfOptionsArray) => {
435
- listOrderingPage.previewTabOption()
329
+ verifyOptionsAreReRandomized: (previousOrderOfOptionsArray) => {
330
+ listOrderingPage.optionPreviewTab()
436
331
  .should('not.have.text', '')
437
332
  .and('not.have.text', previousOrderOfOptionsArray.join(''));
438
333
  },
439
334
 
440
- /**
441
- * @param {number} index set correct answer option index
442
- * @description this function verfies drag handle of options does not exist
443
- */
444
- verifyDragHandleButtonDoesNotExistInSetCorrectAnswerSection: (index) => {
445
- listOrderingPage.setCorrectAnswerSectionOption()
446
- .eq(index)
447
- .within(() => {
448
- listOrderingPage.dragHandleButton()
449
- .should('not.exist');
450
- });
451
- },
452
-
453
- /**
454
- * @param {number} index set correct answer option index
455
- * @description this function verfies drag handle of options does not exist
456
- */
457
- verifyDragHandleButtonDoesNotExistInPreviewTab: (index) => {
458
- listOrderingPage.previewTabOption()
459
- .eq(index)
460
- .within(() => {
461
- listOrderingPage.dragHandleButton()
462
- .should('not.exist');
463
- });
335
+ verifyOuterBorderOfQuestionPreview: () => {
336
+ utilities.verifyCSS(listOrderingPage.questionBorderPreviewTab(), {
337
+ 'border': `1px solid ${css.color.draggableOptionsContainerBorder}`
338
+ });
464
339
  },
465
340
 
466
- //Additional settings
467
-
468
- verifyNoBorderForSetCorrectAnswerOption: () => {
469
- listOrderingPage.setCorrectAnswerSectionOption()
470
- .eq(0)
341
+ verifyOuterBorderOfQuestionPreviewNotExists: () => {
342
+ listOrderingPage.questionBorderPreviewTab()
471
343
  .should('have.css', 'border')
472
344
  .and('match', /0px none/);
473
345
  },
474
346
 
475
- verifyNoBorderForPreviewTabOption: () => {
476
- listOrderingPage.previewTabOption()
477
- .eq(0)
478
- .should('have.css', 'border')
479
- .and('match', /0px none/);
347
+ verifyEnableOuterBorderForQuestionCheckboxCheckedState: () => {
348
+ listOrderingPage.enableOuterBorderForQuestionCheckbox()
349
+ .should('be.checked');
480
350
  },
481
351
 
482
- clickOnSetPointsButton: () => {
483
- listOrderingPage.buttonSetPoints()
484
- .click();
352
+ verifyEnableOuterBorderForQuestionCheckboxUncheckedState: () => {
353
+ listOrderingPage.enableOuterBorderForQuestionCheckbox()
354
+ .should('not.be.checked');
485
355
  },
486
356
 
487
- verifySetPointsButton: () => {
488
- utilities.verifyInnerText(listOrderingPage.buttonSetPoints(), 'Set points');
489
- utilities.verifyElementVisibilityState(listOrderingPage.setPointsIcon(), 'visible');
357
+ checkEnableOuterBorderForQuestionCheckbox: () => {
358
+ listOrderingPage.enableOuterBorderForQuestionCheckbox()
359
+ .click()
360
+ .should('be.checked');
361
+ },
362
+
363
+ uncheckEnableOuterBorderForQuestionCheckbox: () => {
364
+ listOrderingPage.enableOuterBorderForQuestionCheckbox()
365
+ .click()
366
+ .should('not.be.checked');
490
367
  },
491
368
 
492
369
  /**
493
- * @param {number} index of option
494
- * @description this function verifies image in set points popup
495
- */
496
- verifyImageAddedToOptionInSetPointsPopup: (index) => {
497
- setPointsPopupBase.setPointsPopupOptions()
498
- .eq(index)
370
+ * @description Verifies that the image in the Specify Correct Answer section has the correct source and alt text.
371
+ * @param {number} index - The index of the option in the Specify Correct Answer section.
372
+ */
373
+ verifyImageInSpecifyCorrectAnswerSection: (index) => {
374
+ utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
499
375
  .find('img')
500
376
  .should('have.attr', 'src', constants.foxImageLink)
501
377
  .and('have.attr', 'alt', constants.foxImageAltText);
502
378
  },
503
379
 
504
380
  /**
505
- * @param {number} index of option
506
- * @description this function verifies equation text in set points popup
507
- */
508
- verifyEquationAddedToOptionInSetPointsPopup: (index) => {
509
- setPointsPopupBase.setPointsPopupOptions()
510
- .eq(index)
511
- .contains(constants.CKEditorInputFieldEnteredEquationText)
512
- setPointsPopupBase.setPointsPopupOptions()
381
+ * @description Verifies that the bold text in the Specify Correct Answer section is correct.
382
+ * @param {number} index - The index of the option in the Specify Correct Answer section.
383
+ */
384
+ verifyBoldTextInSpecifyCorrectAnswerSection: (index) => {
385
+ utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
386
+ .find('strong')
387
+ .should('have.text', 'This is a bold option');
388
+ },
389
+
390
+ /**
391
+ * @description Verifies that the equation text in the Specify Correct Answer section is correct.
392
+ * @param {number} index - The index of the option in the Specify Correct Answer section.
393
+ */
394
+ verifyEquationTextInSpecifyCorrectAnswerSection: (index) => {
395
+ utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
513
396
  .find('[role="math"]')
514
397
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
398
+ .contains(constants.CKEditorInputFieldEnteredEquationText);
515
399
  },
516
400
 
517
401
  /**
518
- * @param {number} index of option
519
- * @description this function link in set points popup
402
+ * Selects an ordering layout option on the list ordering page.
403
+ * @param {('Reorder in the same list' | 'Reorder as a separate list' | 'Dropdown menu')} layoutOption - The layout option to select.
404
+ * @throws {Error} If an invalid layout option is provided.
520
405
  */
521
- verifyLinkAddedToOptionInSetPointsPopup: (index) => {
522
- setPointsPopupBase.setPointsPopupOptions()
523
- .eq(index)
524
- .should('have.text', 'lorem')
525
- .find('a')
526
- .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
406
+ selectOrderingLayoutOption: (layoutOption) => {
407
+ switch (layoutOption) {
408
+ case 'Reorder in the same list':
409
+ listOrderingPage.reorderInTheSameListButton()
410
+ .click()
411
+ .should('have.class', 'ngie-toggle-button-selected');
412
+ break;
413
+ case 'Reorder as a separate list':
414
+ listOrderingPage.reorderAsSeparateListButton()
415
+ .click()
416
+ .should('have.class', 'ngie-toggle-button-selected');
417
+ break;
418
+ case 'Dropdown menu':
419
+ listOrderingPage.dropdownMenuButton()
420
+ .click()
421
+ .should('have.class', 'ngie-toggle-button-selected');
422
+ break;
423
+ default:
424
+ throw new Error('Invalid layout option');
425
+ }
426
+ },
427
+
428
+ ///Dropdown menu steps
429
+ expandDropdownMenuOptionsDropdown: () => {
430
+ listOrderingPage.dropdownMenuOptionsDropdown()
431
+ .click();
432
+ },
433
+
434
+ /**
435
+ * Selects an option from a dropdown menu on the list ordering page.
436
+ * @param {('Numerical' | 'Uppercase alphabet' | 'Lowercase alphabet' | 'Uppercase roman numeral' | 'Lowercase roman numeral')} dropdownOption - The option to select from the dropdown menu.
437
+ */
438
+ selectListOptionFromDropdownMenuOptionsDropdown: (dropdownOption) => {
439
+ listOrderingPage.dropdownMenuListOptions(dropdownOption)
440
+ .click();
441
+ },
442
+
443
+ /**
444
+ * Expands the position dropdown in the specify correct answer section and selects the specified dropdown index.
445
+ * @param {number} dropdownIndex - The index of the dropdown to expand and select.
446
+ */
447
+ expandPositionDropdownSpecifyCorrectAnswerSection: (dropdownIndex) => {
448
+ utilities.getNthElement(listOrderingPage.positionDropdownSpecifyCorrectAnswerSection(), dropdownIndex)
449
+ .click();
527
450
  },
528
451
 
529
452
  /**
530
- * @param {number} index of option
531
- * @description this function bold text in in set points popup
453
+ * Selects the specified option from the position dropdown in the specify correct answer section.
454
+ * @param {number} optionIndex - The index of the option in the dropdown.
455
+ * @param {string} position - The position to select.
456
+ */
457
+ selectOptionPositionSpecifyCorrectAnswerSection: (optionIndex, position) => {
458
+ steps.expandPositionDropdownSpecifyCorrectAnswerSection(optionIndex);
459
+ listOrderingPage.positionDropdownListOption(position)
460
+ .click();
461
+ },
462
+
463
+ /**
464
+ * Selects positions for all options in the specify correct answer section according to the provided position object.
465
+ * @param {Object[]} positionObject - An array of objects where each object contains optionIndex and position properties.
466
+ * @param {number} positionObject[].optionIndex - The index of the option.
467
+ * @param {string} positionObject[].position - The position to select.
468
+ */
469
+ selectPositionForAllOptionsSpecifyCorrectAnswerSection: (positionObject) => {
470
+ positionObject.forEach(({ optionIndex, position }) => {
471
+ steps.selectOptionPositionSpecifyCorrectAnswerSection(optionIndex, position)
472
+ });
473
+ },
474
+
475
+ /**
476
+ * Expands the position dropdown in the specify correct answer section and selects the specified dropdown index.
477
+ * @param {number} dropdownIndex - The index of the dropdown to expand and select.
478
+ */
479
+ expandPositionDropdownPreviewTab: (dropdownIndex) => {
480
+ utilities.getNthElement(listOrderingPage.positionDropdownPreviewTab(), dropdownIndex)
481
+ .click();
482
+ },
483
+
484
+ /**
485
+ * Selects a list option from the position dropdown.
486
+ * @param {number} position The list option to select.
487
+ * @returns {void}
488
+ */
489
+ selectListOptionPositionDropdown: (position) => {
490
+ listOrderingPage.positionDropdownListOption(position)
491
+ .click();
492
+ },
493
+
494
+ /**
495
+ * Selects the specified option from the position dropdown in the specify correct answer section.
496
+ * @param {number} optionIndex - The index of the option in the dropdown.
497
+ * @param {string} position - The position to select.
498
+ */
499
+ selectOptionPositionPreviewTab: (optionIndex, position) => {
500
+ steps.expandPositionDropdownPreviewTab(optionIndex);
501
+ listOrderingPage.positionDropdownListOption(position)
502
+ .click();
503
+ },
504
+
505
+ /**
506
+ * Selects positions for all options in the specify correct answer section according to the provided position object.
507
+ * @param {Object[]} positionObject - An array of objects where each object contains optionIndex and position properties.
508
+ * @param {number} positionObject[].optionIndex - The index of the option.
509
+ * @param {string} positionObject[].position - The position to select.
510
+ */
511
+ selectPositionForAllOptionsPreviewTab: (positionObject) => {
512
+ positionObject.forEach(({ optionIndex, position }) => {
513
+ steps.selectOptionPositionPreviewTab(optionIndex, position)
514
+ });
515
+ },
516
+
517
+ /**
518
+ * @param {number} optionIndex option to be checked for the correct icon
519
+ * @description This function verifies the correct icon in the preview tab for the dropdown order layout
532
520
  */
533
- verifyBoldTextAddedToOptionInSetPointsPopup: (index) => {
534
- setPointsPopupBase.setPointsPopupOptions()
535
- .eq(index)
521
+ verifyCorrectOptionIconDropdownLayout: (optionIndex) => {
522
+ utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
523
+ .within(() => {
524
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'visible');
525
+ });
526
+ },
527
+
528
+ /**
529
+ * @param {number} optionIndex option to be checked for the correct icon
530
+ * @description This function verifies the correct icon in the preview tab for the dropdown order layout
531
+ */
532
+ verifyIncorrectOptionIconDropdownLayout: (optionIndex) => {
533
+ utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
534
+ .within(() => {
535
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'visible');
536
+ });
537
+ },
538
+
539
+ /**
540
+ * @param {number} optionIndex option to be checked for the correct/incorrect icon to not exist
541
+ * @description This function verifies the correct/incorrect icon to not exist in the preview tab for the dropdown order layout
542
+ */
543
+ verifyCorrectIncorrectOptionIconDropdownLayoutNotExists: (optionIndex) => {
544
+ utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
545
+ .within(() => {
546
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'notExist');
547
+ utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'notExist');
548
+ });
549
+ },
550
+
551
+ /**
552
+ * @description Verifies that the image in the Preview tab has the correct source and alt text.
553
+ * @param {number} optionIndex - The index of the option in the Preview tab.
554
+ */
555
+ verifyOptionWithImageDropdownLayoutInGradingView: (optionIndex) => {
556
+ listOrderingPage.dropdownOptionWrapperGradingView()
557
+ .eq(optionIndex)
558
+ .find('img')
559
+ .should('have.attr', 'src', constants.foxImageLink)
560
+ .and('have.attr', 'alt', constants.foxImageAltText);
561
+ },
562
+
563
+ /**
564
+ * @description Verifies that the bold text in the Preview tab is correct.
565
+ * @param {number} optionIndex - The index of the option in the Preview tab.
566
+ */
567
+ verifyOptionWithBoldTextDropdownLayoutInGradingView: (optionIndex) => {
568
+ listOrderingPage.dropdownOptionWrapperGradingView()
569
+ .eq(optionIndex)
536
570
  .find('strong')
537
- .eq(0)
538
571
  .should('have.text', 'This is a bold option');
539
572
  },
540
573
 
541
574
  /**
542
- * @param {number[]} numerationArray numeration array for the option
543
- * @description this function checks the numeration of options in set points popup
575
+ * @description Verifies that the equation text in the Preview tab is correct.
576
+ * @param {number} optionIndex - The index of the option in the Preview tab.
577
+ */
578
+ verifyOptionWithEquationTextDropdownLayoutInGradingView: (optionIndex) => {
579
+ listOrderingPage.dropdownOptionWrapperGradingView()
580
+ .eq(optionIndex)
581
+ .find('[role="math"]')
582
+ .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
583
+ .contains(constants.CKEditorInputFieldEnteredEquationText);
584
+ },
585
+
586
+ /**
587
+ * @param {string[]} optionsTextArray options array for set correct answer option
588
+ * @description this function verifies options text content
589
+ */
590
+ verifyTextContentOfOptionDropdownLayoutInGradingView: (optionsText, index) => {
591
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.dropdownOptionWrapperGradingView(), index), optionsText);
592
+ },
593
+
594
+ /**
595
+ * @param {string[]} optionsTextArray array of options in the correct answer section
596
+ * @description this function verifies the correct order of options in correct answer section
544
597
  */
545
- verifySetPointsPopupOptionNumeration: (numerationArray) => {
546
- numerationArray.forEach((optionNumeration, index) => {
547
- setPointsPopupBase.dialogBox()
598
+ verifyOptionsPositionInCorrectAnswerSection: (optionsTextArray, positionArray) => {
599
+ optionsTextArray.forEach((optionsText, index) => {
600
+ utilities.getNthElement(listOrderingPage.correctAnswerSectionAnswerWrapper(), index)
548
601
  .within(() => {
549
- listOrderingPage.optionNumeration()
550
- .eq(index)
551
- .should('have.text', optionNumeration);
602
+ utilities.verifyTextContent(listOrderingPage.correctAnswerSectionAnswerText(), optionsText);
552
603
  });
553
604
  });
605
+ positionArray.forEach((position, dropdownIndex) => {
606
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.positionDropdownCorrectAnswerSection(), dropdownIndex), position);
607
+ });
554
608
  },
555
609
 
556
- verifyCorrectIncorrectAnswerLabel: (labelText) => {
557
- autoScoredPreviewBase.correctIncorrectAnswerLabel()
558
- .should('be.visible')
559
- .verifyInnerText(`${labelText} answer`)
560
- .parents('[class*="__AnswerStatusWrapper"]')
561
- .find('[class*="__AnswerStatusIcon"]')
562
- .should('be.visible')
563
- .should('have.text', `${labelText}-Icon`)
564
- }
565
- }
610
+ /**
611
+ * Verifies the selected option position in the dropdown for the specified dropdown index.
612
+ * @param {number} dropdownIndex - The index of the dropdown to verify.
613
+ * @param {string} position - The expected position of the selected option.
614
+ */
615
+ verifySelectedOptionPositionDropdown: (dropdownIndex, position) => {
616
+ utilities.getNthElement(listOrderingPage.positionDropdownPreviewTab(), dropdownIndex)
617
+ .within(() => {
618
+ if (position === '') {
619
+ utilities.verifyElementVisibilityState(listOrderingPage.dropdownSelectedOptionLabel(), 'notExist');
620
+ } else {
621
+ utilities.verifyInnerText(listOrderingPage.dropdownSelectedOptionLabel(), position);
622
+ }
623
+ });
624
+ },
566
625
 
567
- const tests = {
568
- ...createQuestionBasePage.tests,
569
- ...commonComponents.tests,
570
- ...questionInstructionsComponent.tests,
571
- ...autoScoredScoringSection.tests,
572
- ...scoringSectionBase.tests,
573
- ...autoScoredSetCorrectAnswerSection.tests,
574
- ...previewScoringAndShowCorrectAnswerComponent.tests,
575
- ...additionalSettingsPanel.tests,
576
- ...autoScoredAdditionalSettings.tests,
577
- ...answerNumerationComponent.tests,
578
- ...studentResponseAndLayoutComponent.tests,
579
- ...listSortingAndOrderingBase.tests,
580
- verifyAllContentsOfSetCorrectAnswerSectionForScoringType: (scoringType, optionsArray) => {
581
- it(`When user has selected ${scoringType} scoring type then added options should be displayed in the set correct answer section`, () => {
582
- listOrderingPage.steps.verifyOptionsTextContentInSetCorrectAnswerSection(optionsArray);
583
- for (let index = 0; index < 4; index++) {
584
- listOrderingPage.steps.verifyDragHandleButtonOfOptionInSetCorrectAnswerSection(index);
585
- }
586
- });
626
+ verifyAssignValueToAllDropdownAlertMessage: () => {
627
+ utilities.verifyInnerText(listOrderingPage.alertMessage(), 'All options need to have a value assigned to them from the dropdown.');
628
+ utilities.verifyElementVisibilityState(listOrderingPage.alertMessage(), 'visible');
629
+ },
630
+
631
+ verifyAlertMessageNotExists: () => {
632
+ utilities.verifyElementVisibilityState(listOrderingPage.alertMessage(), 'notExist');
587
633
  },
588
634
 
589
635
  /**
590
- * @param {number} totalPoints the maximum points that can be scored by the user
591
- * @description this function verifies the functionality of minimum points when penalty points are not set and user attempts incorrect answer
592
- */
593
- verifyMinimumScoreAwardedIfAttemptedFunctionalityForIncorrectAnswer: (totalPoints) => {
594
- it('When user has provided minimum score awarded (if attempted) points, then in Preview tab on entering incorrect answer, minimum score should be provided for the question', () => {
595
- cy.log('Switch to edit tab and set minimum score if attempted points')
596
- createQuestionBasePage.steps.switchToEditTab();
597
- scoringSectionBase.steps.expandMinimumScoringDropdown();
598
- scoringSectionBase.steps.selectMinimumScoringTypeListOption('Award minimum score only if attempted');
599
- scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted('1')
600
- createQuestionBasePage.steps.switchToPreviewTab()
601
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 0);
602
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 1);
603
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
604
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['plant', 'seed', 'flower', 'sprout']);
605
- listOrderingPage.previewScoreText()
606
- .verifyInnerText(`1/${totalPoints}`);
607
- });
636
+ * @param {string[]} optionsTextArray options array for preview tab options
637
+ * @description this function verifies options text content for "dropdown menu" ordering layout
638
+ */
639
+ verifyTextContentOfOptionDropdownLayoutInPreviewTab: (optionsText, index) => {
640
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.dropdownOptionWrapperPreviewTab(), index), optionsText);
641
+ },
608
642
 
609
- it('When user removes minimum score awarded (if attempted) points, then in Preview tab on selecting any options other than correct answers, points should not be provided', () => {
610
- cy.log('Switch to edit tab and remove minimum score if attempted points')
611
- createQuestionBasePage.steps.switchToEditTab();
612
- scoringSectionBase.steps.clearMinimumScoreIfAttemptedPointsField();
613
- createQuestionBasePage.steps.switchToPreviewTab()
614
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 0);
615
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 1);
616
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
617
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['plant', 'seed', 'flower', 'sprout']);
618
- listOrderingPage.previewScoreText()
619
- .verifyInnerText(`0/${totalPoints}`);
620
- });
643
+ /**
644
+ * @param {string[]} optionsTextArray options array for specify correct answer section options
645
+ * @description this function verifies options text content for "dropdown menu" ordering layout
646
+ */
647
+ verifyTextContentOfOptionDropdownLayoutInSpecifyCorrectAnswerSection: (optionsText, index) => {
648
+ utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.dropdownOptionWrapperSpecifyCorrectAnswerSection(), index), optionsText);
621
649
  },
622
650
 
623
651
  /**
624
- *
625
- * @param {number} scoredPoints the points scored by the user when penalty points are reduced
626
- * @param {number} totalPoints the maximum points that can be scored by the user
627
- * @description this function verifies the functionality of Penalty points when minimum points are not set and user attempts incorrect answer
628
- */
629
- verifyPenaltyPointsFunctionalityForIncorrectAnswer: (scoredPoints, totalPoints) => {
630
- it('When user has defined penalty points', () => {
631
- cy.log('Pre-step: Switch to edit tab and set penalty points');
632
- createQuestionBasePage.steps.switchToEditTab();
633
- autoScoredScoringSectionMultipleResponsesType.steps.allotPenaltyPoints(3)
634
-
635
- cy.log('After switching to preview tab, when user adds an incorrect answer input, then 0 points should be awarded(no negative points)');
636
- createQuestionBasePage.steps.switchToPreviewTab();
637
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
638
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['sprout', 'plant', 'flower', 'seed']);
639
- listOrderingPage.previewScoreText()
640
- .verifyInnerText(`0/${totalPoints}`);
641
-
642
- cy.log('When user adds a partially correct answer input, the points should be updated accordingly with deducted penalty points');
643
- listOrderingPage.steps.resetQuestionPreview(['sprout', 'plant', 'flower', 'seed'])
644
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
645
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
646
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'sprout', 'flower']);
647
- listOrderingPage.previewScoreText()
648
- .verifyInnerText(`${scoredPoints}/${totalPoints}`);
649
-
650
- cy.log('Post step: Clearing the Penalty points field')
651
- createQuestionBasePage.steps.switchToEditTab();
652
- autoScoredScoringSectionMultipleResponsesType.penaltyPointsInputField()
653
- .clear();
654
- });
652
+ * Verifies the selected option position in the dropdown for the specified dropdown index.
653
+ * @param {number} dropdownIndex - The index of the dropdown to verify.
654
+ * @param {string} position - The expected position of the selected option.
655
+ */
656
+ verifySelectedOptionPositionDropdownInSpecifyCorrectAnswerSection: (dropdownIndex, position) => {
657
+ utilities.getNthElement(listOrderingPage.positionDropdownSpecifyCorrectAnswerSection(), dropdownIndex)
658
+ .within(() => {
659
+ if (position === '') {
660
+ utilities.verifyElementVisibilityState(listOrderingPage.dropdownSelectedOptionLabel(), 'notExist');
661
+ } else {
662
+ utilities.verifyInnerText(listOrderingPage.dropdownSelectedOptionLabel(), position);
663
+ }
664
+ });
655
665
  },
656
666
 
657
667
  /**
658
- * @param {*} totalPointsScored the maximum points that can be achieved by the user
659
- * @description this function verifies the functionality of penalty points when penalty points are set and user attempts alternate tab answers
660
- */
661
- verifyPenaltyPointsFunctionalityForAlternateTabAnswers: (totalPointsScored) => {
662
- it('When the user has alloted penalty points and attempts the question according to the alternate tab then user should be awarded with full points of the alternate tab and penalty points should not be deducted', () => {
663
- listOrderingPage.steps.switchToEditTab()
664
- listOrderingPage.steps.allotPenaltyPoints(3);
665
- listOrderingPage.steps.switchToPreviewTab();
666
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
667
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 3);
668
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 1);
669
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'flower', 'sprout', 'plant']);
670
- listOrderingPage.steps.verifyPreviewTabScoreText(`${totalPointsScored}`, `${totalPointsScored}`);
671
- cy.log('Post step: Clearing the Penalty points field')
672
- createQuestionBasePage.steps.switchToEditTab();
673
- autoScoredScoringSectionMultipleResponsesType.penaltyPointsInputField()
674
- .clear();
668
+ * Verifies the order of options in the "Specify Correct Answer" section.
669
+ * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
670
+ */
671
+ verifyOptionsOrderDropdownLayoutInSpecifyCorrectAnswerSection: (optionsTextArray) => {
672
+ optionsTextArray.forEach((option, index) => {
673
+ steps.verifyTextContentOfOptionDropdownLayoutInSpecifyCorrectAnswerSection(option, index);
675
674
  });
676
675
  },
677
676
 
678
677
  /**
679
- * @param {number[]} scoredPointsArray An array of numbers representing points scored in different cases.
680
- * - The first element represents points scored for incorrect answers.
681
- * - The second element represents points scored for partially correct answers.
682
- * - The third element represents points scored when minimum score awarded (if attempted) points is greater than the points achieved by attempting the question partially correct
683
- * @param {number} minimumPointsForPartialCorrectAnswers minimum score awarded (if attempted) points on attempting the question partially correct
684
- * @param {number} totalPoints the maximum points that can be achieved by the user
685
- * @description this function verifies the functionality of Minimum score if attempted points when penalty points are set and user attempts incorrect answer
686
- * - For all incorrect responses
687
- * - For partially correct responses, when points scored > minimum score awarded(if attempted) points
688
- * - For partially correct responses, when minimum score awarded(if attempted) points > points scored
689
- */
690
- verifyMinimumScoreIfAttemptedAndPenaltyPointsFunctionalityForIncorrectAnswer: (scoredPointsArray, minimumPointsForPartialCorrectAnswers, totalPoints) => {
691
- it('When user has defined both penalty points and minimum score awarded (if attempted) points', () => {
692
- cy.log('Pre-step: Switch to edit tab and set minimum score awarded (if attempted) points and Penalty points');
693
- createQuestionBasePage.steps.switchToEditTab();
694
- scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted(1);
695
- autoScoredScoringSectionMultipleResponsesType.steps.allotPenaltyPoints(3);
696
-
697
- cy.log('Switch to preview tab and give incorrect answer input to check that minimum points are displayed');
698
- createQuestionBasePage.steps.switchToPreviewTab();
699
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 0);
700
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('sprout', 3);
701
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['flower', 'plant', 'seed', 'sprout']);
702
- listOrderingPage.previewScoreText()
703
- .verifyInnerText(`${scoredPointsArray[0]}/${totalPoints}`);
704
-
705
- cy.log('When user adds a partially correct answer such that the points of the attempt(with penalty points deducted) is more than the minimum score awarded(if attempted) points');
706
- listOrderingPage.steps.resetQuestionPreview(['sprout', 'plant', 'flower', 'seed']);
707
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
708
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
709
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'sprout', 'flower']);
710
- listOrderingPage.previewScoreText()
711
- .verifyInnerText(`${scoredPointsArray[1]}/${totalPoints}`);
712
-
713
- cy.log('When user switches to edit tab and increases the minimum score awarded (if attempted) points to check the case for an attempt in which points of the attempt is less than minimum score awarded (if attempted) points, then the minimum score awarded (if attempted) points should be displayed to the user');
714
- createQuestionBasePage.steps.switchToEditTab();
715
- scoringSectionBase.steps.clearMinimumScoreIfAttemptedPointsField()
716
- scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted(minimumPointsForPartialCorrectAnswers)
717
- cy.log('Switching to preview tab');
718
- createQuestionBasePage.steps.switchToPreviewTab();
719
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
720
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
721
- listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
722
- listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'flower', 'sprout']);
723
- listOrderingPage.previewScoreText()
724
- .verifyInnerText(`${scoredPointsArray[2]}/${totalPoints}`);
678
+ * Verifies the order of options in the preview tab
679
+ * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
680
+ */
681
+ verifyOptionsOrderDropdownLayoutInPreviewTab: (optionsTextArray) => {
682
+ optionsTextArray.forEach((option, index) => {
683
+ steps.verifyTextContentOfOptionDropdownLayoutInPreviewTab(option, index)
725
684
  });
726
685
  },
727
686
 
728
- //Additional settings
687
+ getOptionsArrayForDropdownLayout: () => {
688
+ const optionsArray = []
689
+ listOrderingPage.dropdownOptionWrapperPreviewTab()
690
+ .each(($el) => {
691
+ cy.wrap($el)
692
+ .invoke('text')
693
+ .then((text) => {
694
+ optionsArray.push(text);
695
+ });
696
+ });
697
+ return optionsArray;
698
+ },
699
+
729
700
  /**
730
- * @param {string[]} numerationArray array of the numeration displayed with options numbers| lowercase| uppercase
731
- * @description this function checks the numeration displayed for the options and correct answer container options when Show correct answer is checked
701
+ * @param {string[]} optionsArray array of options set in the options section
702
+ * @description this function verifies if the options are Randomized in the preview tab
732
703
  */
733
- verifyOptionsAndCorrectAnswerContainerNumerationWhenShowCorrectAnswerCheckboxIsChecked: (numerationArray) => {
734
- it('When user clicks on \'Show correct answer\' checkbox then the numeration should be displayed on the options as well as \'Correct answers:\' section', () => {
735
- listOrderingPage.steps.checkShowCorrectAnswerCheckbox()
736
- steps.verifyOptionsNumeration(numerationArray)
737
- steps.verifyCorrectAnswerContainerNumeration(numerationArray)
738
- cy.log('Post step: Uncheck \'Show correct answer\' checkbox')
739
- listOrderingPage.steps.uncheckShowCorrectAnswerCheckbox()
740
- });
704
+ verifyRandomizeOptionOrderDropdownLayout: (optionsArray) => {
705
+ let currentOptionsArray = [...optionsArray]
706
+ for (let index = 0; index < currentOptionsArray.length; index++) {
707
+ listOrderingPage.dropdownOptionWrapperPreviewTab()
708
+ .eq(index)
709
+ .then(($element) => {
710
+ expect($element.text()).to.be.oneOf(currentOptionsArray);
711
+ currentOptionsArray = currentOptionsArray.filter((value) => value !== $element.text())
712
+ });
713
+ };
714
+ listOrderingPage.steps.verifyOptionsAreReRandomizedDropdownLayout(optionsArray)
741
715
  },
742
716
 
743
717
  /**
744
- * @param {string[]} numerationArray array of the numeration displayed with options numbers| lowercase| uppercase
745
- * @description this function checks the numeration displayed for the options and correct answer container options when check answer is selected
718
+ * @param {string[]} previousOrderOfOptionsArray array of previous order of options
719
+ * @description this function verifies that the order of the options is different from the previous order
746
720
  */
747
- verifyOptionsNumerationWhenCheckAnswerIsSelected: (numerationArray) => {
748
- it('When user clicks on \'Check answer\' button then the numeration should be displayed in the options', () => {
749
- listOrderingPage.steps.checkAnswer()
750
- steps.verifyOptionsNumeration(numerationArray)
721
+ verifyOptionsAreReRandomizedDropdownLayout: (previousOrderOfOptionsArray) => {
722
+ listOrderingPage.dropdownOptionWrapperPreviewTab()
723
+ .should('not.have.text', '')
724
+ .and('not.have.text', previousOrderOfOptionsArray.join(''));
725
+ },
726
+ }
727
+
728
+ const tests = {
729
+ ...autoScoredScoringPreviewTab.tests,
730
+ ...scoringSectionBaseEditTab.tests,
731
+ ...autoScoredScoringSectionMultiResponseType.tests,
732
+ ...autoScoredSpecifyCorrectAnswerSection.tests,
733
+ ...commonComponents.tests,
734
+ ...studentViewSettingsLabelComponent.tests,
735
+ ...randomizeOptionsComponent.tests,
736
+ ...autoScoredStudentViewSettings.tests,
737
+ ...questionInstructionsComponent.tests,
738
+ ...optionsWrapperComponent.tests,
739
+ ...additionalSettingsPanel.tests,
740
+ ...additionalSettingsAccessibilitySectionComponent.tests,
741
+ ...createQuestionBasePage.tests,
742
+ verifyContentsOfSpecifyCorrectAnswerSection: () => {
743
+ it('When user selects a scoring type then in the \'Correct\' accordion, all the contents should be displayed', () => {
744
+ utilities.verifyElementCount(listOrderingPage.optionSpecifyCorrectAnswerSection(), 4);
745
+ options.forEach((optionText, index) => {
746
+ listOrderingPage.steps.verifyTextContentOfOptionInSpecifyCorrectAnswerSection(optionText, index);
747
+ });
751
748
  });
752
- }
749
+ },
750
+
751
+ verifyContentsOfSpecifyCorrectAnswerSectionDropdownLayout: () => {
752
+ it('By default, 4 options should be displayed with dropdowns in the specify correct answer section', () => {
753
+ utilities.verifyElementCount(listOrderingPage.positionDropdownSpecifyCorrectAnswerSection(), 4);
754
+ options.forEach((optionText, index) => {
755
+ listOrderingPage.steps.verifyTextContentOfOptionDropdownLayoutInSpecifyCorrectAnswerSection(optionText, index);
756
+ });
757
+ });
758
+ },
753
759
  }
754
760
 
755
761
  export const listOrderingPage = {