itemengine-cypress-automation 1.0.189-e2e-execution-crash-83cdbd4.0 → 1.0.190-7thMayFixes-fcaf7b8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +81 -0
  2. package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +620 -0
  3. package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +402 -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 +2 -2
  11. package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +1 -1
  12. package/cypress/e2e/ILC/AudioResponseNew/editAndPreviewTabScoringSection.js +1 -1
  13. package/cypress/e2e/ILC/AudioResponseNew/editTabBasicSection.js +1 -0
  14. package/cypress/e2e/ILC/AudioResponseNew/headerSection.js +4 -20
  15. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +1 -1
  16. package/cypress/e2e/ILC/AudioResponseNew/studentViewSettings.js +2 -11
  17. package/cypress/e2e/ILC/ChartsBar/allOrNothingScoringForAllViews.smoke.js +366 -0
  18. package/cypress/e2e/ILC/ChartsBar/checkAnswerFunctionalityForAllViews.smoke.js +181 -0
  19. package/cypress/e2e/ILC/ChartsBar/gradingViewAndCorrectAnswerView.smoke.js +283 -0
  20. package/cypress/e2e/ILC/ChartsBar/previewContentsForAllViews.smoke.js +625 -0
  21. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/additionalSettingsBasic.js +1 -1
  22. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +1 -1
  23. package/cypress/e2e/ILC/DrawingResponse/drawingResponseAdditionalSettings.js +2 -2
  24. package/cypress/e2e/ILC/DrawingResponse/drawingResponseBackground.js +0 -3
  25. package/cypress/e2e/ILC/DrawingResponse/drawingResponseCustomizeAdditionalOptions.js +3 -5
  26. package/cypress/e2e/ILC/DrawingResponse/drawingResponseEditTabBasicSection.js +0 -4
  27. package/cypress/e2e/ILC/DrawingResponse/drawingResponseEditTabScoring.js +0 -1
  28. package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +6 -8
  29. package/cypress/e2e/ILC/DrawingResponse/drawingResponsePageHeaderSection.js +4 -24
  30. package/cypress/e2e/ILC/DrawingResponse/drawingResponsePreviewTabContents.smoke.js +0 -9
  31. package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +418 -29
  32. package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +1 -1
  33. package/cypress/e2e/ILC/EssayResponse/essayResponseSpecialCharacters.js +0 -2
  34. package/cypress/e2e/ILC/EssayResponse/headerSection.js +3 -18
  35. package/cypress/e2e/ILC/EssayResponse/previewHyperlink.js +0 -1
  36. package/cypress/e2e/ILC/EssayResponseMath/mathCharacters.js +0 -1
  37. package/cypress/e2e/ILC/FeedbackScaleNew/headerSection.js +29 -1
  38. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/headerSection.js +0 -5
  39. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +2 -2
  40. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +1 -1
  41. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/headerSection.js +0 -4
  42. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/studentViewSettings.js +1 -1
  43. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/backgroundImageAndCanvasProperties.js +3 -3
  44. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/editTabScoring.js +1 -0
  45. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/headerSection.js +5 -5
  46. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +2 -2
  47. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +4 -4
  48. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/headerSection.js +0 -4
  49. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +1 -1
  50. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -4
  51. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  52. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +1 -1
  53. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +5 -5
  54. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -4
  55. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  56. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabScoringSection.js +1 -2
  57. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +1 -0
  58. package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +1 -3
  59. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
  60. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +2 -2
  61. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +2 -2
  62. package/cypress/e2e/ILC/Graphing/addBackgroundShapesSection.js +2 -2
  63. package/cypress/e2e/ILC/Graphing/allOrNothingForAllViews.smoke.js +2 -1
  64. package/cypress/e2e/ILC/Graphing/studentViewSettings.js +1 -1
  65. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +6 -6
  66. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +3 -2
  67. package/cypress/e2e/ILC/GridFill/gridLayoutContents.js +11 -3
  68. package/cypress/e2e/ILC/GridFill/headerSection.js +4 -5
  69. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +3 -3
  70. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +2 -2
  71. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountAllOrNothingCorrectPointsGreaterThanAlternativePoints.js +143 -0
  72. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +132 -0
  73. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +143 -0
  74. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +144 -0
  75. package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountallOrNothingCorrectPointsEqualToAlternativePoints.js +143 -0
  76. package/cypress/e2e/ILC/GridFill/scoring/cellshadeCountAllOrNothingAlternativePointsGreaterThanCorrectPoints.js +131 -0
  77. package/cypress/e2e/ILC/GridFill/scoring/matchExactAndCellShadeCountCombinedScoring.js +87 -0
  78. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsCellShadeCountBasics.js +446 -0
  79. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +1 -1
  80. package/cypress/e2e/ILC/ImageHighlight/allOrNothingForAllViews.smoke.js +276 -0
  81. package/cypress/e2e/ILC/ImageHighlight/checkAnswerFunctionalityForAllViews.smoke.js +141 -0
  82. package/cypress/e2e/ILC/ImageHighlight/previewContentsForAllViews.smoke.js +150 -0
  83. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +194 -0
  84. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +195 -0
  85. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +274 -0
  86. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingPenaltyScoring.js +48 -0
  87. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/manuallyAndNonScored.js +144 -0
  88. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +252 -0
  89. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsBasic.js +102 -0
  90. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +256 -0
  91. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +253 -0
  92. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +308 -0
  93. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +225 -0
  94. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsBasic.js +151 -0
  95. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +196 -0
  96. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +227 -0
  97. package/cypress/e2e/ILC/ListOrderingDropdown/additionalSettings.js +91 -0
  98. package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +230 -0
  99. package/cypress/e2e/ILC/ListOrderingDropdown/checkAnswerFunctionalityForAllViews.smoke.js +124 -0
  100. package/cypress/e2e/ILC/ListOrderingDropdown/editTabBasicSection.js +221 -0
  101. package/cypress/e2e/ILC/ListOrderingDropdown/editTabScoring.js +203 -0
  102. package/cypress/e2e/ILC/ListOrderingDropdown/manuallyAndNonScoredEditTab.js +71 -0
  103. package/cypress/e2e/ILC/ListOrderingDropdown/minimumScoringPenaltyPointsAndRoundingDropdown.js +197 -0
  104. package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +201 -0
  105. package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +115 -0
  106. package/cypress/e2e/ILC/ListOrderingDropdown/studentViewSettings.js +183 -0
  107. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +216 -0
  108. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +214 -0
  109. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +273 -0
  110. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingPenaltyScoring.js +52 -0
  111. package/cypress/e2e/ILC/ListOrderingNew/Scoring/manuallyAndNonScored.js +128 -0
  112. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +279 -0
  113. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsBasic.js +109 -0
  114. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +278 -0
  115. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +278 -0
  116. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +335 -0
  117. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +250 -0
  118. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsBasic.js +161 -0
  119. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +216 -0
  120. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +252 -0
  121. package/cypress/e2e/ILC/ListOrderingNew/additionalSettings.js +118 -0
  122. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +243 -0
  123. package/cypress/e2e/ILC/ListOrderingNew/checkAnswerFunctionalityForAllViews.smoke.js +128 -0
  124. package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +155 -0
  125. package/cypress/e2e/ILC/ListOrderingNew/editTabScoring.js +195 -0
  126. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +78 -0
  127. package/cypress/e2e/ILC/ListOrderingNew/manuallyAndNonScoredEditTab.js +69 -0
  128. package/cypress/e2e/ILC/ListOrderingNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +194 -0
  129. package/cypress/e2e/ILC/ListOrderingNew/previewContentsForAllViews.smoke.js +176 -0
  130. package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +112 -0
  131. package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +244 -0
  132. package/cypress/e2e/ILC/Matching/additionalSettings.js +1 -0
  133. package/cypress/e2e/ILC/Matching/headerSection.js +2 -2
  134. package/cypress/e2e/ILC/Matching/studentViewSettings.js +1 -1
  135. package/cypress/e2e/ILC/MultipleSelection/allOrNothingWithAlternativeAnswer.js +1 -0
  136. package/cypress/e2e/ILC/MultipleSelectionGridNew/studentViewSettings.js +1 -1
  137. package/cypress/e2e/ILC/NumberLine/LayoutSection.js +209 -0
  138. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +23 -21
  139. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +5 -3
  140. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +8 -6
  141. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +1 -1
  142. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +1 -1
  143. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +1 -1
  144. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +1 -1
  145. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +1 -1
  146. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +60 -3
  147. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +3 -2
  148. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +2 -9
  149. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +2 -2
  150. package/cypress/e2e/ILC/NumberLine/headerSection.js +4 -4
  151. package/cypress/e2e/ILC/NumberLine/lineSettingsSection.js +33 -0
  152. package/cypress/e2e/ILC/NumberLine/numberLineSection.js +50 -0
  153. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +2 -2
  154. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +1 -1
  155. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +3 -3
  156. package/cypress/e2e/ILC/NumberLine/toolSettings.js +2 -1
  157. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +1 -1
  158. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/allOrNothingScoringForAllViews.smoke.js +697 -0
  159. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +173 -0
  160. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/layoutSection.js +211 -0
  161. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/numberLineSection.js +75 -0
  162. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/previewTabContentsForAllViews.smoke.js +204 -0
  163. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +231 -0
  164. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +231 -0
  165. package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +231 -0
  166. package/cypress/e2e/ILC/NumberLineLabel/Scoring/manualAndNonScoredScoring.js +169 -0
  167. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +274 -0
  168. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsBasic.js +433 -0
  169. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +274 -0
  170. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +274 -0
  171. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +249 -0
  172. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsBasic.js +135 -0
  173. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +210 -0
  174. package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +248 -0
  175. package/cypress/e2e/ILC/NumberLineLabel/additionalSettingsBasic.js +115 -0
  176. package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +289 -0
  177. package/cypress/e2e/ILC/NumberLineLabel/checkAnswerFunctionalityForAllViews.smoke.js +154 -0
  178. package/cypress/e2e/ILC/NumberLineLabel/editTabBasicSection.js +326 -0
  179. package/cypress/e2e/ILC/NumberLineLabel/editTabScoring.js +234 -0
  180. package/cypress/e2e/ILC/NumberLineLabel/gradingViewAndCorrectAnswerView.smoke.js +164 -0
  181. package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +80 -0
  182. package/cypress/e2e/ILC/NumberLineLabel/layoutSection.js +204 -0
  183. package/cypress/e2e/ILC/NumberLineLabel/manuallyAndNonScoredEditTab.js +79 -0
  184. package/cypress/e2e/ILC/NumberLineLabel/minimumScoringPenaltyPointsAndRoundingDropdown.js +85 -0
  185. package/cypress/e2e/ILC/NumberLineLabel/numberLineSection.js +51 -0
  186. package/cypress/e2e/ILC/NumberLineLabel/previewContentsForAllViews.smoke.js +120 -0
  187. package/cypress/e2e/ILC/NumberLineLabel/specifyCorrectAnswerSection.js +74 -0
  188. package/cypress/e2e/ILC/NumberLineLabel/studentViewSettings.js +183 -0
  189. package/cypress/e2e/ILC/NumberLineLabel/toolSettings.js +76 -0
  190. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/allOrNothingForAllViews.smoke.js +292 -0
  191. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/checkAnswerFunctionalityForAllViews.smoke.js +155 -0
  192. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +166 -0
  193. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/layoutSection.js +360 -0
  194. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/numberLineSection.js +80 -0
  195. package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/previewContentsForAllViews.smoke.js +111 -0
  196. package/cypress/e2e/ILC/Protractor/protractorPreviewContents.smoke.js +1 -1
  197. package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +49 -1
  198. package/cypress/e2e/ILC/ShortTextResponseNew/editTabScoringSection.js +1 -1
  199. package/cypress/e2e/ILC/ShortTextResponseNew/headerSection.js +1 -7
  200. package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +1 -2
  201. package/cypress/e2e/ILC/SingleSelectionGridNew/studentViewSettings.js +1 -1
  202. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchExact.js +2 -2
  203. package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +5 -5
  204. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +0 -1
  205. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +0 -1
  206. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +0 -1
  207. package/cypress/e2e/ILC/TextSelection/Scoring/basicScoringForAllTextSelectionTypes.smoke.js +0 -1
  208. package/cypress/e2e/ILC/TextSelection/additionalSettings.js +125 -0
  209. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +0 -1
  210. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +2 -2
  211. package/cypress/e2e/ILC/TextSelection/editTabScoringSection.js +5 -4
  212. package/cypress/e2e/ILC/TextSelection/headerSection.js +73 -0
  213. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +6 -7
  214. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +179 -0
  215. package/cypress/e2e/ILC/TextSelection/specifyCorrectAnswerSection.js +89 -0
  216. package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +436 -0
  217. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordion.js +277 -0
  218. package/cypress/e2e/ILC/TextSelection/textSelectionModesInPreviewTab.js +222 -0
  219. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyCorrectAnswerSection.js +260 -0
  220. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +380 -0
  221. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +5 -5
  222. package/cypress/e2e/ILC/ToolSettings/toolSettingsPreviewContents.smoke.js +3 -3
  223. package/cypress/e2e/ILC/VideoResponseNew/additionalSettingsBasic.js +77 -0
  224. package/cypress/e2e/ILC/VideoResponseNew/customizePlaybackControls.js +313 -0
  225. package/cypress/e2e/ILC/VideoResponseNew/editAndPreviewTabScoringSection.js +99 -0
  226. package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +171 -0
  227. package/cypress/e2e/ILC/VideoResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +179 -0
  228. package/cypress/e2e/ILC/VideoResponseNew/headerSection.js +79 -0
  229. package/cypress/e2e/ILC/VideoResponseNew/previewContentsForAllViews.smoke.js +201 -0
  230. package/cypress/e2e/ILC/VideoResponseNew/standardRecorderStyle.js +567 -0
  231. package/cypress/e2e/ILC/VideoResponseNew/studentViewSettings.js +192 -0
  232. package/cypress/fixtures/constants.js +1 -1
  233. package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +1 -1
  234. package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +20 -20
  235. package/cypress/fixtures/theme/ilc.json +22 -18
  236. package/cypress/pages/audioPlayerPage.js +669 -445
  237. package/cypress/pages/audioResponsePage.js +10 -80
  238. package/cypress/pages/brainingCampManipulativePage.js +1 -1
  239. package/cypress/pages/chartsBarPage.js +517 -0
  240. package/cypress/pages/chartsDotPlotPage.js +8 -0
  241. package/cypress/pages/chartsLinePage.js +42 -0
  242. package/cypress/pages/components/allowTeachersToDownloadStudentResponseComponent.js +58 -0
  243. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +19 -26
  244. package/cypress/pages/components/autoScoredStudentViewSettings.js +7 -7
  245. package/cypress/pages/components/barAndLineChartComponent.js +123 -0
  246. package/cypress/pages/components/chartsCommonComponent.js +138 -0
  247. package/cypress/pages/components/commonComponents.js +1 -0
  248. package/cypress/pages/components/draggableOptionContainer.js +2 -1
  249. package/cypress/pages/components/equationEditorFlyout.js +3 -2
  250. package/cypress/pages/components/essayResponseCommonComponents.js +8 -2
  251. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +1 -0
  252. package/cypress/pages/components/imageCanvasComponent.js +5 -4
  253. package/cypress/pages/components/index.js +8 -0
  254. package/cypress/pages/components/layoutSectionComponent.js +1156 -0
  255. package/cypress/pages/components/limitNumberOfRetakeComponent.js +90 -0
  256. package/cypress/pages/components/numberLineCommonComponent.js +685 -0
  257. package/cypress/pages/components/optionsWrapperComponent.js +13 -2
  258. package/cypress/pages/components/playbackControlsBaseComponent.js +20 -13
  259. package/cypress/pages/components/questionInputFieldComponent.js +2 -1
  260. package/cypress/pages/components/questionInstructionsComponent.js +3 -19
  261. package/cypress/pages/components/resetPopupComponent.js +7 -3
  262. package/cypress/pages/components/scoringSectionBaseEditTab.js +6 -17
  263. package/cypress/pages/components/singleMultipleSelectionModeComponent.js +16 -0
  264. package/cypress/pages/components/styleAndLayoutCustomizationAccordionComponent.js +46 -0
  265. package/cypress/pages/components/toolSettingsComponent.js +6 -0
  266. package/cypress/pages/contentBlocksPage.js +19 -3
  267. package/cypress/pages/createItemPage.js +75 -8
  268. package/cypress/pages/dialogBoxBase.js +2 -2
  269. package/cypress/pages/dragAndDropIntoCategoriesPage.js +22 -24
  270. package/cypress/pages/drawingResponsePage.js +25 -4
  271. package/cypress/pages/feedbackScalePage.js +3 -0
  272. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +14 -0
  273. package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +1 -1
  274. package/cypress/pages/graphingPage.js +19 -1
  275. package/cypress/pages/gridFillPage.js +47 -59
  276. package/cypress/pages/imageHighlightPage.js +364 -0
  277. package/cypress/pages/index.js +6 -1
  278. package/cypress/pages/itemPreviewSettingsPage.js +4 -0
  279. package/cypress/pages/listOrderingPage.js +561 -555
  280. package/cypress/pages/matchingPage.js +3 -2
  281. package/cypress/pages/multipleSelectionPage.js +23 -1
  282. package/cypress/pages/numberLineLabelPage.js +1093 -0
  283. package/cypress/pages/numberLinePage.js +696 -78
  284. package/cypress/pages/protractorPage.js +1 -1
  285. package/cypress/pages/readingRulerPage.js +1 -1
  286. package/cypress/pages/rulerPage.js +9 -5
  287. package/cypress/pages/textEntryMathPage.js +2 -2
  288. package/cypress/pages/textSelectionPage.js +461 -23
  289. package/cypress/pages/videoResponsePage.js +396 -83
  290. package/package.json +1 -1
  291. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +0 -432
  292. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +0 -134
