itemengine-cypress-automation 1.0.131-updateILCrepo6March-02c78d1.0 → 1.0.132

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.smoke.js +3 -6
  2. package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +2 -4
  3. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +3 -7
  4. package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions1.smoke.js +2 -0
  5. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/additionalSettings.js +154 -0
  6. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/dropzoneAlternateAnswerPopup.js +170 -0
  7. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/dropzoneSettings.js +335 -0
  8. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/editTabBasicSection.js +142 -0
  9. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/headerSection.js +76 -0
  10. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +194 -0
  11. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +8 -8
  12. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +341 -0
  13. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettingsForGroupedLayout.js +241 -0
  14. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/allOrNothingForAllView.smoke.js +1 -1
  15. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettingsForGroupedLayout.js +3 -3
  16. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +350 -0
  17. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToCorrectPoints.js +356 -0
  18. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +402 -0
  19. package/cypress/e2e/ILC/Graphing/previewContentsForAllViews.smoke.js +4 -4
  20. package/cypress/e2e/ILC/SimpleCalculator/editTabFunctionality.js +242 -0
  21. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +11 -16
  22. package/cypress/e2e/ILC/TextEntryMath/checkAnswerFunctionalityForAllViews.smoke.js +4 -6
  23. package/cypress/e2e/ILC/TextEntryMath/previewContentsForAllViews.smoke.js +3 -4
  24. package/cypress/fixtures/theme/ilc.json +2 -0
  25. package/cypress/pages/audioResponsePage.js +1 -1
  26. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +1 -1
  27. package/cypress/pages/components/correctIncorrectAnswerLabelComponent.js +1 -1
  28. package/cypress/pages/components/fillInTheGapsDragAndDropCommonComponents.js +35 -5
  29. package/cypress/pages/components/imageCanvasComponent.js +1 -1
  30. package/cypress/pages/components/index.js +2 -1
  31. package/cypress/pages/components/questionInputFieldComponent.js +31 -0
  32. package/cypress/pages/components/responseAreaSettingsPopupComponent.js +74 -0
  33. package/cypress/pages/drawingResponsePage.js +1 -1
  34. package/cypress/pages/fillInTheGapsDragAndDropPage.js +318 -62
  35. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +2 -26
  36. package/cypress/pages/fillInTheGapsOverImageDropdownPage.js +24 -1
  37. package/cypress/pages/simpleCalculatorPage.js +140 -10
  38. package/cypress/pages/textEntryMathPage.js +3 -2
  39. package/package.json +2 -2
