itemengine-cypress-automation 1.0.368 → 1.0.369-IEI-5423-cypress-40eadad.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/Dockerfile +1 -0
  2. package/cypress/e2e/ILC/AudioResponseNew/editTabBasicSection.js +4 -16
  3. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +1 -1
  4. package/cypress/e2e/ILC/BrowseItems/browseReviewItems.js +39 -7
  5. package/cypress/e2e/ILC/ChartsBar/HorizontalOrientationBarChart/gradingViewAndCorrectAnswerView.smoke.js +1 -1
  6. package/cypress/e2e/ILC/ChartsBar/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +33 -0
  7. package/cypress/e2e/ILC/ChartsBar/Scoring/partialDifferentWeightBasic.js +2 -2
  8. package/cypress/e2e/ILC/ChartsBar/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -0
  9. package/cypress/e2e/ILC/ChartsBar/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +1 -0
  10. package/cypress/e2e/ILC/ChartsBar/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +1 -0
  11. package/cypress/e2e/ILC/ChartsBar/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +1 -0
  12. package/cypress/e2e/ILC/ChartsBar/editTabBasicSection.js +37 -0
  13. package/cypress/e2e/ILC/ChartsBar/headerSection.js +50 -2
  14. package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightBasic.js +1 -0
  15. package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -0
  16. package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +1 -0
  17. package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +1 -0
  18. package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +1 -0
  19. package/cypress/e2e/ILC/ChartsLine/editQuestion.smoke.js +3 -1
  20. package/cypress/e2e/ILC/ChartsLine/headerSection.js +18 -1
  21. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabAddFeatureRadioButton.js +2 -3
  22. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabAddTranscriptRadioButton .js +2 -4
  23. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabStudentViewSettings.js +3 -3
  24. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerHeaderSectionAndButtons.js +2 -2
  25. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTab.js +1 -1
  26. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabSupportedFileTypes.js +6 -0
  27. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabTranscript.js +2 -3
  28. package/cypress/e2e/ILC/CkEditorEquationEditor/equationEditorBasicFile.js +4 -4
  29. package/cypress/e2e/ILC/CkEditorInsertImage/imageInfo.js +4 -4
  30. package/cypress/e2e/ILC/CkEditorInsertTable/tableDimension&FooterProperties.js +3 -3
  31. package/cypress/e2e/ILC/CkEditorInsertTable/tableStyle.js +11 -11
  32. package/cypress/e2e/ILC/CkEditorLink/uploadSection.js +1 -1
  33. package/cypress/e2e/ILC/ContentBlocks/editTabBasics.js +62 -4
  34. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +119 -10
  35. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/editTabScoring.js +1 -0
  36. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/headerSection.js +2 -0
  37. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/manuallyAndNonScoredScoringEditTab.js +4 -1
  38. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +3 -0
  39. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/pagination.js +1 -1
  40. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/studentViewSettingsForGroupedLayout.js +3 -0
  41. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/styleAndLayoutCustomizationLayoutProperties.js +3 -0
  42. package/cypress/e2e/ILC/DrawingResponse/drawingResponseAdditionalSettings.js +1 -0
  43. package/cypress/e2e/ILC/DrawingResponse/drawingResponseBackground.js +2 -8
  44. package/cypress/e2e/ILC/DrawingResponse/drawingResponseCustomizeAdditionalOptions.js +1 -0
  45. package/cypress/e2e/ILC/DrawingResponse/drawingResponseEditTabBasicSection.js +3 -3
  46. package/cypress/e2e/ILC/DrawingResponse/drawingResponsePreviewTabContents.smoke.js +1 -3
  47. package/cypress/e2e/ILC/EssayResponse/createCustomCategory.smoke.js +2 -2
  48. package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +0 -1
  49. package/cypress/e2e/ILC/EssayResponse/editTabBasicSections.js +23 -37
  50. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/allOrNothingForAllViews.smoke.js +210 -0
  51. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/draggableOptions.js +2 -0
  52. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/editQuestion.smoke.js +40 -0
  53. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/allOrNothingForAllViews.smoke.js +216 -0
  54. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editQuestion.smoke.js +45 -0
  55. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/allOrNothingForAllViews.smoke.js +213 -0
  56. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/backgroundImageAndCanvasProperties.js +1 -0
  57. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/supportedFileTypes.js +3 -1
  58. package/cypress/e2e/ILC/FillInTheGapsTextNew/allOrNothingForAllViews.smoke.js +207 -0
  59. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +73 -0
  60. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +38 -0
  61. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +38 -0
  62. package/cypress/e2e/ILC/Graphing/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +87 -0
  63. package/cypress/e2e/ILC/Graphing/checkAddAlternativeButton.js +35 -0
  64. package/cypress/e2e/ILC/Graphing/editQuestion.smoke.js +28 -0
  65. package/cypress/e2e/ILC/Graphing/editTabBasicSection.js +38 -0
  66. package/cypress/e2e/ILC/Graphing/editTabScoringSection.js +1 -0
  67. package/cypress/e2e/ILC/Graphing/headerSection.js +36 -4
  68. package/cypress/e2e/ILC/Graphing/layoutAndGridOptions.js +6 -3
  69. package/cypress/e2e/ILC/GridFill/addAlternateButton.js +40 -0
  70. package/cypress/e2e/ILC/GridFill/customizeLayoutFillImageBackgroundImage.js +5 -6
  71. package/cypress/e2e/ILC/GridFill/customizeLayoutSectionShadeCellsGridBorders.js +2 -0
  72. package/cypress/e2e/ILC/GridFill/editTabScoringSection.js +3 -0
  73. package/cypress/e2e/ILC/GridFill/headerSection.js +1 -3
  74. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +39 -0
  75. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +39 -0
  76. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +39 -0
  77. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountAllOrNothingCorrectPointsGreaterThanAlternativePoints.js +37 -0
  78. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountallOrNothingCorrectPointsEqualToAlternativePoints.js +39 -0
  79. package/cypress/e2e/ILC/GridFill/scoring/cellshadeCountAllOrNothingAlternativePointsGreaterThanCorrectPoints.js +36 -0
  80. package/cypress/e2e/ILC/GridFill/scoring/checkLabelSaveAsYouGo.js +75 -0
  81. package/cypress/e2e/ILC/GridFill/specifyCorrectAnswerSection.js +2 -4
  82. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsScoring.js +2 -1
  83. package/cypress/e2e/ILC/ImageHighlight/customiseHighlightStyle.js +29 -0
  84. package/cypress/e2e/ILC/ImageHighlight/headerSection.js +2 -1
  85. package/cypress/e2e/ILC/ImageHighlight/studentViewSettings.js +2 -2
  86. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +24 -0
  87. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +24 -0
  88. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +24 -0
  89. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +86 -0
  90. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/manuallyAndNonScored.js +2 -4
  91. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsBasic.js +1 -1
  92. package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +237 -1
  93. package/cypress/e2e/ILC/ListOrderingDropdown/checkAddAlternativeButton.js +35 -0
  94. package/cypress/e2e/ILC/ListOrderingDropdown/editTabBasicSection.js +24 -0
  95. package/cypress/e2e/ILC/ListOrderingDropdown/headerSection.js +108 -0
  96. package/cypress/e2e/ILC/ListOrderingDropdown/manuallyAndNonScoredEditTab.js +2 -1
  97. package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +2 -4
  98. package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +7 -12
  99. package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/specifyCorrectAnswerSection.js +10 -14
  100. package/cypress/e2e/ILC/ListOrderingNew/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +52 -0
  101. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +215 -0
  102. package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +23 -0
  103. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +36 -9
  104. package/cypress/e2e/ILC/ListOrderingNew/manuallyAndNonScoredEditTab.js +2 -0
  105. package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +7 -23
  106. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +41 -0
  107. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +30 -0
  108. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +50 -0
  109. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +101 -0
  110. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/allOrNothingForAllViews.smoke.js +221 -0
  111. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/checkAddAlternativeButton.js +38 -0
  112. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/editTabBasicSection.js +24 -0
  113. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/editTabScoring.js +4 -1
  114. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/headerSection.js +36 -1
  115. package/cypress/e2e/ILC/Matching/Scoring/blankResponseScoring.js +38 -41
  116. package/cypress/e2e/ILC/Matching/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +98 -0
  117. package/cypress/e2e/ILC/Matching/allOrNothingScoringForAllViews.smoke.js +210 -0
  118. package/cypress/e2e/ILC/Matching/checkAlternativeButton.js +38 -0
  119. package/cypress/e2e/ILC/Matching/clickAndDrop.js +5 -5
  120. package/cypress/e2e/ILC/Matching/draggableOptions.js +7 -0
  121. package/cypress/e2e/ILC/Matching/editQuestion.smoke.js +3 -2
  122. package/cypress/e2e/ILC/Matching/editTabBasicSection.js +41 -0
  123. package/cypress/e2e/ILC/Matching/headerSection.js +38 -12
  124. package/cypress/e2e/ILC/Matching/questionInstructionsAndPromptSection.js +2 -15
  125. package/cypress/e2e/ILC/Matching/studentViewSettings.js +2 -0
  126. package/cypress/e2e/ILC/Matching/studentViewSettingsForGroupedLayout.js +1 -1
  127. package/cypress/e2e/ILC/MatchingDropdown/Scoring/blankResponseScoring.js +6 -6
  128. package/cypress/e2e/ILC/MatchingDropdown/allOrNothingScoringForAllViews.smoke.js +208 -0
  129. package/cypress/e2e/ILC/MultipleSelection/allOrNothingBasicForAllViews.smoke.js +2 -1
  130. package/cypress/e2e/ILC/MultipleSelection/checkScoringLabelBannerAndCorrectAnswer.js +2 -0
  131. package/cypress/e2e/ILC/MultipleSelection/editTabScoringSection.js +1 -0
  132. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/checkScoringLabelBannerAndCorrectAnswer.js +1 -0
  133. package/cypress/e2e/ILC/MultipleSelectionGridNew/allOrNothingBasicForAllViews.smoke.js +220 -0
  134. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabScoringSection.js +6 -0
  135. package/cypress/e2e/ILC/MultipleSelectionGridNew/previewContentsForAllViews.smoke.js +100 -69
  136. package/cypress/e2e/ILC/MultipleSelectionGridNew/styleAndLayoutCustomizationLayoutProperties.js +1 -0
  137. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +79 -0
  138. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +42 -0
  139. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +42 -0
  140. package/cypress/e2e/ILC/NumberLine/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +75 -0
  141. package/cypress/e2e/ILC/NumberLine/checkAddAlternativeButton.js +32 -0
  142. package/cypress/e2e/ILC/NumberLine/editTabSection.js +38 -0
  143. package/cypress/e2e/ILC/NumberLine/headerSection.js +33 -4
  144. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +81 -0
  145. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +43 -0
  146. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +43 -0
  147. package/cypress/e2e/ILC/NumberLineLabel/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +76 -0
  148. package/cypress/e2e/ILC/NumberLineLabel/additionalSettingsBasic.js +1 -1
  149. package/cypress/e2e/ILC/NumberLineLabel/checkAddAlternativeButton.js +34 -0
  150. package/cypress/e2e/ILC/NumberLineLabel/editTabSection.js +38 -0
  151. package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +37 -5
  152. package/cypress/e2e/ILC/NumberLineLabel/manuallyAndNonScoredEditTab.js +2 -1
  153. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/editQuestion.smoke.js +1 -1
  154. package/cypress/e2e/ILC/ShortTextResponseNew/allOrNothingBasicForAllViews.smoke.js +186 -0
  155. package/cypress/e2e/ILC/ShortTextResponseNew/editTabBasicSections.js +35 -51
  156. package/cypress/e2e/ILC/ShortTextResponseNew/headerSection.js +2 -4
  157. package/cypress/e2e/ILC/SingleSelection/checkScoringLabelBannerAndCorrectAnswer.js +2 -0
  158. package/cypress/e2e/ILC/SingleSelection/manuallyAndNonScoredScoring.js +94 -88
  159. package/cypress/e2e/ILC/SingleSelectionGridNew/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +3 -1
  160. package/cypress/e2e/ILC/SingleSelectionGridNew/allOrNothingBasicForAllViews.smoke.js +209 -0
  161. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabScoringSection.js +5 -0
  162. package/cypress/e2e/ILC/SingleSelectionGridNew/previewContentsForAllViews.smoke.js +101 -70
  163. package/cypress/e2e/ILC/SingleSelectionGridNew/styleAndLayoutCustomizationLayoutProperties.js +4 -0
  164. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +86 -0
  165. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +86 -0
  166. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +65 -0
  167. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +3 -1
  168. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +2 -0
  169. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +2 -0
  170. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialDifferentWeightsScoringBasic.js +10 -3
  171. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +4 -2
  172. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +5 -3
  173. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +2 -0
  174. package/cypress/e2e/ILC/TextEntryMath/MathTemplateScoring/partialEqualWeightsScoringBasic.js +4 -0
  175. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +64 -0
  176. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingBasicForAddEvaluation.js +2 -0
  177. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingBasicForAlternateAnswer.js +2 -0
  178. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +64 -0
  179. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +65 -0
  180. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +2 -0
  181. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +2 -0
  182. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +2 -0
  183. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsScoringBasic.js +8 -0
  184. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +2 -0
  185. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +2 -0
  186. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +2 -0
  187. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasic.js +1 -0
  188. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasicForAlternateAnswer.js +2 -0
  189. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViewsFormulaTemplate.smoke.js +2 -0
  190. package/cypress/e2e/ILC/TextEntryMath/editTabBasicSection.js +27 -3
  191. package/cypress/e2e/ILC/TextEntryMath/headerSection.js +43 -0
  192. package/cypress/e2e/ILC/TextSelection/ScoringParagraph/checkScoringLabelBannerAndCorrectAnswerSection.js +0 -1
  193. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +7 -12
  194. package/cypress/e2e/ILC/ThinkSphere/createReviewItem.js +54 -1
  195. package/cypress/e2e/ILC/ThinkSphere/editTabBasicSection.js +53 -2
  196. package/cypress/e2e/ILC/ThinkSphere/editThinkSphereQuestion.smoke.js +145 -54
  197. package/cypress/e2e/ILC/ThinkSphere/equationEditorCreateCustomCategory.smoke.js +417 -0
  198. package/cypress/e2e/ILC/ThinkSphere/equationEditorEditCategoryFlyOut.js +291 -0
  199. package/cypress/e2e/ILC/ThinkSphere/planPhase.js +91 -9
  200. package/cypress/e2e/ILC/ThinkSphere/previewTabPlanSection.js +12 -12
  201. package/cypress/e2e/ILC/ThinkSphere/previewTabReviewSection.js +97 -0
  202. package/cypress/e2e/ILC/ThinkSphere/solvePhase.js +35 -2
  203. package/cypress/e2e/ILC/ThinkSphere/studentViewPlanTabSection.js +393 -0
  204. package/cypress/e2e/ILC/ThinkSphere/studentViewReviewTabSection.js +141 -0
  205. package/cypress/e2e/ILC/ToolAudioPlayerNew/headerSection.js +90 -2
  206. package/cypress/e2e/ILC/UploadResponse/editTabBasicSection.js +34 -0
  207. package/cypress/e2e/ILC/UploadResponse/headerSection.js +38 -1
  208. package/cypress/e2e/ILC/UploadResponse/uploadResponsePreview.js +50 -13
  209. package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +14 -29
  210. package/cypress/e2e/ILC/chartsDotsPlot/headerSection.js +16 -1
  211. package/cypress/e2e/Sessions/fetchResponses.js +6 -6
  212. package/cypress/e2e/Sessions/saveResponseScores.js +2 -2
  213. package/cypress/pages/audioPlayerPage.js +47 -22
  214. package/cypress/pages/brainingCampManipulativePage.js +1 -1
  215. package/cypress/pages/chartsBarPage.js +20 -0
  216. package/cypress/pages/components/additionalSettingsPanel.js +3 -2
  217. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +2 -0
  218. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +5 -1
  219. package/cypress/pages/components/browseItemsPage.js +109 -2
  220. package/cypress/pages/components/ckEditorEquationEditorComponent.js +5 -4
  221. package/cypress/pages/components/ckEditorInsertImageComponent.js +2 -2
  222. package/cypress/pages/components/ckEditorInsertTableComponent.js +3 -3
  223. package/cypress/pages/components/ckEditorLinkComponent.js +8 -9
  224. package/cypress/pages/components/colorPopupComponent.js +6 -0
  225. package/cypress/pages/components/commonComponents.js +4 -0
  226. package/cypress/pages/components/createQuestionBasePage.js +14 -1
  227. package/cypress/pages/components/defaultToolDropdown.js +1 -1
  228. package/cypress/pages/components/draggableOptionsSectionComponent.js +2 -0
  229. package/cypress/pages/components/editCategoryFlyout.js +2 -2
  230. package/cypress/pages/components/equationEditorSectionCommonComponent.js +10 -25
  231. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +28 -0
  232. package/cypress/pages/components/gridQuestionCommonComponent.js +55 -0
  233. package/cypress/pages/components/mcqAdditionalSettingsBase.js +1 -0
  234. package/cypress/pages/components/questionInstructionsComponent.js +9 -0
  235. package/cypress/pages/components/scoringSectionBaseEditTab.js +2 -0
  236. package/cypress/pages/contentBlocksPage.js +2 -0
  237. package/cypress/pages/desmos3DGraphingPage.js +149 -4
  238. package/cypress/pages/desmosGeometryPage.js +184 -4
  239. package/cypress/pages/drawingResponsePage.js +2 -0
  240. package/cypress/pages/graphingPage.js +27 -8
  241. package/cypress/pages/gridFillPage.js +15 -6
  242. package/cypress/pages/imageHighlightPage.js +32 -0
  243. package/cypress/pages/listOrderingPage.js +34 -2
  244. package/cypress/pages/matchingPage.js +26 -7
  245. package/cypress/pages/numberLineLabelPage.js +31 -8
  246. package/cypress/pages/numberLinePage.js +19 -7
  247. package/cypress/pages/textEntryMathPage.js +24 -1
  248. package/cypress/pages/thinkSpherePage.js +637 -11
  249. package/cypress/pages/uploadResponsePage.js +17 -1
  250. package/cypress/pages/videoResponsePage.js +3 -0
  251. package/cypress/support/commands.js +9 -0
  252. package/cypress/support/helpers/createItem.js +22 -3
  253. package/cypress/support/helpers/utilities.js +14 -1
  254. package/package.json +3 -3