@@ -1,624 +1,848 @@
1
- import constants from "../fixtures/constants";
2
1
  import utilities from "../support/helpers/utilities";
2
+ import { commonComponents, createQuestionBasePage, playbackControlsBaseComponent } from "./components";
3
3
  import { dialogBoxBase } from "./dialogBoxBase";
4
- import { selectQuestionResourceToolPage } from "./selectQuestionResourceToolPage";
5
- import { createQuestionBasePage, commonComponents, ckEditorToolbar, equationEditorFlyout, playbackControlsBaseComponent } from "./components"
6
4
 
7
5
  const selectors = {
8
- ...commonComponents,
9
- ...ckEditorToolbar,
10
6
  ...playbackControlsBaseComponent,
11
- addUrlLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(0),
12
- addUrlRadioButton: () => cy.get('.ngie-radio-btn input').eq(0),
13
- addAudioFileLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(1),
14
- addAudioFileRadioButton: () => cy.get('.ngie-radio-btn input').eq(1),
15
- sourceUrlLabel: () => cy.get('.inline-text-property-label').eq(0),
7
+ ...commonComponents,
8
+ ...dialogBoxBase,
9
+ uploadAudioFileLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(0),
10
+ uploadAudioFileRadioButton: () => cy.get('.ngie-radio-btn input').eq(0),
11
+ addAudioURLLabel: () => cy.get('[class*="RadioGroupMUI5styles__RadioOptionContainer"] .ngie-radio-label').eq(1),
12
+ addAudioURLRadioButton: () => cy.get('.ngie-radio-btn input').eq(1),
13
+ uploadAudioFileUploadLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(0),
14
+ uploadAudioFileNameLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(1),
15
+ deleteAudioFileButton: () => cy.get('[aria-label="Delete"]'),
16
+ sourceUrlLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(0),
16
17
  sourceUrlInputField: () => cy.get('input[aria-label="Source URL"]'),
17
- noFileChosenLabel: () => cy.get('[aria-label="No file chosen"]'),
18
- uploadedFileNameLabel: () => cy.get('.selected-file'),
19
- uploadLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(0),
20
- fileNameLabel: () => cy.get('[class*="AudioPlayerstyles__AudioLabel"]').eq(1),
21
- chooseFileButton: () => cy.get('.choose-file-button'),
22
- fileUploadProgressBar: () => cy.get('[class*="AudioPlayerstyles__ProgressBar-"]'),
18
+ uploadAudioChooseFileButton: () => cy.get('.choose-file-upload-button'),
19
+ uploadAudioNoFileChosenLabel: () => cy.get('[aria-label="No file chosen"]').eq(0),
20
+ uploadedFileNameLabel: () => cy.get('.selected-file').eq(0),
21
+ audioFileUploadProgressBar: () => cy.get('[class*="AudioPlayerstyles__ProgressBar-"]').eq(0),
23
22
  inputTypeFile: () => cy.get('input[type="file"]'),
24
- playerTypeLabel: () => cy.get('.player-type-dropdown-label'),
25
- playerTypeDropdown: () => cy.get('#Player-type-select'),
26
- playbackLimitLabel: () => cy.get('.playback-limit-wrapper [class*="Label"]'),
27
- playbackLimitInputField: () => cy.get('.playback-limit-wrapper input'),
28
- titleLabel: () => cy.get('.inline-text-property-label').last(),
29
- titleInputField: () => cy.get('input[aria-label="Title"]'),
30
- descriptionLabel: () => cy.get('.additional-settings-label').eq(0),
31
- descriptionInputField: () => cy.get('[role="textbox"][title="Description"]'),
32
- transcriptLabel: () => cy.get('.additional-settings-label').eq(1),
23
+ audioPlayerStyleLabel: () => cy.get('.player-style-label'),
24
+ standardStyleToggleButton: () => cy.get('[data-ngie-testid="standard-toggle-button"]'),
25
+ barStyleToggleButton: () => cy.get('[data-ngie-testid="bar-toggle-button"]'),
26
+ compactStyleToggleButton: () => cy.get('[data-ngie-testid="compact-toggle-button"]'),
27
+ standardStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="standard-toggle-button"] .ngie-toggle-button-label'),
28
+ barStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="bar-toggle-button"] .ngie-toggle-button-label'),
29
+ compactStyleToggleButtonLabel: () => cy.get('[data-ngie-testid="compact-toggle-button"] .ngie-toggle-button-label'),
30
+ compactPlayerOptionsLabel: () => cy.get('.options-label'),
31
+ defaultPlayerOptionButton: () => cy.get('[data-ngie-testid="default-toggle-button"]'),
32
+ textPlayerOptionButton: () => cy.get('[data-ngie-testid="text-toggle-button"]'),
33
+ imagePlayerOptionButton: () => cy.get('[data-ngie-testid="image-toggle-button"]'),
34
+ iconPlayerOptionButton: () => cy.get('[data-ngie-testid="icon-toggle-button"]'),
35
+ customizePlayerLayoutSettingsAccordion: () => cy.get('.ngie-accordion-summary'),
36
+ customizePlayerLayoutSettingsToggleButtons: () => cy.get('.audio-player-buttons-section button'),
37
+ customizePlayerLayoutPauseButton: () => cy.get('[data-ngie-testid="pause-toggle-button"]'),
38
+ customizePlayerLayoutSeekButton: () => cy.get('[data-ngie-testid="seek-toggle-button"]'),
39
+ customizePlayerLayoutPlaybackSpeedButton: () => cy.get('[data-ngie-testid="playbackspeed-toggle-button"]'),
40
+ customizePlayerLayoutAddPinButton: () => cy.get('[data-ngie-testid="addpin-toggle-button"]'),
41
+ customizePlayerLayoutForwardBackwardButton: () => cy.get('[data-ngie-testid="forwardbackward-toggle-button"]'),
42
+ customizePlayerLayoutVolumeButton: () => cy.get('[data-ngie-testid="volumecontrol-toggle-button"]'),
43
+ customizePlayerLayoutTimerButton: () => cy.get('[data-ngie-testid="timer-toggle-button"]'),
44
+ customizePlayerLayoutProgressIndicatorButton: () => cy.get('[data-ngie-testid="progressbar-toggle-button"]'),
45
+ customizePlayerLayoutToggleButtonLabel: () => cy.get('[class*="ToggleButtonMUI5style__ButtonLabelWrapper"]'),
46
+ uncheckAllButton: () => cy.get('[class*="AudioPlayerstyles__UncheckButton"]'),
47
+ audioDescriptionInputField: () => cy.get('.description-wrapper [role="textbox"]'),
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),
33
52
  transcriptInputField: () => cy.get('[role="textbox"][title="Transcript"]'),
