itemengine-cypress-automation 1.0.115 → 1.0.117

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