itemengine-cypress-automation 1.0.189-e2e-execution-crash-fbb0d92.0 → 1.0.189
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +79 -0
- package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +647 -0
- package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +429 -0
- package/cypress/e2e/ILC/AudioPlayerNew/customizePlayerLayoutSettings.js +596 -0
- package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +162 -0
- package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +792 -0
- package/cypress/e2e/ILC/AudioPlayerNew/studentViewSettings.js +253 -0
- package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +313 -0
- package/cypress/e2e/ILC/AudioResponseNew/additionalSettingsBasic.js +1 -22
- package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.smoke.js +1 -1
- package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +1 -1
- package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +1 -1
- package/cypress/e2e/ILC/AudioResponseNew/studentViewSettings.js +2 -11
- package/cypress/e2e/ILC/ChartsBar/previewContentsForAllViews.smoke.js +359 -0
- package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +1 -1
- package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +6 -8
- package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +417 -28
- package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +1 -1
- package/cypress/e2e/ILC/FeedbackScaleNew/headerSection.js +29 -1
- package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +2 -2
- package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsDropdownNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/editTabScoring.js +1 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +2 -2
- package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -4
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +5 -5
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -4
- package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +1 -0
- package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
- package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +2 -2
- package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +2 -2
- package/cypress/e2e/ILC/Graphing/addBackgroundShapesSection.js +2 -2
- package/cypress/e2e/ILC/Graphing/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +3 -2
- package/cypress/e2e/ILC/GridFill/gridLayoutContents.js +11 -3
- package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +3 -3
- package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +2 -2
- package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountAllOrNothingCorrectPointsGreaterThanAlternativePoints.js +143 -0
- package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +132 -0
- package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +143 -0
- package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountPartialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +144 -0
- package/cypress/e2e/ILC/GridFill/scoring/cellShadeCountallOrNothingCorrectPointsEqualToAlternativePoints.js +143 -0
- package/cypress/e2e/ILC/GridFill/scoring/cellshadeCountAllOrNothingAlternativePointsGreaterThanCorrectPoints.js +131 -0
- package/cypress/e2e/ILC/GridFill/scoring/matchExactAndCellShadeCountCombinedScoring.js +87 -0
- package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsCellShadeCountBasics.js +446 -0
- package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +1 -1
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +194 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +195 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +274 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/allOrNothingPenaltyScoring.js +48 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/manuallyAndNonScored.js +144 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +252 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsBasic.js +102 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +256 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +253 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +308 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +225 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsBasic.js +151 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +196 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +227 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/additionalSettings.js +91 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +230 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/checkAnswerFunctionalityForAllViews.smoke.js +124 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/editTabBasicSection.js +221 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/editTabScoring.js +203 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/manuallyAndNonScoredEditTab.js +71 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/minimumScoringPenaltyPointsAndRoundingDropdown.js +197 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +201 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +115 -0
- package/cypress/e2e/ILC/ListOrderingDropdown/studentViewSettings.js +183 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +216 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +214 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +273 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingPenaltyScoring.js +52 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/manuallyAndNonScored.js +128 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +279 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsBasic.js +109 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +278 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +278 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +335 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +250 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsBasic.js +161 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +216 -0
- package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +252 -0
- package/cypress/e2e/ILC/ListOrderingNew/additionalSettings.js +118 -0
- package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +243 -0
- package/cypress/e2e/ILC/ListOrderingNew/checkAnswerFunctionalityForAllViews.smoke.js +128 -0
- package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +155 -0
- package/cypress/e2e/ILC/ListOrderingNew/editTabScoring.js +195 -0
- package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +78 -0
- package/cypress/e2e/ILC/ListOrderingNew/manuallyAndNonScoredEditTab.js +69 -0
- package/cypress/e2e/ILC/ListOrderingNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +194 -0
- package/cypress/e2e/ILC/ListOrderingNew/previewContentsForAllViews.smoke.js +176 -0
- package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +112 -0
- package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +244 -0
- package/cypress/e2e/ILC/Matching/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/MultipleSelection/allOrNothingWithAlternativeAnswer.js +1 -0
- package/cypress/e2e/ILC/MultipleSelectionGridNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/NumberLine/LayoutSection.js +209 -0
- package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +4 -4
- package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +1 -1
- package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +1 -1
- package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +58 -2
- package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +1 -1
- package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +1 -1
- package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +2 -2
- package/cypress/e2e/ILC/NumberLine/headerSection.js +1 -1
- package/cypress/e2e/ILC/NumberLine/lineSettingsSection.js +33 -0
- package/cypress/e2e/ILC/NumberLine/numberLineSection.js +50 -0
- package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +2 -2
- package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +1 -1
- package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +2 -2
- package/cypress/e2e/ILC/NumberLine/toolSettings.js +2 -1
- package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +1 -1
- package/cypress/e2e/ILC/NumberLine/verticalNumberLine/allOrNothingScoringForAllViews.smoke.js +696 -0
- package/cypress/e2e/ILC/NumberLine/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +173 -0
- package/cypress/e2e/ILC/NumberLine/verticalNumberLine/layoutSection.js +211 -0
- package/cypress/e2e/ILC/NumberLine/verticalNumberLine/numberLineSection.js +75 -0
- package/cypress/e2e/ILC/NumberLine/verticalNumberLine/previewTabContentsForAllViews.smoke.js +204 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +229 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +229 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +229 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/manualAndNonScoredScoring.js +169 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +274 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsBasic.js +433 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +274 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +274 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +249 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsBasic.js +135 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +210 -0
- package/cypress/e2e/ILC/NumberLineLabel/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +248 -0
- package/cypress/e2e/ILC/NumberLineLabel/additionalSettingsBasic.js +115 -0
- package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +288 -0
- package/cypress/e2e/ILC/NumberLineLabel/checkAnswerFunctionalityForAllViews.smoke.js +153 -0
- package/cypress/e2e/ILC/NumberLineLabel/editTabBasicSection.js +326 -0
- package/cypress/e2e/ILC/NumberLineLabel/editTabScoring.js +234 -0
- package/cypress/e2e/ILC/NumberLineLabel/gradingViewAndCorrectAnswerView.smoke.js +164 -0
- package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +80 -0
- package/cypress/e2e/ILC/NumberLineLabel/layoutSection.js +204 -0
- package/cypress/e2e/ILC/NumberLineLabel/manuallyAndNonScoredEditTab.js +79 -0
- package/cypress/e2e/ILC/NumberLineLabel/minimumScoringPenaltyPointsAndRoundingDropdown.js +85 -0
- package/cypress/e2e/ILC/NumberLineLabel/numberLineSection.js +51 -0
- package/cypress/e2e/ILC/NumberLineLabel/previewContentsForAllViews.smoke.js +120 -0
- package/cypress/e2e/ILC/NumberLineLabel/specifyCorrectAnswerSection.js +74 -0
- package/cypress/e2e/ILC/NumberLineLabel/studentViewSettings.js +183 -0
- package/cypress/e2e/ILC/NumberLineLabel/toolSettings.js +76 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/allOrNothingForAllViews.smoke.js +292 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/checkAnswerFunctionalityForAllViews.smoke.js +155 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +166 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/layoutSection.js +360 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/numberLineSection.js +80 -0
- package/cypress/e2e/ILC/NumberLineLabel/verticalNumberLine/previewContentsForAllViews.smoke.js +111 -0
- package/cypress/e2e/ILC/Protractor/protractorPreviewContents.smoke.js +1 -1
- package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +49 -1
- package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/SingleSelectionGridNew/studentViewSettings.js +1 -1
- package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +2 -2
- package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +0 -1
- package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +0 -1
- package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +0 -1
- package/cypress/e2e/ILC/TextSelection/Scoring/basicScoringForAllTextSelectionTypes.smoke.js +0 -1
- package/cypress/e2e/ILC/TextSelection/additionalSettings.js +125 -0
- package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +0 -1
- package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +2 -2
- package/cypress/e2e/ILC/TextSelection/editTabScoringSection.js +5 -4
- package/cypress/e2e/ILC/TextSelection/headerSection.js +73 -0
- package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +6 -7
- package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +179 -0
- package/cypress/e2e/ILC/TextSelection/specifyCorrectAnswerSection.js +89 -0
- package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +436 -0
- package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordion.js +277 -0
- package/cypress/e2e/ILC/TextSelection/textSelectionModesInPreviewTab.js +222 -0
- package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyCorrectAnswerSection.js +260 -0
- package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +380 -0
- package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +5 -5
- package/cypress/e2e/ILC/ToolSettings/toolSettingsPreviewContents.smoke.js +3 -3
- package/cypress/e2e/ILC/VideoResponseNew/additionalSettingsBasic.js +77 -0
- package/cypress/e2e/ILC/VideoResponseNew/customizePlaybackControls.js +313 -0
- package/cypress/e2e/ILC/VideoResponseNew/editAndPreviewTabScoringSection.js +99 -0
- package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +171 -0
- package/cypress/e2e/ILC/VideoResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +179 -0
- package/cypress/e2e/ILC/VideoResponseNew/headerSection.js +79 -0
- package/cypress/e2e/ILC/VideoResponseNew/previewContentsForAllViews.smoke.js +201 -0
- package/cypress/e2e/ILC/VideoResponseNew/standardRecorderStyle.js +567 -0
- package/cypress/e2e/ILC/VideoResponseNew/studentViewSettings.js +194 -0
- package/cypress/fixtures/constants.js +1 -1
- package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +1 -1
- package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +20 -20
- package/cypress/fixtures/theme/ilc.json +22 -18
- package/cypress/pages/audioPlayerPage.js +668 -446
- package/cypress/pages/audioResponsePage.js +8 -80
- package/cypress/pages/brainingCampManipulativePage.js +1 -1
- package/cypress/pages/chartsBarPage.js +231 -0
- package/cypress/pages/chartsDotPlotPage.js +8 -0
- package/cypress/pages/chartsLinePage.js +42 -0
- package/cypress/pages/components/allowTeachersToDownloadStudentResponseComponent.js +58 -0
- package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +13 -23
- package/cypress/pages/components/autoScoredStudentViewSettings.js +6 -6
- package/cypress/pages/components/barAndLineChartComponent.js +120 -0
- package/cypress/pages/components/chartsCommonComponent.js +105 -0
- package/cypress/pages/components/commonComponents.js +1 -0
- package/cypress/pages/components/draggableOptionContainer.js +2 -1
- package/cypress/pages/components/equationEditorFlyout.js +3 -2
- package/cypress/pages/components/essayResponseCommonComponents.js +8 -2
- package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +1 -0
- package/cypress/pages/components/imageCanvasComponent.js +2 -1
- package/cypress/pages/components/index.js +7 -0
- package/cypress/pages/components/layoutSectionComponent.js +1156 -0
- package/cypress/pages/components/limitNumberOfRetakeComponent.js +90 -0
- package/cypress/pages/components/numberLineCommonComponent.js +685 -0
- package/cypress/pages/components/optionsWrapperComponent.js +13 -2
- package/cypress/pages/components/playbackControlsBaseComponent.js +20 -13
- package/cypress/pages/components/questionInstructionsComponent.js +3 -19
- package/cypress/pages/components/styleAndLayoutCustomizationAccordionComponent.js +46 -0
- package/cypress/pages/components/toolSettingsComponent.js +6 -0
- package/cypress/pages/contentBlocksPage.js +18 -2
- package/cypress/pages/createItemPage.js +75 -8
- package/cypress/pages/dialogBoxBase.js +2 -2
- package/cypress/pages/drawingResponsePage.js +24 -4
- package/cypress/pages/feedbackScalePage.js +3 -0
- package/cypress/pages/graphingPage.js +19 -1
- package/cypress/pages/gridFillPage.js +47 -59
- package/cypress/pages/index.js +5 -1
- package/cypress/pages/itemPreviewSettingsPage.js +4 -0
- package/cypress/pages/listOrderingPage.js +561 -555
- package/cypress/pages/matchingPage.js +1 -1
- package/cypress/pages/multipleSelectionPage.js +23 -1
- package/cypress/pages/numberLineLabelPage.js +1086 -0
- package/cypress/pages/numberLinePage.js +696 -78
- package/cypress/pages/rulerPage.js +6 -2
- package/cypress/pages/textSelectionPage.js +461 -23
- package/cypress/pages/videoResponsePage.js +393 -81
- package/package.json +1 -1
@@ -0,0 +1,567 @@
|
|
1
|
+
import { dialogBoxBase, videoResponsePage } from "../../../pages";
|
2
|
+
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
3
|
+
import utilities from "../../../support/helpers/utilities";
|
4
|
+
const css = Cypress.env('css');
|
5
|
+
|
6
|
+
describe('Create item page - Video response: Preview tab - Standard recorder style, recording a video, video playback, playback controls', () => {
|
7
|
+
before(() => {
|
8
|
+
cy.loginAs('admin');
|
9
|
+
});
|
10
|
+
|
11
|
+
//Note: Default preview of standard recorder style is covered in previewContentsForAllViews.smoke.js
|
12
|
+
describe('Video response: Recording a video', () => {
|
13
|
+
abortEarlySetup();
|
14
|
+
before(() => {
|
15
|
+
videoResponsePage.steps.navigateToCreateQuestion('video response');
|
16
|
+
cy.barsPreLoaderWait();
|
17
|
+
videoResponsePage.steps.addTextInQuestionInstructionsInputField('Record a video');
|
18
|
+
videoResponsePage.steps.allotPoints(10);
|
19
|
+
videoResponsePage.steps.switchToPreviewTab();
|
20
|
+
});
|
21
|
+
|
22
|
+
it('When the user clicks anywhere in the recording interface, then the recording should begin with a countdown and a status message: \'Preparing to record\', a disabled \'Pause\' button and an enabled \'Stop\' button should be displayed till the recording has not yet started and the recorder time should not change', () => {
|
23
|
+
videoResponsePage.steps.startRecording();
|
24
|
+
utilities.verifyElementVisibilityState(videoResponsePage.startRecordingCountDown(), 'visible');
|
25
|
+
videoResponsePage.steps.verifyRecordingStatus('Preparing to record');
|
26
|
+
utilities.verifyElementVisibilityState(videoResponsePage.pauseButton(), 'visible');
|
27
|
+
videoResponsePage.steps.verifyPauseButtonDisabledState();
|
28
|
+
utilities.verifyElementVisibilityState(videoResponsePage.stopButton(), 'visible');
|
29
|
+
utilities.verifyInnerText(videoResponsePage.recordingTimer(), '05:00');
|
30
|
+
});
|
31
|
+
|
32
|
+
it('When the recording starts, the countdown should disappear, status message should change to \'Recording...\', the \'Pause\' button should get enabled, user should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs/min:sec)\'. Pause recording and Stop recording should be displayed in record player. Resume recording button should not be displayed.', () => {
|
33
|
+
utilities.verifyElementVisibilityState(videoResponsePage.startRecordingCountDown(), 'notExist');
|
34
|
+
videoResponsePage.steps.verifyRecordingStatus('Recording...');
|
35
|
+
videoResponsePage.steps.verifyPauseButtonEnabledState();
|
36
|
+
videoResponsePage.steps.verifyRecordingTime('00:04', '05:00');
|
37
|
+
utilities.verifyElementVisibilityState(videoResponsePage.pauseButton(), 'visible');
|
38
|
+
utilities.verifyElementVisibilityState(videoResponsePage.stopButton(), 'visible');
|
39
|
+
utilities.verifyElementVisibilityState(videoResponsePage.resumeButton(), 'notExist');
|
40
|
+
});
|
41
|
+
|
42
|
+
it('When the user hovers over the \'Pause\' button, a tooltip \'Pause recording\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
43
|
+
videoResponsePage.pauseButton()
|
44
|
+
.verifyTooltip('Pause recording');
|
45
|
+
});
|
46
|
+
|
47
|
+
it('When the user hovers over the \'Stop\' button, a tooltip \'Stop recording\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
48
|
+
videoResponsePage.stopButton()
|
49
|
+
.verifyTooltip('Stop recording');
|
50
|
+
});
|
51
|
+
|
52
|
+
it('CSS of \'Preview\' section once recording starts', { tags: 'css' }, () => {
|
53
|
+
//TODO:Need to add hover state and active state CSS of record button once https://redmine.zeuslearning.com/issues/539906 gets resolved
|
54
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusText(), {
|
55
|
+
'color': css.color.defaultBackground,
|
56
|
+
'font-size': css.fontSize.normal,
|
57
|
+
'font-weight': css.fontWeight.regular,
|
58
|
+
});
|
59
|
+
utilities.verifyCSS(videoResponsePage.recordingTimer(), {
|
60
|
+
'color': css.color.defaultBackground,
|
61
|
+
'font-size': css.fontSize.small,
|
62
|
+
'font-weight': css.fontWeight.regular,
|
63
|
+
});
|
64
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusIcon().find('g'), {
|
65
|
+
'fill': css.color.recordingIcon,
|
66
|
+
'stroke': css.color.defaultBackground
|
67
|
+
});
|
68
|
+
utilities.verifyCSS(videoResponsePage.stopButton().find('rect').eq(0), {
|
69
|
+
'fill': css.color.secondaryBtnBg,
|
70
|
+
});
|
71
|
+
utilities.verifyCSS(videoResponsePage.stopButton().find('rect').eq(1), {
|
72
|
+
'fill': css.color.secondaryBtnActive,
|
73
|
+
});
|
74
|
+
utilities.verifyCSS(videoResponsePage.pauseButton().find('rect'), {
|
75
|
+
'fill': css.color.secondaryBtnBg,
|
76
|
+
});
|
77
|
+
utilities.verifyCSS(videoResponsePage.pauseButton().find('path'), {
|
78
|
+
'stroke': css.color.secondaryBtnActive,
|
79
|
+
});
|
80
|
+
videoResponsePage.steps.verifyTooltipCSS(videoResponsePage.pauseButton());
|
81
|
+
videoResponsePage.steps.verifyTooltipCSS(videoResponsePage.stopButton());
|
82
|
+
});
|
83
|
+
|
84
|
+
it('Accessibility of \'Preview\' section once recording starts', { tags: 'a11y' }, () => {
|
85
|
+
cy.checkAccessibility(videoResponsePage.videoRecorderWrapper());
|
86
|
+
videoResponsePage.steps.verifyTooltipAccessibility(videoResponsePage.pauseButton());
|
87
|
+
videoResponsePage.steps.verifyTooltipAccessibility(videoResponsePage.stopButton());
|
88
|
+
});
|
89
|
+
|
90
|
+
it('When a recording is in progress and the user clicks on the \'Pause recording\' button, recording should pause and the status message should update to \'Recording paused\'. User should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs/min:sec)\'. \'Pause recording\' button should get replaced with \'Resume recording\' button. \'Stop recording\' button should be displayed beside resume recording button', () => {
|
91
|
+
videoResponsePage.steps.resetQuestionPreview();
|
92
|
+
videoResponsePage.steps.startRecording();
|
93
|
+
videoResponsePage.steps.waitForRecordingToStart();
|
94
|
+
videoResponsePage.steps.addWaitToRecord(3000);
|
95
|
+
videoResponsePage.steps.pauseRecording();
|
96
|
+
videoResponsePage.steps.verifyRecordingTime('00:04', '05:00');
|
97
|
+
videoResponsePage.steps.verifyRecordingStatus('Recording paused');
|
98
|
+
utilities.verifyElementVisibilityState(videoResponsePage.pauseButton(), 'notExist');
|
99
|
+
utilities.verifyElementVisibilityState(videoResponsePage.resumeButton(), 'visible');
|
100
|
+
utilities.verifyElementVisibilityState(videoResponsePage.stopButton(), 'visible');
|
101
|
+
});
|
102
|
+
|
103
|
+
it('When the user hovers over the \'Resume\' button, a tooltip \'Resume recording\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
104
|
+
videoResponsePage.resumeButton()
|
105
|
+
.verifyTooltip('Resume recording');
|
106
|
+
});
|
107
|
+
|
108
|
+
it('CSS of \'Preview\' section if recording is paused', { tags: 'css' }, () => {
|
109
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusText(), {
|
110
|
+
'color': css.color.defaultBackground,
|
111
|
+
'font-size': css.fontSize.normal,
|
112
|
+
'font-weight': css.fontWeight.regular,
|
113
|
+
});
|
114
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusIcon().find('path'), {
|
115
|
+
'stroke': css.color.defaultBackground
|
116
|
+
});
|
117
|
+
utilities.verifyCSS(videoResponsePage.resumeButton().find('svg'), {
|
118
|
+
'fill': css.color.startRecordingIconFill,
|
119
|
+
});
|
120
|
+
utilities.verifyCSS(videoResponsePage.resumeButton().find('circle'), {
|
121
|
+
'fill': css.color.secondaryBtnBg,
|
122
|
+
});
|
123
|
+
utilities.verifyCSS(videoResponsePage.resumeButton().find('path'), {
|
124
|
+
'fill': css.color.startRecordingIconFill,
|
125
|
+
});
|
126
|
+
videoResponsePage.steps.verifyTooltipCSS(videoResponsePage.resumeButton());
|
127
|
+
});
|
128
|
+
|
129
|
+
it('Accessibility of \'Preview\' section if recording is paused', { tags: 'a11y' }, () => {
|
130
|
+
cy.checkAccessibility(videoResponsePage.videoRecorderWrapper());
|
131
|
+
videoResponsePage.steps.verifyTooltipAccessibility(videoResponsePage.resumeButton());
|
132
|
+
});
|
133
|
+
|
134
|
+
it('When the recorder is in paused state and the user clicks on the \'Resume recording\' button, recording should get resumed. the status message should update to "Recording...". User should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs/min:sec)\'. Pause recording and stop recording buttons should be displayed. Start recording button should not be displayed', () => {
|
135
|
+
videoResponsePage.steps.resumeRecording();
|
136
|
+
videoResponsePage.steps.verifyRecordingStatus('Recording...');
|
137
|
+
videoResponsePage.steps.verifyRecordingTime('00:05', '05:00');
|
138
|
+
utilities.verifyElementVisibilityState(videoResponsePage.pauseButton(), 'visible');
|
139
|
+
utilities.verifyElementVisibilityState(videoResponsePage.stopButton(), 'visible');
|
140
|
+
});
|
141
|
+
|
142
|
+
//Note: Failing due to video getting saved quickly and saving svg not being visible
|
143
|
+
it('When a recording is in progress and the user clicks on \'Stop recording\' button, a status message: \'Saving\' should be displayed, the recording should stop, the recorded video response should be saved and \'Your response has been recorded.\' status message should be displayed', () => {
|
144
|
+
videoResponsePage.steps.resetQuestionPreview();
|
145
|
+
videoResponsePage.steps.startRecording();
|
146
|
+
videoResponsePage.steps.waitForRecordingToStart();
|
147
|
+
videoResponsePage.steps.addWaitToRecord(10000);
|
148
|
+
videoResponsePage.steps.stopAndVerifySavingAndRecordingLength();
|
149
|
+
utilities.verifyInnerText(videoResponsePage.savedResponseText(), 'Your response has been recorded.');
|
150
|
+
utilities.verifyElementVisibilityState(videoResponsePage.savedResponseText(), 'visible');
|
151
|
+
});
|
152
|
+
|
153
|
+
it('When a recording is in progress and the user first pauses the recording and then stops recording, then the recording should stop, recorded video response should be saved. User should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs)\'.', () => {
|
154
|
+
videoResponsePage.steps.resetQuestionPreview();
|
155
|
+
videoResponsePage.steps.startRecording();
|
156
|
+
videoResponsePage.steps.waitForRecordingToStart();
|
157
|
+
videoResponsePage.steps.addWaitToRecord(2000);
|
158
|
+
videoResponsePage.steps.pauseRecording();
|
159
|
+
videoResponsePage.steps.stopAndVerifySavingAndRecordingLength();
|
160
|
+
});
|
161
|
+
|
162
|
+
it('CSS of \'Preview\' section if recording is saved', { tags: 'css' }, () => {
|
163
|
+
videoResponsePage.steps.resetQuestionPreview();
|
164
|
+
videoResponsePage.steps.recordAndSaveVideo(3000);
|
165
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusText(), {
|
166
|
+
'color': css.color.defaultBackground,
|
167
|
+
'font-size': css.fontSize.normal,
|
168
|
+
'font-weight': css.fontWeight.regular,
|
169
|
+
});
|
170
|
+
utilities.verifyCSS(videoResponsePage.recordingStatusIcon().find('g'), {
|
171
|
+
'color': css.color.defaultBackground,
|
172
|
+
});
|
173
|
+
utilities.verifyCSS(videoResponsePage.fullScreenButton().find('svg'), {
|
174
|
+
'fill': css.color.secondaryBtnBg,
|
175
|
+
});
|
176
|
+
});
|
177
|
+
|
178
|
+
it('Accessibility of \'Preview\' section if recording is saved', { tags: 'a11y' }, () => {
|
179
|
+
cy.checkAccessibility(videoResponsePage.playbackPlayButton().parents('.video-player-wrapper'));
|
180
|
+
});
|
181
|
+
|
182
|
+
it('When a recording is in progress and user has reached maximum recording duration, the recorded video response should be saved and \'Your response has been recorded.\' status message should be displayed. User should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs)\'.', () => {
|
183
|
+
videoResponsePage.steps.switchToEditTab();
|
184
|
+
videoResponsePage.steps.setMaximumRecordingDuration(5);
|
185
|
+
videoResponsePage.steps.switchToPreviewTab();
|
186
|
+
videoResponsePage.steps.startRecording();
|
187
|
+
videoResponsePage.steps.waitForRecordingToStart();
|
188
|
+
videoResponsePage.steps.addWaitToRecord(5000);
|
189
|
+
utilities.verifyInnerText(videoResponsePage.savedResponseText(), 'Your response has been recorded.');
|
190
|
+
videoResponsePage.steps.verifyVideoPlaybackTimer('00:00', '00:05');
|
191
|
+
});
|
192
|
+
|
193
|
+
it('When a recording is saved, A video player with \'Retake recording\' button, \'Play\' button and progress bar should be displayed. User should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs)\'. Volume control, Playback speed and full screen buttons should be displayed', () => {
|
194
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPlayButton(), 'visible');
|
195
|
+
utilities.verifyElementVisibilityState(videoResponsePage.retakeRecordingButton(), 'visible');
|
196
|
+
utilities.verifyElementVisibilityState(videoResponsePage.stopButton(), 'notExist');
|
197
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playerTimer(), 'visible');
|
198
|
+
utilities.verifyElementVisibilityState(videoResponsePage.progressBar(), 'visible');
|
199
|
+
utilities.verifyElementVisibilityState(videoResponsePage.volumeControlButton(), 'visible');
|
200
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackSpeedButton(), 'visible');
|
201
|
+
utilities.verifyElementVisibilityState(videoResponsePage.fullScreenButton(), 'visible');
|
202
|
+
});
|
203
|
+
|
204
|
+
//Cannot cover full screen functionality cases in cypress, added in manual sheet
|
205
|
+
it('When the user hovers over the full screen button, a tooltip \'Full screen\' should be displayed', () => {
|
206
|
+
videoResponsePage.fullScreenButton()
|
207
|
+
.verifyTooltip('Full screen');
|
208
|
+
});
|
209
|
+
});
|
210
|
+
|
211
|
+
describe('Video response playback: Play, pause and seek', () => {
|
212
|
+
let actualVideoSeekedInPercent = 50
|
213
|
+
abortEarlySetup();
|
214
|
+
before(() => {
|
215
|
+
videoResponsePage.steps.navigateToCreateQuestion('video response');
|
216
|
+
cy.barsPreLoaderWait();
|
217
|
+
videoResponsePage.steps.switchToPreviewTab();
|
218
|
+
videoResponsePage.steps.recordAndSaveVideo(10000);
|
219
|
+
});
|
220
|
+
it('When the user hovers over the \'Play\' button, a tooltip \'Play\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
221
|
+
videoResponsePage.playbackPlayButton()
|
222
|
+
.verifyTooltip('Play');
|
223
|
+
});
|
224
|
+
|
225
|
+
it('When the user clicks on \'Play\' button, then user should be able to playback the recording. Timer should display the amount of video that has been played and the total recording length in (mm:ss)/(mm:ss) format. \'Your response has been recorded\' message should be displayed below video player', () => {
|
226
|
+
videoResponsePage.steps.startPlayback();
|
227
|
+
videoResponsePage.steps.waitForPlaybackToBegin();
|
228
|
+
videoResponsePage.steps.verifyVideoPlaybackTimer('00:03', '00:10');
|
229
|
+
utilities.verifyInnerText(videoResponsePage.savedResponseText(), 'Your response has been recorded.');
|
230
|
+
});
|
231
|
+
|
232
|
+
it('When the user hovers over the \'Pause\' button, a tooltip \'Pause\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
233
|
+
videoResponsePage.playbackPauseButton()
|
234
|
+
.verifyTooltip('Pause');
|
235
|
+
});
|
236
|
+
|
237
|
+
it('CSS of \'Preview\' section if playback is initiated', { tags: 'css' }, () => {
|
238
|
+
utilities.verifyCSS(videoResponsePage.retakeRecordingButton().find('circle'), {
|
239
|
+
'fill': css.color.secondaryBtnBg,
|
240
|
+
});
|
241
|
+
utilities.verifyCSS(videoResponsePage.retakeRecordingButton().find('path'), {
|
242
|
+
'fill': css.color.startRecordingIconFill,
|
243
|
+
});
|
244
|
+
utilities.verifyCSS(videoResponsePage.playbackPauseButton().find('rect'), {
|
245
|
+
'fill': css.color.secondaryBtnBg,
|
246
|
+
});
|
247
|
+
utilities.verifyCSS(videoResponsePage.playbackPauseButton().find('path'), {
|
248
|
+
'stroke': css.color.secondaryBtnActive,
|
249
|
+
});
|
250
|
+
utilities.verifyCSS(videoResponsePage.playerTimer(), {
|
251
|
+
'color': css.color.whiteText,
|
252
|
+
'font-size': css.fontSize.small,
|
253
|
+
'font-weight': css.fontWeight.regular,
|
254
|
+
});
|
255
|
+
utilities.verifyCSS(videoResponsePage.progressBar().find('.MuiSlider-rail'), {
|
256
|
+
'background-color': css.color.defaultBackground,
|
257
|
+
});
|
258
|
+
utilities.verifyCSS(videoResponsePage.progressBar().find('.MuiSlider-track'), {
|
259
|
+
'background-color': css.color.videoProgressBarElapsedFill,
|
260
|
+
});
|
261
|
+
});
|
262
|
+
|
263
|
+
it('Accessibility of \'Preview\' section if playback is initiated', { tags: 'a11y' }, () => {
|
264
|
+
cy.checkAccessibility(videoResponsePage.playbackPauseButton().parents('.video-player-wrapper'));
|
265
|
+
});
|
266
|
+
|
267
|
+
it('When the video player is in playback state and the user clicks on \'Pause\' button, then playback should get paused. Progress bar and timer should not update further and the \'Pause\' button should get replaced with \'Play\' button', () => {
|
268
|
+
cy.log('Pre-step: resetting the recording and playing the newly recorded video')
|
269
|
+
videoResponsePage.steps.resetQuestionPreview()
|
270
|
+
videoResponsePage.steps.recordAndSaveVideo(20000);
|
271
|
+
videoResponsePage.steps.startPlayback();
|
272
|
+
videoResponsePage.steps.waitForPlaybackToBegin();
|
273
|
+
videoResponsePage.steps.addWaitToPlayVideo(10000);
|
274
|
+
videoResponsePage.steps.verifyVideoPlaybackTimer('00:11', '00:20');
|
275
|
+
videoResponsePage.steps.pauseAndVerifyProgressBarSliderPosition();
|
276
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPlayButton(), 'visible');
|
277
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPauseButton(), 'notExist');
|
278
|
+
});
|
279
|
+
|
280
|
+
it('CSS of \'Preview\' section if playback is paused', { tags: 'css' }, () => {
|
281
|
+
utilities.verifyCSS(videoResponsePage.playbackPlayButton().find('rect'), {
|
282
|
+
'fill': css.color.secondaryBtnBg,
|
283
|
+
});
|
284
|
+
utilities.verifyCSS(videoResponsePage.playbackPlayButton().find('path'), {
|
285
|
+
'stroke': css.color.secondaryBtnActive,
|
286
|
+
});
|
287
|
+
});
|
288
|
+
|
289
|
+
it('Accessibility of \'Preview\' section if if playback is paused', { tags: 'a11y' }, () => {
|
290
|
+
cy.checkAccessibility(videoResponsePage.playbackPlayButton().parents('.video-player-wrapper'));
|
291
|
+
});
|
292
|
+
|
293
|
+
it('When video player is in paused state and user clicks on \'Play\' button, then playback should get resumed and \'Play\' button should get replaced with \'Pause\' button.', () => {
|
294
|
+
videoResponsePage.steps.startPlayback();
|
295
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPlayButton(), 'notExist');
|
296
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPauseButton(), 'visible');
|
297
|
+
});
|
298
|
+
|
299
|
+
it('When the user seeks the progress bar slider while the video is playing, then the video should continue to play from the position where the slider is seeked', () => {
|
300
|
+
videoResponsePage.steps.seekProgressBarSliderToCenter();
|
301
|
+
videoResponsePage.steps.addWaitToPlayVideo(1000);
|
302
|
+
videoResponsePage.steps.verifyProgressBarSliderPosition(actualVideoSeekedInPercent);
|
303
|
+
});
|
304
|
+
|
305
|
+
it('When the user seeks the progress bar slider while the video is paused, then the video playback should be in paused state and on playing the video, then the video should play from the position where the slider is seeked', () => {
|
306
|
+
videoResponsePage.steps.pausePlayback();
|
307
|
+
videoResponsePage.steps.seekProgressBarSliderToCenter();
|
308
|
+
videoResponsePage.steps.startPlayback();
|
309
|
+
videoResponsePage.steps.verifyProgressBarSliderPosition(actualVideoSeekedInPercent);
|
310
|
+
});
|
311
|
+
|
312
|
+
it('When the video playback is completed, the \'Pause\' button should get replaced with \'Play\' button', () => {
|
313
|
+
videoResponsePage.steps.verifyVideoPlaybackTimer('00:20', '00:20');
|
314
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPlayButton(), 'visible');
|
315
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPauseButton(), 'notExist');
|
316
|
+
videoResponsePage.steps.verifyProgressBarSliderPosition(99);
|
317
|
+
});
|
318
|
+
|
319
|
+
it('CSS of progress bar in hover state', { tags: 'css' }, () => {
|
320
|
+
videoResponsePage.steps.hoverOnProgressBarSlider();
|
321
|
+
utilities.verifyCSS(videoResponsePage.progressBarSlider().parents('span[class*="MuiSlider-thumb"]'), {
|
322
|
+
'box-shadow': `${css.color.progressBarSliderHoverBackground} 0px 0px 0px 8px`
|
323
|
+
});
|
324
|
+
});
|
325
|
+
});
|
326
|
+
|
327
|
+
describe('Video response playback: Volume control', () => {
|
328
|
+
abortEarlySetup();
|
329
|
+
before(() => {
|
330
|
+
videoResponsePage.steps.navigateToCreateQuestion('video response');
|
331
|
+
cy.barsPreLoaderWait();
|
332
|
+
videoResponsePage.steps.switchToPreviewTab();
|
333
|
+
videoResponsePage.steps.recordAndSaveVideo(5000);
|
334
|
+
});
|
335
|
+
|
336
|
+
it('When the user hovers over \'Volume control\' button, volume control settings should open and by default it should be set to full volume and on hovering away from the button, the volume sliders should disappear', () => {
|
337
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
338
|
+
utilities.verifyElementVisibilityState(videoResponsePage.volumeControlSlider(), 'visible');
|
339
|
+
videoResponsePage.steps.verifyVolumeOfPlaybackPlayer('100');
|
340
|
+
utilities.hoverAwayFromElement();
|
341
|
+
utilities.verifyElementVisibilityState(videoResponsePage.volumeControlSlider(), 'notExist');
|
342
|
+
});
|
343
|
+
|
344
|
+
it('When volume is not set as 0 and user hovers on \'Volume control\' button, then \'Mute\' text should be displayed in a tooltip and on hovering away from the button, the tooltip should disappear', () => {
|
345
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
346
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'visible');
|
347
|
+
utilities.verifyInnerText(videoResponsePage.tooltipText(), 'Mute');
|
348
|
+
utilities.hoverAwayFromElement();
|
349
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'notExist');
|
350
|
+
});
|
351
|
+
|
352
|
+
it('When the user hovers over \'Volume control slider\', then \'Volume control\' text should be displayed in a tooltip and on hovering away from the button, the tooltip should disappear', () => {
|
353
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
354
|
+
videoResponsePage.steps.hoverOnVolumeControlSlider();
|
355
|
+
videoResponsePage.steps.hoverAwayFromVolumeControlButton();
|
356
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'visible');
|
357
|
+
utilities.verifyInnerText(videoResponsePage.tooltipText(), 'Volume control');
|
358
|
+
utilities.hoverAwayFromElement();
|
359
|
+
utilities.verifyElementVisibilityState(videoResponsePage.volumeControlSlider(), 'notExist');
|
360
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'notExist');
|
361
|
+
});
|
362
|
+
|
363
|
+
it('When volume is not set as 0 and user clicks on volume control button, then the video should be muted and the volume control button should change to a muted state', () => {
|
364
|
+
videoResponsePage.steps.clickOnVolumeButton();
|
365
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
366
|
+
videoResponsePage.steps.verifyVolumeOfPlaybackPlayer('0');
|
367
|
+
utilities.hoverAwayFromElement();
|
368
|
+
utilities.verifyElementVisibilityState(videoResponsePage.volumeControlSlider(), 'notExist');
|
369
|
+
utilities.verifyElementVisibilityState(videoResponsePage.muteVolumeIcon(), 'visible');
|
370
|
+
videoResponsePage.steps.focusOutFromVolumeControlButton();
|
371
|
+
});
|
372
|
+
|
373
|
+
it('When the user hovers on muted \'Volume control\' button, \'Unmute\' text should be displayed in tooltip', () => {
|
374
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
375
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'visible');
|
376
|
+
utilities.verifyInnerText(videoResponsePage.tooltipText(), 'Unmute');
|
377
|
+
utilities.hoverAwayFromElement();
|
378
|
+
utilities.verifyElementVisibilityState(videoResponsePage.tooltipText(), 'notExist');
|
379
|
+
});
|
380
|
+
|
381
|
+
it('When the user clicks on the muted volume control button then the volume setting slider should return to full volume and the volume control button should change to an unmuted state', () => {
|
382
|
+
videoResponsePage.steps.clickOnVolumeButton();
|
383
|
+
videoResponsePage.steps.hoverOnVolumeControlButton();
|
384
|
+
videoResponsePage.steps.verifyVolumeOfPlaybackPlayer('100');
|
385
|
+
utilities.verifyElementVisibilityState(videoResponsePage.unmutedVolumeIcon(), 'visible');
|
386
|
+
});
|
387
|
+
|
388
|
+
it('CSS of volume control section', { tags: 'css' }, () => {
|
389
|
+
utilities.verifyCSS(videoResponsePage.volumeControlSlider(), {
|
390
|
+
'background': `${css.color.transparent} linear-gradient(to right, ${css.color.progressBarElapsedFill} 0%, ${css.color.progressBarElapsedFill} 100%, ${css.color.progressBarRemainingFill} 0%, ${css.color.progressBarRemainingFill} 100%) repeat scroll 0% 0%, 'auto padding-box border-box`
|
391
|
+
});
|
392
|
+
utilities.verifyCSS(videoResponsePage.volumeControlButton().find('g path'), {
|
393
|
+
'fill': css.color.secondaryBtnBg,
|
394
|
+
});
|
395
|
+
});
|
396
|
+
|
397
|
+
it('Accessibility of volume control section', { tags: 'a11y' }, () => {
|
398
|
+
cy.checkAccessibility(videoResponsePage.volumeControlSlider());
|
399
|
+
cy.checkAccessibility(videoResponsePage.playbackPlayButton().parents('.video-player-wrapper'));
|
400
|
+
});
|
401
|
+
|
402
|
+
it('When the user drags the volume control all the way down, video should be muted and the button should update to a muted state', () => {
|
403
|
+
videoResponsePage.steps.setVolumeSliderForPlayback(0);
|
404
|
+
videoResponsePage.steps.verifyVolumeOfPlaybackPlayer('0');
|
405
|
+
utilities.verifyElementVisibilityState(videoResponsePage.muteVolumeIcon(), 'visible');
|
406
|
+
});
|
407
|
+
|
408
|
+
it('CSS of volume control section in muted state', { tags: 'css' }, () => {
|
409
|
+
utilities.verifyCSS(videoResponsePage.volumeControlSlider(), {
|
410
|
+
'background': `${css.color.transparent} linear-gradient(to right, ${css.color.progressBarElapsedFill} 0%, ${css.color.progressBarElapsedFill} 0%, ${css.color.progressBarRemainingFill} -100%, ${css.color.progressBarRemainingFill} 100%) repeat scroll 0% 0%, 'auto padding-box border-box`
|
411
|
+
});
|
412
|
+
utilities.verifyCSS(videoResponsePage.volumeControlButton().find('g g path'), {
|
413
|
+
'fill': css.color.secondaryBtnBg,
|
414
|
+
});
|
415
|
+
});
|
416
|
+
|
417
|
+
it('Accessibility of volume control section in muted state', { tags: 'a11y' }, () => {
|
418
|
+
cy.checkAccessibility(videoResponsePage.volumeControlSlider());
|
419
|
+
cy.checkAccessibility(videoResponsePage.playbackPlayButton().parents('.video-player-wrapper'));
|
420
|
+
});
|
421
|
+
|
422
|
+
it('User should be able to unmute the video by dragging the volume control higher again', () => {
|
423
|
+
videoResponsePage.steps.setVolumeSliderForPlayback(99);
|
424
|
+
videoResponsePage.steps.verifyVolumeOfPlaybackPlayer('100');
|
425
|
+
utilities.verifyElementVisibilityState(videoResponsePage.unmutedVolumeIcon(), 'visible');
|
426
|
+
});
|
427
|
+
});
|
428
|
+
|
429
|
+
describe('Video response playback: Playback speed', () => {
|
430
|
+
const playbackSpeedOptions = ['1x', '1.25x', '1.5x', '2x'];
|
431
|
+
const playbackSpeedMultiplier = [1, 1.25, 1.5, 2];
|
432
|
+
abortEarlySetup();
|
433
|
+
before(() => {
|
434
|
+
videoResponsePage.steps.navigateToCreateQuestion('video response');
|
435
|
+
cy.barsPreLoaderWait();
|
436
|
+
videoResponsePage.steps.switchToPreviewTab();
|
437
|
+
videoResponsePage.steps.recordAndSaveVideo(4000);
|
438
|
+
});
|
439
|
+
|
440
|
+
it('When the user hovers overs the playback button, a tooltip \'Playback speed\' should be displayed and on hovering away from the button, the tooltip should disappear', () => {
|
441
|
+
videoResponsePage.playbackSpeedButton()
|
442
|
+
.verifyTooltip('Playback speed');
|
443
|
+
});
|
444
|
+
|
445
|
+
it('When the user hovers overs the playback button, a list of 4 playback speed options - 1x, 1.25x, 1.5x, 2x should be displayed and by default 1x should be in selected state', () => {
|
446
|
+
videoResponsePage.steps.hoverOnPlaybackSpeedButton();
|
447
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackSpeedOptionsList(), 'visible');
|
448
|
+
utilities.verifyElementCount(videoResponsePage.playbackSpeedOption(), 4);
|
449
|
+
videoResponsePage.steps.verifyPlaybackSpeedListOptions();
|
450
|
+
//TODO: need to add selected state assertion when https://redmine.zeuslearning.com/issues/540695 gets fixed
|
451
|
+
})
|
452
|
+
|
453
|
+
it('CSS of playback speed options', { tags: 'css' }, () => {
|
454
|
+
utilities.verifyCSS(videoResponsePage.playbackSpeedButton().find('g'), {
|
455
|
+
'stroke': css.color.secondaryBtnBg,
|
456
|
+
});
|
457
|
+
utilities.verifyCSS(videoResponsePage.playbackSpeedOption().eq(0), {
|
458
|
+
'color': css.color.liText,
|
459
|
+
'background-color': css.color.liTextSelectedBg,
|
460
|
+
'font-size': css.fontSize.small
|
461
|
+
});
|
462
|
+
utilities.verifyCSS(videoResponsePage.playbackSpeedOption().eq(1), {
|
463
|
+
'color': css.color.liText,
|
464
|
+
'background-color': css.color.transparent,
|
465
|
+
'font-size': css.fontSize.small
|
466
|
+
});
|
467
|
+
});
|
468
|
+
|
469
|
+
it('Accessibility of playback speed options', { tags: 'a11y' }, () => {
|
470
|
+
cy.checkAccessibility(videoResponsePage.playbackSpeedButton().parents('.video-player-wrapper'));
|
471
|
+
cy.checkAccessibility(videoResponsePage.playbackSpeedOptionsList());
|
472
|
+
});
|
473
|
+
|
474
|
+
for (let index = 0; index < playbackSpeedOptions.length; index++) {
|
475
|
+
it(`When the user selects playback speed option ${playbackSpeedOptions[index]}x, the video playback speed should be changed accordingly`, () => {
|
476
|
+
videoResponsePage.steps.resetQuestionPreview();
|
477
|
+
videoResponsePage.steps.recordAndSaveVideo(12000);
|
478
|
+
videoResponsePage.steps.hoverOnPlaybackSpeedButton();
|
479
|
+
videoResponsePage.steps.selectPlaybackSpeed(playbackSpeedOptions[index])
|
480
|
+
videoResponsePage.steps.startPlayback();
|
481
|
+
videoResponsePage.steps.waitForPlaybackToBegin();
|
482
|
+
videoResponsePage.steps.addWaitToPlayVideo(4000);
|
483
|
+
videoResponsePage.steps.pausePlayback();
|
484
|
+
videoResponsePage.steps.verifyPlaybackElapsedTime(1 + (4 * playbackSpeedMultiplier[index]));
|
485
|
+
});
|
486
|
+
}
|
487
|
+
});
|
488
|
+
|
489
|
+
describe('Video response playback: Retake recording', () => {
|
490
|
+
abortEarlySetup();
|
491
|
+
before(() => {
|
492
|
+
videoResponsePage.steps.navigateToCreateQuestion('video response');
|
493
|
+
cy.barsPreLoaderWait();
|
494
|
+
videoResponsePage.steps.switchToPreviewTab();
|
495
|
+
videoResponsePage.steps.recordAndSaveVideo(5000);
|
496
|
+
});
|
497
|
+
|
498
|
+
it('When the user hovers over the \'Retake recording\' button, a tooltip \'Retake recording\' should be displayed and on moving away the focus, the tooltip should disappear', () => {
|
499
|
+
videoResponsePage.retakeRecordingButton()
|
500
|
+
.verifyTooltip('Retake recording');
|
501
|
+
});
|
502
|
+
|
503
|
+
it('When the user clicks on \'Retake recording\' button, \'Retake recording\' popup should be displayed along with \'Are you sure you want to overwrite the existing audio recording?\' message', () => {
|
504
|
+
videoResponsePage.steps.retakeRecording();
|
505
|
+
utilities.verifyInnerText(dialogBoxBase.dialogBoxTitle(), 'Retake');
|
506
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBoxTitle(), 'visible');
|
507
|
+
utilities.verifyInnerText(videoResponsePage.retakePopupContent(), 'Are you sure you want to overwrite the existing video recording?');
|
508
|
+
utilities.verifyInnerText(videoResponsePage.confirmRetakeButton(), 'Confirm');
|
509
|
+
utilities.verifyElementVisibilityState(videoResponsePage.confirmRetakeButton(), 'visible');
|
510
|
+
utilities.verifyInnerText(videoResponsePage.cancelRetakeButton(), 'Cancel');
|
511
|
+
utilities.verifyElementVisibilityState(videoResponsePage.cancelRetakeButton(), 'visible');
|
512
|
+
});
|
513
|
+
|
514
|
+
it('CSS of \'Retake recording\' popup', { tags: 'css' }, () => {
|
515
|
+
utilities.verifyCSS(dialogBoxBase.dialogBox(), {
|
516
|
+
'border': `1px solid ${css.color.defaultDropdownBorder}`,
|
517
|
+
'background-color': css.color.defaultBackground
|
518
|
+
});
|
519
|
+
utilities.verifyCSS(dialogBoxBase.dialogBoxTitle(), {
|
520
|
+
'color': css.color.questionHeading,
|
521
|
+
'font-size': css.fontSize.default,
|
522
|
+
'font-weight': css.fontWeight.semibold
|
523
|
+
});
|
524
|
+
utilities.verifyCSS(videoResponsePage.retakePopupContent(), {
|
525
|
+
'color': css.color.labels,
|
526
|
+
'font-size': css.fontSize.default,
|
527
|
+
'font-weight': css.fontWeight.regular
|
528
|
+
})
|
529
|
+
utilities.verifyCSS(videoResponsePage.confirmRetakeButton(), {
|
530
|
+
'background-color': css.color.deleteBtn
|
531
|
+
});
|
532
|
+
utilities.verifyCSS(videoResponsePage.confirmRetakeButton().find('span'), {
|
533
|
+
'color': css.color.whiteText,
|
534
|
+
'font-size': css.fontSize.default,
|
535
|
+
'font-weight': css.fontWeight.regular
|
536
|
+
});
|
537
|
+
utilities.verifyCSS(videoResponsePage.cancelRetakeButton(), {
|
538
|
+
'background-color': css.color.defaultBackground
|
539
|
+
});
|
540
|
+
utilities.verifyCSS(videoResponsePage.cancelRetakeButton().find('span'), {
|
541
|
+
'color': css.color.secondaryBtn,
|
542
|
+
'font-size': css.fontSize.default,
|
543
|
+
'font-weight': css.fontWeight.regular
|
544
|
+
});
|
545
|
+
});
|
546
|
+
|
547
|
+
it('Accessibility of \'Retake recording\' popup', { tags: 'a11y' }, () => {
|
548
|
+
cy.checkAccessibility(dialogBoxBase.dialogBox());
|
549
|
+
});
|
550
|
+
|
551
|
+
it('When the user clicks on \'Cancel\' button, \'Retake recording\' popup should close and previous state of playback player should persist', () => {
|
552
|
+
videoResponsePage.steps.cancelRetake();
|
553
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
554
|
+
utilities.verifyElementVisibilityState(videoResponsePage.retakeRecordingButton(), 'visible');
|
555
|
+
utilities.verifyElementVisibilityState(videoResponsePage.playbackPlayButton(), 'visible');
|
556
|
+
videoResponsePage.steps.verifyVideoPlaybackTimer('00:00', '00:05');
|
557
|
+
});
|
558
|
+
|
559
|
+
it('When the user clicks on Confirm button of the Retake recording popup, the previous recording should get deleted and a new recording should begin', () => {
|
560
|
+
videoResponsePage.steps.retakeRecording();
|
561
|
+
videoResponsePage.steps.confirmRetake();
|
562
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
563
|
+
videoResponsePage.steps.waitForRecordingToStart();
|
564
|
+
videoResponsePage.steps.verifyRecordingStatus('Recording...')
|
565
|
+
});
|
566
|
+
});
|
567
|
+
});
|