34
- customizeUIControlAccordion: () => cy.get('.ngie-accordion-summary[role="button"]').eq(0),
35
- advancedPlayerSettingsAccordion: () => cy.get('.ngie-accordion-summary[role="button"]').eq(1),
36
- customizeControlPlayButton: () => cy.get('[data-ngie-testid="play-toggle-button"]'),
37
- customizeControlButtonLabel: () => cy.get('[data-ngie-testid="play-toggle-button"]').find('.ngie-toggle-button-label'),
38
- customizeControlPauseButton: () => cy.get('[data-ngie-testid="pause-toggle-button"]'),
39
- customizeControlSeekButton: () => cy.get('[data-ngie-testid="seek-toggle-button"]'),
40
- advancedPlayerButtonLabel: () => cy.get('[data-ngie-testid="timer-toggle-button"]').find('.ngie-toggle-button-label'),
41
- advancedPlayerTimerButton: () => cy.get('[data-ngie-testid="timer-toggle-button"]'),
42
- advancedPlayerProgressBarButton: () => cy.get('[data-ngie-testid="progress-bar-toggle-button"]'),
43
- advancedPlayerVolumeControlButton: () => cy.get('[data-ngie-testid="volume-control-toggle-button"]'),
44
53
  allowStudentsToDownloadAudioLabel: () => cy.get('[data-ngie-testid="allow-students-to-download-the-audio-checkbox"] .MuiFormControlLabel-label'),
45
54
  allowStudentsToDownloadAudioCheckbox: () => cy.get('[data-ngie-testid="allow-students-to-download-the-audio-checkbox"] input'),
46
- selectedButtonIcon: () => cy.get('.ngie-toggle-button-tick-icon'),
47
- accordionChevronIcon: () => cy.get('[class*="expandIcon"]'),
48
- accordionButtonLabel: () => cy.get('.customized_button_label'),
49
- audioDownloadButton: () => cy.get('.audio-download-icon-wr'),
50
- playbackLimitHelpText: () => cy.get('.playback-limit-remaining'),
51
- playbackElapsedTime: () => cy.get('.audio-player-current-time'),
52
- playbackTotalTime: () => cy.get('.audio-player-duration'),
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'),
57
+ playAttemptsLimitLabel: () => cy.get('.playback-limit-wrapper [class*="Label"]'),
58
+ playAttemptsLimitInputField: () => cy.get('.playback-limit-wrapper input'),
59
+ studentViewSettingsLabel: () => cy.get('[class*="AudioPlayerstyles__TranscriptLabelWrapper"]').eq(0),
60
+ deleteTranscriptButton: () => cy.get('[aria-label*="Delete transcript]'),
61
+
62
+ //Preview tab
63
+ backwardButton: () => cy.get('.forward-backward-buttons-wrapper [aria-label*="Backward"]'),
64
+ forwardButton: () => cy.get('.forward-backward-buttons-wrapper [aria-label*="Forward"]'),
65
+ playbackTime: () => cy.get('.audio-player-current-time'),
66
+ playbackElapsedTime: () => cy.get('.audio-player-current-time').eq(0),
67
+ playbackTotalTime: () => cy.get('.audio-player-duration').eq(0),
68
+ addPinButton: () => cy.get('.audio-add-pin-wr button'),
53
69
  audioFileSrc: () => cy.get('.audio-player-toolbar audio'),
54
- titlePreviewTab: () => cy.get('.audio-resource-title'),
55
70
  descriptionPreviewTab: () => cy.get('.audio-resource-preview-wrapper .question-text-wrapper'),
56
71
  transcriptTitlePreviewTab: () => cy.get('.transcript-title'),
57
72
  transcriptPrintButton: () => cy.get('button[aria-label="Print preview"]'),
58
73
  transcriptModalCloseButton: () => cy.get('button[aria-label="Close"]'),
59
- transcriptContentPreviewTab: () => cy.get('[class*="Transcriptstyles__TranscriptContent"]'),
60
- transcriptButton: () => cy.get('button[aria-label="Transcript"]'),
74
+ transcriptContentPreviewTab: () => cy.get('.transcript-content'),
75
+ transcriptButton: () => cy.get('button[aria-label="Show transcript"]'),
61
76
  transcriptModal: () => cy.get('[class*="Transcriptstyles__TranscriptWrapper"]'),
77
+ standardPreviewPlayerWrapper: () => cy.get('.standard-audio-resource-preview'),
78
+ audioPlayerToolbar: () => cy.get('.audio-player-toolbar'),
79
+ compactPlayerPlayButton: () => cy.get(' button'),
80
+ playButton: () => cy.get('.audio-player-not-visible button'),
81
+ stopButton: () => cy.get('.audio-player-visible button'),
62
82
  audioDownloadButton: () => cy.get('.audio-download-icon-wr'),
63
83
  playbackLimitHelpText: () => cy.get('.playback-limit-remaining'),
