itemengine-cypress-automation 1.0.113 → 1.0.114
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.js +489 -0
- package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.js +482 -0
- package/cypress/e2e/ILC/AudioResponseNew/customizePlaybackControls.js +488 -0
- package/cypress/e2e/ILC/AudioResponseNew/editAndPreviewTabScoringSection.js +92 -0
- package/cypress/e2e/ILC/AudioResponseNew/editTabBasicSection.js +229 -0
- package/cypress/e2e/ILC/AudioResponseNew/gradingViewAndCorrectAnswerViewContents.smoke.js +1 -1
- package/cypress/e2e/ILC/AudioResponseNew/headerSection.js +67 -0
- package/cypress/e2e/ILC/AudioResponseNew/previewContentsForAllViews.smoke.js +1 -1
- package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.js +11 -11
- package/cypress/e2e/ILC/AudioResponseNew/studentViewSettings.js +529 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions1.smoke.js +108 -190
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions2.js +83 -155
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions3.js +104 -315
- package/cypress/e2e/ILC/EssayResponseBasic/essayResponseBasicCustomizeFormattingOptions.js +121 -135
- package/cypress/e2e/ILC/EssayResponseMath/createItem.js +17 -0
- package/cypress/e2e/ILC/EssayResponseMath/mathCharacters.js +203 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/manuallyAndNonScored.js +121 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +236 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsBasic.js +255 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +237 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +236 -0
- package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
- package/cypress/e2e/ILC/ShortTextResponseNew/additionalSettings.js +43 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/allOrNothingBasicForAllViews.smoke.js +187 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/allOrNothingWithAlternativeAnswer.js +245 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/checkAnswerFunctionalityForAllViews.smoke.js +99 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/editTabScoringSection.js +97 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/headerSection.js +74 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/manuallyAndNonScoredScoring.js +83 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/previewContentsForAllViews.smoke.js +109 -0
- package/cypress/e2e/ILC/ShortTextResponseNew/specifyCorrectAnswerSection.js +66 -0
- package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +326 -0
- package/cypress/e2e/ILC/TextEntryMath/checkAnswerFunctionalityForAllViews.smoke.js +163 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodEquivalentStructures.js +8 -8
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodValueIsEquivalent.js +3 -3
- package/cypress/e2e/ILC/TextEntryMath/previewContentsForAllViews.smoke.js +154 -0
- package/cypress/pages/audioResponsePage.js +523 -66
- package/cypress/pages/components/autoScoredScoringPreviewTab.js +2 -0
- package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +6 -5
- package/cypress/pages/components/equationEditorFlyout.js +11 -0
- package/cypress/pages/components/essayResponseCommonComponents.js +290 -19
- package/cypress/pages/components/maximumRecorderLengthComponent.js +32 -15
- package/cypress/pages/components/playbackControlsBaseComponent.js +9 -1
- package/cypress/pages/components/questionInputFieldComponent.js +0 -7
- package/cypress/pages/essayResponseBasicPage.js +1 -26
- package/cypress/pages/essayResponsePage.js +21 -284
- package/cypress/pages/shortTextResponsePage.js +142 -103
- package/cypress/pages/textEntryMathPage.js +58 -7
- package/package.json +1 -1
@@ -0,0 +1,488 @@
|
|
1
|
+
import { audioResponsePage } from '../../../pages/audioResponsePage';
|
2
|
+
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
3
|
+
import utilities from '../../../support/helpers/utilities';
|
4
|
+
const css = Cypress.env('css');
|
5
|
+
|
6
|
+
describe('Create Item page - Audio response: Customize playback controls', () => {
|
7
|
+
before(() => {
|
8
|
+
cy.loginAs('admin');
|
9
|
+
});
|
10
|
+
|
11
|
+
describe('\'Customize playback controls (for student player)\' section', () => {
|
12
|
+
abortEarlySetup();
|
13
|
+
before(() => {
|
14
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
15
|
+
cy.barsPreLoaderWait();
|
16
|
+
});
|
17
|
+
|
18
|
+
it('\'Customize playback controls (for student player)\' accordion should be displayed and by default it should be in collapsed state', () => {
|
19
|
+
utilities.verifyInnerText(audioResponsePage.customizePlaybackControlsAccordion(), 'Customize playback controls (for student player)');
|
20
|
+
audioResponsePage.steps.verifyCustomizePlaybackControlsAccordionCollapsedState();
|
21
|
+
});
|
22
|
+
|
23
|
+
it('User should be able to expand and collapse \'Customize playback controls (for student player)\' accordion', () => {
|
24
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
25
|
+
audioResponsePage.steps.collapseCustomizePlaybackControlsAccordion();
|
26
|
+
});
|
27
|
+
|
28
|
+
it('\'Controls for playback\' label should be displayed', () => {
|
29
|
+
cy.log('Pre-step : Expanding \'Customize playback controls (for student player)\' accordion');
|
30
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
31
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackLabel(), 'Controls for playback');
|
32
|
+
});
|
33
|
+
|
34
|
+
it('\'Controls for playback\' options - "Play", "Pause", "Seek", "Volume" and "Playback speed" should be displayed. By default, all options should be in selected state', () => {
|
35
|
+
utilities.verifyElementVisibilityState(audioResponsePage.controlsForPlaybackPlayButton(), 'visible');
|
36
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackPlayButtonLabel(), 'Play');
|
37
|
+
utilities.verifyElementVisibilityState(audioResponsePage.controlsForPlaybackPauseButton(), 'visible');
|
38
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackPauseButtonLabel(), 'Pause');
|
39
|
+
utilities.verifyElementVisibilityState(audioResponsePage.controlsForPlaybackSeekButton(), 'visible');
|
40
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackSeekButtonLabel(), 'Seek');
|
41
|
+
utilities.verifyElementVisibilityState(audioResponsePage.controlsForPlaybackVolumeButton(), 'visible');
|
42
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackVolumeButtonLabel(), 'Volume');
|
43
|
+
utilities.verifyElementVisibilityState(audioResponsePage.controlsForPlaybackPlaybackSpeedButton(), 'visible');
|
44
|
+
utilities.verifyInnerText(audioResponsePage.controlsForPlaybackPlaybackSpeedButtonLabel(), 'Playback speed');
|
45
|
+
audioResponsePage.steps.verifyControlsForPlaybackPlayButtonSelectedState();
|
46
|
+
audioResponsePage.steps.verifyControlsForPlaybackPauseButtonSelectedState();
|
47
|
+
audioResponsePage.steps.verifyControlsForPlaybackSeekButtonSelectedState();
|
48
|
+
audioResponsePage.steps.verifyControlsForPlaybackVolumeButtonSelectedState();
|
49
|
+
audioResponsePage.steps.verifyControlsForPlaybackPlaybackSpeedButtonSelectedState();
|
50
|
+
});
|
51
|
+
|
52
|
+
it('CSS of \'Customize playback controls (for student player)\' section', { tags: 'css' }, () => {
|
53
|
+
utilities.verifyCSS(audioResponsePage.customizePlaybackControlsAccordion().find('.customize_recorder_label'), {
|
54
|
+
'color': css.color.accordionLabel,
|
55
|
+
'font-size': css.fontSize.default,
|
56
|
+
'font-weight': css.fontWeight.bold
|
57
|
+
});
|
58
|
+
utilities.verifyCSS(audioResponsePage.controlsForPlaybackLabel(), {
|
59
|
+
'color': css.color.sectionHeading,
|
60
|
+
'font-size': css.fontSize.normal,
|
61
|
+
'font-weight': css.fontWeight.semibold
|
62
|
+
});
|
63
|
+
utilities.verifyCSS(audioResponsePage.controlsForPlaybackPlayButton(), {
|
64
|
+
'color': css.color.defaultBackground,
|
65
|
+
'background-color': css.color.activeButtons,
|
66
|
+
'border': `1px solid ${css.color.activeButtons}`
|
67
|
+
});
|
68
|
+
utilities.verifyCSS(audioResponsePage.tickIconForOptionButtons(), {
|
69
|
+
'background-color': css.color.defaultBackground,
|
70
|
+
});
|
71
|
+
utilities.verifyCSS(audioResponsePage.tickIconForOptionButtons().find('[data-name="Icon feather-check"]'), {
|
72
|
+
'fill': css.color.activeButtons,
|
73
|
+
});
|
74
|
+
utilities.verifyCSS(audioResponsePage.controlsForPlaybackPlayButtonLabel(), {
|
75
|
+
'color': css.color.labels,
|
76
|
+
'font-size': css.fontSize.normal,
|
77
|
+
'font-weight': css.fontWeight.semibold
|
78
|
+
});
|
79
|
+
});
|
80
|
+
|
81
|
+
it('When the user deselects the \'Play\' button, all other control for playback buttons should get deselected and disabled. Progress indicator and audio waveform buttons should also get disabled from the \'Audio indicators\' section', () => {
|
82
|
+
audioResponsePage.steps.deselectControlsForPlaybackPlayButton();
|
83
|
+
utilities.verifyElementDisabled(audioResponsePage.controlsForPlaybackPauseButton());
|
84
|
+
utilities.verifyElementDisabled(audioResponsePage.controlsForPlaybackSeekButton());
|
85
|
+
utilities.verifyElementDisabled(audioResponsePage.controlsForPlaybackVolumeButton());
|
86
|
+
utilities.verifyElementDisabled(audioResponsePage.controlsForPlaybackPlaybackSpeedButton());
|
87
|
+
utilities.verifyElementDisabled(audioResponsePage.audioIndicatorsProgressIndicatorButton());
|
88
|
+
utilities.verifyElementDisabled(audioResponsePage.audioIndicatorsAudioWaveButton());
|
89
|
+
});
|
90
|
+
|
91
|
+
it('When the user selects the \'Play\' button, "Pause", "Volume" and "Playback speed" should get enabled. "Progress indicator" and "audio waveform" buttons should also get enabled from the \'Audio indicators\' section. "Seek" button should continue to stay in disabled state while "Progress indicator" is in deselected state.', () => {
|
92
|
+
audioResponsePage.steps.selectControlsForPlaybackPlayButton();
|
93
|
+
utilities.verifyElementNotDisabled(audioResponsePage.controlsForPlaybackPauseButton());
|
94
|
+
utilities.verifyElementDisabled(audioResponsePage.controlsForPlaybackSeekButton());
|
95
|
+
utilities.verifyElementNotDisabled(audioResponsePage.controlsForPlaybackVolumeButton());
|
96
|
+
utilities.verifyElementNotDisabled(audioResponsePage.controlsForPlaybackPlaybackSpeedButton());
|
97
|
+
utilities.verifyElementNotDisabled(audioResponsePage.audioIndicatorsProgressIndicatorButton());
|
98
|
+
utilities.verifyElementNotDisabled(audioResponsePage.audioIndicatorsAudioWaveButton());
|
99
|
+
audioResponsePage.steps.verifyAudioIndicatorsProgressIndicatorButtonDeselectedState();
|
100
|
+
audioResponsePage.steps.verifyAudioIndicatorsAudioWaveformButtonDeselectedState();
|
101
|
+
});
|
102
|
+
|
103
|
+
it('When the user selects the "Progress indicator" button, "Seek" button should get enabled', () => {
|
104
|
+
audioResponsePage.steps.selectAudioIndicatorsProgressIndicatorButton();
|
105
|
+
utilities.verifyElementNotDisabled(audioResponsePage.controlsForPlaybackSeekButton());
|
106
|
+
});
|
107
|
+
});
|
108
|
+
|
109
|
+
describe('Controls for playback- Play', () => {
|
110
|
+
abortEarlySetup();
|
111
|
+
before(() => {
|
112
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
113
|
+
cy.barsPreLoaderWait();
|
114
|
+
audioResponsePage.steps.setMaximumRecorderLength('5');
|
115
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
116
|
+
});
|
117
|
+
|
118
|
+
it('In standard mode, when the \'Play\' option is selected the play button should be enabled in the playback player of preview tab', () => {
|
119
|
+
audioResponsePage.steps.switchToPreviewTab();
|
120
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
121
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
122
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
123
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
124
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackPlayButton(), 'visible');
|
125
|
+
});
|
126
|
+
|
127
|
+
it('In standard mode, when the play option is deselected the play button should be disabled in the preview tab and player should not able to playback the recording', () => {
|
128
|
+
cy.log('Pre-step : Switching to Edit tab and deselecting Play button');
|
129
|
+
audioResponsePage.steps.switchToEditTab();
|
130
|
+
audioResponsePage.steps.deselectControlsForPlaybackPlayButton();
|
131
|
+
cy.log('Switching to Preview tab');
|
132
|
+
audioResponsePage.steps.switchToPreviewTab();
|
133
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
134
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
135
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
136
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
137
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
138
|
+
utilities.verifyElementDisabled(audioResponsePage.playbackPlayButton());
|
139
|
+
});
|
140
|
+
|
141
|
+
it('In compact mode, when the play option is selected the playback button should be enabled in the preview tab', () => {
|
142
|
+
cy.log('Pre-step: Switching to Edit tab and selecting compact audio recorder style and switching back to preview tab');
|
143
|
+
audioResponsePage.steps.switchToEditTab();
|
144
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
145
|
+
audioResponsePage.steps.selectControlsForPlaybackPlayButton();
|
146
|
+
audioResponsePage.steps.switchToPreviewTab();
|
147
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
148
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
149
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
150
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
151
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
152
|
+
});
|
153
|
+
|
154
|
+
it('In compact mode, when the play option is deselected the playback button should not be displayed in the preview tab and user should not able to playback the recording', () => {
|
155
|
+
cy.log('Pre-step: Switching to Edit tab');
|
156
|
+
audioResponsePage.steps.switchToEditTab();
|
157
|
+
audioResponsePage.steps.deselectControlsForPlaybackPlayButton();
|
158
|
+
cy.log('Switching to Preview tab');
|
159
|
+
audioResponsePage.steps.switchToPreviewTab();
|
160
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
161
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
162
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
163
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
164
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
165
|
+
utilities.verifyElementVisibilityState(audioResponsePage.compactPreviewPlaybackPlayButton(), 'notExist');
|
166
|
+
});
|
167
|
+
});
|
168
|
+
|
169
|
+
describe('Controls for playback - Pause', () => {
|
170
|
+
abortEarlySetup();
|
171
|
+
before(() => {
|
172
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
173
|
+
cy.barsPreLoaderWait();
|
174
|
+
audioResponsePage.steps.setMaximumRecorderLength('5');
|
175
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
176
|
+
});
|
177
|
+
|
178
|
+
it('In standard mode, when the \'Pause\' option is selected the pause button should be enabled in the preview tab', () => {
|
179
|
+
cy.log('Pre-step: Switching to Preview tab');
|
180
|
+
audioResponsePage.steps.switchToPreviewTab();
|
181
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
182
|
+
audioResponsePage.steps.switchToPreviewTab();
|
183
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
184
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
185
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
186
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
187
|
+
audioResponsePage.steps.startPlayback();
|
188
|
+
audioResponsePage.steps.verifyPausePlaybackButtonEnabledState();
|
189
|
+
});
|
190
|
+
|
191
|
+
it('In standard mode, when the pause option is deselected the pause button should be disabled in the preview tab and player should not able to pause recorded response', () => {
|
192
|
+
cy.log('Pre-step: Switching to Edit tab');
|
193
|
+
audioResponsePage.steps.switchToEditTab();
|
194
|
+
audioResponsePage.steps.deselectControlsForPlaybackPauseButton();
|
195
|
+
cy.log('Switching to Preview tab');
|
196
|
+
audioResponsePage.steps.switchToPreviewTab();
|
197
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
198
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
199
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
200
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
201
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
202
|
+
audioResponsePage.steps.startPlayback();
|
203
|
+
utilities.verifyElementDisabled(audioResponsePage.playbackPauseButton());
|
204
|
+
});
|
205
|
+
|
206
|
+
it('In compact mode, when the pause option is selected the pause button should be enabled in the preview tab', () => {
|
207
|
+
cy.log('Pre-step: Switching to Edit tab and selecting compact audio recorder style option from audio recorder style dropdown');
|
208
|
+
audioResponsePage.steps.switchToEditTab();
|
209
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
210
|
+
audioResponsePage.steps.selectControlsForPlaybackPauseButton();
|
211
|
+
cy.log('Switching to Preview tab');
|
212
|
+
audioResponsePage.steps.switchToPreviewTab();
|
213
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
214
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
215
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
216
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
217
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
218
|
+
audioResponsePage.steps.verifyPausePlaybackButtonEnabledStateCompactPreview();
|
219
|
+
});
|
220
|
+
|
221
|
+
it('In compact mode, when the pause option is deselected the pause button should be disabled in the preview tab and player should not able to paused recorded response', () => {
|
222
|
+
cy.log('Pre-step: Switching to Edit tab');
|
223
|
+
audioResponsePage.steps.switchToEditTab();
|
224
|
+
audioResponsePage.steps.deselectControlsForPlaybackPauseButton();
|
225
|
+
cy.log('Switching to Preview tab');
|
226
|
+
audioResponsePage.steps.switchToPreviewTab();
|
227
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
228
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
229
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
230
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
231
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
232
|
+
utilities.verifyElementDisabled(audioResponsePage.compactPreviewPausePlaybackButton());
|
233
|
+
});
|
234
|
+
});
|
235
|
+
|
236
|
+
describe('Controls for playback - Seek', () => {
|
237
|
+
abortEarlySetup();
|
238
|
+
before(() => {
|
239
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
240
|
+
cy.barsPreLoaderWait();
|
241
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
242
|
+
audioResponsePage.steps.switchToPreviewTab();
|
243
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
244
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
245
|
+
audioResponsePage.steps.addWaitToRecordAudio(10000);
|
246
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
247
|
+
});
|
248
|
+
|
249
|
+
it('In standard mode, when the \'Seek\' option is selected the seek functionality should be enabled in the preview tab user should be able to seek the audio from the progress bar and waveform', () => {
|
250
|
+
let actualAudioSeekedInPercent = 50
|
251
|
+
audioResponsePage.steps.startPlayback();
|
252
|
+
audioResponsePage.steps.waitForPlaybackToBeginStandardPreview();
|
253
|
+
cy.log('Clicking at the middle of the progress bar to seek till 50% of the recording');
|
254
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
255
|
+
audioResponsePage.steps.addWaitToPlayAudio(1000);
|
256
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
257
|
+
utilities.verifyElementVisibilityState(audioResponsePage.progressBarSlider(), 'visible');
|
258
|
+
utilities.hoverOverElement(audioResponsePage.playbackWaveform());
|
259
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'visible');
|
260
|
+
utilities.hoverAwayFromElement();
|
261
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'hidden');
|
262
|
+
});
|
263
|
+
|
264
|
+
it('In standard mode, when the \'Seek\' option is deselected, the progress bar should not have a slider handle and waveform should not have cursor if user hover on it and user should not be able to seek the audio from the progress bar and waveform', () => {
|
265
|
+
let actualAudioSeekedInPercent = 25
|
266
|
+
cy.log('Pre-step: Switching to Edit tab, deselecting \'Seek\' button, switching back to Preview tab and saving a record response');
|
267
|
+
audioResponsePage.steps.switchToEditTab();
|
268
|
+
audioResponsePage.steps.deselectControlsForPlaybackSeekButton();
|
269
|
+
audioResponsePage.steps.switchToPreviewTab();
|
270
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
271
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
272
|
+
audioResponsePage.steps.addWaitToRecordAudio(4000);
|
273
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
274
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
275
|
+
audioResponsePage.steps.startPlayback();
|
276
|
+
audioResponsePage.steps.waitForPlaybackToBeginStandardPreview();
|
277
|
+
audioResponsePage.steps.pausePlayback();
|
278
|
+
cy.log('Clicking at the middle of the progress bar to seek till 50% of the recording');
|
279
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
280
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
281
|
+
audioResponsePage.steps.verifyAudioWaveformProgressPosition(actualAudioSeekedInPercent);
|
282
|
+
cy.log('Clicking on the waveform to seek till 75% of the recording');
|
283
|
+
audioResponsePage.steps.seekPlaybackWaveformTo75Percent();
|
284
|
+
cy.log('Checking value of progress bar after seeking on waveform');
|
285
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
286
|
+
audioResponsePage.steps.verifyAudioWaveformProgressPosition(actualAudioSeekedInPercent);
|
287
|
+
utilities.verifyElementVisibilityState(audioResponsePage.progressBarSlider(), 'hidden');
|
288
|
+
utilities.hoverOverElement(audioResponsePage.playbackWaveform());
|
289
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'hidden');
|
290
|
+
});
|
291
|
+
|
292
|
+
it('In compact mode, when \'Seek\' option is selected user should be able to seek the audio from the progress bar and waveform', () => {
|
293
|
+
let actualAudioSeekedInPercent = 50
|
294
|
+
cy.log('Pre-step: Switching to Edit tab and selecting compact audio recorder style option from audio recorder style dropdown and switching back to preview tab and saving a recording response');
|
295
|
+
audioResponsePage.steps.switchToEditTab();
|
296
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
297
|
+
audioResponsePage.steps.selectControlsForPlaybackSeekButton();
|
298
|
+
audioResponsePage.steps.switchToPreviewTab();
|
299
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
300
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
301
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
302
|
+
audioResponsePage.steps.addWaitToRecordAudio(9000);
|
303
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
304
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
305
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
306
|
+
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
307
|
+
audioResponsePage.steps.pausePlaybackCompactPreview();
|
308
|
+
cy.log('Clicking at the middle of the progress bar to seek till 50% of the recording');
|
309
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
310
|
+
audioResponsePage.steps.addWaitToPlayAudio(1000);
|
311
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
312
|
+
utilities.verifyElementVisibilityState(audioResponsePage.progressBarSlider(), 'visible');
|
313
|
+
utilities.hoverOverElement(audioResponsePage.playbackWaveform());
|
314
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'visible');
|
315
|
+
utilities.hoverAwayFromElement();
|
316
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'hidden');
|
317
|
+
});
|
318
|
+
|
319
|
+
it('In compact mode, when \'Seek\' option is deselected, on hover the progress bar should not have a slider handle and waveform should not have cursor if user hover on it and user should not able to change the play pointer position on the progress bar and waveform', () => {
|
320
|
+
let actualAudioSeekedInPercent = 25
|
321
|
+
cy.log('Pre-step : Switching to Edit tab, deselecting \'Seek\' and switching back to Preview tab and saving a recording response');
|
322
|
+
audioResponsePage.steps.switchToEditTab();
|
323
|
+
audioResponsePage.steps.deselectControlsForPlaybackSeekButton();
|
324
|
+
audioResponsePage.steps.switchToPreviewTab();
|
325
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
326
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
327
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
328
|
+
audioResponsePage.steps.addWaitToRecordAudio(4000);
|
329
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
330
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
331
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
332
|
+
audioResponsePage.steps.waitForPlaybackToBeginCompactPreview();
|
333
|
+
audioResponsePage.steps.pausePlaybackCompactPreview();
|
334
|
+
cy.log('Clicking at the middle of the progress bar to seek till 50% of the recording');
|
335
|
+
audioResponsePage.steps.seekProgressBarSliderToCenter();
|
336
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
337
|
+
audioResponsePage.steps.verifyAudioWaveformProgressPosition(actualAudioSeekedInPercent);
|
338
|
+
cy.log('Clicking on the waveform to seek till 75% of the recording');
|
339
|
+
audioResponsePage.steps.seekPlaybackWaveformTo75Percent();
|
340
|
+
cy.log('Checking value of progress bar after seeking on waveform');
|
341
|
+
audioResponsePage.steps.verifyProgressBarSliderPosition(actualAudioSeekedInPercent);
|
342
|
+
audioResponsePage.steps.verifyAudioWaveformProgressPosition(actualAudioSeekedInPercent);
|
343
|
+
utilities.verifyElementVisibilityState(audioResponsePage.progressBarSlider(), 'hidden');
|
344
|
+
utilities.hoverOverElement(audioResponsePage.playbackWaveform());
|
345
|
+
utilities.verifyElementVisibilityState(audioResponsePage.waveformCursor(), 'hidden');
|
346
|
+
});
|
347
|
+
});
|
348
|
+
|
349
|
+
describe('Controls for playback - Volume', () => {
|
350
|
+
abortEarlySetup();
|
351
|
+
before(() => {
|
352
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
353
|
+
cy.barsPreLoaderWait();
|
354
|
+
audioResponsePage.steps.setMaximumRecorderLength('5');
|
355
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
356
|
+
});
|
357
|
+
|
358
|
+
it('In standard mode, when the \'Volume\' option is selected the volume button should be enabled in the preview tab', () => {
|
359
|
+
cy.log('Pre-step : Switches to Preview tab and saves a recording');
|
360
|
+
audioResponsePage.steps.switchToPreviewTab();
|
361
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
362
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
363
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
364
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
365
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
366
|
+
audioResponsePage.steps.startPlayback();
|
367
|
+
audioResponsePage.steps.verifyPlaybackSpeedButtonEnabledState();
|
368
|
+
});
|
369
|
+
|
370
|
+
it('In standard mode, when the volume option is deselected \'volume\' should not be displayed on the playback player', () => {
|
371
|
+
cy.log('Pre-step : User switches to Edit tab, deselects \'volume\' button, switches back to Preview tab and saves a recording');
|
372
|
+
audioResponsePage.steps.switchToEditTab();
|
373
|
+
audioResponsePage.steps.deselectControlsForPlaybackVolumeButton();
|
374
|
+
cy.log('Switching to Preview tab');
|
375
|
+
audioResponsePage.steps.switchToPreviewTab();
|
376
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
377
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
378
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
379
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
380
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
381
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
382
|
+
audioResponsePage.steps.startPlayback();
|
383
|
+
utilities.verifyElementVisibilityState(audioResponsePage.volumeControlButton(), 'notExist');
|
384
|
+
});
|
385
|
+
|
386
|
+
it('In compact mode, when the volume option is selected the volume button should be enabled in the preview tab', () => {
|
387
|
+
cy.log('Pre-step: Switching to Edit tab and selecting compact audio recorder style option from audio recorder style dropdown');
|
388
|
+
audioResponsePage.steps.switchToEditTab();
|
389
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
390
|
+
audioResponsePage.steps.selectControlsForPlaybackVolumeButton();
|
391
|
+
cy.log('Switching to Preview tab');
|
392
|
+
audioResponsePage.steps.switchToPreviewTab();
|
393
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
394
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
395
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
396
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
397
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
398
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
399
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
400
|
+
audioResponsePage.steps.verifyPlaybackSpeedButtonEnabledState();
|
401
|
+
});
|
402
|
+
|
403
|
+
it('In compact mode, when the volume option is deselected the volume button should not be displayed in the preview tab', () => {
|
404
|
+
cy.log('Pre-step : Switching to Edit tab, deselecting \'volume\' button and switching back to Preview tab');
|
405
|
+
audioResponsePage.steps.switchToEditTab();
|
406
|
+
audioResponsePage.steps.deselectControlsForPlaybackVolumeButton();
|
407
|
+
audioResponsePage.steps.switchToPreviewTab();
|
408
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
409
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
410
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
411
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
412
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
413
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
414
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
415
|
+
utilities.verifyElementVisibilityState(audioResponsePage.volumeControlButton(), 'notExist');
|
416
|
+
});
|
417
|
+
});
|
418
|
+
|
419
|
+
describe('Controls for playback - Playback speed', () => {
|
420
|
+
abortEarlySetup();
|
421
|
+
before(() => {
|
422
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
423
|
+
cy.barsPreLoaderWait();
|
424
|
+
audioResponsePage.steps.setMaximumRecorderLength('5');
|
425
|
+
audioResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
426
|
+
});
|
427
|
+
|
428
|
+
it('In standard mode, when the \'Playback speed\' option is selected the \'Playback speed\' button should be enabled in the preview tab', () => {
|
429
|
+
cy.log('Pre-step : Switches to Preview tab and saves a recording');
|
430
|
+
audioResponsePage.steps.switchToPreviewTab();
|
431
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
432
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
433
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
434
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
435
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
436
|
+
audioResponsePage.steps.startPlayback();
|
437
|
+
audioResponsePage.steps.verifyPlaybackSpeedButtonEnabledState();
|
438
|
+
});
|
439
|
+
|
440
|
+
it('In standard mode, when the \'Playback speed\' option is deselected \'Playback speed\' button should not be displayed on the playback player', () => {
|
441
|
+
cy.log('Pre-step : User switches to Edit tab, deselects \'Playback speed\' button, switches back to Preview tab and saves a recording');
|
442
|
+
audioResponsePage.steps.switchToEditTab();
|
443
|
+
audioResponsePage.steps.deselectControlsForPlaybackPlaybackSpeedButton();
|
444
|
+
cy.log('Switching to Preview tab');
|
445
|
+
audioResponsePage.steps.switchToPreviewTab();
|
446
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
447
|
+
audioResponsePage.steps.startRecordingStandardPreview();
|
448
|
+
audioResponsePage.steps.waitForRecordingToStartStandardPreview();
|
449
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
450
|
+
audioResponsePage.steps.stopRecordingStandardPreview();
|
451
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
452
|
+
audioResponsePage.steps.startPlayback();
|
453
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackSpeedButton(), 'notExist');
|
454
|
+
});
|
455
|
+
|
456
|
+
it('In compact mode, when the \'Playback speed\' option is selected the \'Playback speed\' button should be enabled in the preview tab', () => {
|
457
|
+
cy.log('Pre-step: Switching to Edit tab and selecting compact audio recorder style option from audio recorder style dropdown');
|
458
|
+
audioResponsePage.steps.switchToEditTab();
|
459
|
+
audioResponsePage.steps.selectAudioRecorderStyle('Compact');
|
460
|
+
audioResponsePage.steps.selectControlsForPlaybackPlaybackSpeedButton();
|
461
|
+
cy.log('Switching to Preview tab');
|
462
|
+
audioResponsePage.steps.switchToPreviewTab();
|
463
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
464
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
465
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
466
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
467
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
468
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
469
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
470
|
+
audioResponsePage.steps.verifyPlaybackSpeedButtonEnabledState();
|
471
|
+
});
|
472
|
+
|
473
|
+
it('In compact mode, when the \'Playback speed\' option is deselected the \'Playback speed\' button should not be displayed in the preview tab', () => {
|
474
|
+
cy.log('Pre-step : Switching to Edit tab, deselecting \'Playback speed\' button and switching back to Preview tab');
|
475
|
+
audioResponsePage.steps.switchToEditTab();
|
476
|
+
audioResponsePage.steps.deselectControlsForPlaybackPlaybackSpeedButton();
|
477
|
+
audioResponsePage.steps.switchToPreviewTab();
|
478
|
+
cy.log('Clicking on start recording and letting it record until maximum recorder length of 5 seconds is reached');
|
479
|
+
audioResponsePage.steps.startRecordingCompactPreview();
|
480
|
+
audioResponsePage.steps.waitForRecordingToStartCompactPreview();
|
481
|
+
audioResponsePage.steps.addWaitToRecordAudio(3000);
|
482
|
+
audioResponsePage.steps.stopRecordingCompactPreview();
|
483
|
+
audioResponsePage.steps.verifyResponseIsRecordedHelpText();
|
484
|
+
audioResponsePage.steps.startPlaybackCompactPreview();
|
485
|
+
utilities.verifyElementVisibilityState(audioResponsePage.playbackSpeedButton(), 'notExist');
|
486
|
+
});
|
487
|
+
});
|
488
|
+
});
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
2
|
+
import { audioResponsePage } from "../../../pages";
|
3
|
+
import utilities from "../../../support/helpers/utilities";
|
4
|
+
|
5
|
+
describe('Create question page - Audio response: Scoring', () => {
|
6
|
+
before(() => {
|
7
|
+
cy.loginAs('admin');
|
8
|
+
});
|
9
|
+
|
10
|
+
describe('Scoring section contents', () => {
|
11
|
+
abortEarlySetup();
|
12
|
+
before(() => {
|
13
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
14
|
+
cy.barsPreLoaderWait();
|
15
|
+
});
|
16
|
+
|
17
|
+
audioResponsePage.tests.verifyScoringTypeLabelAndDropdown('Manually scored');
|
18
|
+
});
|
19
|
+
|
20
|
+
describe('Scoring section: Manually scored scoring type', () => {
|
21
|
+
abortEarlySetup();
|
22
|
+
before(() => {
|
23
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
24
|
+
cy.barsPreLoaderWait();
|
25
|
+
});
|
26
|
+
|
27
|
+
it('When the user selects \'Manually scored\' option from the Scoring type dropdown, then the \'Points\' and \'Minimum score awarded (if attempted)\' labels and input fields should be displayed', () => {
|
28
|
+
audioResponsePage.steps.expandScoringTypeDropdown();
|
29
|
+
audioResponsePage.steps.selectOptionFromScoringTypeDropdown('Manually scored');
|
30
|
+
audioResponsePage.steps.verifyDefaultPointsLabelAndInputField();
|
31
|
+
audioResponsePage.steps.verifyMinimumScoringLabelAndDropdownDefaultState();
|
32
|
+
});
|
33
|
+
|
34
|
+
audioResponsePage.tests.verifyPointsFieldErrorState(10);
|
35
|
+
});
|
36
|
+
|
37
|
+
describe('Question Preview: Manually Scored', () => {
|
38
|
+
abortEarlySetup();
|
39
|
+
before(() => {
|
40
|
+
cy.log('Adding question instructions and options, select Manually Scored scoring type and add points for the question');
|
41
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
42
|
+
cy.barsPreLoaderWait();
|
43
|
+
audioResponsePage.steps.addTextInQuestionInstructionsInputField('Record an audio');
|
44
|
+
audioResponsePage.steps.allotPoints(10);
|
45
|
+
audioResponsePage.steps.switchToPreviewTab();
|
46
|
+
});
|
47
|
+
|
48
|
+
it('In Preview tab, Question instructions and audio recorder interface should be displayed', () => {
|
49
|
+
utilities.verifyInnerText(audioResponsePage.questionInstructionsText(), 'Record an audio')
|
50
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRecorderWrapper(), 'visible');
|
51
|
+
});
|
52
|
+
|
53
|
+
audioResponsePage.tests.verifyGradingStudentViewRadioButtonAndScoringTypeInPreviewTab('Manually scored')
|
54
|
+
});
|
55
|
+
|
56
|
+
describe('Scoring section: Non Scored scoring type', () => {
|
57
|
+
abortEarlySetup();
|
58
|
+
before(() => {
|
59
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
60
|
+
cy.barsPreLoaderWait();
|
61
|
+
});
|
62
|
+
|
63
|
+
it('User should be able to select \'Non Scored\' option from the Scoring Type dropdown', () => {
|
64
|
+
cy.log('Pre-step: Opening the scoring type dropdown.')
|
65
|
+
audioResponsePage.steps.expandScoringTypeDropdown();
|
66
|
+
audioResponsePage.steps.selectOptionFromScoringTypeDropdown('Non scored');
|
67
|
+
});
|
68
|
+
|
69
|
+
audioResponsePage.tests.verifyScoringSectionContentsForNonScoredScoringType();
|
70
|
+
|
71
|
+
audioResponsePage.tests.verifyPointsLabelAndInputFieldForNonScoredScoringType();
|
72
|
+
});
|
73
|
+
|
74
|
+
describe('Question Preview: Non scored scoring', () => {
|
75
|
+
abortEarlySetup();
|
76
|
+
before(() => {
|
77
|
+
audioResponsePage.steps.navigateToCreateQuestion('audio response');
|
78
|
+
cy.barsPreLoaderWait();
|
79
|
+
audioResponsePage.steps.addTextInQuestionInstructionsInputField('Record an audio');
|
80
|
+
audioResponsePage.steps.expandScoringTypeDropdown();
|
81
|
+
audioResponsePage.steps.selectOptionFromScoringTypeDropdown('Non scored');
|
82
|
+
audioResponsePage.steps.switchToPreviewTab();
|
83
|
+
});
|
84
|
+
|
85
|
+
it('In Preview tab, Question instructions and audio recorder interface should be displayed', () => {
|
86
|
+
utilities.verifyInnerText(audioResponsePage.questionInstructionsText(), 'Record an audio')
|
87
|
+
utilities.verifyElementVisibilityState(audioResponsePage.standardPreviewRecorderWrapper(), 'visible');
|
88
|
+
});
|
89
|
+
|
90
|
+
audioResponsePage.tests.verifyGradingStudentViewRadioButtonAndScoringTypeInPreviewTab('Non scored');
|
91
|
+
});
|
92
|
+
});
|