itemengine-cypress-automation 1.0.115 → 1.0.116
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/AudioResponseNew/{barRecorderStyle.js → barRecorderStyle.smoke.js} +181 -179
- package/cypress/e2e/ILC/AudioResponseNew/{compactRecorderStyle.js → compactRecorderStyle.smoke.js} +178 -177
- package/cypress/e2e/ILC/AudioResponseNew/editTabBasicSection.js +2 -1
- package/cypress/e2e/ILC/AudioResponseNew/{standardRecorderStyle.js → standardRecorderStyle.smoke.js} +197 -195
- package/cypress/e2e/ILC/AudioResponseNew/studentViewSettings.js +3 -3
- package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +5 -5
- package/cypress/e2e/ILC/DrawingResponse/drawingResponseAdditionalSettings.js +17 -17
- package/cypress/e2e/ILC/DrawingResponse/{drawingResponsePreviewTabContents.js → drawingResponsePreviewTabContents.smoke.js} +3 -3
- package/cypress/e2e/ILC/EssayResponse/gradingViewAndCorrectAnswerViewContents.smoke.js +1 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/allOrNothingPenaltyScoring.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/manuallyAndNonScored.js +1 -3
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsBasic.js +0 -3
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsBasic.js +1 -4
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/allOrNothingForAllView.smoke.js +0 -3
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/checkAnswerFunctionalityForAllViews.smoke.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editTabScoringSection.js +276 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/previewContentsForAllViews.smoke.js +0 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/specifyCorrectAnswerSection.js +73 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/allOrNothingPenaltyScoring.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/conditionalCheckboxScoring.js +4 -4
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/manuallyAndNonScored.js +2 -2
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsBasic.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsBasic.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/responseLevelAlternateAnswersBasicScoring.js +1 -1
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/allOrNothingForAllViews.smoke.js +4 -4
- package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/checkAnswerFunctionalityForAllViews.smoke.js +1 -1
- package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +2 -1
- package/cypress/e2e/ILC/ShortTextResponseNew/allOrNothingBasicForAllViews.smoke.js +1 -1
- package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +2 -2
- package/cypress/pages/audioResponsePage.js +13 -6
- package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +0 -27
- package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +2 -2
- package/cypress/pages/components/commonComponents.js +1 -1
- package/cypress/pages/components/figOverImageCanvasComponent.js +1 -1
- package/cypress/pages/components/playbackControlsBaseComponent.js +3 -1
- package/cypress/pages/components/scoringSectionBaseEditTab.js +0 -9
- package/cypress/pages/drawingResponsePage.js +2 -2
- package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +14 -16
- package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +112 -3
- package/cypress/pages/fillInTheGapsOverImageTextPage.js +1 -1
- package/cypress/pages/readingRulerPage.js +1 -1
- package/cypress/pages/shortTextResponsePage.js +8 -8
- package/package.json +2 -2
package/cypress/e2e/ILC/AudioResponseNew/{compactRecorderStyle.js → compactRecorderStyle.smoke.js}
RENAMED
@@ -9,7 +9,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
9
9
|
cy.loginAs('admin');
|
10
10
|
});
|
11
11
|
|
12
|
-
describe('Preview of Compact audio recorder style', () => {
|
12
|
+
describe('Preview of Compact audio recorder style', { tags: 'smoke' }, () => {
|
13
13
|
abortEarlySetup();
|
14
14
|
before(() => {
|
15
15
|
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
@@ -21,8 +21,8 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
21
21
|
it('If user selects \'Compact\' option from \'Audio recorder style\' toggle buttons, then \'Record\' button and \'Click the button to start recording...\' help text should be displayed in the preview tab', () => {
|
22
22
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewRecordButton(), 'visible');
|
23
23
|
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordButton(), 'Record');
|
24
|
-
utilities.verifyInnerText(audioResponsePage.
|
25
|
-
utilities.verifyElementVisibilityState(audioResponsePage.
|
24
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingHelpText(), 'Click the button to start recording...');
|
25
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewRecordingHelpText(), 'visible');
|
26
26
|
});
|
27
27
|
|
28
28
|
it('CSS of Preview section', { tags: 'css' }, () => {
|
@@ -35,7 +35,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
35
35
|
utilities.verifyCSS(audioResponsePage.compactPreviewRecordButton().find('svg'), {
|
36
36
|
'fill': css.color.defaultBackground
|
37
37
|
});
|
38
|
-
utilities.verifyCSS(audioResponsePage.
|
38
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRecordingHelpText(), {
|
39
39
|
'color': css.color.text,
|
40
40
|
'font-size': css.fontSize.normal,
|
41
41
|
'font-weight': css.fontWeight.regular
|
@@ -49,14 +49,14 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
49
49
|
it('When the user clicks on the \'Record\' button, a countdown should begin and help text "Preparing to record" should be displayed. The recording should start, Mic icon, \'Stop\' and \'Pause\' buttons should be displayed. Total recording time should be displayed. \'Recording...\' help text, volume meter, timer should be displayed. User should be able to view the duration of their recorded speech in minutes, displayed as \'(min:secs / min:sec)\'. The volume meter should also detect the sound levels during recording', () => {
|
50
50
|
audioResponsePage.steps.startRecordingCompactPreview();
|
51
51
|
utilities.verifyElementVisibilityState(audioResponsePage.startRecordingCountDown(), 'visible');
|
52
|
-
utilities.verifyInnerText(audioResponsePage.
|
52
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Preparing to record');
|
53
53
|
utilities.verifyElementVisibilityState(audioResponsePage.recordingMicIcon(), 'visible');
|
54
54
|
utilities.verifyElementVisibilityState(audioResponsePage.micGlowAnimation(), 'visible');
|
55
55
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewStopRecordingButton(), 'visible');
|
56
56
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPauseRecordingButton(), 'visible');
|
57
57
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewRecordButton(), 'notExist');
|
58
58
|
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
59
|
-
utilities.verifyInnerText(audioResponsePage.
|
59
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Recording...')
|
60
60
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewVolumeMeter(), 'visible');
|
61
61
|
cy.log('Waiting 2 seconds to check updated timer');
|
62
62
|
audioResponsePage.steps.addWaitToRecordAudio(2000);
|
@@ -75,7 +75,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
75
75
|
'font-size': css.fontSize.heading,
|
76
76
|
'font-weight': css.fontWeight.bold
|
77
77
|
});
|
78
|
-
utilities.verifyCSS(audioResponsePage.
|
78
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRecordingStatusText(), {
|
79
79
|
'color': css.color.text,
|
80
80
|
'font-size': css.fontSize.normal,
|
81
81
|
'font-weight': css.fontWeight.regular
|
@@ -108,11 +108,11 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
108
108
|
audioResponsePage.steps.resetQuestionPreview();
|
109
109
|
audioResponsePage.steps.startRecordingCompactPreview();
|
110
110
|
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
111
|
-
utilities.verifyInnerText(audioResponsePage.
|
111
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Recording...')
|
112
112
|
audioResponsePage.steps.addWaitToRecordAudio(4000);
|
113
113
|
audioResponsePage.steps.pauseRecordingCompactPreview();
|
114
114
|
audioResponsePage.steps.verifyRecordingTimeCompactPreview('00:05', '15:00');
|
115
|
-
utilities.verifyInnerText(audioResponsePage.
|
115
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Recording paused');
|
116
116
|
utilities.verifyInnerText(audioResponsePage.compactPreviewVolumeMeter(), '0dB');
|
117
117
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewResumeRecordingButton(), 'visible');
|
118
118
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewStopRecordingButton(), 'visible');
|
@@ -128,7 +128,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
128
128
|
utilities.verifyCSS(audioResponsePage.compactPreviewResumeRecordingButton().find('svg'), {
|
129
129
|
'fill': css.color.defaultBackground
|
130
130
|
});
|
131
|
-
utilities.verifyCSS(audioResponsePage.
|
131
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRecordingStatusText(), {
|
132
132
|
'color': css.color.text,
|
133
133
|
'font-size': css.fontSize.normal,
|
134
134
|
'font-weight': css.fontWeight.regular
|
@@ -143,7 +143,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
143
143
|
audioResponsePage.steps.resumeRecordingCompactPreview();
|
144
144
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewResumeRecordingButton(), 'notExist');
|
145
145
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPauseRecordingButton(), 'visible');
|
146
|
-
utilities.verifyInnerText(audioResponsePage.
|
146
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Recording...')
|
147
147
|
audioResponsePage.steps.addWaitToRecordAudio(1000);
|
148
148
|
audioResponsePage.steps.verifyRecordingLengthAfterResumingCompactPreview();
|
149
149
|
});
|
@@ -173,7 +173,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
173
173
|
audioResponsePage.steps.addWaitToRecordAudio(1000);
|
174
174
|
cy.log('Waiting for 1 second pausing the recording and then clicking Stop')
|
175
175
|
audioResponsePage.steps.stopRecordingCompactPreview();
|
176
|
-
utilities.verifyCSS(audioResponsePage.
|
176
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRecordingStatusText(), {
|
177
177
|
'color': css.color.text,
|
178
178
|
'font-size': css.fontSize.normal,
|
179
179
|
'font-weight': css.fontWeight.regular
|
@@ -198,7 +198,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
198
198
|
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlaybackPlayButton(), 'visible');
|
199
199
|
});
|
200
200
|
|
201
|
-
it('When recording is inprogress, recording should stop at recording length and \'Stop\' button should get replaced with Retake button. Playback button should be displayed in enabled state. \Your response has been recorded\' help message should be displayed in preview. Overlay should not be displayed in player', () => {
|
201
|
+
it('When recording is inprogress, recording should stop at maximum recording length and \'Stop\' button should get replaced with Retake button. Playback button should be displayed in enabled state. \Your response has been recorded\' help message should be displayed in preview. Overlay should not be displayed in player', () => {
|
202
202
|
cy.log('Pre-step: Switch to edit tab and set maximum recording length to 10 secs')
|
203
203
|
audioResponsePage.steps.switchToEditTab();
|
204
204
|
audioResponsePage.steps.setMaximumRecorderLength(10);
|
@@ -227,7 +227,7 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
227
227
|
});
|
228
228
|
});
|
229
229
|
|
230
|
-
describe('Playback player : Default state', () => {
|
230
|
+
describe('Playback player : Default state', { tags: 'smoke' }, () => {
|
231
231
|
abortEarlySetup();
|
232
232
|
before(() => {
|
233
233
|
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
@@ -290,193 +290,194 @@ describe('Preview of Audio response for compact audio recorder style', () => {
|
|
290
290
|
});
|
291
291
|
});
|
292
292
|
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
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.', () => {
|
306
|
-
audioResponsePage.steps.startPlaybackCompactPreview();
|
307
|
-
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
308
|
-
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:03', '00:10');
|
309
|
-
});
|
310
|
-
|
311
|
-
it('CSS of \'Preview\' section if playback is initiated', { tags: 'css' }, () => {
|
312
|
-
utilities.verifyCSS(audioResponsePage.compactPreviewPlaybackTime(), {
|
313
|
-
'color': css.color.liText,
|
314
|
-
'font-size': css.fontSize.heading,
|
315
|
-
'font-weight': css.fontWeight.bold
|
316
|
-
});
|
317
|
-
utilities.verifyCSS(audioResponsePage.compactPreviewPausePlaybackButton(), {
|
318
|
-
'background-color': css.color.secondaryBtnBg,
|
319
|
-
'color': css.color.secondaryBtn,
|
320
|
-
'font-size': css.fontSize.default,
|
321
|
-
'font-weight': css.fontWeight.semibold
|
322
|
-
});
|
323
|
-
utilities.verifyCSS(audioResponsePage.compactPreviewPausePlaybackButton().find('svg path'), {
|
324
|
-
'fill': css.color.secondaryBtn
|
293
|
+
if (!grepTags || !grepTags.includes('smoke')) {
|
294
|
+
//Note: Need to add cases of seeking using waveform
|
295
|
+
describe('Playback player : Play, pause and seek', () => {
|
296
|
+
let actualAudioSeekedInPercent = 50
|
297
|
+
abortEarlySetup();
|
298
|
+
before(() => {
|
299
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
300
|
+
cy.barsPreLoaderWait();
|
301
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
302
|
+
audioResponsePage.steps.switchToPreviewTab();
|
303
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
325
304
|
});
|
326
|
-
utilities.verifyCSS(audioResponsePage.compactPreviewRetakeButton(), {
|
327
|
-
'background-color': css.color.recordingIcon,
|
328
|
-
'color': css.color.whiteText,
|
329
|
-
'font-size': css.fontSize.default,
|
330
|
-
'font-weight': css.fontWeight.semibold
|
331
|
-
});
|
332
|
-
utilities.verifyCSS(audioResponsePage.compactPreviewRetakeButton().find('svg path'), {
|
333
|
-
'fill': css.color.defaultBackground
|
334
|
-
});
|
335
|
-
});
|
336
305
|
|
337
|
-
|
338
|
-
|
339
|
-
|
306
|
+
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.', () => {
|
307
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
308
|
+
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
309
|
+
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:03', '00:10');
|
310
|
+
});
|
340
311
|
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
312
|
+
it('CSS of \'Preview\' section if playback is initiated', { tags: 'css' }, () => {
|
313
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewPlaybackTime(), {
|
314
|
+
'color': css.color.liText,
|
315
|
+
'font-size': css.fontSize.heading,
|
316
|
+
'font-weight': css.fontWeight.bold
|
317
|
+
});
|
318
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewPausePlaybackButton(), {
|
319
|
+
'background-color': css.color.secondaryBtnBg,
|
320
|
+
'color': css.color.secondaryBtn,
|
321
|
+
'font-size': css.fontSize.default,
|
322
|
+
'font-weight': css.fontWeight.semibold
|
323
|
+
});
|
324
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewPausePlaybackButton().find('svg path'), {
|
325
|
+
'fill': css.color.secondaryBtn
|
326
|
+
});
|
327
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRetakeButton(), {
|
328
|
+
'background-color': css.color.recordingIcon,
|
329
|
+
'color': css.color.whiteText,
|
330
|
+
'font-size': css.fontSize.default,
|
331
|
+
'font-weight': css.fontWeight.semibold
|
332
|
+
});
|
333
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewRetakeButton().find('svg path'), {
|
334
|
+
'fill': css.color.defaultBackground
|
335
|
+
});
|
336
|
+
});
|
352
337
|
|
353
|
-
|
354
|
-
|
355
|
-
'background-color': css.color.secondaryBtnBg,
|
356
|
-
'color': css.color.secondaryBtn,
|
357
|
-
'font-size': css.fontSize.default,
|
358
|
-
'font-weight': css.fontWeight.semibold
|
338
|
+
it('Accessibility of \'Preview\' section if playback is initiated', { tags: 'a11y' }, () => {
|
339
|
+
cy.checkAccessibility(audioResponsePage.previewTabQuestionWrapper());
|
359
340
|
});
|
360
|
-
|
361
|
-
|
341
|
+
|
342
|
+
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', () => {
|
343
|
+
audioResponsePage.steps.resetQuestionPreview();
|
344
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
345
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
346
|
+
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
347
|
+
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:05', '00:10');
|
348
|
+
audioResponsePage.steps.pauseAndVerifyProgressBarSliderPosition();
|
349
|
+
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:05', '00:10');
|
350
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlayPlaybackButton(), 'visible');
|
351
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPausePlaybackButton(), 'notExist');
|
362
352
|
});
|
363
|
-
});
|
364
353
|
|
365
|
-
|
366
|
-
|
367
|
-
|
354
|
+
it('CSS of \'Preview\' section if playback is paused', { tags: 'css' }, () => {
|
355
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewPlayPlaybackButton(), {
|
356
|
+
'background-color': css.color.secondaryBtnBg,
|
357
|
+
'color': css.color.secondaryBtn,
|
358
|
+
'font-size': css.fontSize.default,
|
359
|
+
'font-weight': css.fontWeight.semibold
|
360
|
+
});
|
361
|
+
utilities.verifyCSS(audioResponsePage.compactPreviewPlayPlaybackButton().find('svg path'), {
|
362
|
+
'stroke': css.color.secondaryBtnActive
|
363
|
+
});
|
364
|
+
});
|
368
365
|
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlayPlaybackButton(), 'notExist');
|
373
|
-
});
|
366
|
+
it('Accessibility of \'Preview\' section if if playback is paused', { tags: 'a11y' }, () => {
|
367
|
+
cy.checkAccessibility(audioResponsePage.previewTabQuestionWrapper());
|
368
|
+
});
|
374
369
|
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
370
|
+
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.', () => {
|
371
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
372
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPausePlaybackButton(), 'visible');
|
373
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlayPlaybackButton(), 'notExist');
|
374
|
+
});
|
380
375
|
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
387
|
-
});
|
376
|
+
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', () => {
|
377
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
378
|
+
audioResponsePage.steps.addWaitToPlayAudio(1000);
|
379
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
380
|
+
});
|
388
381
|
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
382
|
+
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', () => {
|
383
|
+
audioResponsePage.steps.pausePlaybackCompactPreview();
|
384
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
385
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
386
|
+
audioResponsePage.steps.addWaitToPlayAudio(5000);
|
387
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
388
|
+
});
|
395
389
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
390
|
+
it('When the audio playback is completed, the \'Pause\' button should get replaced with \'Play\' button', () => {
|
391
|
+
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:10', '00:10');
|
392
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlayPlaybackButton(), 'visible');
|
393
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPausePlaybackButton(), 'notExist');
|
394
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(99);
|
400
395
|
});
|
401
|
-
});
|
402
|
-
});
|
403
396
|
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
audioResponsePage.steps.switchToPreviewTab();
|
411
|
-
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
397
|
+
it('CSS of progress bar in hover state', { tags: 'css' }, () => {
|
398
|
+
audioResponsePage.steps.hoverOnProgressBarSlider();
|
399
|
+
utilities.verifyCSS(audioResponsePage.progressBarSlider().parents('span[class*="MuiSlider-thumb"]'), {
|
400
|
+
'box-shadow': `${css.color.progressBarSliderHoverBackground} 0px 0px 0px 8px`
|
401
|
+
});
|
402
|
+
});
|
412
403
|
});
|
413
404
|
|
414
|
-
|
415
|
-
|
405
|
+
describe('Playback player : Volume control', () => {
|
406
|
+
abortEarlySetup();
|
407
|
+
before(() => {
|
408
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
409
|
+
cy.barsPreLoaderWait();
|
410
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
411
|
+
audioResponsePage.steps.switchToPreviewTab();
|
412
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
413
|
+
});
|
416
414
|
|
417
|
-
|
418
|
-
const playbackSpeedOptions = ['1', '1.25', '1.5', '2'];
|
419
|
-
abortEarlySetup();
|
420
|
-
before(() => {
|
421
|
-
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
422
|
-
cy.barsPreLoaderWait();
|
423
|
-
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
424
|
-
audioResponsePage.steps.switchToPreviewTab();
|
425
|
-
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
415
|
+
audioResponsePage.tests.verifyVolumeControlFunctionality();
|
426
416
|
});
|
427
417
|
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
audioResponsePage.steps.
|
433
|
-
|
434
|
-
|
435
|
-
audioResponsePage.steps.
|
436
|
-
audioResponsePage.steps.
|
437
|
-
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
438
|
-
audioResponsePage.steps.addWaitToPlayAudio(4000);
|
439
|
-
audioResponsePage.steps.pausePlaybackCompactPreview();
|
440
|
-
audioResponsePage.steps.verifyPlaybackElapsedTime(1 + (4 * playbackSpeedOptions[index]), 'Compact');
|
418
|
+
describe('Playback player : Playback speed', () => {
|
419
|
+
const playbackSpeedOptions = ['1', '1.25', '1.5', '2'];
|
420
|
+
abortEarlySetup();
|
421
|
+
before(() => {
|
422
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
423
|
+
cy.barsPreLoaderWait();
|
424
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
425
|
+
audioResponsePage.steps.switchToPreviewTab();
|
426
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
441
427
|
});
|
442
|
-
};
|
443
|
-
});
|
444
428
|
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
429
|
+
audioResponsePage.tests.verifyPlaybackSpeedContents();
|
430
|
+
|
431
|
+
for (let index = 0; index < playbackSpeedOptions.length; index++) {
|
432
|
+
it(`When the user selects playback speed option ${playbackSpeedOptions[index]}x, the audio playback speed should be changed accordingly`, () => {
|
433
|
+
audioResponsePage.steps.resetQuestionPreview();
|
434
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(12000);
|
435
|
+
utilities.hoverOverElement(audioResponsePage.playbackSpeedButton());
|
436
|
+
audioResponsePage.steps.selectPlaybackSpeed(`${playbackSpeedOptions[index]}x`);
|
437
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
438
|
+
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
439
|
+
audioResponsePage.steps.addWaitToPlayAudio(4000);
|
440
|
+
audioResponsePage.steps.pausePlaybackCompactPreview();
|
441
|
+
audioResponsePage.steps.verifyPlaybackElapsedTime(1 + (4 * playbackSpeedOptions[index]), 'Compact');
|
442
|
+
});
|
443
|
+
};
|
444
|
+
});
|
445
|
+
|
446
|
+
describe('Playback player : Retake my audio response', () => {
|
447
|
+
abortEarlySetup();
|
448
|
+
before(() => {
|
449
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
450
|
+
cy.barsPreLoaderWait();
|
451
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
452
|
+
audioResponsePage.steps.setMaximumRecorderLength(10);
|
453
|
+
audioResponsePage.steps.switchToPreviewTab();
|
454
|
+
audioResponsePage.steps.recordAndSaveAudioCompactPreview(10000);
|
455
|
+
});
|
455
456
|
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
457
|
+
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', () => {
|
458
|
+
audioResponsePage.steps.retakeRecordingCompactPreview();
|
459
|
+
utilities.verifyInnerText(dialogBoxBase.dialogBoxTitle(), 'Retake');
|
460
|
+
audioResponsePage.steps.verifyRetakePopupContents();
|
461
|
+
});
|
461
462
|
|
462
|
-
|
463
|
+
audioResponsePage.tests.verifyRetakePopupCSSAndA11y();
|
463
464
|
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
465
|
+
it('When the user clicks on \'Cancel\' button, \'Retake\' popup should close and previous state of playback player should persist', () => {
|
466
|
+
audioResponsePage.steps.cancelRetake();
|
467
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
468
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewRetakeButton(), 'visible');
|
469
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlaybackPlayButton(), 'visible');
|
470
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
471
|
+
audioResponsePage.steps.verifyPlaybackTimeCompactPreview('00:00', '00:10');
|
472
|
+
});
|
472
473
|
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
474
|
+
it('When the user clicks on Confirm button of the retake popup, the previous recording should get deleted and a new recording should begin', () => {
|
475
|
+
audioResponsePage.steps.retakeRecordingCompactPreview();
|
476
|
+
audioResponsePage.steps.confirmRetake();
|
477
|
+
audioResponsePage.steps.verifyRecordingTimeCompactPreview('00:02', '15:00');
|
478
|
+
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
|
479
|
+
utilities.verifyInnerText(audioResponsePage.compactPreviewRecordingStatusText(), 'Recording...');
|
480
|
+
});
|
480
481
|
});
|
481
|
-
}
|
482
|
+
};
|
482
483
|
});
|
@@ -78,6 +78,7 @@ describe('Create Item page - Audio response: Question instructions, Audio record
|
|
78
78
|
});
|
79
79
|
|
80
80
|
it('When the user selects "Compact" option in the Audio recorder style toggle buttons section, then "Timer", "Progress indicator", "Audio wave" and "Volume meter" options should be displayed and be selected by default in "Audio indicators" section', () => {
|
81
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
81
82
|
audioResponsePage.steps.verifyAudioIndicatorsTimeButtonSelectedState();
|
82
83
|
audioResponsePage.steps.verifyAudioIndicatorsProgressIndicatorButtonSelectedState();
|
83
84
|
audioResponsePage.steps.verifyAudioIndicatorsAudioWaveButtonSelectedState();
|
@@ -193,7 +194,7 @@ describe('Create Item page - Audio response: Question instructions, Audio record
|
|
193
194
|
|
194
195
|
it('When the user updates the \'Stop recording if silence is detected after\' value the validation text should disappear. User should be able to add only numeric values and should not able to add decimal points', () => {
|
195
196
|
audioResponsePage.steps.setStopRecordingIfSilenceIsDetectedAfter('150');
|
196
|
-
utilities.verifyElementVisibilityState(audioResponsePage.errorMessage(), '
|
197
|
+
utilities.verifyElementVisibilityState(audioResponsePage.errorMessage(), 'hidden');
|
197
198
|
audioResponsePage.steps.setStopRecordingIfSilenceIsDetectedAfter('.10.0');
|
198
199
|
audioResponsePage.steps.verifyStopRecordingIfSilenceIsDetectedInputFieldValue('100');
|
199
200
|
audioResponsePage.steps.setStopRecordingIfSilenceIsDetectedAfter('!@#abcde236');
|