64
- playbackPlayer: () => cy.get('.audio-player-toolbar')
84
+ pinsPanel: () => cy.get('.add-pin-wrapper'),
85
+ pinsTitle: () => cy.get('[class*="AddPinstyles__AddPinHeading-"]'),
86
+ pinsPanelCloseButton: () => cy.get('.close-button'),
87
+ pinsPanelAddPinButton: () => cy.get('.add-pin-button'),
88
+ noPinsAddedHelpText: () => cy.get('[class*="AddPinstyles__TextWrapper"]'),
89
+ pinsPanelTimeLabel: () => cy.get('[class*="AddPinstyles__TimeTextWrapper"]'),
90
+ pinsPanelTimeInputFieldWrapper: () => cy.get('[class*="TimeInputstyles__InputWrapper"]'),
91
+ pinsPanelTimeInputFieldMinutes: () => cy.get('[class*="TimeInputstyles__InputWrapper"] [type="number"]').eq(0),
92
+ pinsPanelTimeInputFieldSeconds: () => cy.get('[class*="TimeInputstyles__InputWrapper"] [type="number"]').eq(1),
93
+ addPinSectionCancelButton: () => cy.get('.cancel-add-pin-button'),
94
+ addPinSectionSaveButton: () => cy.get('.save-button'),
95
+ pinsPanelAddedPinDeleteButton: () => cy.get('[aria-label="Delete pin"]'),
96
+ progressBarPin: (pinTimeStamp = null) => {
97
+ if (pinTimeStamp) {
98
+ return cy.get(`[class*="ProgressBarstyle__Bookmark"][aria-label="${pinTimeStamp} pin"]`)
99
+ } else {
100
+ return cy.get('[class*="ProgressBarstyle__Bookmark"]')
101
+ }
102
+ },
103
+ pinsPanelAddedPinWrapper: () => cy.get('[class*="AddPinstyles__BookMark-"]'),
104
+ pinsPanelAddedPinTimeStamp: () => cy.get('[class*="AddPinstyles__BookMarkTime"]'),
105
+ addPinContainer: () => cy.get('[class*="AddPinstyles__AddPinContainer"]')
65
106
  }
66
107
 
