itemengine-cypress-automation 1.0.105 → 1.0.107
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/AudioResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +129 -0
- package/cypress/e2e/ILC/AudioResponseNew/minimalRecorderStyle.js +482 -0
- package/cypress/e2e/ILC/AudioResponseNew/previewContentsForAllViews.smoke.js +123 -0
- package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.js +554 -0
- package/cypress/e2e/ILC/DrawingResponse/drawingResponseCustomizeAdditionalOptions.js +1 -41
- package/cypress/e2e/ILC/EditTabSettingPage/ItemPreviewSettingsTabContent.js +5 -3
- package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +284 -0
- package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +412 -0
- package/cypress/e2e/ILC/EssayResponse/equationEditorCategories1.js +203 -0
- package/cypress/e2e/ILC/EssayResponse/equationEditorCategories2.js +340 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +432 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +134 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions1.smoke.js +336 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions2.js +332 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions3.js +522 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseSpecialCharacters.js +253 -0
- package/cypress/e2e/ILC/EssayResponse/previewHyperlink.js +266 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/backgroundImageAndCanvasProperties.js +57 -640
- package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +1 -2
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +209 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +209 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +303 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingPenaltyScoring.js +68 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsBasic.js +149 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +218 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +191 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +219 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/allOrNothingForAllView.smoke.js +240 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/checkAnswerFunctionalityForAllViews.smoke.js +124 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/previewContentsForAllViews.smoke.js +107 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/manuallyAndNonScored.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsBasic.js +0 -2
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/backgroundImageAndCanvasProperties.js +408 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/editTabScoringSection.js +2 -2
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/previewContentsForAllViews.smoke.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/responseAnswersAndAcceptedStudentInput.js +2 -2
- package/cypress/e2e/ILC/MultipleSelection/headerSection.js +1 -0
- package/cypress/e2e/ILC/MultipleSelection/studentViewSettings.js +0 -6
- package/cypress/e2e/ILC/Passage/multipageContentEditTab.js +242 -0
- package/cypress/e2e/ILC/Passage/passageAdditionalSettings.js +99 -0
- package/cypress/e2e/ILC/Passage/passageEditTab.js +241 -0
- package/cypress/e2e/ILC/Passage/passageHeaderSection.js +73 -0
- package/cypress/e2e/ILC/Passage/passagePreviewTab.js +246 -0
- package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +138 -33
- package/cypress/e2e/ILC/ReadingRuler/readingRulerHeaderSection.js +30 -6
- package/cypress/e2e/ILC/ReadingRuler/readingRulerPreviewTab.js +167 -101
- package/cypress/e2e/ILC/ReadingRuler/readingrulerPreviewContents.smoke.js +1 -1
- package/cypress/e2e/ILC/SingleSelection/headerSection.js +20 -5
- package/cypress/e2e/ILC/SingleSelection/manuallyAndNonScoredScoring.js +1 -0
- package/cypress/e2e/ILC/TextEntryMath/editTabBasicSection.js +12 -7
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodEquivalentStructures.js +1336 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchExact.js +419 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchValue.js +443 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodSymbolsAreEquivalent.js +411 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodValueIsEquivalent.js +411 -0
- package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +3 -3
- package/cypress/fixtures/specialAndMathCharacters.js +2 -0
- package/cypress/fixtures/theme/ilc.json +4 -2
- package/cypress/pages/audioResponsePage.js +326 -165
- package/cypress/pages/components/additionalSettingsPanel.js +1 -1
- package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +1 -1
- package/cypress/pages/components/backgroundImageUploadComponent.js +162 -2
- package/cypress/pages/components/colorPopupComponent.js +115 -26
- package/cypress/pages/components/customizeMathCharacterComponent.js +133 -0
- package/cypress/pages/components/customizeSpecialCharacterComponent.js +74 -4
- package/cypress/pages/components/editCategoryFlyout.js +164 -2
- package/cypress/pages/components/equationEditorFlyout.js +36 -1
- package/cypress/pages/components/essayResponseCommonComponents.js +0 -2
- package/cypress/pages/components/figOverImageCanvasComponent.js +587 -134
- package/cypress/pages/components/index.js +2 -1
- package/cypress/pages/components/playbackControlsBaseComponent.js +137 -2
- package/cypress/pages/correctAnswerViewPage.js +12 -1
- package/cypress/pages/drawingResponsePage.js +26 -151
- package/cypress/pages/essayResponseMathPage.js +28 -16
- package/cypress/pages/essayResponsePage.js +187 -7
- package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +78 -14
- package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +178 -221
- package/cypress/pages/fillInTheGapsOverImageTextPage.js +79 -0
- package/cypress/pages/multipleSelectionPage.js +1 -1
- package/cypress/pages/readingRulerPage.js +219 -104
- package/cypress/pages/singleSelectionPage.js +1 -0
- package/cypress/pages/textEntryMathPage.js +17 -6
- package/cypress/pages/videoResponsePage.js +0 -8
- package/package.json +1 -1
- package/scripts/sorry-cypress.mjs +1 -1
@@ -0,0 +1,554 @@
|
|
1
|
+
import { dialogBoxBase } from "../../../pages";
|
2
|
+
import { audioResponsePage } from "../../../pages/audioResponsePage";
|
3
|
+
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
4
|
+
import utilities from "../../../support/helpers/utilities";
|
5
|
+
const css = Cypress.env('css');
|
6
|
+
describe('Preview of Audio response for standard audio recorder style', () => {
|
7
|
+
before(() => {
|
8
|
+
cy.loginAs('admin');
|
9
|
+
});
|
10
|
+
|
11
|
+
describe('Preview of standard audio recorder style', () => {
|
12
|
+
abortEarlySetup();
|
13
|
+
before(() => {
|
14
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
15
|
+
cy.barsPreLoaderWait();
|
16
|
+
audioResponsePage.steps.switchToPreviewTab();
|
17
|
+
});
|
18
|
+
|
19
|
+
it('By default: \'Click the button to start recording...\' help text message, rec button, mic icon, \'Allow microphone access\' help text should be displayed in \'Standard audio recorder\'. Maximum recording length should be displayed in minutes(mm:ss) format.', () => {
|
20
|
+
utilities.verifyInnerText(audioResponsePage.standardPreviewRecorderHelpText(), 'Click the button to start recording...');
|
21
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRecorderHelpText(), 'visible');
|
22
|
+
utilities.verifyInnerText(audioResponsePage.standardPreviewStartRecordingButton(), 'REC');
|
23
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewStartRecordingButton(), 'visible');
|
24
|
+
utilities.verifyElementVisibilityState(audioResponsePage.microphoneIcon(), 'visible');
|
25
|
+
utilities.verifyInnerText(audioResponsePage.allowMicrophoneAccessHelpText(), 'Allow microphone access');
|
26
|
+
utilities.verifyElementVisibilityState(audioResponsePage.allowMicrophoneAccessHelpText(), 'visible');
|
27
|
+
utilities.verifyInnerText(audioResponsePage.standardPreviewRecordTime(), '15:00');
|
28
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRecordTime(), 'visible');
|
29
|
+
});
|
30
|
+
|
31
|
+
it('CSS of \'Preview\' section', { tags: 'css' }, () => {
|
32
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewStartRecordingButton(), {
|
33
|
+
'color': css.color.defaultBackground,
|
34
|
+
'font-size': css.fontSize.extraLarge,
|
35
|
+
'font-weight': css.fontWeight.semibold,
|
36
|
+
'border': `2px solid ${css.color.defaultBackground}`,
|
37
|
+
'background-color': css.color.recordingIcon
|
38
|
+
});
|
39
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewRecorderHelpText(), {
|
40
|
+
'color': css.color.text,
|
41
|
+
'font-size': css.fontSize.normal,
|
42
|
+
'font-weight': css.fontWeight.regular
|
43
|
+
});
|
44
|
+
utilities.verifyCSS(audioResponsePage.microphoneIcon().find('path').eq(1), {
|
45
|
+
'fill': css.color.microphoneIcon
|
46
|
+
});
|
47
|
+
utilities.verifyCSS(audioResponsePage.allowMicrophoneAccessHelpText(), {
|
48
|
+
'color': css.color.liText,
|
49
|
+
'font-size': css.fontSize.normal,
|
50
|
+
'font-weight': css.fontWeight.regular
|
51
|
+
});
|
52
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewRecordTime(), {
|
53
|
+
'color': css.color.liText,
|
54
|
+
'font-size': css.fontSize.small,
|
55
|
+
'font-weight': css.fontWeight.bold
|
56
|
+
});
|
57
|
+
});
|
58
|
+
|
59
|
+
it('When the user clicks on the \'Start recording\' button, a countdown should begin and help text "Preparing to record" should be displayed. The recording should start after the countdown, a beep sound should play and the help text should change to "Recording..." while the glow animation should be displayed behind the mic icon. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs / min:sec)\'. Volume meter, Pause recording and Stop recording buttons should be displayed in record player. Start recording button should not be displayed.', () => {
|
60
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
61
|
+
utilities.verifyElementVisibilityState(audioResponsePage.startRecordingCountDown(), 'visible');
|
62
|
+
utilities.verifyInnerText(audioResponsePage.recordingStatusText(), 'Preparing to record');
|
63
|
+
utilities.verifyElementVisibilityState(audioResponsePage.recordingStatusIcon(), 'visible');
|
64
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPauseRecordingButton(), 'visible');
|
65
|
+
utilities.verifyElementDisabled(audioResponsePage.standardPreviewPauseRecordingButton());
|
66
|
+
utilities.verifyElementVisibilityState(audioResponsePage.micGlowAnimation(), 'visible');
|
67
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
68
|
+
audioResponsePage.steps.addWaitToRecordAudio(2000);
|
69
|
+
audioResponsePage.steps.verifyRecordingTimeStandardPreview('00:03', '15:00');
|
70
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPauseRecordingButton(), 'visible');
|
71
|
+
utilities.verifyElementNotDisabled(audioResponsePage.standardPreviewPauseRecordingButton());
|
72
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewStopRecordingButton(), 'visible');
|
73
|
+
utilities.verifyElementVisibilityState(audioResponsePage.recordingStatusIcon(), 'visible');
|
74
|
+
utilities.verifyInnerText(audioResponsePage.recordingStatusText(), 'Recording...');
|
75
|
+
utilities.verifyElementVisibilityState(audioResponsePage.previewVolumeMeter(), 'visible');
|
76
|
+
audioResponsePage.steps.verifyVolumeMeterInDb('0dB');
|
77
|
+
});
|
78
|
+
|
79
|
+
//Comment : Unable to check volume meter go high/low (css) in cypress when recording is in progress, added to manual sheet
|
80
|
+
it('CSS of \'Preview\' section once recording starts', { tags: 'css' }, () => {
|
81
|
+
cy.log('Pre-step : Switching to edit tab and back to preview tab to reset the recorder, then recording a response');
|
82
|
+
audioResponsePage.steps.resetQuestionPreview();
|
83
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
84
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
85
|
+
utilities.verifyCSS(audioResponsePage.recordingMicIcon().find('svg path').eq(1), {
|
86
|
+
'fill': css.color.microphoneIcon
|
87
|
+
});
|
88
|
+
utilities.verifyCSS(audioResponsePage.recordingStatusText(), {
|
89
|
+
'color': css.color.liText,
|
90
|
+
'font-size': css.fontSize.normal,
|
91
|
+
'font-weight': css.fontWeight.regular
|
92
|
+
});
|
93
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewPauseRecordingButton(), {
|
94
|
+
'border': `1px solid ${css.color.secondaryBtnActive}`
|
95
|
+
});
|
96
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewPauseRecordingButton().find('svg rect'), {
|
97
|
+
'fill': css.color.secondaryBtnBg
|
98
|
+
});
|
99
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewPauseRecordingButton().find('svg path'), {
|
100
|
+
'stroke': css.color.secondaryBtnActive
|
101
|
+
});
|
102
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewStopRecordingButton(), {
|
103
|
+
'border': `1px solid ${css.color.secondaryBtnActive}`
|
104
|
+
});
|
105
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewStopRecordingButton().find('svg rect').eq(0), {
|
106
|
+
'fill': css.color.secondaryBtnBg
|
107
|
+
});
|
108
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewStopRecordingButton().find('svg rect').eq(1), {
|
109
|
+
'fill': css.color.secondaryBtnActive
|
110
|
+
});
|
111
|
+
utilities.verifyCSS(audioResponsePage.micGlowAnimation(), {
|
112
|
+
'background-color': css.color.micGlowAnimation
|
113
|
+
});
|
114
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewRecordTime(), {
|
115
|
+
'color': css.color.liText,
|
116
|
+
'font-size': css.fontSize.small,
|
117
|
+
'font-weight': css.fontWeight.bold
|
118
|
+
});
|
119
|
+
});
|
120
|
+
|
121
|
+
it('Accessibility of \'Preview\' section once recording starts', { tags: 'a11y' }, () => {
|
122
|
+
cy.checkAccessibility(audioResponsePage.previewTabQuestionWrapper());
|
123
|
+
});
|
124
|
+
|
125
|
+
it('When the user hovers on \'Pause recording\' button, \'Pause recording\' text should be displayed in tooltip', () => {
|
126
|
+
audioResponsePage.standardPreviewPauseRecordingButton()
|
127
|
+
.verifyTooltip('Pause recording');
|
128
|
+
});
|
129
|
+
|
130
|
+
it('When recording is inprogress and the user clicks on \'Pause recording\' icon, recording should pause and the help text should update to \'Recording paused\'. The mic icon\'s glow animation should disappear and the volume meter should drop to \'0dB\'. User should be able to view the duration of their recorded speech 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 icon', () => {
|
131
|
+
audioResponsePage.steps.resetQuestionPreview();
|
132
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
133
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
134
|
+
audioResponsePage.steps.addWaitToRecordAudio(1000);
|
135
|
+
audioResponsePage.steps.pauseRecordingStandardPreview();
|
136
|
+
utilities.verifyInnerText(audioResponsePage.recordingStatusText(), 'Recording paused');
|
137
|
+
utilities.verifyElementVisibilityState(audioResponsePage.pauseIcon(), 'visible');
|
138
|
+
utilities.verifyElementVisibilityState(audioResponsePage.recordingMicIcon(), 'visible');
|
139
|
+
audioResponsePage.steps.verifyMicGlowAnimationNotVisible();
|
140
|
+
audioResponsePage.steps.verifyRecordingTimeStandardPreview('00:02', '15:00');
|
141
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPauseRecordingButton(), 'notExist');
|
142
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewResumeRecordingButton(), 'visible');
|
143
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewStopRecordingButton(), 'visible');
|
144
|
+
audioResponsePage.steps.verifyVolumeMeterInDb('0dB');
|
145
|
+
});
|
146
|
+
|
147
|
+
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', () => {
|
148
|
+
audioResponsePage.standardPreviewResumeRecordingButton()
|
149
|
+
.verifyTooltip('Resume recording');
|
150
|
+
});
|
151
|
+
|
152
|
+
it('CSS of \'Preview\' section if recording is paused', { tags: 'css' }, () => {
|
153
|
+
cy.log('CSS of Resume recording button and help text');
|
154
|
+
utilities.verifyCSS(audioResponsePage.recordingStatusText(), {
|
155
|
+
'color': css.color.liText,
|
156
|
+
'font-size': css.fontSize.normal,
|
157
|
+
'font-weight': css.fontWeight.regular
|
158
|
+
});
|
159
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewResumeRecordingButton().find('circle'), {
|
160
|
+
'fill': css.color.defaultBackground
|
161
|
+
});
|
162
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewResumeRecordingButton().find('path'), {
|
163
|
+
'fill': css.color.recordingIcon
|
164
|
+
});
|
165
|
+
cy.log('CSS of tooltip of Resume recording button');
|
166
|
+
utilities.triggerMouseover(audioResponsePage.standardPreviewResumeRecordingButton());
|
167
|
+
utilities.verifyCSS(audioResponsePage.tooltipText(), {
|
168
|
+
'color': css.color.helperText,
|
169
|
+
'background-color': css.color.defaultBackground,
|
170
|
+
'font-size': css.fontSize.normal,
|
171
|
+
'font-weight': css.fontWeight.regular
|
172
|
+
});
|
173
|
+
utilities.triggerMouseout(audioResponsePage.standardPreviewResumeRecordingButton());
|
174
|
+
utilities.verifyElementVisibilityState(audioResponsePage.tooltipText(), 'notExist');
|
175
|
+
cy.log('CSS of tooltip of Stop recording button');
|
176
|
+
utilities.triggerMouseover(audioResponsePage.standardPreviewStopRecordingButton());
|
177
|
+
utilities.verifyCSS(audioResponsePage.tooltipText(), {
|
178
|
+
'color': css.color.helperText,
|
179
|
+
'background-color': css.color.defaultBackground,
|
180
|
+
'font-size': css.fontSize.normal,
|
181
|
+
'font-weight': css.fontWeight.regular
|
182
|
+
});
|
183
|
+
utilities.triggerMouseout(audioResponsePage.standardPreviewStopRecordingButton());
|
184
|
+
utilities.verifyElementVisibilityState(audioResponsePage.tooltipText(), 'notExist');
|
185
|
+
});
|
186
|
+
|
187
|
+
it('Accessibility of \'Preview\' section if recording is paused', { tags: 'a11y' }, () => {
|
188
|
+
cy.checkAccessibility(audioResponsePage.previewTabQuestionWrapper());
|
189
|
+
});
|
190
|
+
|
191
|
+
it('When the recorder is in paused state and the user clicks on the \'Resume recording\' button, recording should get resumed. The glow animation behind the mic icon should start again, and the help text should update to "Recording...". The volume meter should also detect the sound levels during recording. Progress bar should display the elapsed time and the remaining time until recording is in progress. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs / min:sec)\'. Pause recording and stop recording icon should be displayed. Start recording button should not be displayed', () => {
|
192
|
+
audioResponsePage.steps.resumeRecordingStandardPreview();
|
193
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewStartRecordingButton(), 'notExist');
|
194
|
+
utilities.verifyElementVisibilityState(audioResponsePage.micGlowAnimation(), 'visible');
|
195
|
+
utilities.verifyInnerText(audioResponsePage.recordingStatusText(), 'Recording...');
|
196
|
+
utilities.verifyElementVisibilityState(audioResponsePage.previewVolumeMeter(), 'visible');
|
197
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPauseRecordingButton(), 'visible');
|
198
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewStopRecordingButton(), 'visible');
|
199
|
+
audioResponsePage.steps.verifyVolumeMeterInDb('0dB');
|
200
|
+
audioResponsePage.steps.verifyRecordingLengthAfterResumingStandardPreview();
|
201
|
+
});
|
202
|
+
|
203
|
+
it('When the user hovers on \'Stop recording\' button, \'Stop recording\' text should be displayed in tooltip', () => {
|
204
|
+
audioResponsePage.standardPreviewStopRecordingButton()
|
205
|
+
.verifyTooltip('Stop recording');
|
206
|
+
});
|
207
|
+
|
208
|
+
it('When the recording is in-progress and the user clicks on \'Stop recording\' icon, recording should stop, recorded audio response should be saved and \'Your response has been recorded.\' help text message, retake recording button, Play recording button should be displayed. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs)\'. Volume meter should be displayed', () => {
|
209
|
+
audioResponsePage.steps.resetQuestionPreview();
|
210
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
211
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
212
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
213
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
214
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:00', '00:04');
|
215
|
+
utilities.verifyInnerText(audioResponsePage.recordedResponseHelpText(), 'Your response has been recorded.');
|
216
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
217
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRetakeButton(), 'visible');
|
218
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackWaveform(), 'visible');
|
219
|
+
utilities.verifyElementVisibilityState(audioResponsePage.previewVolumeMeter(), 'visible');
|
220
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackProgressBar(), 'visible');
|
221
|
+
});
|
222
|
+
|
223
|
+
it('CSS of \'Preview\' section if recording is stopped', { tags: 'css' }, () => {
|
224
|
+
audioResponsePage.steps.resetQuestionPreview();
|
225
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
226
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
227
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
228
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
229
|
+
utilities.verifyCSS(audioResponsePage.recordingStatusText(), {
|
230
|
+
'color': css.color.liText,
|
231
|
+
'font-size': css.fontSize.normal,
|
232
|
+
'font-weight': css.fontWeight.regular
|
233
|
+
});
|
234
|
+
});
|
235
|
+
|
236
|
+
it('Accessibility of \'Preview\' section if recording is stopped', { tags: 'a11y' }, () => {
|
237
|
+
cy.checkAccessibility(audioResponsePage.previewTabQuestionWrapper());
|
238
|
+
});
|
239
|
+
|
240
|
+
it('When the user stops paused recording, recording should stop, recorded audio response should be saved and \'Your response has been recorded\' help text message, progress bar and start recording button should be displayed on standard player. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs)\'. Volume meter and Play button should be displayed. Stop recording button should not be displayed', () => {
|
241
|
+
audioResponsePage.steps.resetQuestionPreview();
|
242
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
243
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
244
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
245
|
+
audioResponsePage.steps.pauseRecordingStandardPreview();
|
246
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
247
|
+
utilities.verifyInnerText(audioResponsePage.recordedResponseHelpText(), 'Your response has been recorded.');
|
248
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
249
|
+
utilities.verifyElementVisibilityState(audioResponsePage.previewVolumeMeter(), 'visible');
|
250
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPlaybackTime(), 'visible');
|
251
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackProgressBar(), 'visible');
|
252
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:00', '00:04');
|
253
|
+
});
|
254
|
+
|
255
|
+
//Failing due to https://redmine.zeuslearning.com/issues/560794
|
256
|
+
it('When recording is inprogress and user has reached maximum recorder length, \'Your response has been recorded\' message should be displayed below mic icon. Retake and Play icon should be displayed along with progress bar. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs)\'. Volume meter should not be displayed in player', () => {
|
257
|
+
audioResponsePage.steps.switchToEditTab();
|
258
|
+
audioResponsePage.steps.setMaximumRecorderLength(10);
|
259
|
+
audioResponsePage.steps.switchToPreviewTab();
|
260
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
261
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
262
|
+
cy.log('Response will keep recording until maximum recording length of 10 seconds is reached');
|
263
|
+
utilities.verifyInnerText(audioResponsePage.standardPreviewRecorderHelpText(), 'Recording...');
|
264
|
+
utilities.verifyInnerText(audioResponsePage.recordedResponseHelpText(), 'Your response has been recorded.');
|
265
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRetakeButton(), 'visible');
|
266
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
267
|
+
utilities.verifyElementVisibilityState(audioResponsePage.previewVolumeMeter(), 'visible');
|
268
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPlaybackTime(), 'visible');
|
269
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackProgressBar(), 'visible');
|
270
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:10', '00:10');
|
271
|
+
});
|
272
|
+
});
|
273
|
+
|
274
|
+
describe('Playback player : Default state', () => {
|
275
|
+
abortEarlySetup();
|
276
|
+
before(() => {
|
277
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
278
|
+
cy.barsPreLoaderWait();
|
279
|
+
audioResponsePage.steps.switchToPreviewTab();
|
280
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(5000);
|
281
|
+
});
|
282
|
+
|
283
|
+
it('A playback player with audio wave form, Volume meter, Retake recording and Play buttons, Volume control and playback speed buttons, Progress bar and time in (mm:ss / mm:ss) format should be displayed', () => {
|
284
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackWaveform(), 'visible');
|
285
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRetakeButton(), 'visible');
|
286
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
287
|
+
utilities.verifyElementVisibilityState(audioResponsePage.volumeControlButton(), 'visible');
|
288
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackSpeedButton(), 'visible');
|
289
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackProgressBar(), 'visible');
|
290
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewPlaybackTime(), 'visible');
|
291
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:00', '00:05');
|
292
|
+
});
|
293
|
+
|
294
|
+
it('The progress bar should have a slider so that user can click/drag to seek the audio. When the user hovers on the waveform, a black cursor should be display on the waveform', () => {
|
295
|
+
utilities.verifyElementVisibilityState(audioResponsePage.progressBarSlider(), 'visible');
|
296
|
+
utilities.hoverOverElement(audioResponsePage.playbackWaveform());
|
297
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'visible');
|
298
|
+
utilities.hoverAwayFromElement();
|
299
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'hidden');
|
300
|
+
});
|
301
|
+
|
302
|
+
it('CSS of standard recorder style playback player', { tags: 'css' }, () => {
|
303
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewRetakeButton().find('circle'), {
|
304
|
+
'fill': css.color.defaultBackground
|
305
|
+
});
|
306
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewRetakeButton().find('path'), {
|
307
|
+
'fill': css.color.recordingIcon
|
308
|
+
});
|
309
|
+
utilities.verifyCSS(audioResponsePage.playbackPlayButton(), {
|
310
|
+
'border': `1px solid ${css.color.secondaryBtnActive}`
|
311
|
+
});
|
312
|
+
utilities.verifyCSS(audioResponsePage.playbackPlayButton().find('svg rect'), {
|
313
|
+
'fill': css.color.secondaryBtnBg
|
314
|
+
});
|
315
|
+
utilities.verifyCSS(audioResponsePage.playbackPlayButton().find('svg path'), {
|
316
|
+
'stroke': css.color.secondaryBtnActive
|
317
|
+
});
|
318
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewPlaybackTime(), {
|
319
|
+
'color': css.color.liText,
|
320
|
+
'font-size': css.fontSize.small,
|
321
|
+
'font-weight': css.fontWeight.bold
|
322
|
+
});
|
323
|
+
utilities.verifyCSS(audioResponsePage.playbackProgressBar().find('.MuiSlider-thumbSizeMedium'), {
|
324
|
+
'background-color': css.color.activeButtons
|
325
|
+
});
|
326
|
+
utilities.verifyCSS(audioResponsePage.playbackProgressBar().find('.MuiSlider-rail'), {
|
327
|
+
'border': `1px solid ${css.color.activeButtons}`
|
328
|
+
});
|
329
|
+
utilities.verifyCSS(audioResponsePage.volumeControlButton().find('[data-name="minimal-volume-icon"]'), {
|
330
|
+
'fill': css.color.activeButtons
|
331
|
+
});
|
332
|
+
utilities.verifyCSS(audioResponsePage.playbackSpeedButton().find('[id="playback-speed"] path'), {
|
333
|
+
'fill': css.color.activeButtons
|
334
|
+
});
|
335
|
+
});
|
336
|
+
|
337
|
+
it('Accessibility of playback player - default state', { tags: 'a11y' }, () => {
|
338
|
+
cy.checkAccessibility(audioResponsePage.standardPreviewPlaybackWrapper());
|
339
|
+
});
|
340
|
+
});
|
341
|
+
|
342
|
+
//Note: Need to add cases of seeking using waveform
|
343
|
+
describe('Playback player : Play, pause and seek', () => {
|
344
|
+
let actualAudioSeekedInPercent = 50
|
345
|
+
abortEarlySetup();
|
346
|
+
before(() => {
|
347
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
348
|
+
cy.barsPreLoaderWait();
|
349
|
+
audioResponsePage.steps.switchToPreviewTab();
|
350
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(10000);
|
351
|
+
});
|
352
|
+
|
353
|
+
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', () => {
|
354
|
+
audioResponsePage.playbackPlayButton()
|
355
|
+
.verifyTooltip('Play');
|
356
|
+
});
|
357
|
+
|
358
|
+
it('When the user clicks on \'Play\' button, then the audio should start playing. Timer should display the amount of audio that has been played and the total audio length in (mm:ss)/(mm:ss) format.', () => {
|
359
|
+
audioResponsePage.steps.startPlayback();
|
360
|
+
audioResponsePage.steps.waitForPlaybackToBegin();
|
361
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:03', '00:10');
|
362
|
+
});
|
363
|
+
|
364
|
+
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', () => {
|
365
|
+
audioResponsePage.playbackPauseButton()
|
366
|
+
.verifyTooltip('Pause');
|
367
|
+
});
|
368
|
+
|
369
|
+
it('CSS of \'Preview\' section if playback is initiated', { tags: 'css' }, () => {
|
370
|
+
utilities.verifyCSS(audioResponsePage.standardPreviewPlaybackTime(), {
|
371
|
+
'color': css.color.liText,
|
372
|
+
'font-size': css.fontSize.small,
|
373
|
+
'font-weight': css.fontWeight.bold
|
374
|
+
});
|
375
|
+
utilities.verifyCSS(audioResponsePage.playbackPauseButton().find('svg rect'), {
|
376
|
+
'fill': css.color.secondaryBtnBg
|
377
|
+
});
|
378
|
+
utilities.verifyCSS(audioResponsePage.playbackPauseButton().find('svg path'), {
|
379
|
+
'stroke': css.color.secondaryBtnActive
|
380
|
+
});
|
381
|
+
});
|
382
|
+
|
383
|
+
it('Accessibility of \'Preview\' section if playback is initiated', { tags: 'a11y' }, () => {
|
384
|
+
cy.checkAccessibility(audioResponsePage.standardPreviewPlaybackWrapper());
|
385
|
+
});
|
386
|
+
|
387
|
+
it('When the audio 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', () => {
|
388
|
+
audioResponsePage.steps.resetQuestionPreview();
|
389
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(10000);
|
390
|
+
audioResponsePage.steps.startPlayback();
|
391
|
+
audioResponsePage.steps.waitForPlaybackToBegin();
|
392
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:05', '00:10');
|
393
|
+
audioResponsePage.steps.pauseAndVerifyProgressBarSliderPosition();
|
394
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:05', '00:10');
|
395
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
396
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPauseButton(), 'notExist');
|
397
|
+
});
|
398
|
+
|
399
|
+
it('CSS of \'Preview\' section if playback is paused', { tags: 'css' }, () => {
|
400
|
+
utilities.verifyCSS(audioResponsePage.playbackPlayButton().find('svg rect'), {
|
401
|
+
'fill': css.color.secondaryBtnBg
|
402
|
+
});
|
403
|
+
utilities.verifyCSS(audioResponsePage.playbackPlayButton().find('svg path'), {
|
404
|
+
'stroke': css.color.secondaryBtnActive
|
405
|
+
});
|
406
|
+
});
|
407
|
+
|
408
|
+
it('Accessibility of \'Preview\' section if if playback is paused', { tags: 'a11y' }, () => {
|
409
|
+
cy.checkAccessibility(audioResponsePage.standardPreviewPlaybackWrapper());
|
410
|
+
});
|
411
|
+
|
412
|
+
it('When audio 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.', () => {
|
413
|
+
audioResponsePage.steps.startPlayback();
|
414
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPauseButton(), 'visible');
|
415
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'notExist');
|
416
|
+
});
|
417
|
+
|
418
|
+
it('When the user seeks the progress bar slider while the audio is playing, then the audio should continue to play from the position where the slider is seeked', () => {
|
419
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
420
|
+
audioResponsePage.steps.addWaitToPlayAudio(1000);
|
421
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
422
|
+
});
|
423
|
+
|
424
|
+
it('When the user seeks the progress bar slider while the audio is paused, then the audio playback should be in paused state and on playing the audio, then the audio should play from the position where the slider is seeked', () => {
|
425
|
+
audioResponsePage.steps.pausePlayback();
|
426
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
427
|
+
audioResponsePage.steps.startPlayback();
|
428
|
+
audioResponsePage.steps.addWaitToPlayAudio(5000);
|
429
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
430
|
+
});
|
431
|
+
|
432
|
+
it('When the audio playback is completed, the \'Pause\' button should get replaced with \'Play\' button', () => {
|
433
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:45', '00:45');
|
434
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
435
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPauseButton(), 'notExist');
|
436
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(99);
|
437
|
+
});
|
438
|
+
|
439
|
+
it('CSS of progress bar in hover state', { tags: 'css' }, () => {
|
440
|
+
audioResponsePage.steps.hoverOnProgressBarSlider();
|
441
|
+
utilities.verifyCSS(audioResponsePage.progressBarSlider().parents('span[class*="MuiSlider-thumb"]'), {
|
442
|
+
'box-shadow': `${css.color.progressBarSliderHoverBackground} 0px 0px 0px 8px`
|
443
|
+
});
|
444
|
+
});
|
445
|
+
});
|
446
|
+
|
447
|
+
describe('Playback player : Volume control', () => {
|
448
|
+
abortEarlySetup();
|
449
|
+
before(() => {
|
450
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
451
|
+
cy.barsPreLoaderWait();
|
452
|
+
audioResponsePage.steps.switchToPreviewTab();
|
453
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(10000);
|
454
|
+
});
|
455
|
+
|
456
|
+
audioResponsePage.tests.verifyVolumeControlFunctionality();
|
457
|
+
});
|
458
|
+
|
459
|
+
describe('Playback player : Playback speed', () => {
|
460
|
+
const playbackSpeedOptions = ['1', '1.25', '1.5', '2'];
|
461
|
+
abortEarlySetup();
|
462
|
+
before(() => {
|
463
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
464
|
+
cy.barsPreLoaderWait();
|
465
|
+
audioResponsePage.steps.switchToPreviewTab();
|
466
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(10000);
|
467
|
+
});
|
468
|
+
|
469
|
+
audioResponsePage.tests.verifyPlaybackSpeedContents();
|
470
|
+
|
471
|
+
for (let index = 0; index < playbackSpeedOptions.length; index++) {
|
472
|
+
it(`When the user selects playback speed option ${playbackSpeedOptions[index]}x, the audio playback speed should be changed accordingly`, () => {
|
473
|
+
audioResponsePage.steps.resetQuestionPreview();
|
474
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(12000);
|
475
|
+
utilities.hoverOverElement(audioResponsePage.playbackSpeedButton());
|
476
|
+
audioResponsePage.steps.selectPlaybackSpeed(`${playbackSpeedOptions[index]}x`);
|
477
|
+
audioResponsePage.steps.startPlayback();
|
478
|
+
audioResponsePage.steps.waitForPlaybackToBegin();
|
479
|
+
audioResponsePage.steps.addWaitToPlayAudio(4000);
|
480
|
+
audioResponsePage.steps.pausePlayback();
|
481
|
+
audioResponsePage.steps.verifyPlaybackElapsedTime(1 + (4 * playbackSpeedOptions[index]), 'Standard');
|
482
|
+
});
|
483
|
+
};
|
484
|
+
});
|
485
|
+
|
486
|
+
describe('Playback player : Retake my audio response', () => {
|
487
|
+
abortEarlySetup();
|
488
|
+
before(() => {
|
489
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
490
|
+
cy.barsPreLoaderWait();
|
491
|
+
audioResponsePage.steps.setMaximumRecorderLength(10);
|
492
|
+
audioResponsePage.steps.switchToPreviewTab();
|
493
|
+
audioResponsePage.steps.recordAndSaveAudioStandardPreview(5000);
|
494
|
+
});
|
495
|
+
|
496
|
+
it('When the user clicks on \'Retake\' icon button, \'Retake\' popup should be displayed along with \'Are you sure you want to overwrite the existing audio recording?\' message', () => {
|
497
|
+
audioResponsePage.steps.retakeRecordingStandardPreview();
|
498
|
+
utilities.verifyInnerText(dialogBoxBase.dialogBoxTitle(), 'Retake');
|
499
|
+
audioResponsePage.steps.verifyRetakePopupContents();
|
500
|
+
});
|
501
|
+
|
502
|
+
it('CSS of \'Retake\' popup', { tags: 'css' }, () => {
|
503
|
+
utilities.verifyCSS(dialogBoxBase.dialogBox(), {
|
504
|
+
'border': `1px solid ${css.color.defaultDropdownBorder}`,
|
505
|
+
'background-color': css.color.defaultBackground
|
506
|
+
});
|
507
|
+
utilities.verifyCSS(dialogBoxBase.dialogBoxTitle(), {
|
508
|
+
'color': css.color.questionHeading,
|
509
|
+
'font-size': css.fontSize.heading,
|
510
|
+
'font-weight': css.fontWeight.semibold
|
511
|
+
});
|
512
|
+
utilities.verifyCSS(audioResponsePage.dialogBoxContent().find('.retake-popup-content'), {
|
513
|
+
'border-top': `1px solid ${css.color.secondaryBtnBorder}`,
|
514
|
+
'color': css.color.labels,
|
515
|
+
'font-size': css.fontSize.default,
|
516
|
+
'font-weight': css.fontWeight.regular
|
517
|
+
});
|
518
|
+
utilities.verifyCSS(audioResponsePage.confirmRetakeButton(), {
|
519
|
+
'background-color': css.color.deleteBtn,
|
520
|
+
'color': css.color.whiteText,
|
521
|
+
'font-size': css.fontSize.default,
|
522
|
+
'font-weight': css.fontWeight.semibold
|
523
|
+
});
|
524
|
+
utilities.verifyCSS(audioResponsePage.cancelRetakeButton(), {
|
525
|
+
'background-color': css.color.secondaryBtnBg,
|
526
|
+
'color': css.color.secondaryBtn,
|
527
|
+
'font-size': css.fontSize.default,
|
528
|
+
'font-weight': css.fontWeight.semibold
|
529
|
+
});
|
530
|
+
});
|
531
|
+
|
532
|
+
it('Accessibility of \'Retake\' popup', { tags: 'a11y' }, () => {
|
533
|
+
cy.checkAccessibility(audioResponsePage.dialogBox());
|
534
|
+
});
|
535
|
+
|
536
|
+
it('When the user clicks on \'Cancel\' button, \'Retake\' popup should close and previous state of playback player should persist', () => {
|
537
|
+
audioResponsePage.steps.cancelRetake();
|
538
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
539
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRetakeButton(), 'visible');
|
540
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
541
|
+
utilities.verifyInnerText(audioResponsePage.recordedResponseHelpText(), 'Your response has been recorded.');
|
542
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:00', '00:05');
|
543
|
+
});
|
544
|
+
|
545
|
+
it('When the user clicks on Confirm button of the retake popup, the previous recording should get deleted and a new recording should begin', () => {
|
546
|
+
audioResponsePage.steps.retakeRecordingStandardPreview();
|
547
|
+
audioResponsePage.steps.confirmRetake();
|
548
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
549
|
+
utilities.verifyInnerText(audioResponsePage.recordingStatusText(), 'Recording...');
|
550
|
+
utilities.verifyInnerText(audioResponsePage.recordedResponseHelpText(), 'Your response has been recorded.');
|
551
|
+
audioResponsePage.steps.verifyPlaybackTimeStandardPreview('00:00', '00:10');
|
552
|
+
});
|
553
|
+
});
|
554
|
+
});
|
@@ -26,46 +26,7 @@ describe('Create item page - Drawing response: Customize special characters, Cus
|
|
26
26
|
drawingResponsePage.steps.selectOptionsTiles([`${drawingToolbarOptionsAndAdditionalOptions.additionalOptions[0]}`]);
|
27
27
|
});
|
28
28
|
|
29
|
-
|
30
|
-
drawingResponsePage.steps.checkCustomizeSpecialCharactersCheckbox();
|
31
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.groupByLanguageRadioButton(), 'exist');
|
32
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.groupByLanguageLabel(), 'visible');
|
33
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.showOnlyCustomSpecialCharactersRadioButton(), 'exist');
|
34
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.showOnlyCustomSpecialCharactersLabel(), 'visible');
|
35
|
-
drawingResponsePage.steps.verifyGroupedByLanguageRadioButtonIsSelected();
|
36
|
-
});
|
37
|
-
|
38
|
-
it('\'Select special character languages\' label should be displayed. A \'Preview\' hyperlink should be displayed next to the label', () => {
|
39
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.selectSpecialCharacterLanguagesLabel(), 'visible');
|
40
|
-
utilities.verifyInnerText(drawingResponsePage.selectSpecialCharacterLanguagesLabel(), 'Select special character languages');
|
41
|
-
utilities.verifyElementVisibilityState(drawingResponsePage.customizeSpecialCharactersPreviewButton(), 'visible');
|
42
|
-
utilities.verifyInnerText(drawingResponsePage.customizeSpecialCharactersPreviewButton(), 'Preview');
|
43
|
-
});
|
44
|
-
|
45
|
-
it(`A total of ${specialCharactersCategories.length} options should be displayed - ${specialCharactersCategories.join('')}. By default all language options should be in selected state`, () => {
|
46
|
-
drawingResponsePage.steps.verifyCustomizeSpecialCharactersCategoryTiles(specialCharactersCategories);
|
47
|
-
drawingResponsePage.steps.verifySelectedCustomizeSpecialCharactersCategoryTiles(specialCharactersCategories);
|
48
|
-
});
|
49
|
-
|
50
|
-
it('When the user clicks on the \'Preview\' hyperlink, a special characters popup should be displayed with all the special characters segregated according to all the language options. The user should be able to close the popup by clicking on the \'Close[X]\' button', () => {
|
51
|
-
drawingResponsePage.steps.clickOnCustomizeSpecialCharactersPreviewButton();
|
52
|
-
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
|
53
|
-
//drawingResponsePage.steps.verifySpecialCharactersPreviewPopupInEditTab(specialCharacters);
|
54
|
-
//Add this verification once https://redmine.zeuslearning.com/issues/555008 is resolved
|
55
|
-
cy.log('Post-step: Closing preview popup')
|
56
|
-
drawingResponsePage.steps.closeWarningPopup();
|
57
|
-
});
|
58
|
-
|
59
|
-
it('When the user deselects any language option and opens the special characters popup by clicking on the \'Preview\' hyperlink, then the popup contents should get updated accordingly', () => {
|
60
|
-
let newSelectedCategoryList = specialCharacters.slice(1);
|
61
|
-
drawingResponsePage.steps.clickOnSpecialCharactersCategoryTile(specialCharacters[0].categoryName);
|
62
|
-
drawingResponsePage.steps.verifySpecialCharacterCategoryTileIsNotSelected(specialCharacters[0].categoryName);
|
63
|
-
drawingResponsePage.steps.clickOnCustomizeSpecialCharactersPreviewButton();
|
64
|
-
//drawingResponsePage.steps.verifySpecialCharactersPreviewPopupInEditTab(specialCharacters);
|
65
|
-
//Add this verification once https://redmine.zeuslearning.com/issues/555008 is resolved
|
66
|
-
cy.log('Post-step: Closing preview popup')
|
67
|
-
drawingResponsePage.steps.closeWarningPopup();
|
68
|
-
});
|
29
|
+
drawingResponsePage.tests.verifyCustomSpecialCharactersEditTabContent();
|
69
30
|
|
70
31
|
it('When the user has deselected any language option and opens the special characters popup in the preview tab, then the popup contents should get updated accordingly', () => {
|
71
32
|
let newSelectedCategoryList = specialCharacters.slice(1);
|
@@ -101,7 +62,6 @@ describe('Create item page - Drawing response: Customize special characters, Cus
|
|
101
62
|
drawingResponsePage.steps.verifyCustomSpecialCharactersDisplayedInPreviewTab(customSpecialCharacters);
|
102
63
|
cy.log('Post-step: Switching to edit tab');
|
103
64
|
drawingResponsePage.steps.switchToEditTab();
|
104
|
-
|
105
65
|
});
|
106
66
|
|
107
67
|
it('CSS of Customize special characters', { tags: 'css' }, () => {
|
@@ -47,18 +47,20 @@ describe('Item preview: Settings tab - Contents', () => {
|
|
47
47
|
'color': css.color.secondaryBtn,
|
48
48
|
'font-size': css.fontSize.default,
|
49
49
|
'font-weight': css.fontWeight.regular,
|
50
|
-
'background-color': css.color.
|
50
|
+
'background-color': css.color.whiteText
|
51
51
|
});
|
52
52
|
utilities.verifyCSS(itemPreviewSettingsPage.applyChangesLabel(), {
|
53
53
|
'color': css.color.successBtn,
|
54
54
|
'font-size': css.fontSize.default,
|
55
55
|
'font-weight': css.fontWeight.regular,
|
56
|
-
'background-color': css.color.successBtnBg
|
56
|
+
'background-color': css.color.successBtnBg,
|
57
|
+
'border': `1px solid ${css.color.correctAnswer}`
|
57
58
|
});
|
58
59
|
});
|
59
60
|
|
61
|
+
//Failed due to https://redmine.zeuslearning.com/issues/561262
|
60
62
|
it('Accessibility of the header', { tags: 'a11y' }, () => {
|
61
|
-
cy.checkAccessibility(itemPreviewSettingsPage.headerWrapper()
|
63
|
+
cy.checkAccessibility(itemPreviewSettingsPage.headerWrapper());
|
62
64
|
});
|
63
65
|
});
|
64
66
|
|