@@ -0,0 +1,194 @@
1
+ import { fillInTheGapsDragAndDropPage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+ const css = Cypress.env('css');
5
+ const penaltyScoringTypeArray = ['No penalty points', 'Penalty points for the entire question', 'Penalty points for each incorrect dropzone'];
6
+
7
+ describe('Create item page - Fill in the gaps with drag and drop: Minimum scoring, Penalty scoring, Rounding - Edit tab', () => {
8
+ before(() => {
9
+ cy.loginAs('admin');
10
+ });
11
+
12
+ describe('Scoring section: Minimum scoring - Edit tab', () => {
13
+ abortEarlySetup();
14
+ before(() => {
15
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
16
+ cy.barsPreLoaderWait();
17
+ fillInTheGapsDragAndDropPage.steps.allotPoints(10);
18
+ });
19
+
20
+ fillInTheGapsDragAndDropPage.tests.verifyMinimumScoringDropdown();
21
+
22
+ fillInTheGapsDragAndDropPage.tests.verifyMinimumPointsLabelAndInputField();
23
+
24
+ fillInTheGapsDragAndDropPage.tests.verifyMinimumPointsFieldErrorState();
25
+ });
26
+
27
+ describe('Scoring section: Penalty scoring - Edit tab', () => {
28
+ abortEarlySetup();
29
+ before(() => {
30
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
31
+ cy.barsPreLoaderWait();
32
+ fillInTheGapsDragAndDropPage.steps.allotPoints(10);
33
+ fillInTheGapsDragAndDropPage.steps.selectAutoScoredScoringSubtype('Partial equal weights');
34
+ });
35
+
36
+ fillInTheGapsDragAndDropPage.tests.verifyPenaltyScoringDropdown(penaltyScoringTypeArray);
37
+
38
+ fillInTheGapsDragAndDropPage.tests.verifyPenaltyPointsLabelAndInputField();
39
+
40
+ fillInTheGapsDragAndDropPage.tests.verifyPenaltyPointsErrorState();
41
+
42
+ it('When the user selects \'Penalty points for each incorrect dropzone\' from the penalty scoring dropdown, \'Automatically set penalty for each incorrect dropzone to total points / no. of incorrect dropzones\' label and checkbox should be displayed, by default the checkbox should be unchecked. Two radio buttons with labels - \'Specify total penalty points\' and \'Specify points for each incorrect option\' should be displayed. By default, \'Specify total penalty points\' radio button should be checked', () => {
43
+ fillInTheGapsDragAndDropPage.steps.expandPenaltyScoringDropdown();
44
+ fillInTheGapsDragAndDropPage.steps.selectOptionFromPenaltyScoringDropdown('Penalty points for each incorrect dropzone');
45
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.automaticallySetPenaltyPointsCheckboxLabel(), 'Automatically set penalty for each incorrect dropzone to total points / no. of incorrect dropzones');
46
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.specifyTotalPenaltyPointsRadioButtonLabel(), 'Specify total penalty points');
47
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.specifyPointsForEachIncorrectOptionRadioButtonLabel(), 'Specify points for each incorrect dropzone');
48
+ fillInTheGapsDragAndDropPage.steps.verifyAutomaticallySetPenaltyPointsCheckboxUncheckedState();
49
+ fillInTheGapsDragAndDropPage.steps.verifySpecifyTotalPenaltyPointsRadioButtonCheckedState();
50
+ fillInTheGapsDragAndDropPage.steps.verifySpecifyPointsForEachIncorrectOptionRadioButtonUncheckedState();
51
+ });
52
+
53
+ it('When \'Specify total penalty points\' is selected, a penalty points detail section with \'Total penalty points\' label and empty input field, \'Penalty points for each incorrect dropzone: -\' label should be displayed', () => {
54
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionInputFieldLabel(), 'Total penalty points');
55
+ fillInTheGapsDragAndDropPage.steps.verifyTotalPenaltyPointsValue('');
56
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), 'Penalty points for each incorrect dropzone: -');
57
+ });
58
+
59
+ it('When the user allots total penalty points, then \'points for each incorrect option\' should get updated as per the count of incorrect options available', () => {
60
+ fillInTheGapsDragAndDropPage.steps.allotTotalPenaltyPoints(5);
61
+ fillInTheGapsDragAndDropPage.steps.verifyPenaltyPointsForEachIncorrectDropzone(2.5);
62
+ });
63
+
64
+ it('When the user adds a new dropzone, then \'points for each incorrect option\' should get updated accordingly', () => {
65
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
66
+ fillInTheGapsDragAndDropPage.steps.verifyPenaltyPointsForEachIncorrectDropzone(1.67);
67
+ });
68
+
69
+ it('When the user deletes a dropzone, then \'points for each incorrect option\' should get updated accordingly', () => {
70
+ fillInTheGapsDragAndDropPage.steps.deleteAResponseArea(0);
71
+ fillInTheGapsDragAndDropPage.steps.verifyPenaltyPointsForEachIncorrectDropzone(2.5);
72
+ });
73
+
74
+ it('CSS of the penalty points section - Total penalty points', { tags: 'css' }, () => {
75
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.automaticallySetPenaltyPointsCheckboxLabel(), {
76
+ 'color': css.color.labelText,
77
+ 'font-size': css.fontSize.default,
78
+ 'font-weight': css.fontWeight.regular
79
+ });
80
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.automaticallySetPenaltyPointsCheckbox().parent().find('svg'), {
81
+ 'fill': css.color.uncheckedCheckbox
82
+ });
83
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.specifyTotalPenaltyPointsRadioButton().parent().find('svg'), {
84
+ 'fill': css.color.activeButtons
85
+ });
86
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.specifyPointsForEachIncorrectOptionRadioButton().parent().find('svg path'), {
87
+ 'fill': css.color.uncheckedCheckbox
88
+ });
89
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.specifyTotalPenaltyPointsRadioButtonLabel(), {
90
+ 'color': css.color.labelText,
91
+ 'font-size': css.fontSize.default,
92
+ 'font-weight': css.fontWeight.regular
93
+ });
94
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.specifyPointsForEachIncorrectOptionRadioButtonLabel(), {
95
+ 'color': css.color.labelText,
96
+ 'font-size': css.fontSize.default,
97
+ 'font-weight': css.fontWeight.regular
98
+ });
99
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionInputFieldLabel(), {
100
+ 'color': css.color.labelText,
101
+ 'font-size': css.fontSize.default,
102
+ 'font-weight': css.fontWeight.regular
103
+ });
104
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.totalPenaltyPointsInputField(), {
105
+ 'color': css.color.text,
106
+ 'font-size': css.fontSize.default,
107
+ 'font-weight': css.fontWeight.regular
108
+ });
109
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), {
110
+ 'color': css.color.labelText,
111
+ 'font-size': css.fontSize.default,
112
+ 'font-weight': css.fontWeight.regular
113
+ });
114
+ });
115
+
116
+ it('Accessibility of the penalty points section - Total penalty points', { tags: 'a11y' }, () => {
117
+ cy.checkAccessibility(fillInTheGapsDragAndDropPage.automaticallySetPenaltyPointsCheckboxLabel().parents('.penalty-score-for-each-incorrect-wrapper'));
118
+ });
119
+
120
+ it('When the user selects \'Specify points for each incorrect answer\', a penalty points detail section with \'Penalty points for each incorrect dropzone:\' label and empty input field, \'Total penalty points: -\' label should be displayed', () => {
121
+ cy.log('Pre-step: Clearing the total penalty points input field')
122
+ fillInTheGapsDragAndDropPage.steps.clearTotalPenaltyPointsInputField();
123
+ fillInTheGapsDragAndDropPage.steps.selectPenaltyPointsForEachIncorrectOptionType('Specify points for each incorrect option');
124
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionInputFieldLabel(), 'Penalty points for each incorrect dropzone');
125
+ fillInTheGapsDragAndDropPage.steps.verifyPenaltyPointsForEachIncorrectDropzoneValue('');
126
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), 'Total penalty points: -');
127
+ });
128
+
129
+ it('When the user allots Penalty points for each incorrect dropzone, then \'Total penalty points\' should get updated as per the count of incorrect options available', () => {
130
+ fillInTheGapsDragAndDropPage.steps.allotPenaltyPointsForEachIncorrectDropzone(1);
131
+ fillInTheGapsDragAndDropPage.steps.verifyTotalPenaltyPoints(2);
132
+ });
133
+
134
+ it('When the user adds a new option, then \'Total penalty points\' should get updated accordingly', () => {
135
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
136
+ fillInTheGapsDragAndDropPage.steps.verifyTotalPenaltyPoints(3);
137
+ });
138
+
139
+ it('When the user deletes an option, then \'points for each incorrect option\' should get updated accordingly', () => {
140
+ fillInTheGapsDragAndDropPage.steps.deleteAResponseArea(0);
141
+ fillInTheGapsDragAndDropPage.steps.verifyTotalPenaltyPoints(2);
142
+ });
143
+
144
+ it('CSS of the penalty points section - Penalty points for each incorrect dropzone', { tags: 'css' }, () => {
145
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionInputFieldLabel(), {
146
+ 'color': css.color.labelText,
147
+ 'font-size': css.fontSize.default,
148
+ 'font-weight': css.fontWeight.regular
149
+ });
150
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.penaltyPointsForEachIncorrectOptionInputField(), {
151
+ 'color': css.color.text,
152
+ 'font-size': css.fontSize.default,
153
+ 'font-weight': css.fontWeight.regular
154
+ });
155
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), {
156
+ 'color': css.color.labelText,
157
+ 'font-size': css.fontSize.default,
158
+ 'font-weight': css.fontWeight.regular
159
+ });
160
+ });
161
+
162
+ it('Accessibility of the penalty points section - Penalty points for each incorrect dropzone', { tags: 'a11y' }, () => {
163
+ cy.checkAccessibility(fillInTheGapsDragAndDropPage.automaticallySetPenaltyPointsCheckboxLabel().parents('.penalty-score-for-each-incorrect-wrapper'));
164
+ });
165
+
166
+ it('When the user switches to the \'Specify total penalty points\' option, the total penalty points input field should be filled as per the total penalty points in \'Specify points for each incorrect option\'', () => {
167
+ fillInTheGapsDragAndDropPage.steps.selectPenaltyPointsForEachIncorrectOptionType('Specify total penalty points');
168
+ fillInTheGapsDragAndDropPage.steps.verifyTotalPenaltyPointsValue(2);
169
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), 'Penalty points for each incorrect dropzone: 1');
170
+ });
171
+
172
+ it('When the user checks the \'Automatically set penalty for each incorrect dropzone to total points / no. of incorrect dropzones\' checkbox, both radio buttons should get disabled, \'Specify points for each incorrect option\' should get checked, in the penalty points details section, \'Penalty points for each incorrect dropzone: #\' and \'Total penalty points: #\' should be displayed as per the alloted points and available incorrect options', () => {
173
+ fillInTheGapsDragAndDropPage.steps.checkAutomaticallySetPenaltyPointsCheckbox();
174
+ fillInTheGapsDragAndDropPage.steps.verifySpecifyTotalPenaltyPointsDisabledState();
175
+ fillInTheGapsDragAndDropPage.steps.verifySpecifyPointsForEachIncorrectOptionRadioButtonSelectedAndDisabledState();
176
+ utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), 0), 'Penalty points for each incorrect dropzone: 5');
177
+ utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsDragAndDropPage.penaltyPointsDetailsSectionAllottedPointsLabel(), 1), 'Total penalty points: 10');
178
+ });
179
+ });
180
+
181
+ describe('Scoring section: Rounding - Edit tab', () => {
182
+ abortEarlySetup();
183
+ before(() => {
184
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
185
+ cy.barsPreLoaderWait();
186
+ fillInTheGapsDragAndDropPage.steps.allotPoints(10);
187
+ fillInTheGapsDragAndDropPage.steps.selectAutoScoredScoringSubtype('Partial equal weights')
188
+ });
189
+
190
+ fillInTheGapsDragAndDropPage.tests.verifyRoundingDropdown();
191
+
192
+ fillInTheGapsDragAndDropPage.tests.verifyRoundNegativeScoreToZeroLabelAndCheckbox();
193
+ });
194
+ });
@@ -21,6 +21,11 @@ describe('Preview tab contents for all views', () => {
21
21
  fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop the options in appropriate dropzone');
22
22
  fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(1);
23
23
  fillInTheGapsDragAndDropPage.steps.addResponseArea();
24
+ cy.log('Add equation to option input field')
25
+ fillInTheGapsDragAndDropPage.steps.enterTextInOptionInputField(2, 'Solve the following');
26
+ fillInTheGapsDragAndDropPage.steps.focusInOptionsInputField(2);
27
+ fillInTheGapsDragAndDropPage.steps.selectEquationEditorOptionFromCKEditorToolbar();
28
+ fillInTheGapsDragAndDropPage.steps.addGenericEquationUsingEquationEditorToCKEditorInputField();
24
29
  cy.log('Add image to option input field')
25
30
  fillInTheGapsDragAndDropPage.steps.focusInOptionsInputField(0);
26
31
  fillInTheGapsDragAndDropPage.steps.selectImageOptionFromCKEditorToolbar();
@@ -30,12 +35,7 @@ describe('Preview tab contents for all views', () => {
30
35
  fillInTheGapsDragAndDropPage.steps.focusInOptionsInputField(1);
31
36
  fillInTheGapsDragAndDropPage.steps.selectBoldOptionFromCKEditorToolbar();
32
37
  fillInTheGapsDragAndDropPage.steps.enterTextInOptionInputField(1, 'This is a bold option');
33
- cy.log('Add equation to option input field')
34
- fillInTheGapsDragAndDropPage.steps.enterTextInOptionInputField(2, 'Solve the following');
35
- fillInTheGapsDragAndDropPage.steps.focusInOptionsInputField(2);
36
- fillInTheGapsDragAndDropPage.steps.selectEquationEditorOptionFromCKEditorToolbar();
37
- fillInTheGapsDragAndDropPage.steps.addGenericEquationUsingEquationEditorToCKEditorInputField();
38
- fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'This is a bold option': 0, 'Solve the following': 1 , 'Petals': 2});
38
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Solve the following': 1, 'Petals': 2, 'This is a bold option': 0 });
39
39
  fillInTheGapsDragAndDropPage.steps.allotPoints(10);
40
40
  fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
41
41
  break;
@@ -85,7 +85,7 @@ describe('Preview tab contents for all views', () => {
85
85
  fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(1, '');
86
86
  fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(2, '');
87
87
  });
88
-
88
+
89
89
  it(`When the user has added image, equation, bold text to the options input fields, then they should be displayed in the options container in ${view}`, () => {
90
90
  fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionWithImageInPreviewTab(0);
91
91
  fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionWithBoldTextInPreviewTab(1);
@@ -97,7 +97,7 @@ describe('Preview tab contents for all views', () => {
97
97
  });
98
98
 
99
99
  it('User should be able to drag and drop image, bold text and equation options in the dropzone', () => {
100
- fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'This is a bold option': 0, 'Solve the following': 1 , 'Petals': 2});
100
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'This is a bold option': 0, 'Solve the following': 1, 'Petals': 2 });
101
101
  fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(2, 'Petals');
102
102
  fillInTheGapsDragAndDropPage.steps.verifyDropzoneWithImageInPreviewTab(2);
103
103
  fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(0, 'This is a bold option');
@@ -0,0 +1,341 @@
1
+
2
+ import { fillInTheGapsDragAndDropPage } from "../../../pages";
3
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
4
+ import utilities from "../../../support/helpers/utilities";
5
+ const css = Cypress.env('css');
6
+ const options = ['Petals', 'Leaves', 'Roots', 'Stem', 'Seeds', 'Flower'];
7
+
8
+ describe('Create Item page - Fill in the gaps with drag and drop: Student view settings', () => {
9
+ before(() => {
10
+ cy.loginAs('admin');
11
+ });
12
+
13
+ describe('Randomize options : Edit tab', () => {
14
+ abortEarlySetup();
15
+ before(() => {
16
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
17
+ cy.barsPreLoaderWait();
18
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
19
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
20
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
21
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
22
+ fillInTheGapsDragAndDropPage.steps.allotPoints(5);
23
+ });
24
+
25
+ fillInTheGapsDragAndDropPage.tests.verifyStudentViewSettingsLabelAndCSS();
26
+
27
+ it('\'Randomize options\' checkbox and label should be displayed and by default it should be unchecked', () => {
28
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.randomizeOptionsLabel(), 'Randomize options');
29
+ utilities.verifyElementVisibilityState(fillInTheGapsDragAndDropPage.randomizeOptionsCheckbox(), 'exist');
30
+ fillInTheGapsDragAndDropPage.steps.verifyRandomizeOptionsCheckboxUnchecked();
31
+ });
32
+
33
+ fillInTheGapsDragAndDropPage.tests.verifyRandomizeOptionsCheckboxAndLabelUncheckedCSS();
34
+
35
+ it('When the \'Randomize options\' functionality is disabled, the options in the specify correct answer section should be displayed in the order in which the user has set them in the \'Options\' section', () => {
36
+ fillInTheGapsDragAndDropPage.steps.verifyRandomizeOptionsCheckboxUnchecked();
37
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(options);
38
+ });
39
+
40
+ it('When the user enables the \'Randomize options\' functionality, then the options in the specify correct answer section should be in the order in which the user has set them in the \'Options\' section', () => {
41
+ fillInTheGapsDragAndDropPage.steps.checkRandomizeOptionsCheckbox();
42
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(options);
43
+ });
44
+
45
+ fillInTheGapsDragAndDropPage.tests.verifyRandomizeOptionsCheckboxCheckedCSSAndA11y();
46
+ });
47
+
48
+ describe('Randomize options : Preview tab', () => {
49
+ let optionsArray = [];
50
+ abortEarlySetup();
51
+ before(() => {
52
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
53
+ cy.barsPreLoaderWait();
54
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
55
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
56
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
57
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
58
+ fillInTheGapsDragAndDropPage.steps.allotPoints(5);
59
+ });
60
+
61
+ it('When the \'Randomize options\' functionality is disabled, options in the preview tab should be displayed in the order in which the user has set them in the \'Draggable options\' section', () => {
62
+ fillInTheGapsDragAndDropPage.steps.verifyRandomizeOptionsCheckboxUnchecked();
63
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
64
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(options);
65
+ });
66
+
67
+ it('When the user enables the \'Randomize options\' functionality, then options in preview tab should be displayed in a random order', () => {
68
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
69
+ fillInTheGapsDragAndDropPage.steps.checkRandomizeOptionsCheckbox();
70
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
71
+ fillInTheGapsDragAndDropPage.steps.verifyRandomizeOptionOrder(options);
72
+ optionsArray = fillInTheGapsDragAndDropPage.steps.getOptionsArray();
73
+ });
74
+
75
+ it('When the user switches to \'Edit tab\' and does not modify any question properties, then the order of the options should not change in the preview tab', () => {
76
+ fillInTheGapsDragAndDropPage.steps.resetQuestionPreview();
77
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(optionsArray);
78
+ });
79
+
80
+ it('When the user switches to \'Edit tab\' and modifies any of question properties, then the order of the options should change from the previous random order', () => {
81
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
82
+ fillInTheGapsDragAndDropPage.steps.allotPoints(12);
83
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
84
+ fillInTheGapsDragAndDropPage.steps.verifyRandomizeOptionOrder(options);
85
+ fillInTheGapsDragAndDropPage.steps.verifyOptionsAreRerandomized(optionsArray);
86
+ });
87
+
88
+ it('When the user disables the \'Randomize options\' functionality, then the options in the preview tab should be displayed in the order in which the user has set them in the \'Options\' section', () => {
89
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab()
90
+ fillInTheGapsDragAndDropPage.steps.uncheckRandomizeOptionsCheckbox();
91
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
92
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(options);
93
+ });
94
+ });
95
+
96
+ describe('Enable outer border : Edit tab', () => {
97
+ abortEarlySetup();
98
+ before(() => {
99
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
100
+ cy.barsPreLoaderWait();
101
+ });
102
+
103
+ fillInTheGapsDragAndDropPage.tests.verifyEnableOuterBorderContents();
104
+ });
105
+
106
+ describe('Enable outer border : Preview tab', () => {
107
+ abortEarlySetup();
108
+ before(() => {
109
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
110
+ cy.barsPreLoaderWait();
111
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
112
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
113
+ });
114
+
115
+ it('When the \'Enable outer border\' checkbox is in checked state, an outer border over the question preview should be visible', () => {
116
+ utilities.verifyElementVisibilityState(fillInTheGapsDragAndDropPage.questionBorderPreviewTab(), 'visible');
117
+ });
118
+
119
+ it('CSS of the outer border', { tags: 'css' }, () => {
120
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.questionBorderPreviewTab(), {
121
+ 'border': `1px solid ${css.color.draggableOptionsContainerBorder}`
122
+ });
123
+ });
124
+
125
+ it('When the user unchecks the \'Enable outer border\' checkbox, then the outer border over the question preview should not be displayed', () => {
126
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
127
+ fillInTheGapsDragAndDropPage.steps.uncheckEnableOuterBorderCheckbox();
128
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab()
129
+ fillInTheGapsDragAndDropPage.steps.verifyQuestionBorderNotExist();
130
+ });
131
+
132
+ it('CSS of \'Enable outer border\' checkbox - unchecked state', { tags: 'css' }, () => {
133
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
134
+ utilities.verifyCSS(fillInTheGapsDragAndDropPage.enableOuterBorderCheckbox().parent().find('svg'), {
135
+ 'fill': css.color.uncheckedCheckbox
136
+ });
137
+ });
138
+
139
+ it('Accessibility of \'Enable outer border\' checkbox - unchecked state', { tags: 'a11y' }, () => {
140
+ cy.checkAccessibility(fillInTheGapsDragAndDropPage.enableOuterBorderCheckbox().parents('[data-ngie-testid="enable-outer-border-checkbox"]'));
141
+ });
142
+ });
143
+
144
+ describe('Allow multiple instances of same draggable option : Edit tab', () => {
145
+ abortEarlySetup();
146
+ before(() => {
147
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
148
+ cy.barsPreLoaderWait();
149
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
150
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
151
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
152
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
153
+ });
154
+
155
+ it('When the \'Allow multiple instances of same draggable option\' functionality is disabled, then on dropping the option in a dropzone, the draggable options should get removed from the options container', () => {
156
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Flower': 0 });
157
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(['Petals', 'Leaves', 'Roots', 'Stem', 'Seeds']);
158
+ });
159
+
160
+ fillInTheGapsDragAndDropPage.tests.verifyAllowMultipleInstancesOfSameDraggableOptionCheckboxAndLabelUncheckedCSS();
161
+
162
+ it('When the user enables the \'Allow multiple instances of same draggable option\' functionality, then on setting correct answer in a dropzone, the draggable options should persist in the options container', () => {
163
+ fillInTheGapsDragAndDropPage.steps.checkAllowMultipleInstancesOfSameDraggableOptionCheckbox();
164
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Seeds': 1 });
165
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(options);
166
+ });
167
+
168
+ fillInTheGapsDragAndDropPage.tests.verifyAllowMultipleInstancesOfSameDraggableOptionCheckboxCheckedCSSAndA11y();
169
+
170
+ it('The user should be able to use the same draggable option for multiple dropzone', () => {
171
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Seeds': 2 });
172
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInDropzoneSpecifyCorrectAnswerSection(1, ['Seeds']);
173
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInDropzoneSpecifyCorrectAnswerSection(2, ['Seeds']);
174
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(options);
175
+ });
176
+
177
+ it('When the user removes the draggable option and moves it into the options container, only one option should be displayed in the options container', () => {
178
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInOptionsContainerInSpecifyCorrectAnswerSection('Seeds');
179
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInOptionsContainerInSpecifyCorrectAnswerSection('Seeds');
180
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(options);
181
+ });
182
+
183
+ it('When the user disables the \'Allow multiple instances of same draggable option\' functionality, the duplicate option set as correct answer should get removed from a dropzone and the draggable option should also not exist in the options container of the \'Specify correct answer\' section', () => {
184
+ cy.log('Pre step: Setting identical options as correct responses')
185
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Seeds': 1 });
186
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Seeds': 2 });
187
+ fillInTheGapsDragAndDropPage.steps.uncheckAllowMultipleInstancesOfSameDraggableOptionCheckbox();
188
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInDropzoneSpecifyCorrectAnswerSection(1, ['Seeds']);
189
+ fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextSpecifyCorrectAnswerSection(2, '');
190
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(['Petals', 'Leaves', 'Roots', 'Stem']);
191
+ });
192
+ });
193
+
194
+ describe('Allow multiple instances of same draggable option : Preview tab', () => {
195
+ abortEarlySetup();
196
+ before(() => {
197
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
198
+ cy.barsPreLoaderWait();
199
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
200
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
201
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
202
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
203
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
204
+ });
205
+
206
+ it('When the \'Allow multiple instances of same draggable option\' functionality is disabled, then on dropping the option in a dropzone, the draggable options should get removed from the options container', () => {
207
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Flower': 0 });
208
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(['Petals', 'Leaves', 'Roots', 'Stem', 'Seeds']);
209
+ });
210
+
211
+ it('When the user enables the \'Allow multiple instances of same draggable option\' functionality, then on setting correct answer in a dropzone, the draggable options should persist in the options container', () => {
212
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
213
+ fillInTheGapsDragAndDropPage.steps.checkAllowMultipleInstancesOfSameDraggableOptionCheckbox();
214
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
215
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Seeds': 1 });
216
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(options);
217
+ });
218
+
219
+ it('The user should be able to use the same draggable option for multiple dropzones', () => {
220
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Seeds': 2 });
221
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(1, ['Seeds']);
222
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(2, ['Seeds']);
223
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(options);
224
+ });
225
+
226
+ it('When the user removes the draggable option and moves it into the options container, only one option should be displayed in the options container', () => {
227
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInOptionsContainerInPreviewTab('Seeds');
228
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInOptionsContainerInPreviewTab('Seeds');
229
+ fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(1, '');
230
+ fillInTheGapsDragAndDropPage.steps.verifyDropzoneTextPreviewTab(2, '');
231
+ fillInTheGapsDragAndDropPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(options);
232
+ });
233
+ });
234
+
235
+ describe('Allow multiple instances of same draggable option - Scoring', () => {
236
+ before(() => {
237
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
238
+ cy.barsPreLoaderWait();
239
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
240
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
241
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(2);
242
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options.slice(0, 4));
243
+ fillInTheGapsDragAndDropPage.steps.checkAllowMultipleInstancesOfSameDraggableOptionCheckbox();
244
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Petals': 0 });
245
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Petals': 1 });
246
+ fillInTheGapsDragAndDropPage.steps.allotPoints(5);
247
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
248
+ });
249
+
250
+ it('When the user has set same answer options in the \'Set correct answer\' section, then the user should be awarded full points on attempting the question with reused options', () => {
251
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 0 });
252
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 1 });
253
+ fillInTheGapsDragAndDropPage.steps.verifyPreviewScore(5, 5);
254
+ fillInTheGapsDragAndDropPage.steps.verifyPreviewTabPointsBackgroundForCorrectAnswer();
255
+ });
256
+ });
257
+
258
+ describe('Allow students to check answer: Edit tab', () => {
259
+ abortEarlySetup();
260
+ before(() => {
261
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
262
+ cy.barsPreLoaderWait();
263
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
264
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
265
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
266
+ fillInTheGapsDragAndDropPage.steps.allotPoints(5);
267
+ });
268
+
269
+ fillInTheGapsDragAndDropPage.tests.verifyAllowStudentsToCheckAnswerLabelAndCheckboxCSS();
270
+
271
+ fillInTheGapsDragAndDropPage.tests.verifyMaximumAttemptsDropdownDisplayedWhenAllowStudentsToCheckAnswerIsChecked();
272
+
273
+ fillInTheGapsDragAndDropPage.tests.verifyMaxCheckAnswerAttemptsDropdown();
274
+
275
+ fillInTheGapsDragAndDropPage.tests.verifyAllowStudentsToCheckAnswerContentsCSSAndA11y();
276
+ });
277
+
278
+ describe('Allow students to check answer: Preview tab', () => {
279
+ abortEarlySetup();
280
+ before(() => {
281
+ fillInTheGapsDragAndDropPage.steps.navigateToCreateQuestion('fill in the gaps with drag and drop');
282
+ cy.barsPreLoaderWait();
283
+ fillInTheGapsDragAndDropPage.steps.addTextInQuestionInstructionsInputField('Drag and drop options into correct dropzone');
284
+ fillInTheGapsDragAndDropPage.steps.addResponseArea();
285
+ fillInTheGapsDragAndDropPage.steps.addMultipleOptionFields(4);
286
+ fillInTheGapsDragAndDropPage.steps.addInputToOptionsInputField(options);
287
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Petals': 0, 'Flower': 1, 'Leaves': 2 });
288
+ fillInTheGapsDragAndDropPage.steps.allotPoints(20);
289
+ });
290
+
291
+ it('When the user has added options and specified correct answer and points then on checking the \'Allow students to check answer\' checkbox the Check answer button should be displayed in the preview tab', () => {
292
+ fillInTheGapsDragAndDropPage.steps.checkAllowStudentToCheckAnswerCheckbox();
293
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
294
+ utilities.verifyInnerText(fillInTheGapsDragAndDropPage.checkAnswerButton(), 'Check answer');
295
+ });
296
+
297
+ it('When the user drops an option in the dropzone and checks the answer then an icon should be displayed beside the selected option and the check answer button should be in enabled state', () => {
298
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 0 });
299
+ fillInTheGapsDragAndDropPage.steps.checkAnswer();
300
+ fillInTheGapsDragAndDropPage.steps.verifyCorrectOptionIcon(0);
301
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
302
+ });
303
+
304
+ it('When the user selects an option from the Maximum check answer attempts dropdown then the user should be able to check answer only those many times in the preview tab', () => {
305
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
306
+ fillInTheGapsDragAndDropPage.steps.expandMaxCheckAnswerAttemptsDropdown();
307
+ fillInTheGapsDragAndDropPage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('1');
308
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
309
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 0 });
310
+ fillInTheGapsDragAndDropPage.steps.checkAnswer();
311
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonDisabled();
312
+ });
313
+
314
+ fillInTheGapsDragAndDropPage.tests.verifyDisabledCheckAnswerButtonWithCSSAndA11y();
315
+
316
+ it('When the user updates the value of \'Maximum check answer attempts\' dropdown, it should get reflected on the Preview tab', () => {
317
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
318
+ fillInTheGapsDragAndDropPage.steps.expandMaxCheckAnswerAttemptsDropdown();
319
+ fillInTheGapsDragAndDropPage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('3');
320
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
321
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
322
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 0 });
323
+ fillInTheGapsDragAndDropPage.steps.checkAnswer();
324
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
325
+ });
326
+
327
+ it('When the user selects \'No limit\' option from the dropdown then user should be able to check answer multiple times', () => {
328
+ fillInTheGapsDragAndDropPage.steps.switchToEditTab();
329
+ fillInTheGapsDragAndDropPage.steps.expandMaxCheckAnswerAttemptsDropdown();
330
+ fillInTheGapsDragAndDropPage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('no limit');
331
+ fillInTheGapsDragAndDropPage.steps.switchToPreviewTab();
332
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
333
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Petals': 0 });
334
+ fillInTheGapsDragAndDropPage.steps.checkAnswer();
335
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
336
+ fillInTheGapsDragAndDropPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Flower': 1 });
337
+ fillInTheGapsDragAndDropPage.steps.checkAnswer();
338
+ fillInTheGapsDragAndDropPage.steps.verifyCheckAnswerButtonEnabled();
339
+ });
340
+ });
341
+ });