@@ -2,6 +2,7 @@ import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
3
  import { ckEditorToolbar, commonComponents, createQuestionBasePage, equationEditorFlyout, playbackControlsBaseComponent } from "./components";
4
4
  import { dialogBoxBase } from "./dialogBoxBase";
5
+ import { createItemPage } from "./createItemPage";
5
6
 
6
7
  const selectors = {
7
8
  ...playbackControlsBaseComponent,
@@ -14,11 +15,11 @@ const selectors = {
14
15
  uploadAudioFileUploadLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(0),
15
16
  uploadAudioFileNameLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(1),
16
17
  deleteAudioFileButton: () => cy.get('[aria-label="Delete"]'),
17
- sourceUrlLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(0),
18
- sourceUrlInputField: () => cy.get('input[aria-label="Source URL"]'),
18
+ sourceUrlLabel: () => cy.get('[class*="AudioPlayerFormstyles__TextFieldLabel"]').eq(0),
19
+ sourceUrlInputField: () => cy.get('[class*="AudioPlayerFormstyles__Text"] input[type="text"]'),
19
20
  uploadAudioChooseFileButton: () => cy.get('.choose-file-upload-button'),
20
21
  uploadAudioNoFileChosenLabel: () => cy.get('[aria-label="No file chosen"]').eq(0),
21
- uploadedFileNameLabel: () => cy.get('.selected-file').eq(0),
22
+ uploadedFileNameLabel: () => cy.get('[class*="AudioPlayerFormstyles__FileInputWrapper"] .selected-file-wrapper').eq(0),
22
23
  audioFileUploadProgressBar: () => cy.get('[class*="AudioPlayerstyles__ProgressBar-"]').eq(0),
23
24
  inputTypeFile: () => cy.get('input[type="file"]'),
24
25
  audioPlayerStyleLabel: () => cy.get('.player-style-label'),
@@ -28,7 +29,7 @@ const selectors = {
28
29
  standardStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="standard-toggle-button"] .ngie-toggle-button-label'),
29
30
  barStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="bar-toggle-button"] .ngie-toggle-button-label'),
30
31
  compactStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="compact-toggle-button"] .ngie-toggle-button-label'),