67
108
  const steps = {
68
- ...createQuestionBasePage.steps,
69
- ...ckEditorToolbar.steps,
70
- ...equationEditorFlyout.steps,
71
- ...commonComponents.steps,
72
109
  ...playbackControlsBaseComponent.steps,
73
- verifyAddUrlCheckedState: () => {
74
- audioPlayerPage.addUrlRadioButton()
75
- .should('be.checked');
110
+ ...createQuestionBasePage.steps,
111
+ ...dialogBoxBase.steps,
112
+ /**
113
+ * Uploads a file to the audio player by attaching the file located at the specified filePath.
114
+ * @param {string} filePath - The file path to the file to be uploaded.
115
+ * @returns {void}
116
+ */
117
+ uploadFile: (filePath) => {
118
+ audioPlayerPage.inputTypeFile()
119
+ .attachFile(filePath);
120
+ utilities.verifyElementVisibilityState(audioPlayerPage.audioFileUploadProgressBar(), 'hidden');
121
+ audioPlayerPage.steps.addWaitToPlayAudio(1000);
76
122
  },
77
123
 
78
- verifyAddUrlUncheckedState: () => {
79
- audioPlayerPage.addUrlRadioButton()
80
- .should('not.be.checked');
124
+ /**
125
+ * Uploads a file to the audio player by attaching the file located at the specified filePath.
126
+ * @param {string} filePath - The file path to the file to be uploaded.
127
+ * @returns {void}
128
+ */
129
+ attachFile: (filePath) => {
130
+ audioPlayerPage.inputTypeFile()
131
+ .attachFile(filePath);
81
132
  },
82
133
 
83
- clickOnAddUrlRadioButton: () => {
84
- audioPlayerPage.addUrlRadioButton()
85
- .click();
134
+ addInputToAudioDescriptionInputField: (text) => {
135
+ audioPlayerPage.audioDescriptionInputField()
136
+ .type(text)
137
+ .should('have.text', text)
138
+ .blur();
139
+ },
140
+
141
+ selectTypeInTranscriptRadioButton: () => {
142
+ audioPlayerPage.typeInTranscriptRadioButton()
143
+ .click()
144
+ .should('be.checked');
145
+ },
146
+
147
+ enterTextInTranscriptInputField: (text) => {
148
+ audioPlayerPage.transcriptInputField()
149
+ .type(text)
150
+ .should('have.text', text)
151
+ .blur();
86
152
  },
87
153
 
88
- verifyAddAudioFileCheckedState: () => {
89
- audioPlayerPage.addAudioFileRadioButton()
154
+ verifyUploadAudioFileRadioButtonIsSelected: () => {
155
+ audioPlayerPage.uploadAudioFileRadioButton()
90
156
  .should('be.checked');
91
157
  },
92
158
 
93
- verifyAddAudioFileUncheckedState: () => {
94
- audioPlayerPage.addAudioFileRadioButton()
159
+ verifyUploadAudioFileRadioButtonIsNotSelected: () => {
160
+ audioPlayerPage.uploadAudioFileRadioButton()
95
161
  .should('not.be.checked');
96
162
  },
97
163
 
98
- clickOnAddAudioFileRadioButton: () => {
99
- audioPlayerPage.addAudioFileRadioButton()
100
- .click();
164
+ verifyAddAudioURLRadioButtonIsNotSelected: () => {
165
+ audioPlayerPage.addAudioURLRadioButton()
166
+ .should('not.be.checked');
101
167
  },
102
168
 
103
- focusInAndFocusOutOfSourceURLInputField: () => {
104
- audioPlayerPage.sourceUrlInputField()
169
+ selectUploadAudioFileRadioButton: () => {
170
+ audioPlayerPage.uploadAudioFileRadioButton()
105
171
  .click()
106
- .blur();
172
+ .should('be.checked');
107
173
  },
108
174
 
109
- /**
110
- * Enters text into the source URL input field on the audio player page.
111
- * @param {string} text - The text to be entered into the source URL input field.
112
- * @returns {void}
113
- */
114
- enterTextInSourceURLInputField: (text) => {
115
- audioPlayerPage.sourceUrlInputField()
116
- .type(text, { delay: 0 })
117
- .blur();
175
+ selectAddAudioURLRadioButton: () => {
176
+ audioPlayerPage.addAudioURLRadioButton()
177
+ .click()
178
+ .should('be.checked');
118
179
  },
119
180
 
120
- clearTextInSourceURLInputField: () => {
181
+ focusInAndFocusOutOfSourceURLInputField: () => {
121
182
  audioPlayerPage.sourceUrlInputField()
122
- .clear();
183
+ .click()
184
+ .blur();
123
185
  },
124
186
 
125
187
  /**
126
- * Uploads a file to the audio player by attaching the file located at the specified filePath.
127
- * @param {string} filePath - The file path to the file to be uploaded.
128
- * @returns {void}
188
+ * @description Verify audio player style toggle button is selected
189
+ * @param {string} toggleButton Toggle button label
129
190
  */
130
- uploadFile: (filePath) => {
131
- audioPlayerPage.inputTypeFile()
132
- .attachFile(filePath);
133
- utilities.verifyElementVisibilityState(audioPlayerPage.fileUploadProgressBar(), 'hidden');
191
+ verifyAudioPlayerStyleToggleButtonIsSelected: (toggleButton) => {
192
+ switch (toggleButton) {
193
+ case 'Standard':
194
+ audioPlayerPage.standardStyleToggleButton()
195
+ .should('have.attr', 'aria-pressed', 'true');
196
+ break;
197
+ case 'Bar':
198
+ audioPlayerPage.barStyleToggleButton()
199
+ .should('have.attr', 'aria-pressed', 'true');
200
+ break;
201
+ case 'Compact':
202
+ audioPlayerPage.compactStyleToggleButton()
203
+ .should('have.attr', 'aria-pressed', 'true');
204
+ break;
205
+ default:
206
+ throw new Error('Invalid audio player style');
207
+ }
134
208
  },
135
209
 
136
- verifyPlayerTypeDropdownDisabledState: () => {
137
- audioPlayerPage.playerTypeDropdown()
138
- .should('have.class', 'Mui-disabled');
210
+ /**
211
+ * @description Verify audio player style toggle button is not selected
212
+ * @param {string} toggleButton Toggle button label
213
+ */
214
+ verifyAudioPlayerStyleToggleButtonIsNotSelected: (toggleButton) => {
215
+ switch (toggleButton) {
216
+ case 'Standard':
217
+ audioPlayerPage.standardStyleToggleButton()
218
+ .should('have.attr', 'aria-pressed', 'false');
219
+ break;
220
+ case 'Bar':
221
+ audioPlayerPage.barStyleToggleButton()
222
+ .should('have.attr', 'aria-pressed', 'false');
223
+ break;
224
+ case 'Compact':
225
+ audioPlayerPage.compactStyleToggleButton()
226
+ .should('have.attr', 'aria-pressed', 'false');
227
+ break;
228
+ default:
229
+ throw new Error('Invalid audio player style');
230
+ }
139
231
  },
140
232
 
141
233
  /**
142
- * Sets the playback limit value in the audio player's input field.
143
- * @param {string|number} value - The value to set as the playback limit.
144
- * @returns {void}
234
+ * @description Select audio player style toggle button
235
+ * @param {string} toggleButton Toggle button label
145
236
  */
146
- setPlaybackLimit: (value) => {
147
- audioPlayerPage.playbackLimitInputField()
148
- .clear()
149
- .type(value)
237
+ selectAudioPlayerStyleToggleButton: (toggleButton) => {
238
+ switch (toggleButton) {
239
+ case 'Standard':
240
+ audioPlayerPage.standardStyleToggleButton()
241
+ .click()
242
+ .should('have.attr', 'aria-pressed', 'true');
243
+ break;
244
+ case 'Bar':
245
+ audioPlayerPage.barStyleToggleButton()
246
+ .click()
247
+ .should('have.attr', 'aria-pressed', 'true');
248
+ break;
249
+ case 'Compact':
250
+ audioPlayerPage.compactStyleToggleButton()
251
+ .click()
252
+ .should('have.attr', 'aria-pressed', 'true');
253
+ break;
254
+ default:
255
+ throw new Error('Invalid audio player style');
256
+ }
150
257
  },
151
258
 
152
259
  /**
153
- * Verifies that the playback limit input field in the audio player has the expected value.
154
- * @param {string|number} value - The expected value to be verified.
155
- * @returns {void}
260
+ * @description Verify compact player option button is selected
261
+ * @param {string} button button label
156
262
  */
157
- verifyPlaybackLimitInputFieldValue: (value) => {
158
- audioPlayerPage.playbackLimitInputField()
159
- .should('have.attr', 'value', value);
263
+ verifyCompactPlayerOptionButtonIsSelected: (button) => {
264
+ switch (button) {
265
+ case 'Default':
266
+ audioPlayerPage.defaultPlayerOptionButton()
267
+ .should('have.attr', 'aria-pressed', 'true');
268
+ break;
269
+ case 'Text':
270
+ audioPlayerPage.textPlayerOptionButton()
271
+ .should('have.attr', 'aria-pressed', 'true');
272
+ break;
273
+ case 'Image':
274
+ audioPlayerPage.imagePlayerOptionButton()
275
+ .should('have.attr', 'aria-pressed', 'true');
276
+ break;
277
+ case 'Icon':
278
+ audioPlayerPage.iconPlayerOptionButton()
279
+ .should('have.attr', 'aria-pressed', 'true');
280
+ break;
281
+ default:
282
+ throw new Error('Invalid compact player option');
283
+ }
160
284
  },
161
285
 
162
- focusInAndFocusOutOfPlaybackLimitInputField: () => {
163
- audioPlayerPage.playbackLimitInputField()
164
- .click()
165
- .blur();
286
+ /**
287
+ * @description Verify compact player option button is not selected
288
+ * @param {string} button button label
289
+ */
290
+ verifyCompactPlayerOptionButtonIsNotSelected: (button) => {
291
+ switch (button) {
292
+ case 'Default':
293
+ audioPlayerPage.defaultPlayerOptionButton()
294
+ .should('have.attr', 'aria-pressed', 'false');
295
+ break;
296
+ case 'Text':
297
+ audioPlayerPage.textPlayerOptionButton()
298
+ .should('have.attr', 'aria-pressed', 'false');
299
+ break;
300
+ case 'Image':
301
+ audioPlayerPage.imagePlayerOptionButton()
302
+ .should('have.attr', 'aria-pressed', 'false');
303
+ break;
304
+ case 'Icon':
305
+ audioPlayerPage.iconPlayerOptionButton()
306
+ .should('have.attr', 'aria-pressed', 'false');
307
+ break;
308
+ default:
309
+ throw new Error('Invalid compact player option');
310
+ }
166
311
  },
167
312
 
168
313
  /**
169
- * Enters text into the title input field on the audio player page.
170
- * @param {string} text - The text to be entered into the title input field.
171
- * @returns {void}
314
+ * @description Verify compact player option button is selected
315
+ * @param {string} toggleButton button label
172
316
  */
173
- enterTextInTitleInputField: (text) => {
174
- audioPlayerPage.titleInputField()
175
- .type(text, { delay: 0 });
317
+ selectCompactPlayerOptionButton: (toggleButton) => {
318
+ switch (button) {
319
+ case 'Default':
320
+ audioPlayerPage.defaultPlayerOptionButton()
321
+ .click()
322
+ .should('have.attr', 'aria-pressed', 'true');
323
+ break;
324
+ case 'Text':
325
+ audioPlayerPage.textPlayerOptionButton()
326
+ .click()
327
+ .should('have.attr', 'aria-pressed', 'true');
328
+ break;
329
+ case 'Image':
330
+ audioPlayerPage.imagePlayerOptionButton()
331
+ .click()
332
+ .should('have.attr', 'aria-pressed', 'true');
333
+ break;
334
+ case 'Icon':
335
+ audioPlayerPage.iconPlayerOptionButton()
336
+ .click()
337
+ .should('have.attr', 'aria-pressed', 'true');
338
+ break;
339
+ default:
340
+ throw new Error('Invalid compact player option');
341
+ }
176
342
  },
177
343
 
178
344
  /**
179
- * Verifies that the title input field in the audio player has the expected text value.
180
- * @param {string} value - The expected text value to be verified.
345
+ * Enters text into the source URL input field on the audio player page.
346
+ * @param {string} text - The text to be entered into the source URL input field.
181
347
  * @returns {void}
182
348
  */
183
- verifyTextInTitleInputField: (value) => {
184
- audioPlayerPage.titleInputField()
185
- .should('have.attr', 'value', value)
186
- },
187
-
188
- focusInDescriptionInputField: () => {
189
- audioPlayerPage.descriptionInputField()
190
- .click();
191
- },
192
-
193
- enterTextInDescriptionInputField: (text) => {
194
- audioPlayerPage.descriptionInputField()
349
+ enterTextInSourceURLInputField: (text) => {
350
+ audioPlayerPage.sourceUrlInputField()
195
351
  .type(text)
196
352
  .blur();
353
+ audioPlayerPage.steps.addWaitToPlayAudio(1000);
197
354
  },
198
355
 
199
- clearDescriptionInputField: () => {
200
- audioPlayerPage.descriptionInputField()
356
+ clearTextInSourceURLInputField: () => {
357
+ audioPlayerPage.sourceUrlInputField()
201
358
  .clear();
202
359
  },
203
360
 
204
- verifyImageAndAltTextInDescriptionInputField: () => {
205
- audioPlayerPage.descriptionInputField()
206
- .find('img')
207
- .should('have.attr', 'src', constants.foxImageLink)
208
- .and('have.attr', 'alt', constants.foxImageAltText);
209
- },
210
-
211
- verifyImageAndAltTextInDescriptionPreviewTab: () => {
212
- audioPlayerPage.descriptionPreviewTab()
213
- .find('img')
214
- .should('have.attr', 'src', constants.foxImageLink)
215
- .and('have.attr', 'alt', constants.foxImageAltText);
361
+ verifyCustomizePlayerLayoutSettingsAccordionCollapsedState: () => {
362
+ audioPlayerPage.customizePlayerLayoutSettingsAccordion()
363
+ .should('have.attr', 'aria-expanded', 'false');
216
364
  },
217
365
 
218
- verifyEquationInDescriptionInputField: () => {
219
- audioPlayerPage.descriptionInputField()
220
- .find('[data-widget="ngie_equation"]')
221
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
222
- .contains(constants.CKEditorInputFieldEnteredEquationText);
366
+ expandCustomizePlayerLayoutSettingsAccordion: () => {
367
+ audioPlayerPage.customizePlayerLayoutSettingsAccordion()
368
+ .click()
369
+ .should('have.attr', 'aria-expanded', 'true');
223
370
  },
224
371
 
225
- verifyEquationInDescriptionPreviewTab: () => {
226
- audioPlayerPage.descriptionPreviewTab()
227
- .find('[role="math"]')
228
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
229
- .contains(constants.CKEditorInputFieldEnteredEquationText);
372
+ collapseCustomizePlayerLayoutSettingsAccordion: () => {
373
+ audioPlayerPage.customizePlayerLayoutSettingsAccordion()
374
+ .click()
375
+ .should('have.attr', 'aria-expanded', 'false');
230
376
  },
231
377
 
232
- verifyLinkInDescriptionInputField: () => {
233
- audioPlayerPage.descriptionInputField()
234
- .find('a')
235
- .should('have.text', 'lorem')
236
- .and('have.attr', 'href', `${Cypress.config().baseUrl}`);
378
+ /**
379
+ * @description Verify player layout setting button is selected
380
+ * @param {string} buttonLabel
381
+ */
382
+ verifyPlayerLayoutSettingButtonIsSelected: (buttonLabel) => {
383
+ switch (buttonLabel) {
384
+ case 'Pause':
385
+ audioPlayerPage.customizePlayerLayoutPauseButton()
386
+ .should('have.attr', 'aria-pressed', 'true');
387
+ break;
388
+ case 'Seek':
389
+ audioPlayerPage.customizePlayerLayoutSeekButton()
390
+ .should('have.attr', 'aria-pressed', 'true');
391
+ break;
392
+ case 'Playback speed':
393
+ audioPlayerPage.customizePlayerLayoutPlaybackSpeedButton()
394
+ .should('have.attr', 'aria-pressed', 'true');
395
+ break;
396
+ case 'Add pin':
397
+ audioPlayerPage.customizePlayerLayoutAddPinButton()
398
+ .should('have.attr', 'aria-pressed', 'true');
399
+ break;
400
+ case 'Forward/ backward':
401
+ audioPlayerPage.customizePlayerLayoutForwardBackwardButton()
402
+ .should('have.attr', 'aria-pressed', 'true');
403
+ break;
404
+ case 'Volume':
405
+ audioPlayerPage.customizePlayerLayoutVolumeButton()
406
+ .should('have.attr', 'aria-pressed', 'true');
407
+ break;
408
+ case 'Timer':
409
+ audioPlayerPage.customizePlayerLayoutTimerButton()
410
+ .should('have.attr', 'aria-pressed', 'true');
411
+ break;
412
+ case 'Progress indicator':
413
+ audioPlayerPage.customizePlayerLayoutProgressIndicatorButton()
414
+ .should('have.attr', 'aria-pressed', 'true');
415
+ break;
416
+ default:
417
+ throw new Error('Invalid player layout setting button');
418
+ }
237
419
  },
238
420
 
239
- verifyLinkInDescriptionPreviewTab: () => {
240
- audioPlayerPage.descriptionPreviewTab()
241
- .find('a')
242
- .should('have.text', 'lorem')
243
- .and('have.attr', 'href', `${Cypress.config().baseUrl}`);
421
+ /**
422
+ * @description Verify player layout setting button is not selected
423
+ * @param {string} buttonLabel
424
+ */
425
+ verifyPlayerLayoutSettingButtonIsNotSelected: (buttonLabel) => {
426
+ switch (buttonLabel) {
427
+ case 'Pause':
428
+ audioPlayerPage.customizePlayerLayoutPauseButton()
429
+ .should('have.attr', 'aria-pressed', 'false');
430
+ break;
431
+ case 'Seek':
432
+ audioPlayerPage.customizePlayerLayoutSeekButton()
433
+ .should('have.attr', 'aria-pressed', 'false');
434
+ break;
435
+ case 'Playback speed':
436
+ audioPlayerPage.customizePlayerLayoutPlaybackSpeedButton()
437
+ .should('have.attr', 'aria-pressed', 'false');
438
+ break;
439
+ case 'Add pin':
440
+ audioPlayerPage.customizePlayerLayoutAddPinButton()
441
+ .should('have.attr', 'aria-pressed', 'false');
442
+ break;
443
+ case 'Forward/ backward':
444
+ audioPlayerPage.customizePlayerLayoutForwardBackwardButton()
445
+ .should('have.attr', 'aria-pressed', 'false');
446
+ break;
447
+ case 'Volume':
448
+ audioPlayerPage.customizePlayerLayoutVolumeButton()
449
+ .should('have.attr', 'aria-pressed', 'false');
450
+ break;
451
+ case 'Timer':
452
+ audioPlayerPage.customizePlayerLayoutTimerButton()
453
+ .should('have.attr', 'aria-pressed', 'false');
454
+ break;
455
+ case 'Progress indicator':
456
+ audioPlayerPage.customizePlayerLayoutProgressIndicatorButton()
457
+ .should('have.attr', 'aria-pressed', 'false');
458
+ break;
459
+ default:
460
+ throw new Error('Invalid player layout setting button');
461
+ }
244
462
  },
245
463
 
246
- verifyBoldTextInDescriptionInputField: () => {
247
- audioPlayerPage.descriptionInputField()
248
- .find('strong')
249
- .should('exist')
250
- .should('have.text', '​​​​​​​This is a bold text in description input field');
464
+ /**
465
+ * @description select a player layout setting button
466
+ * @param {string} buttonLabel
467
+ */
468
+ selectPlayerLayoutSettingButton: (buttonLabel) => {
469
+ switch (buttonLabel) {
470
+ case 'Pause':
471
+ audioPlayerPage.customizePlayerLayoutPauseButton()
472
+ .click()
473
+ .should('have.attr', 'aria-pressed', 'true');
474
+ break;
475
+ case 'Seek':
476
+ audioPlayerPage.customizePlayerLayoutSeekButton()
477
+ .click()
478
+ .should('have.attr', 'aria-pressed', 'true');
479
+ break;
480
+ case 'Playback speed':
481
+ audioPlayerPage.customizePlayerLayoutPlaybackSpeedButton()
482
+ .click()
483
+ .should('have.attr', 'aria-pressed', 'true');
484
+ break;
485
+ case 'Add pin':
486
+ audioPlayerPage.customizePlayerLayoutAddPinButton()
487
+ .click()
488
+ .should('have.attr', 'aria-pressed', 'true');
489
+ break;
490
+ case 'Forward/ backward':
491
+ audioPlayerPage.customizePlayerLayoutForwardBackwardButton()
492
+ .click()
493
+ .should('have.attr', 'aria-pressed', 'true');
494
+ break;
495
+ case 'Volume':
496
+ audioPlayerPage.customizePlayerLayoutVolumeButton()
497
+ .click()
498
+ .should('have.attr', 'aria-pressed', 'true');
499
+ break;
500
+ case 'Timer':
501
+ audioPlayerPage.customizePlayerLayoutTimerButton()
502
+ .click()
503
+ .should('have.attr', 'aria-pressed', 'true');
504
+ break;
505
+ case 'Progress indicator':
506
+ audioPlayerPage.customizePlayerLayoutProgressIndicatorButton()
507
+ .click()
508
+ .should('have.attr', 'aria-pressed', 'true');
509
+ break;
510
+ default:
511
+ throw new Error('Invalid player layout setting button');
512
+ }
251
513
  },
252
514
 
253
- verifyBoldTextInDescriptionPreviewTab: () => {
254
- audioPlayerPage.descriptionPreviewTab()
255
- .find('strong')
256
- .should('exist')
257
- .should('have.text', 'This is a bold text in description');
515
+ /**
516
+ * @description deselect a player layout setting button
517
+ * @param {string} buttonLabel
518
+ */
519
+ deselectPlayerLayoutSettingButton: (buttonLabel) => {
520
+ switch (buttonLabel) {
521
+ case 'Pause':
522
+ audioPlayerPage.customizePlayerLayoutPauseButton()
523
+ .click()
524
+ .should('have.attr', 'aria-pressed', 'false');
525
+ break;
526
+ case 'Seek':
527
+ audioPlayerPage.customizePlayerLayoutSeekButton()
528
+ .click()
529
+ .should('have.attr', 'aria-pressed', 'false');
530
+ break;
531
+ case 'Playback speed':
532
+ audioPlayerPage.customizePlayerLayoutPlaybackSpeedButton()
533
+ .click()
534
+ .should('have.attr', 'aria-pressed', 'false');
535
+ break;
536
+ case 'Add pin':
537
+ audioPlayerPage.customizePlayerLayoutAddPinButton()
538
+ .click()
539
+ .should('have.attr', 'aria-pressed', 'false');
540
+ break;
541
+ case 'Forward/ backward':
542
+ audioPlayerPage.customizePlayerLayoutForwardBackwardButton()
543
+ .click()
544
+ .should('have.attr', 'aria-pressed', 'false');
545
+ break;
546
+ case 'Volume':
547
+ audioPlayerPage.customizePlayerLayoutVolumeButton()
548
+ .click()
549
+ .should('have.attr', 'aria-pressed', 'false');
550
+ break;
551
+ case 'Timer':
552
+ audioPlayerPage.customizePlayerLayoutTimerButton()
553
+ .click()
554
+ .should('have.attr', 'aria-pressed', 'false');
555
+ break;
556
+ case 'Progress indicator':
557
+ audioPlayerPage.customizePlayerLayoutProgressIndicatorButton()
558
+ .click()
559
+ .should('have.attr', 'aria-pressed', 'false');
560
+ break;
561
+ default:
562
+ throw new Error('Invalid player layout setting button');
563
+ }
564
+ },
565
+
566
+ clickOnUncheckAllButton: () => {
567
+ audioPlayerPage.uncheckAllButton()
568
+ .click()
258
569
  },
259
570
 
260
- focusInTranscriptInputField: () => {
261
- audioPlayerPage.transcriptInputField()
571
+ deleteAudioFile: () => {
572
+ audioPlayerPage.deleteAudioFileButton()
262
573
  .click();
263
574
  },
264
575
 
265
- enterTextInTranscriptInputField: (text) => {
266
- audioPlayerPage.transcriptInputField()
267
- .type(text)
268
- .blur();
269
- },
270
-
271
- clearTranscriptInputField: () => {
272
- audioPlayerPage.transcriptInputField()
273
- .clear();
274
- },
275
-
276
- verifyImageAndAltTextInTranscriptInputField: () => {
277
- audioPlayerPage.transcriptInputField()
278
- .find('img')
279
- .should('have.attr', 'src', constants.foxImageLink)
280
- .and('have.attr', 'alt', constants.foxImageAltText);
281
- },
282
-
283
- verifyImageAndAltTextInTranscriptPreviewTab: () => {
284
- audioPlayerPage.transcriptContentPreviewTab()
285
- .find('img')
286
- .should('have.attr', 'src', constants.foxImageLink)
287
- .and('have.attr', 'alt', constants.foxImageAltText);
288
- },
289
-
290
- verifyEquationInTranscriptInputField: () => {
291
- audioPlayerPage.transcriptInputField()
292
- .find('[data-widget="ngie_equation"]')
293
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
294
- .contains(constants.CKEditorInputFieldEnteredEquationText);
295
- },
296
-
297
- verifyEquationInTranscriptPreviewTab: () => {
298
- audioPlayerPage.transcriptContentPreviewTab()
299
- .find('[role="math"]')
300
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
301
- .contains(constants.CKEditorInputFieldEnteredEquationText);
302
- },
303
-
304
- verifyLinkInTranscriptInputField: () => {
305
- audioPlayerPage.transcriptInputField()
306
- .find('a')
307
- .should('have.text', 'lorem')
308
- .and('have.attr', 'href', `${Cypress.config().baseUrl}`);
309
- },
310
-
311
- verifyLinkInTranscriptPreviewTab: () => {
312
- audioPlayerPage.transcriptContentPreviewTab()
313
- .find('a')
314
- .should('have.text', 'lorem')
315
- .and('have.attr', 'href', `${Cypress.config().baseUrl}`);
316
- },
317
-
318
- verifyBoldTextInTranscriptInputField: () => {
319
- audioPlayerPage.transcriptInputField()
320
- .find('strong')
321
- .should('exist')
322
- .should('have.text', '​​​​​​​This is a bold text in transcript input field');
323
- },
324
-
325
- verifyBoldTextInTranscriptPreviewTab: () => {
326
- audioPlayerPage.transcriptContentPreviewTab()
327
- .find('strong')
328
- .should('exist')
329
- .should('have.text', 'This is a bold text in transcript');
576
+ //Preview tab
577
+ waitForPlaybackToBegin: () => {
578
+ steps.waitForAudioFileSrcToLoad();
579
+ audioPlayerPage.playbackElapsedTime()
580
+ .should('have.text', '00:01');
330
581
  },
331
582
 
332
- verifyCustomizeUIControlAccordionChevronIcon: () => {
333
- audioPlayerPage.customizeUIControlAccordion()
334
- .within(() => {
335
- audioPlayerPage.accordionChevronIcon()
336
- .should('be.visible');
337
- });
583
+ waitForAudioFileSrcToLoad: () => {
584
+ audioPlayerPage.audioFileSrc()
585
+ .should('have.attr', 'src')
586
+ .and('not.be.empty');
338
587
  },
339
588
 
340
- verifyAdvancedPlayerAccordionChevronIcon: () => {
341
- audioPlayerPage.advancedPlayerSettingsAccordion()
342
- .within(() => {
343
- audioPlayerPage.accordionChevronIcon()
344
- .should('be.visible');
345
- });
346
- },
347
589
 
348
- verifyCustomizeUIControlAccordionCollapsedState: () => {
349
- audioPlayerPage.customizeUIControlAccordion()
350
- .should('have.attr', 'aria-expanded', 'false');
590
+ /**
591
+ * Verifies the audio playback timer on the audio player.
592
+ * @param {string} elapsedTime - The elapsed time
593
+ * @param {string} totalTime - The total time
594
+ * @returns {void}
595
+ */
596
+ verifyAudioPlaybackTimer: (elapsedTime, totalTime) => {
597
+ audioPlayerPage.playbackElapsedTime()
598
+ .should('have.text', elapsedTime)
599
+ audioPlayerPage.playbackTotalTime()
600
+ .should('have.text', totalTime)
351
601
  },
352
602
 
353
- verifyCustomizeUIControlAccordionExpandedState: () => {
354
- audioPlayerPage.customizeUIControlAccordion()
355
- .should('have.attr', 'aria-expanded', 'true');
603
+ /**
604
+ * Adds a wait to pause test execution for a specified amount of time.
605
+ * @param {number} time - The time, in milliseconds, to pause test execution.
606
+ * @returns {void}
607
+ */
608
+ addWaitToPlayAudio: (time) => {
609
+ cy.wait(time)
356
610
  },
357
611
 
358
- clickOnCustomizeUIControlAccordion: () => {
359
- audioPlayerPage.customizeUIControlAccordion()
612
+ clickOnTranscriptButton: () => {
613
+ audioPlayerPage.transcriptButton()
360
614
  .click();
361
615
  },
362
616
 
363
- verifyAdvancedPlayerSettingsAccordionCollapsedState: () => {
364
- audioPlayerPage.advancedPlayerSettingsAccordion()
365
- .should('have.attr', 'aria-expanded', 'false');
366
- },
367
-
368
- verifyAdvancedPlayerSettingsAccordionExpandedState: () => {
369
- audioPlayerPage.advancedPlayerSettingsAccordion()
370
- .should('have.attr', 'aria-expanded', 'true');
371
- },
372
617
 
373
- clickOnAdvancedPlayerSettingsAccordion: () => {
374
- audioPlayerPage.advancedPlayerSettingsAccordion()
618
+ clickOnBackwardButton: () => {
619
+ audioPlayerPage.backwardButton()
375
620
  .click();
376
621
  },
377
622
 
378
- verifyCustomizeControlPlayButtonSelectedState: () => {
379
- audioPlayerPage.customizeControlPlayButton()
380
- .should('have.class', 'ngie-toggle-button-selected')
381
- .within(() => {
382
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
383
- });
384
- },
385
-
386
- verifyCustomizeControlPauseButtonSelectedState: () => {
387
- audioPlayerPage.customizeControlPauseButton()
388
- .should('have.class', 'ngie-toggle-button-selected')
389
- .within(() => {
390
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
391
- });
623
+ clickOnForwardButton: () => {
624
+ audioPlayerPage.forwardButton()
625
+ .click();
392
626
  },
393
627
 
394
- verifyCustomizeControlSeekButtonSelectedState: () => {
395
- audioPlayerPage.customizeControlSeekButton()
396
- .should('have.class', 'ngie-toggle-button-selected')
397
- .within(() => {
398
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
399
- });
628
+ clickOnPlayButton: () => {
629
+ utilities.verifyElementVisibilityState(audioPlayerPage.playButton(), 'visible'); //Added to counter error occurrence when switching to preview tab and clinking on play button
630
+ audioPlayerPage.playButton()
631
+ .click();
400
632
  },
401
633
 
402
- verifyCustomizeControlPlayButtonDeselectedState: () => {
403
- audioPlayerPage.customizeControlPlayButton()
404
- .should('have.class', 'ngie-toggle-button-not-selected')
405
- .within(() => {
406
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
407
- });
634
+ clickOnStopButton: () => {
635
+ audioPlayerPage.stopButton()
636
+ .click();
408
637
  },
409
638
 
410
- verifyCustomizeControlPauseButtonDeselectedState: () => {
411
- audioPlayerPage.customizeControlPauseButton()
412
- .should('have.class', 'ngie-toggle-button-not-selected')
413
- .within(() => {
414
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
415
- });
639
+ verifyAllowStudentsToDownloadAudioCheckboxNotChecked: () => {
640
+ audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
641
+ .should('not.be.checked');
416
642
  },
417
643
 
418
- verifyCustomizeControlSeekButtonDeselectedState: () => {
419
- audioPlayerPage.customizeControlSeekButton()
420
- .should('have.class', 'ngie-toggle-button-not-selected')
421
- .within(() => {
422
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
423
- });
644
+ checkAllowStudentsToDownloadAudioCheckbox: () => {
645
+ audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
646
+ .click()
647
+ .should('be.checked');
424
648
  },
425
649
 
426
- clickOnCustomizeControlPlayButton: () => {
427
- audioPlayerPage.customizeControlPlayButton()
428
- .click();
650
+ uncheckAllowStudentsToDownloadAudioCheckbox: () => {
651
+ audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
652
+ .click()
653
+ .should('not.be.checked');
429
654
  },
430
655
 
431
- clickOnCustomizeControlPauseButton: () => {
432
- audioPlayerPage.customizeControlPauseButton()
433
- .click();
656
+ verifyLimitPlayAttemptsCheckboxNotChecked: () => {
657
+ audioPlayerPage.limitPlayAttemptsCheckbox()
658
+ .should('not.be.checked');
434
659
  },
435
660
 
436
- clickOnCustomizeControlSeekButton: () => {
437
- audioPlayerPage.customizeControlSeekButton()
438
- .click();
661
+ checkLimitPlayAttemptsCheckboxCheckbox: () => {
662
+ audioPlayerPage.limitPlayAttemptsCheckbox()
663
+ .click()
664
+ .should('be.checked');
439
665
  },
440
666
 
441
- verifyAdvancedPlayerTimerButtonSelectedState: () => {
442
- audioPlayerPage.advancedPlayerTimerButton()
443
- .should('have.class', 'ngie-toggle-button-selected')
444
- .within(() => {
445
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
446
- });
667
+ uncheckLimitPlayAttemptsCheckbox: () => {
668
+ audioPlayerPage.limitPlayAttemptsCheckbox()
669
+ .click()
670
+ .should('not.be.checked');
447
671
  },
448
672
 
449
- verifyAdvancedPlayerProgressBarButtonSelectedState: () => {
450
- audioPlayerPage.advancedPlayerProgressBarButton()
451
- .should('have.class', 'ngie-toggle-button-selected')
452
- .within(() => {
453
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
454
- });
673
+ /**
674
+ * Sets the playback limit value in the audio player's input field.
675
+ * @param {string|number} value - The value to set as the playback limit.
676
+ * @returns {void}
677
+ */
678
+ setPlaybackLimit: (value) => {
679
+ audioPlayerPage.playAttemptsLimitInputField()
680
+ .clear()
681
+ .type(value)
455
682
  },
456
683
 
457
- verifyAdvancedPlayerVolumeControlButtonSelectedState: () => {
458
- audioPlayerPage.advancedPlayerVolumeControlButton()
459
- .should('have.class', 'ngie-toggle-button-selected')
460
- .within(() => {
461
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'visible');
462
- });
684
+ /**
685
+ * Verify the playback limit help text in preview tab
686
+ * @param {string|number} value - The value to set as the playback limit.
687
+ * @returns {void}
688
+ */
689
+ verifyPlaybackLimitHelpTextPreviewTab: (value) => {
690
+ utilities.verifyInnerText(audioPlayerPage.playbackLimitHelpText(), `You have ${value} plays remaining.`);
691
+ utilities.verifyElementVisibilityState(audioPlayerPage.playbackLimitHelpText(), 'visible');
463
692
  },
464
693
 
465
- verifyAdvancedPlayerTimerButtonDeselectedState: () => {
466
- audioPlayerPage.advancedPlayerTimerButton()
467
- .should('have.class', 'ngie-toggle-button-not-selected')
468
- .within(() => {
469
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
470
- });
694
+ /**
695
+ * Verifies that the playback limit input field in the audio player has the expected value.
696
+ * @param {string|number} value - The expected value to be verified.
697
+ * @returns {void}
698
+ */
699
+ verifyPlaybackLimitInputFieldValue: (value) => {
700
+ audioPlayerPage.playAttemptsLimitInputField()
701
+ .should('have.attr', 'value', value);
471
702
  },
472
703
 
473
- verifyAdvancedPlayerProgressBarButtonDeselectedState: () => {
474
- audioPlayerPage.advancedPlayerProgressBarButton()
475
- .should('have.class', 'ngie-toggle-button-not-selected')
476
- .within(() => {
477
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
478
- });
704
+ focusInAndFocusOutOfPlayAttemptsLimitInputField: () => {
705
+ audioPlayerPage.playAttemptsLimitInputField()
706
+ .click()
707
+ .blur();
479
708
  },
480
709
 
481
- verifyAdvancedPlayerVolumeControlButtonDeselectedState: () => {
482
- audioPlayerPage.advancedPlayerVolumeControlButton()
483
- .should('have.class', 'ngie-toggle-button-not-selected')
484
- .within(() => {
485
- utilities.verifyElementVisibilityState(audioPlayerPage.selectedButtonIcon(), 'hidden');
710
+ verifyWindowOpenMethodAfterClickingOnDownloadAudioButton: () => {
711
+ cy.window()
712
+ .then((win) => {
713
+ cy.stub(win, 'open')
714
+ .as('windowOpen')
486
715
  });
716
+ audioPlayerPage.audioDownloadButton()
717
+ .click();
718
+ cy.get('@windowOpen')
719
+ .should('be.calledWith', '');
487
720
  },
488
721
 
489
- clickOnAdvancedPlayerTimerButton: () => {
490
- audioPlayerPage.advancedPlayerTimerButton()
722
+ clickOnAddPinButton: () => {
723
+ audioPlayerPage.addPinButton()
491
724
  .click();
492
725
  },
493
726
 
494
- clickOnAdvancedPlayerProgressBarButton: () => {
495
- audioPlayerPage.advancedPlayerProgressBarButton()
727
+ clickOnPinsPanelAddPinButton: () => {
728
+ audioPlayerPage.pinsPanelAddPinButton()
496
729
  .click();
497
730
  },
498
731
 
499
- clickOnAdvancedPlayerVolumeControlButton: () => {
500
- audioPlayerPage.advancedPlayerVolumeControlButton()
501
- .click();
732
+ /**
733
+ * Add input to time input field in pins panel
734
+ * @param {string} time - The timestamp at which the pin is to be added in the format "minutes/seconds."
735
+ * @example addInputToTimeInputFieldInPinsPanel('00:15')
736
+ * @returns {void}
737
+ */
738
+ addInputToTimeInputFieldInPinsPanel: (time) => {
739
+ const minutesTime = time.split(':')[0];
740
+ const secondsTime = time.split(':')[1];
741
+ for (let i = 0; i < minutesTime.length; i++) {
742
+ let character = minutesTime.charAt(i);
743
+ audioPlayerPage.pinsPanelTimeInputFieldMinutes()
744
+ .click()
745
+ .type(`${character}`);
746
+ }
747
+ for (let i = 0; i < secondsTime.length; i++) {
748
+ let character = secondsTime.charAt(i);
749
+ audioPlayerPage.pinsPanelTimeInputFieldSeconds()
750
+ .click()
751
+ .type(`${character}`);
752
+ }
502
753
  },
503
754
 
504
- verifyAllowStudentsToDownloadAudioCheckboxNotChecked: () => {
505
- audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
506
- .should('not.be.checked');
755
+ /**
756
+ * @description Verify maximum and minimum value of minutes in time input field
757
+ * @param {number} maxValue maximum value of minutes input field
758
+ * @param {number} minValue minimum value of minutes input field
759
+ */
760
+ verifyMaximumAndMinimumValueOfMinutesTimeInputField: (minValue, maxValue) => {
761
+ audioPlayerPage.pinsPanelTimeInputFieldMinutes()
762
+ .should('have.attr', 'min', minValue);
763
+ audioPlayerPage.pinsPanelTimeInputFieldMinutes()
764
+ .should('have.attr', 'max', maxValue);
507
765
  },
508
766
 
509
- verifyAllowStudentsToDownloadAudioCheckboxChecked: () => {
510
- audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
511
- .should('be.checked');
767
+ /**
768
+ * @description Verify maximum and minimum value of seconds in time input field
769
+ * @param {number} maxValue maximum value of minutes seconds field
770
+ * @param {number} minValue minimum value of minutes seconds field
771
+ */
772
+ verifyMaximumAndMinimumValueOfSecondsTimeInputField: (minValue, maxValue) => {
773
+ audioPlayerPage.pinsPanelTimeInputFieldSeconds()
774
+ .should('have.attr', 'min', minValue);
775
+ audioPlayerPage.pinsPanelTimeInputFieldSeconds()
776
+ .should('have.attr', 'max', maxValue);
512
777
  },
513
778
 
514
- checkUncheckAllowStudentsToDownloadAudioCheckbox: () => {
515
- audioPlayerPage.allowStudentsToDownloadAudioCheckbox()
779
+ clickOnAddPinSectionSaveButton: () => {
780
+ audioPlayerPage.addPinSectionSaveButton()
516
781
  .click();
517
782
  },
518
783
 
519
- //Preview tab
520
- waitForPlaybackToBegin: () => {
521
- steps.waitForAudioFileSrcToLoad();
522
- audioPlayerPage.playbackElapsedTime()
523
- .should('have.text', '00:01');
784
+ clickOnAddPinSectionCancelButton: () => {
785
+ audioPlayerPage.addPinSectionCancelButton()
786
+ .click();
524
787
  },
525
788
 
526
789
  /**
527
- * Verifies the audio playback timer on the audio player.
528
- * @param {string} time - The elapsed time and total time in the format "elapsed/total."
529
- * @returns {void}
790
+ * @description Verify added pin time stamp and delete button
791
+ * @param {number} pinIndex index of pin
792
+ * @param {string} pinTimeStamp time of the added time
793
+ * @example verifyAddedPinTimeStampAndDeleteButton(1, '00:30')
530
794
  */
531
- verifyAudioPlaybackTimer: (time) => {
532
- const elapsedTime = time.split('/')[0];
533
- const totalTime = time.split('/')[1];
534
- audioPlayerPage.playbackElapsedTime()
535
- .should('have.text', elapsedTime)
536
- audioPlayerPage.playbackTotalTime()
537
- .should('have.text', `/${totalTime}`)
795
+ verifyAddedPinTimeStampAndDeleteButton: (pinIndex, pinTimeStamp) => {
796
+ audioPlayerPage.pinsPanelAddedPinWrapper()
797
+ .eq(pinIndex)
798
+ .within(() => {
799
+ utilities.verifyInnerText(audioPlayerPage.pinsPanelAddedPinTimeStamp(), pinTimeStamp);
800
+ utilities.verifyElementVisibilityState(audioPlayerPage.pinsPanelAddedPinDeleteButton(), 'visible');
801
+ });
538
802
  },
539
803
 
540
804
  /**
541
- * Adds a wait to pause test execution for a specified amount of time.
542
- * @param {number} time - The time, in milliseconds, to pause test execution.
543
- * @returns {void}
805
+ * @description Verify progress bar pin
806
+ * @param {number} pinIndex index of pin
807
+ * @param {string} pinTimeStamp time of the added time
808
+ * @example verifyAddedPinTimeStampAndDeleteButton(1, '00:30')
544
809
  */
545
- addWaitToPlayAudio: (time) => {
546
- cy.wait(time)
810
+ verifyProgressBarPin: (pinIndex, pinTimeStamp) => {
811
+ audioPlayerPage.progressBarPin()
812
+ .eq(pinIndex)
813
+ .should('be.visible')
814
+ .and('have.attr', 'aria-label', `${pinTimeStamp} pin`);
547
815
  },
548
816
 
549
- clickOnTranscriptButton: () => {
550
- audioPlayerPage.transcriptButton()
817
+ clickOnProgressBarPin: (pinTimeStamp) => {
818
+ audioPlayerPage.progressBarPin(pinTimeStamp)
551
819
  .click();
552
820
  },
553
821
 
554
- closeTranscriptModal: () => {
555
- audioPlayerPage.transcriptModalCloseButton()
822
+ clickOnAddedPinDeleteButton: (pinIndex) => {
823
+ audioPlayerPage.pinsPanelAddedPinDeleteButton()
824
+ .eq(pinIndex)
556
825
  .click();
557
826
  },
558
827
 
559
- focusAwayFromElement: () => {
560
- cy.get('body')
561
- .click({ position: 'topLeft' });
828
+ clickOnPinsPanelCloseButton: () => {
829
+ audioPlayerPage.pinsPanelCloseButton()
830
+ .click();
562
831
  },
563
832
 
564
- verifyWindowOpenMethodAfterClickingOnDownloadAudioButton: () => {
565
- cy.window()
566
- .then((win) => {
567
- cy.stub(win, 'open')
568
- .as('windowOpen')
569
- });
570
- audioPlayerPage.audioDownloadButton()
571
- .click();
572
- cy.get('@windowOpen')
573
- .should('be.calledWith', '');
833
+ verifyPinsPanelAddPinButtonActiveState: () => {
834
+ audioPlayerPage.pinsPanelAddPinButton()
835
+ .should('have.class', 'add-pin-button-active');
574
836
  },
575
837
 
576
- waitForAudioFileSrcToLoad: () => {
577
- audioPlayerPage.audioFileSrc()
578
- .should('have.attr', 'src')
579
- .and('not.be.empty');
838
+ verifyUnmutedVolumeIconIsDisplayedInPreviewTab: () => {
839
+ utilities.verifyElementVisibilityState(audioPlayerPage.unmutedVolumeIcon(), 'visible');
580
840
  }
581
841
  }
582
842
 
583
843
  const tests = {
584
- ...createQuestionBasePage.tests,
585
844
  ...commonComponents.tests,
586
- //Header section
587
- verifyCancelButton: () => {
588
- it('When user has made no edits and clicks on Cancel button, the user should be directed back to the \'Select a Question\' page', () => {
589
- createQuestionBasePage.cancelButton()
590
- .click();
591
- utilities.verifyElementVisibilityState(selectQuestionResourceToolPage.selectAQuestionHeaderText(), 'visible');
592
- utilities.verifyElementVisibilityState(selectQuestionResourceToolPage.questionTypeOptionTitle(), 'visible');
593
- });
594
-
595
- it('When user has made some edits/changes and clicks on Cancel button, a popup should be displayed', () => {
596
- selectQuestionResourceToolPage.steps.selectResourceType('Audio Player');
597
- audioPlayerPage.steps.setPlaybackLimit('5');
598
- createQuestionBasePage.cancelButton()
599
- .click();
600
- utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible')
601
- });
602
-
603
- dialogBoxBase.tests.verifyContentsOfLeavePagePopupWithCSSAnda11y();
604
-
605
- it(`Clicking on \'No, I'd like to go back\' button should close the popup and user should remain on the edit interface of the question`, () => {
606
- dialogBoxBase.buttonReject()
607
- .click();
608
- createQuestionBasePage.editTab()
609
- .should('have.attr', 'aria-selected', 'true')
610
- audioPlayerPage.steps.verifyPlaybackLimitInputFieldValue('5');
611
- });
612
-
613
- it(`Clicking on \'Yes, I want to leave this page\' button should discard all changes and direct the user to the \'Select a question\' page.`, () => {
614
- createQuestionBasePage.cancelButton()
615
- .click();
616
- dialogBoxBase.buttonAccept()
617
- .click();
618
- utilities.verifyElementVisibilityState(selectQuestionResourceToolPage.selectAQuestionHeaderText(), 'visible');
619
- utilities.verifyElementVisibilityState(selectQuestionResourceToolPage.questionTypeOptionTitle(), 'visible');
620
- });
621
- },
845
+ ...playbackControlsBaseComponent.tests,
622
846
  }
623
847
 
624
848
  export const audioPlayerPage = {