31
- compactPlayerOptionsLabel: () => cy.get('.options-label'),
32
+ compactPlayerOptionsLabel: () => cy.get('.compact-player-wrapper .options-label'),
32
33
  defaultPlayerOptionButton: () => cy.get('[data-ngie-testid="default-toggle-button"]'),
33
34
  textPlayerOptionButton: () => cy.get('[data-ngie-testid="text-toggle-button"]'),
34
35
  imagePlayerOptionButton: () => cy.get('[data-ngie-testid="image-toggle-button"]'),
@@ -45,28 +46,30 @@ const selectors = {
45
46
  customizePlayerLayoutProgressIndicatorButton: () => cy.get('[data-ngie-testid="progressbar-toggle-button"]'),
46
47
  customizePlayerLayoutToggleButtonLabel: () => cy.get('[class*="ToggleButtonMUI5style__ButtonLabelWrapper"]'),
47
48
  uncheckAllButton: () => cy.get('[class*="AudioPlayerstyles__UncheckButton"]'),
48
- uploadTranscriptFileLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(2),
49
- uploadTranscriptFileRadioButton: () => cy.get('.ngie-radio-btn input').eq(2),
50
- typeInTranscriptLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(3),
51
- typeInTranscriptRadioButton: () => cy.get('.ngie-radio-btn input').eq(3),
52
- transcriptInputField: () => cy.get('[role="textbox"][title="Transcript"]'),
53
- allowStudentsToDownloadAudioLabel: () => cy.get('[data-ngie-testid="allow-students-to-download-the-audio-checkbox"] .MuiFormControlLabel-label'),
54
- allowStudentsToDownloadAudioCheckbox: () => cy.get('[data-ngie-testid="allow-students-to-download-the-audio-checkbox"] input'),
55
- limitPlayAttemptsLabel: () => cy.get('[data-ngie-testid="limit-play-attempts-checkbox"] .MuiFormControlLabel-label'),
56
- limitPlayAttemptsCheckbox: () => cy.get('[data-ngie-testid="limit-play-attempts-checkbox"] input'),
49
+ uploadTranscriptFileLabel: () => cy.get('.upload-transcript-opt-label'),
50
+ uploadTranscriptFileRadioButton: () => cy.get('.upload-transcript-opt-label input'),
51
+ typeInTranscriptLabel: () => cy.get('.type-in-transcript-opt-label'),
52
+ typeInTranscriptRadioButton: () => cy.get('[aria-label="Type in transcript"][type="radio"]'),
53
+ transcriptInputField: () => cy.get('[title="Transcript"]'),
54
+ cKEditorTranscriptInputField: () => cy.get('textarea[aria-label="Transcript"]'),
55
+ ckEditorPlayAttemptsLimitInputField: () => cy.get('input[aria-label="Playback Limit"]'),
56
+ allowStudentsToDownloadAudioLabel: () => cy.get('.allow-students-to-download-audio .MuiFormControlLabel-label').eq(0),
57
+ allowStudentsToDownloadAudioCheckbox: () => cy.get('.allow-students-to-download-audio input'),
58
+ limitPlayAttemptsLabel: () => cy.get('.allow-students-to-download-audio .MuiFormControlLabel-label').eq(1),
59
+ limitPlayAttemptsCheckbox: () => cy.get('.allow-students-to-download-audio input').eq(1),
57
60
  playAttemptsLimitLabel: () => cy.get('.playback-limit-wrapper [class*="Label"]'),
58
- playAttemptsLimitInputField: () => cy.get('.playback-limit-wrapper input'),
61
+ playAttemptsLimitInputField: () => cy.get('.freeResponseAudioFormTextInput input'),
59
62
  studentViewSettingsLabel: () => cy.get('[class*="AudioPlayerstyles__TranscriptLabelWrapper"]').eq(0),
60
63
  audioOverviewLabel: () => cy.get('.additional-settings-label'),
61
64
  audioOverviewInputField: () => cy.get('[title="Description"]'),
62
- transcriptLabel: () => cy.get('.audio-resource-label-wrapper').eq(1),
65
+ transcriptLabel: () => cy.get('.freeResponseAudioFormTextInput .transcript-label'),
63
66
  uploadTranscriptUploadLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(2),
64
67
  uploadTranscriptFileNameLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(3),
65
68
  uploadTranscriptChooseFileButton: () => cy.get('.upload-audio-file-input-wrapper button').eq(1),
66
69
  uploadTranscriptNoFileChosenLabel: () => cy.get('[aria-label="No file chosen"]').eq(1),
67
- transcriptInputTypeFile: () => cy.get('input[type="file"]').eq(1),
68
- uploadedTranscriptFileNameLabel: () => cy.get('.selected-file').eq(1),
69
- transcriptFileUploadProgressBar: () => cy.get('[class*="AudioPlayerstyles__ProgressBar-"]').eq(1),
70
+ transcriptInputTypeFile: () => cy.get('.upload-transcript-file input[type="file"]'),
71
+ uploadedTranscriptFileNameLabel: () => cy.get('.upload-transcript-file .selected-file-wrapper'),
72
+ transcriptFileUploadProgressBar: () => cy.get('.audio-player-form-progressbar'),
70
73
  transcriptInputFieldLabel: () => cy.get('.additional-settings-label').eq(1),
71
74
  deleteTranscriptButton: () => cy.get('[aria-label*="Delete"]'),
72
75
 
@@ -125,6 +128,7 @@ const steps = {
125
128
  ...ckEditorToolbar.steps,
126
129
  ...equationEditorFlyout.steps,
127
130
  ...commonComponents.steps,
131
+ ...createItemPage.steps,
128
132
  /**
129
133
  * Uploads a file to the audio player by attaching the file located at the specified filePath.
130
134
  * @param {string} filePath - The file path to the file to be uploaded.
@@ -166,6 +170,13 @@ const steps = {
166
170
  .blur();
167
171
  },
168
172
 
173
+ enterTextInCKEditorTranscriptInputField: (text) => {
174
+ audioPlayerPage.cKEditorTranscriptInputField()
175
+ .type(text)
176
+ .blur();
177
+ },
178
+
179
+
169
180
  verifyTextInTranscriptInputField: (text) => {
170
181
  audioPlayerPage.transcriptInputField()
171
182
  .should('have.text', text);
@@ -706,6 +717,20 @@ const steps = {
706
717
  .type(value)
707
718
  },
708
719
 
720
+ /**
721
+ * Sets the playback limit value in the audio player's input field.
722
+ * @param {string|number} value - The value to set as the playback limit.
723
+ * @returns {void}
724
+ */
725
+ setCKEditorPlaybackLimit: (value) => {
726
+ audioPlayerPage.ckEditorPlayAttemptsLimitInputField()
727
+ .clear()
728
+ .type(value);
729
+ cy.wait(2000);
730
+ audioPlayerPage.ckEditorPlayAttemptsLimitInputField()
731
+ .blur();
732
+ },
733
+
709
734
  /**
710
735
  * Verify the playback limit help text in preview tab
711
736
  * @param {string|number} value - The value to set as the playback limit.
@@ -788,14 +813,14 @@ const steps = {
788
813
  audioPlayerPage.audioOverviewInputField()
789
814
  .find('[data-widget="ngie_equation"]')
790
815
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
791
- // .contains(constants.CKEditorInputFieldEnteredEquationText);
816
+ // .contains(constants.CKEditorInputFieldEnteredEquationText);
792
817
  },
793
818
 
794
819
  verifyEquationInAudioOverviewPreviewTab: () => {
795
820
  audioPlayerPage.audioOverviewPreviewTab()
796
821
  .find('[role="math"]')
797
822
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
798
- // .contains(constants.CKEditorInputFieldEnteredEquationText);
823
+ // .contains(constants.CKEditorInputFieldEnteredEquationText);
799
824
  },
800
825
 
801
826
  verifyLinkInAudioOverviewInputField: () => {
@@ -896,14 +921,14 @@ const steps = {
896
921
  audioPlayerPage.transcriptInputField()
897
922
  .find('[data-widget="ngie_equation"]')
898
923
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
899
- // .contains(constants.CKEditorInputFieldEnteredEquationText);
924
+ // .contains(constants.CKEditorInputFieldEnteredEquationText);
900
925
  },
901
926
 
902
927
  verifyEquationInTranscriptPreviewTab: () => {
903
928
  audioPlayerPage.transcriptContentPreviewTab()
904
929
  .find('[role="math"]')
905
930
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
906
- // .contains(constants.CKEditorInputFieldEnteredEquationText);
931
+ // .contains(constants.CKEditorInputFieldEnteredEquationText);
907
932
  },
908
933
 
909
934
  verifyLinkInTranscriptInputField: () => {
@@ -20,7 +20,7 @@ const selectors = {
20
20
  selectAManipulativeLabel: () => cy.get('[class*="SelectManipulativeWrapper"] [class*="BrainingcampManipulativestyle__WrapperSubHeader"]'),
21
21
  enterAShareCodeLabel: () => cy.get('[class*="EnterShareCodeWrapper"] [class*="BrainingcampManipulativestyle__WrapperSubHeader"]'),
22
22
  enterAShareCodeInputField: () => cy.get('[class*="EnterShareCodeWrapper"] input'),
23
- previewTabCanvas: () => cy.get('.bcm-inner'),
23
+ previewTabCanvas: () => cy.get('.bcm-inner')
24
24
  }
25
25
 
26
26
  const steps = {
@@ -1306,6 +1306,26 @@ const steps = {
1306
1306
  verifyPenaltyPointsForEachIncorrectBar: (penaltyPoints) => {
1307
1307
  utilities.verifyInnerText(autoScoredScoringSectionMultiResponseType.penaltyPointsDetailsSectionAllottedPointsLabel(), `Penalty points for each incorrect bar: ${penaltyPoints}`);
1308
1308
  },
1309
+
1310
+ verifyAnswerStatusBannerNotExist: () => {
1311
+ chartsBarPage.correctIncorrectAnswerTextWrapper()
1312
+ .should('not.exist');
1313
+ },
1314
+
1315
+ verifyAnswerStatusBannerExist: () => {
1316
+ chartsBarPage.correctIncorrectAnswerTextWrapper()
1317
+ .should('be.visible');
1318
+ },
1319
+
1320
+ verifyCorrectAnswerSectionExist: () => {
1321
+ chartsBarPage.correctAnswersLabel()
1322
+ .should('be.visible');
1323
+ },
1324
+
1325
+ verifyCorrectAnswerSectionNotExist: () => {
1326
+ chartsBarPage.correctAnswersLabel()
1327
+ .should('not.exist');
1328
+ },
1309
1329
  }
1310
1330
 
1311
1331
  const tests = {
@@ -23,8 +23,8 @@ const selectors = {
23
23
  return cy.get('[aria-labelledby*="Font-Size-dropdown-label"] [role="option"]')
24
24
  }
25
25
  },
26
- fontSizeListOptionLabels: () => cy.get('[aria-labelledby="Font-Size-dropdown-label"] li[role="option"] .dropdown-label-text'),
27
- fontSizesLabels: () => cy.get('[aria-labelledby="Font-Size-dropdown-label"] li[role="option"] .dropdown-post-label-text'),
26
+ fontSizeListOptionLabels: () => cy.get('[aria-labelledby*="Font-Size-dropdown-label"] li[role="option"] .dropdown-label-text'),
27
+ fontSizesLabels: () => cy.get('[aria-labelledby*="Font-Size-dropdown-label"] li[role="option"] .dropdown-post-label-text'),
28
28
  }
29
29
 
30
30
  const steps = {
@@ -69,6 +69,7 @@ const steps = {
69
69
 
70
70
  expandFontSizeDropdown: () => {
71
71
  additionalSettingsPanel.fontSizeDropdown()
72
+ .trigger('mouseover')
72
73
  .click();
73
74
  }
74
75
  }
@@ -76,6 +76,7 @@ const steps = {
76
76
 
77
77
  expandPenaltyScoringDropdown: () => {
78
78
  autoScoredScoringSectionMultiResponseType.penaltyScoringDropdown()
79
+ .trigger('mouseover')
79
80
  .click();
80
81
  cy.wait(500);
81
82
  utilities.verifyElementVisibilityState(autoScoredScoringSectionMultiResponseType.penaltyScoringDropdownListOptions(), 'visible');
@@ -147,6 +148,7 @@ const steps = {
147
148
 
148
149
  expandRoundingDropdown: () => {
149
150
  autoScoredScoringSectionMultiResponseType.roundingDropdown()
151
+ .trigger('mouseover')
150
152
  .click();
151
153
  },
152
154
 
@@ -327,7 +327,11 @@ const tests = {
327
327
  });
328
328
 
329
329
  it('If user has not selected correct answer in the correct accordion, then the Add alternative answer button should be in disabled state', () => {
330
- utilities.verifyElementDisabled(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
330
+ if (questionType === 'list ordering') {
331
+ utilities.verifyElementNotDisabled(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
332
+ } else {
333
+ utilities.verifyElementDisabled(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
334
+ }
331
335
  });
332
336
  },
333
337
 
@@ -45,15 +45,24 @@ const selectors = {
45
45
  createItemButtonTypography: () => browseItemsPage.buttonCreateItem().find('.ngie-btn-typography'),
46
46
  createQuestionCancelButtonTypography: () => browseItemsPage.buttonCancelCreateQuestion().find('.ngie-btn-typography'),
47
47
  tableColumnHeaderBrowseItemWrapperDiv: (count) => browseItemsPage.tableColumnHeader(count).find('div.browse-item-component-wrapper div'),
48
+ rowItemTitle: () => cy.get('.browse-item-styled-link'),
49
+ previewModeWrapper: () => cy.get('.preview-mode-wrapper'),
50
+ saveButton: () => cy.get('.ngie-btn-typography').contains('save',{matchCase: false}),
51
+ cancelButton: () => cy.get('.ngie-btn-typography').contains('cancel',{matchCase: false}),
52
+ radioGroup: () => cy.get('.ngie-radio-group'),
53
+ studentViewRadioButton: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"]').eq(0),
54
+ gradingViewRadioButton: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"]').eq(1),
55
+ browseItemQuestionItem: () => cy.get('.browse-item-question-item')
48
56
  };
49
57
 
50
58
  const searchBarSelectors = {
51
- searchBar: () => cy.get('input[placeholder="Search by title, tags and content"]'),
59
+ searchBar: () => cy.get('input[placeholder*="Search by"]'),
52
60
  buttonClearSearch: () => cy.get('[data-at="clear-button"]'),
53
61
  buttonSearch: () => cy.get('button[aria-label="Search"]'),
54
62
  buttonSearchSVG: () => cy.get('button[aria-label="Search"]').find('svg'),
55
- mobileViewSearchBar: () => cy.get('input[placeholder="Search by title, tags and content"]'),
63
+ mobileViewSearchBar: () => cy.get('input[placeholder*="Search by title"]'),
56
64
  searchInputField: () => cy.get('.ngie-search input'),
65
+ searchBarParent: () => cy.get('input[placeholder*="Search by"]').parent(),
57
66
  };
58
67
 
59
68
  const mobileViewBrowsePageSelectors = {
@@ -107,6 +116,7 @@ const mobileViewBrowsePageSelectors = {
107
116
  return utilities.getNthElement(cy.get(`.filter-chip[aria-label*="${chip}"] button[aria-label*="Remove"]`), 0);
108
117
  },
109
118
  filterChipClearAll: () => cy.get('.filter-chip-clearall'),
119
+ itemTitleCell: () => cy.get('[class*=ItemTitleCellstyles__ItemCellWrapper]'),
110
120
  };
111
121
 
112
122
  const steps = {
@@ -962,6 +972,103 @@ const tests = {
962
972
  });
963
973
  });
964
974
  },
975
+
976
+ verifyBrowseItemsRowContent: () => {
977
+ it('Browse review items list row should have title, reference id, and question type', () => {
978
+ browseItemsPage.itemTitleCell().each(($item) => {
979
+ cy.wrap($item).within(() => {
980
+ cy.get('button.browse-item-styled-link').invoke('text').should('not.be.empty');
981
+ cy.get('.browse-item-question-text-container').contains('Ref ID:').should('exist'); // safer
982
+ cy.get('[class*=ItemTitleCellstyles__ReferenceId]').invoke('text').should('not.be.empty');
983
+ cy.get('.browse-item-label-text').contains('Type:').should('exist');
984
+ cy.get('.browse-item-question-item').invoke('text').should('not.be.empty');
985
+ });
986
+ });
987
+ });
988
+ },
989
+
990
+ verifyItemOpening: () => {
991
+ it('When the author clicks on the title of the item in the \'check your math\' browse item list page then the question preview for that item should be displayed along with cancel and save button, and student and grading view radio buttons', () => {
992
+ browseItemsPage.rowItemTitle().eq(0).click();
993
+ utilities.verifyElementVisibilityState(browseItemsPage.previewModeWrapper(), 'visible');
994
+ utilities.verifyElementVisibilityState(browseItemsPage.saveButton(), 'visible');
995
+ utilities.verifyElementVisibilityState(browseItemsPage.cancelButton(), 'visible');
996
+ utilities.verifyElementVisibilityState(browseItemsPage.radioGroup(), 'visible');
997
+ })
998
+
999
+ it('student radio button should be checked by default and author should be able to toggle between student and grading view radio buttons', () => {
1000
+ utilities.verifyElementVisibilityState(browseItemsPage.studentViewRadioButton(), 'exist');
1001
+ utilities.verifyElementVisibilityState(browseItemsPage.gradingViewRadioButton(), 'exist');
1002
+ browseItemsPage.studentViewRadioButton().should('have.class', 'radio-option-checked');
1003
+ browseItemsPage.gradingViewRadioButton().should('have.class', 'radio-option-not-checked');
1004
+ browseItemsPage.gradingViewRadioButton().click();
1005
+ browseItemsPage.studentViewRadioButton().should('have.class', 'radio-option-not-checked');
1006
+ browseItemsPage.gradingViewRadioButton().should('have.class', 'radio-option-checked');
1007
+ browseItemsPage.studentViewRadioButton().click();
1008
+ browseItemsPage.studentViewRadioButton().should('have.class', 'radio-option-checked');
1009
+ browseItemsPage.gradingViewRadioButton().should('have.class', 'radio-option-not-checked');
1010
+ browseItemsPage.cancelButton().click();
1011
+ });
1012
+ },
1013
+
1014
+ verifyFilterSelectionInList: (categories) => {
1015
+ it('When the author checks the \'multiple choice selection\' checkbox then only multiple choice question (single selection and multiple selection) should be displayed on the question list.', () => {
1016
+ browseItemsPage.steps.clickOnFilterCategoryCheckbox(categories[0]);
1017
+ cy.pageLoadWait();
1018
+ const allowedTypes = ['multiple selection','single selection'];
1019
+ browseItemsPage.browseItemQuestionItem().each(($item) => {
1020
+ cy.wrap($item)
1021
+ .invoke('text')
1022
+ .then((text) => {
1023
+ const trimmedText = text.trim();
1024
+ if (trimmedText === '' || trimmedText === ',' || /^,+$/.test(trimmedText)) {
1025
+ cy.log('Skipped invalid/empty item text:', trimmedText);
1026
+ return;
1027
+ }
1028
+ expect(allowedTypes).to.include(trimmedText.toLowerCase());
1029
+ });
1030
+ });
1031
+ });
1032
+ },
1033
+
1034
+ verifySupportedQuestionsInItemsList: (allowedFilterCategories) => {
1035
+ it('The items list page should display items for only the supported question types', () => {
1036
+ const allowedTypes = Object.values(allowedFilterCategories).flat();
1037
+ browseItemsPage.browseItemQuestionItem().each(($item) => {
1038
+ cy.wrap($item)
1039
+ .invoke('text')
1040
+ .then((text) => {
1041
+ const trimmedText = text.trim();
1042
+ if (trimmedText === '' || trimmedText === ',' || /^,+$/.test(trimmedText)) {
1043
+ cy.log('Skipped invalid/empty item text:', trimmedText);
1044
+ return;
1045
+ }
1046
+ expect(allowedTypes).to.include(trimmedText.toLowerCase());
1047
+ });
1048
+ });
1049
+ });
1050
+ },
1051
+
1052
+ verifyFirstPreviousNextPageButtons: () => {
1053
+ it('When user is on first page, previous button should be disabled and when the user is in last page, the next button should be disabled,', () => {
1054
+ browseItemsPage.buttonPrevious().should('have.attr', 'disabled');
1055
+ browseItemsPage.buttonNext().should('not.have.attr', 'disabled');
1056
+ utilities.getNthElement(browseItemsPage.paginationCountText(), 0)
1057
+ .invoke('text')
1058
+ .then((text) => {
1059
+ const totalItems = parseInt(text.split(' ').pop(), 10);
1060
+ const totalPages = Math.ceil(totalItems / 20);
1061
+
1062
+ Cypress._.times(totalPages - 1, () => {
1063
+ browseItemsPage.steps.clickOnNextPageButton();
1064
+ cy.wait(500);
1065
+ });
1066
+ });
1067
+
1068
+ browseItemsPage.buttonNext().should('have.attr', 'disabled');
1069
+ browseItemsPage.buttonPrevious().should('not.have.attr', 'disabled');
1070
+ });
1071
+ }
965
1072
  };
966
1073
 
967
1074
  export const browseItemsPage = {
@@ -8,8 +8,9 @@ const selectors = {
8
8
  //Basic
9
9
  equationEditorIcon: () => cy.get('.cke_button__nextgeneqneditor_icon:visible'),
10
10
  equationEditorLabel: () => cy.get('[class*="EquationEditorstyles__Heading"]'),
11
- okButton: () => cy.get('.action-button').eq(0),
12
- cancelButton: () => cy.get('.action-button').eq(1),
11
+ okButton: () => cy.get('[title="OK"]'),
12
+ audioPlayerOkButton: () => cy.get('.save-action-btn-wrapper button').eq(0),
13
+ editorCancelButton: () => cy.get('[title="Cancel"]'),
13
14
  equationEditorPopUp: () => cy.get('[class*="EquationEditorstyles__EquationEditorContainer"]'),
14
15
  equationWrapper: () => cy.get('.cke_widget_ngie_equation [class*="NGMathJax"]'),
15
16
  equationInInputField: () => cy.get('[class*="ngie_latex"]').eq(0),
@@ -84,8 +85,8 @@ const steps = {
84
85
  return null;
85
86
  },
86
87
 
87
- clickOnCancelButton: () => {
88
- ckEditorEquationEditorComponent.cancelButton()
88
+ closeEquationEditor: () => {
89
+ ckEditorEquationEditorComponent.editorCancelButton()
89
90
  .click();
90
91
  },
91
92
 
@@ -15,7 +15,7 @@ const selectors = {
15
15
  imageInfoButton: () => cy.get('[title="Image Info"]'),
16
16
  uploadButton: () => cy.get('[title="Upload"]'),
17
17
  //Image Info
18
- urlLabel: () => cy.get('.dialog-input-label').eq(0),
18
+ imageUrlLabel: () => cy.get('.dialog-input-label').eq(0),
19
19
  urlInputField: () => cy.get('.cke_dialog_ui_input_text').eq(1),
20
20
  alternateTextLabel: () => cy.get('.dialog-input-label').eq(1),
21
21
  alternateTextInputField: () => cy.get('.cke_dialog_ui_input_text').eq(3),
@@ -37,7 +37,7 @@ const selectors = {
37
37
  fixedRadioLabel: () => cy.get('[class*="image-responsiveness-radio-wrapper"]').eq(4),
38
38
  //Alignment
39
39
  alignmentLabel: () => cy.get('.dialog-input-label').eq(7),
40
- alignmentDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(1),
40
+ alignmentDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(3),
41
41
  alignmentOptions: (alignment = null) => {
42
42
  if (alignment) {
43
43
  return cy.get(`[class*="cke_dialog_ui_input_select"] option[value="${alignment}"]`)
@@ -26,7 +26,7 @@ const selectors = {
26
26
 
27
27
  //Table Style
28
28
  tableStyleLabel: () => cy.get('.table_styles_header .cke_dialog_ui_html'),
29
- borderLabel: () => cy.get('.cke_dialog_ui_vbox_child').eq(26),
29
+ tableBorderLabel: () => cy.get('.cke_dialog_ui_vbox_child').eq(26),
30
30
  clearAllTableStyle: () => cy.get('.clear_all_table_styles'),
31
31
 
32
32
  //Borders
@@ -90,7 +90,7 @@ const selectors = {
90
90
  heightPxInput: () => cy.get('.cke_dialog_ui_input_text').eq(7),
91
91
 
92
92
  //Alignment, Caption and Summary
93
- alignmentLabel: () => cy.get('.dialog-input-label').eq(9),
93
+ tableAlignmentLabel: () => cy.get('.dialog-input-label').eq(9),
94
94
  alignmentDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(2),
95
95
  captionLabel: () => cy.get('.dialog-input-label').eq(10),
96
96
  captionInputField: () => cy.get('.cke_dialog_ui_input_text').eq(15),
@@ -358,7 +358,7 @@ const steps = {
358
358
  },
359
359
 
360
360
  scrollingDownToAlignmentLabel: () => {
361
- ckEditorInsertTableComponent.alignmentLabel()
361
+ ckEditorInsertTableComponent.tableAlignmentLabel()
362
362
  .scrollIntoView()
363
363
  },
364
364
 
@@ -12,7 +12,7 @@ const selectors = {
12
12
  linkLabel: () => cy.get('.dialog-header-label'),
13
13
  linkPopUpWrapper: () => cy.get('.custom-link-wrapper'),
14
14
  urlInQuestionInstruction: () => cy.get('[data-cke-saved-href*="https"]'),
15
- foxImageLinkUrlValueCheck: () => cy.get('[data-cke-saved-href*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
15
+ foxImageLinkUrlValueCheck: () => cy.get('[href*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
16
16
  urlInputField: () => cy.get('input[class*="cke_dialog_ui_input_text"]').eq(1),
17
17
  OkButton: () => cy.get('[title="OK"]'),
18
18
  //Link Info
@@ -24,8 +24,8 @@ const selectors = {
24
24
  linkTypeDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(0),
25
25
  protocolLabel: () => cy.get('.dialog-input-label').eq(2),
26
26
  protocolDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(1),
27
- urlLabel: () => cy.get('.dialog-input-label').eq(3),
28
- urlInputField: () => cy.get('.cke_dialog_ui_input_text').eq(3),
27
+ urlLabel: () => cy.get('.cke_dialog_ui_text .dialog-input-label').eq(1),
28
+ urlInputField: () => cy.get('.cke_dialog_ui_input_text input').eq(1),
29
29
  //Protocol
30
30
  protocolDropDown: () => cy.get('.dialog-input-area').eq(2),
31
31
  selectProtocolOptionDropdown: (protocolType = null) => {
@@ -55,8 +55,7 @@ const steps = {
55
55
 
56
56
  addURLInLinkPopUp: (text) => {
57
57
  ckEditorLinkComponent.urlInputField()
58
- .type(text, { delay: 0 })
59
- .blur();
58
+ .type(text, { delay: 0 });
60
59
  },
61
60
 
62
61
  addTextInDisplayText: (text) => {
@@ -72,7 +71,7 @@ const steps = {
72
71
 
73
72
  expandProtocolDropDown: () => {
74
73
  ckEditorLinkComponent.protocolDropDown()
75
- .click({force: true});
74
+ .click({ force: true });
76
75
  },
77
76
 
78
77
  selectProtocolType: (protocolType) => {
@@ -122,12 +121,12 @@ const steps = {
122
121
  doc.addEventListener('click', () => {
123
122
  setTimeout(function () { doc.location.reload() }, 5000);
124
123
  });
125
- ckEditorLinkComponent.foxImageLinkUrlValueCheckPreviewTab()
124
+ ckEditorLinkComponent.foxImageLinkUrlValueCheckPreviewTab()
126
125
  .click();
127
- cy.verifyDownload(fileName);
126
+ cy.verifyDownload(fileName);
128
127
  });
129
128
  },
130
-
129
+
131
130
 
132
131
  clickSendItToServerButton: () => {
133
132
  ckEditorLinkComponent.sendItToServerButton()
@@ -6,6 +6,7 @@ const selectors = {
6
6
  ...dialogBoxBase,
7
7
  colorBlock: () => cy.get('.color-picker-block'),
8
8
  colorSaturationPalette: () => cy.get('.react-colorful__saturation'),
9
+ alphaPicker : () => cy.get('.react-colorful__alpha'),
9
10
  colorSaturationPicker: () => cy.get('.react-colorful__saturation-pointer .react-colorful__pointer-fill'),
10
11
  colorHuePalette: () => cy.get('.react-colorful__hue'),
11
12
  colorHuePicker: () => cy.get('.react-colorful__hue-pointer .react-colorful__pointer-fill'),
@@ -97,6 +98,11 @@ const steps = {
97
98
  .click();
98
99
  },
99
100
 
101
+ clickInAlphaPicker: () => {
102
+ colorPopupComponent.alphaPicker()
103
+ .click();
104
+ },
105
+
100
106
  clickInColorHuePalette: () => {
101
107
  colorPopupComponent.colorHuePalette()
102
108
  .click();
@@ -97,6 +97,10 @@ const steps = {
97
97
  utilities.verifyElementVisibilityState(commonComponents.tooltipText(), 'notExist');
98
98
  },
99
99
 
100
+ verifyErrorMessageDoesNotHaveText: () => {
101
+ commonComponents.errorMessage()
102
+ .should('not.have.text', 'Error:');
103
+ }
100
104
  }
101
105
 
102
106
  const tests = {
@@ -147,9 +147,22 @@ const steps = {
147
147
  utilities.verifyElementVisibilityState(commonComponents.warningIcon(), 'exist');
148
148
  });
149
149
  }
150
+ else if (field === 'Please select a file type') {
151
+ // Upload Response Select File Type Accordion
152
+ cy.get('.edit-question-edit-tab-wrapper .ngie-accordion-summary')
153
+ .within(() => {
154
+ utilities.verifyElementVisibilityState(commonComponents.warningIcon(), 'exist');
155
+ });
156
+ } else if (field === 'Please enter text block') {
157
+ // Content Block Body Label
158
+ cy.get('.options-label')
159
+ .within(() => {
160
+ utilities.verifyElementVisibilityState(commonComponents.warningIcon(), 'exist');
161
+ });
162
+ }
150
163
  })
151
164
  },
152
-
165
+
153
166
 
154
167
  clickOnEditQuestionButton: () => {
155
168
  createQuestionBasePage.editButton()
@@ -32,7 +32,7 @@ const steps = {
32
32
 
33
33
  const tests = {
34
34
  verifyDefaultToolDropdown:(toolOptionsArray, defaultTool)=>{
35
- const defaultSelectedTool = defaultTool || toolOptionsArray[0];
35
+ const defaultSelectedTool = defaultTool || toolOptionsArray[1];
36
36
  it(`\'Default tool\' label and dropdown should be displayed with \'${defaultSelectedTool}\' option selected by default`, () => {
37
37
  utilities.verifyInnerText(defaultToolDropdown.defaultToolDropdownLabel(), 'Default tool');
38
38
  utilities.verifyInnerText(defaultToolDropdown.defaultToolDropdown(), defaultSelectedTool);
@@ -26,6 +26,7 @@ const selectors = {
26
26
  const steps = {
27
27
  expandDraggableOptionsLayoutDropdown: () => {
28
28
  draggableOptionsSectionComponent.draggableOptionsLayoutDropdown()
29
+ .trigger('mouseover')
29
30
  .click();
30
31
  },
31
32
 
@@ -35,6 +36,7 @@ const steps = {
35
36
  */
36
37
  selectOptionFromDraggableOptionsLayoutDropdown: (listOption) => {
37
38
  draggableOptionsSectionComponent.draggableOptionsLayoutDropdownListOptions(listOption)
39
+ .trigger('mouseover')
38
40
  .click();
39
41
  },
40
42
 
@@ -23,9 +23,9 @@ const selectors = {
23
23
  }
24
24
 
25
25
  const steps = {
26
- openEditCategoryFlyout: () => {
26
+ openEditCategoryFlyout: (categoryName = 'general') => {
27
27
  essayResponsePage.equationEditorSectionCategories()
28
- .contains(`${equationEditorCategoriesAndSymbols['general'].displayName}`)
28
+ .contains(`${equationEditorCategoriesAndSymbols[categoryName].displayName}`)
29
29
  .parents('[id*="DraggableItem"]')
30
30
  .within(() => {
31
31
  essayResponsePage.equationEditorSectionCategoriesEditIcon()