itemengine-cypress-automation 1.0.165-migrationScripts-e27d6f2.0 → 1.0.166

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/cypress/e2e/ILC/BrainingCampManipulative/additionalSettings.js +83 -0
  2. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +200 -0
  3. package/cypress/e2e/ILC/BrainingCampManipulative/editTabScoringSection.js +56 -0
  4. package/cypress/e2e/ILC/BrainingCampManipulative/gradingViewAndCorrectAnswerViewContents.smoke.js +95 -0
  5. package/cypress/e2e/ILC/BrainingCampManipulative/headerSection.js +71 -0
  6. package/cypress/e2e/ILC/BrainingCampManipulative/previewTabContent.smoke.js +72 -0
  7. package/cypress/e2e/ILC/BrainingCampManipulative/toolSettings.js +71 -0
  8. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +2 -2
  9. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +22 -11
  10. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +432 -0
  11. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +134 -0
  12. package/cypress/e2e/ILC/FeedbackScaleNew/feedbackScaleStylePreviewTab.js +161 -0
  13. package/cypress/e2e/ILC/FeedbackScaleNew/numbersFeedbackScaleStyle.js +308 -0
  14. package/cypress/e2e/ILC/FeedbackScaleNew/previewContentsForAllViews.smoke.js +216 -0
  15. package/cypress/e2e/ILC/FeedbackScaleNew/starsHeartsFeedbackScaleStyle.js +336 -0
  16. package/cypress/e2e/ILC/FeedbackScaleNew/textFeedbackScaleStyle.js +570 -0
  17. package/cypress/e2e/ILC/FeedbackScaleNew/thumbsFeedbackScaleStyle.js +214 -0
  18. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettings.js +356 -0
  19. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettingsResponseAccordion.js +299 -0
  20. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +18 -7
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +11 -6
  22. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +355 -0
  23. package/cypress/e2e/ILC/Graphing/previewContentsForAllViews.smoke.js +0 -1
  24. package/cypress/e2e/ILC/Graphing/toolsControlsAndBackgroundSection.js +2 -36
  25. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +22 -34
  26. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +8 -24
  27. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +5 -25
  28. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +68 -114
  29. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +67 -111
  30. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +71 -123
  31. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +41 -63
  32. package/cypress/e2e/ILC/GridFill/scoring/manuallyAndNonScored.js +21 -25
  33. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsBasic.js +50 -85
  34. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +68 -115
  35. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +54 -98
  36. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +72 -120
  37. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +3 -3
  38. package/cypress/e2e/ILC/Matching/maximumCapacityPerDropzoneSection.js +309 -0
  39. package/cypress/e2e/ILC/Matching/specifyCorrectAnswerSection.js +1 -1
  40. package/cypress/e2e/ILC/Matching/toolSettings.js +72 -0
  41. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +1033 -0
  42. package/cypress/e2e/ILC/MultipleSelectionGridNew/test.js +28 -0
  43. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +236 -0
  44. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +239 -0
  45. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +278 -0
  46. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +178 -0
  47. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +407 -0
  48. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +273 -0
  49. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +278 -0
  50. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +228 -0
  51. package/cypress/e2e/ILC/NumberLine/additionalSettings.js +120 -0
  52. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +659 -0
  53. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +149 -0
  54. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +151 -0
  55. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +171 -0
  56. package/cypress/e2e/ILC/NumberLine/headerSection.js +76 -0
  57. package/cypress/e2e/ILC/NumberLine/minimumScoringPenaltyPointsAndRoundingDropdown.js +54 -0
  58. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +200 -0
  59. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +67 -0
  60. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +135 -0
  61. package/cypress/e2e/ILC/NumberLine/toolSettings.js +73 -0
  62. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +372 -0
  63. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +1014 -0
  64. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +235 -0
  65. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +235 -0
  66. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +235 -0
  67. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsBasic.js +457 -0
  68. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithAlternativePointsGreaterThanCorrectPoints.js +342 -0
  69. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +342 -0
  70. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +342 -0
  71. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsBasic.js +155 -0
  72. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +314 -0
  73. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +275 -0
  74. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +314 -0
  75. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +290 -0
  76. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +142 -0
  77. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.js +137 -0
  78. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +4 -4
  79. package/cypress/fixtures/theme/ilc.json +14 -26
  80. package/cypress/pages/brainingCampManipulativePage.js +122 -0
  81. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +1 -1
  82. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -0
  83. package/cypress/pages/components/autoScoredStudentViewSettings.js +1 -1
  84. package/cypress/pages/components/colorPopupComponent.js +2 -2
  85. package/cypress/pages/components/defaultToolDropdown.js +77 -0
  86. package/cypress/pages/components/gridQuestionCommonComponent.js +629 -2
  87. package/cypress/pages/components/index.js +3 -0
  88. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  89. package/cypress/pages/components/measuringToolComponent.js +2 -2
  90. package/cypress/pages/components/resetPopupComponent.js +74 -0
  91. package/cypress/pages/components/scoringSectionBaseEditTab.js +1 -1
  92. package/cypress/pages/components/setPointsPopupBase.js +6 -4
  93. package/cypress/pages/components/specifyRowsAndColumnsComponent.js +60 -3
  94. package/cypress/pages/components/toolSettingsComponent.js +80 -12
  95. package/cypress/pages/components/toolsAndControlsComponent.js +69 -0
  96. package/cypress/pages/dragAndDropIntoCategoriesPage.js +0 -8
  97. package/cypress/pages/feedbackScalePage copy.js +716 -0
  98. package/cypress/pages/feedbackScalePage.js +591 -449
  99. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +3 -1
  100. package/cypress/pages/graphingPage.js +9 -145
  101. package/cypress/pages/gridFillPage.js +135 -120
  102. package/cypress/pages/highlightPage.js +0 -394
  103. package/cypress/pages/index.js +5 -2
  104. package/cypress/pages/matchingPage.js +78 -20
  105. package/cypress/pages/multipleSelectionGridPage.js +88 -1
  106. package/cypress/pages/numberLinePage.js +723 -0
  107. package/cypress/pages/singleSelectionGridPage.js +86 -0
  108. package/cypress/pages/textSelectionPage.js +582 -0
  109. package/package.json +2 -2
@@ -0,0 +1,200 @@
1
+ import { itemPreviewPage, numberLinePage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+ const selectedToolOption = ['Point', 'Segment', 'Segment left/down hollow pt', 'Segment right/up hollow pt', 'Segment both hollow pts'];
5
+ const unselectedToolOption = ['Left/down ray', 'Right/up ray', 'Left/down ray w/ hollow pt', 'Right/up ray w/ hollow pt'];
6
+ const controlOptions = ['Undo', 'Redo', 'Reset'];
7
+ const toolOptions = [...selectedToolOption, ...unselectedToolOption];
8
+ const previewContentViews = ['Question preview', 'Item view', 'Item preview', 'Student view'];
9
+ const views = utilities.getViews(previewContentViews);
10
+ const css = Cypress.env('css');
11
+ var itemReferenceID = "";
12
+ const range = 20;
13
+
14
+ describe('Create item page: Number line - Preview contents in all views', () => {
15
+ before(() => {
16
+ cy.loginAs('admin');
17
+ });
18
+
19
+ views.forEach((view) => {
20
+ describe(`Preview tab contents - ${view}`, { tags: 'smoke' }, () => {
21
+ abortEarlySetup();
22
+ before(() => {
23
+ switch (view) {
24
+ case 'Question preview':
25
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
26
+ cy.barsPreLoaderWait();
27
+ numberLinePage.steps.addTextInQuestionInstructionsInputField('Plot points on the number line');
28
+ numberLinePage.steps.allotPoints(10);
29
+ numberLinePage.steps.selectToolOptions(unselectedToolOption);
30
+ numberLinePage.steps.selectNumberLineToolOptionSpecifyCorrectAnswer('Point');
31
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }]);
32
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: range }]);
33
+ numberLinePage.steps.selectNumberLineToolOptionSpecifyCorrectAnswer('Left/down ray');
34
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: -7, xRange: range }]);
35
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: -7, xRange: range }]);
36
+ numberLinePage.steps.verifyLineSegmentOnNumberLineSpecifyCorrectAnswer([{ x1: -7, x1Range: range, x2: -8.68, x2Range: range }]);
37
+ numberLinePage.steps.selectNumberLineToolOptionSpecifyCorrectAnswer('Segment right/up hollow pt');
38
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: -4, xRange: range }]);
39
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: -4, xRange: range }, { x: -5, xRange: range }]);
40
+ numberLinePage.steps.verifyLineSegmentOnNumberLineSpecifyCorrectAnswer([{ x1: -5, x1Range: range, x2: -4, x2Range: range }]);
41
+ numberLinePage.steps.switchToPreviewTab();
42
+ break;
43
+ case 'Item view':
44
+ cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
45
+ break;
46
+ case 'Item preview':
47
+ cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
48
+ numberLinePage.steps.switchToPreviewTab();
49
+ break;
50
+ case 'Student view':
51
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
52
+ break;
53
+ default:
54
+ throw new Error('Invalid view');
55
+ }
56
+ });
57
+
58
+ after(() => {
59
+ if (view === 'Question preview') {
60
+ numberLinePage.steps.clickOnSaveQuestionButton();
61
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
62
+ itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
63
+ }
64
+ });
65
+
66
+ it('Question instructions should be visible', () => {
67
+ utilities.verifyInnerText(numberLinePage.questionInstructionsText(), 'Plot points on the number line');
68
+ utilities.verifyElementVisibilityState(numberLinePage.questionInstructionsText(), 'visible');
69
+ });
70
+
71
+ it('The toolbar options should be displayed in the preview tab and when the user hovers over the tool options then tooltips should be displayed', () => {
72
+ toolOptions.forEach((toolOption) => {
73
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineToolOptionPreviewTab(toolOption), 'exist');
74
+ numberLinePage.numberLineToolOptionPreviewTab(toolOption)
75
+ .verifyTooltip(toolOption);
76
+ });
77
+ });
78
+
79
+ it('By default, the point option should be in selected state and all other options should be unselected', () => {
80
+ numberLinePage.steps.verifyToolOptionSelectedPreviewTab('Point');
81
+ numberLinePage.steps.verifyToolOptionNotSelectedPreviewTab(toolOptions.splice(1, toolOptions.length));
82
+ });
83
+
84
+ it('By default, all controls should be in disabled state', () => {
85
+ controlOptions.forEach((controlOption) => {
86
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab(controlOption));
87
+ });
88
+ });
89
+
90
+ it('User should be able to plot point using the \'Point\' tool options', () => {
91
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 9, xRange: range }]);
92
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 9, xRange: range }]);
93
+ });
94
+
95
+ it('User should be able to draw a segment using the \'Segment\' tool option', () => {
96
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Segment');
97
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 8, xRange: range }]);
98
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 8, xRange: range }, { x: 7, xRange: range }]);
99
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: 8, x1Range: range, x2: 7, x2Range: range }]);
100
+ });
101
+
102
+ it('User should be able to draw a segment using the \'Segment left/down hollow pt\' tool option', () => {
103
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Segment left/down hollow pt');
104
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 6, xRange: range }]);
105
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 6, xRange: range }, { x: 5, xRange: range }]);
106
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: 5, x1Range: range, x2: 6, x2Range: range }]);
107
+ });
108
+
109
+ it('User should be able to draw a segment using the \'Segment right/up hollow pt\' tool option', () => {
110
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Segment right/up hollow pt');
111
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 4, xRange: range }]);
112
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 4, xRange: range }, { x: 3, xRange: range }]);
113
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: 3, x1Range: range, x2: 4, x2Range: range }]);
114
+ });
115
+
116
+ it('User should be able to draw a segment using the \'Segment both hollow pts\' tool option', () => {
117
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Segment both hollow pts');
118
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 2, xRange: range }]);
119
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 2, xRange: range }, { x: 1, xRange: range }]);
120
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: 1, x1Range: range, x2: 2, x2Range: range }]);
121
+ });
122
+
123
+ it('User should be able to draw a ray using the \'Left/down ray\' tool option', () => {
124
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Left/down ray');
125
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: -8, xRange: range }]);
126
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: -8, xRange: range }]);
127
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: -8, x1Range: range, x2: -8.68, x2Range: range }]);
128
+ });
129
+
130
+ it('User should be able to draw a ray using the \'Right/up ray\' tool option', () => {
131
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Right/up ray');
132
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 0, xRange: range }]);
133
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 0, xRange: range }]);
134
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: 0, x1Range: range, x2: 8.69, x2Range: range }]);
135
+ });
136
+
137
+ it('User should be able to draw a ray using the \'Left/down ray w/ hollow pt\' tool option', () => {
138
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Left/down ray w/ hollow pt');
139
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: -6, xRange: range }]);
140
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: -6, xRange: range }]);
141
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: -6, x1Range: range, x2: -8.68, x2Range: range }]);
142
+ });
143
+
144
+ it('User should be able to draw a ray wave using the \'Right/up ray w/ hollow pt\' tool option', () => {
145
+ numberLinePage.steps.selectNumberLineToolOptionPreviewTab('Right/up ray w/ hollow pt');
146
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: -3, xRange: range }]);
147
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: -3, xRange: range }]);
148
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: -3, x1Range: range, x2: 8.69, x2Range: range }]);
149
+ });
150
+
151
+ it('When the user clicks on the \'Undo\' control option then the latest action should be reversed', () => {
152
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Undo');
153
+ numberLinePage.steps.verifyLineSegmentOnNumberLineNotExistPreviewTab([{ x: -3, xRange: range }, { x: 8.69, xRange: range }]);
154
+ });
155
+
156
+ it('By default, the control options should be in displayed and when the user hovers over the tool options then tooltips should be displayed', () => {
157
+ controlOptions.forEach((controlOption) => {
158
+ utilities.verifyElementVisibilityState(numberLinePage.numberLineControlOptionPreviewTab(controlOption), 'exist');
159
+ numberLinePage.numberLineControlOptionPreviewTab(controlOption)
160
+ .verifyTooltip(controlOption);
161
+ });
162
+ });
163
+
164
+ it('CSS of preview content', { tags: 'css' }, () => {
165
+ utilities.verifyCSS(numberLinePage.numberLineToolOptionPreviewTab('Right/up ray w/ hollow pt'), {
166
+ 'background-color': css.color.secondaryBtn,
167
+ 'color': css.color.secondaryBtnBg,
168
+ });
169
+ utilities.verifyCSS(numberLinePage.numberLineToolOptionPreviewTab('Point').find('g circle'), {
170
+ 'color': css.color.UnselectedToggleButton,
171
+ 'fill': css.color.activeButtons
172
+ });
173
+ utilities.verifyCSS(numberLinePage.numberLineControlOptionPreviewTab('Undo').find('svg'), {
174
+ 'fill': css.color.activeButtons
175
+ });
176
+ utilities.verifyCSS(numberLinePage.numberLinePointPreviewTab(), {
177
+ 'fill': css.color.activeButtons
178
+ });
179
+ });
180
+
181
+ it('Accessibility of preview content', { tags: 'a11y' }, () => {
182
+ cy.checkAccessibility(numberLinePage.numberLinePreviewTab().parents('[class*="question-preview-wrapper"]'));
183
+ });
184
+
185
+ it('When the user clicks on the \'Redo\' control option then the latest action should be displayed again and the button should be disabled again', () => {
186
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Redo');
187
+ numberLinePage.steps.verifyLineSegmentOnNumberLinePreviewTab([{ x1: -3, x1Range: range, x2: 8.69, x2Range: range }]);
188
+ });
189
+
190
+ it('When the user clicks on the \'Reset\' control option then all the actions on the preview tab should be reset', () => {
191
+ numberLinePage.steps.selectNumberLineControlOptionPreviewTab('Reset');
192
+ numberLinePage.steps.confirmReset();
193
+ utilities.verifyElementVisibilityState(numberLinePage.numberLinePointPreviewTab(), 'notExist');
194
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Undo'));
195
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Redo'));
196
+ utilities.verifyElementDisabled(numberLinePage.numberLineControlOptionPreviewTab('Reset'));
197
+ });
198
+ });
199
+ });
200
+ });
@@ -0,0 +1,67 @@
1
+ import { numberLinePage } from "../../../pages";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+
4
+ describe('Create Item page - Number line: Specify correct answer, Alternative correct answer', () => {
5
+ before(() => {
6
+ cy.loginAs('admin');
7
+ });
8
+
9
+ describe('Specify correct answer section - \'Correct\' accordion', () => {
10
+ abortEarlySetup();
11
+ before(() => {
12
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
13
+ numberLinePage.steps.addTextInQuestionInstructionsInputField('Number line');
14
+ cy.barsPreLoaderWait();
15
+ });
16
+
17
+ numberLinePage.tests.verifyAutoScoredSpecifyCorrectAnswerHeaderSectionContents('number line');
18
+
19
+ numberLinePage.tests.verifySpecifyCorrectAnswerAccordionContentsAndFunctionality('Correct');
20
+ });
21
+
22
+ describe('Specify correct answer section - \'Alternative\' accordion', () => {
23
+ abortEarlySetup();
24
+ before(() => {
25
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
26
+ cy.barsPreLoaderWait();
27
+ });
28
+
29
+ numberLinePage.tests.verifyAutoScoredAddAlternativeAnswerButtonAndValidation();
30
+
31
+ it('When user has added points and plots points on number line in the \'Correct\' accordion, then the user should be able to add alternative answer for the question using \'Add alternative answer\' button', () => {
32
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: 0, xRange: 20 }, { x: 1, xRange: 20 }]);
33
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 0, xRange: 20 }, { x: 1, xRange: 20 }]);
34
+ numberLinePage.steps.allotPoints(10);
35
+ numberLinePage.steps.addAlternativeAnswerAccordion(1);
36
+ });
37
+
38
+ it('When user has added an alternative answer accordion, then the newly added alternative answer accordion should be in expanded state and the correct answer accordion should be in collapsed state', () => {
39
+ numberLinePage.steps.verifyCorrectAnswerAccordionIsCollapsed();
40
+ numberLinePage.steps.verifyAlternateAnswerAccordionIsExpanded(0);
41
+ });
42
+
43
+ numberLinePage.tests.verifySpecifyCorrectAnswerAccordionContentsAndFunctionality('Alternative');
44
+
45
+ it('User should be able to add another alternative answer for the question using \'Add alternative answer\' button and the label for this new accordion should be \'Alternative 2\'', () => {
46
+ numberLinePage.steps.addAlternativeAnswerAccordion(1);
47
+ });
48
+
49
+ numberLinePage.tests.verifyWarningPopupAndAccordionNavigationWhenNoPointsAddedInAlternativeAccordion();
50
+
51
+ it('User should be able to remove alternative correct answer by clicking on the \'Delete\' icon button alongside alternative answer accordion and the label of the alternative answer accordions should get updated accordingly', () => {
52
+ cy.log('Set correct answer and points in alternative 2 accordion, then switch to alternative 1 accordion and click delete icon button');
53
+ numberLinePage.steps.selectNumberLineToolOptionSpecifyCorrectAnswer('Segment');
54
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: 20 }, { x: 1, xRange: 20}]);
55
+ numberLinePage.steps.verifyPointsPlottedOnNumberLineSpecifyCorrectAnswer([{ x: 2, xRange: 20 }, { x: 1, xRange: 20}]);
56
+ numberLinePage.steps.allotPoints(5);
57
+ numberLinePage.steps.deleteAlternativeAnswerAccordion(0);
58
+ numberLinePage.steps.verifyAlternativeAnswerAccordionNotExists(1);
59
+ numberLinePage.steps.verifyAlternativeAnswerAccordionLabel(0);
60
+ });
61
+
62
+ it('When correct answers and points are set in alternative answer and user clicks on correct answer accordion, then correct answer accordion should be expanded and the alternative answer accordion should be collapsed', () => {
63
+ numberLinePage.steps.expandCorrectAnswerAccordion();
64
+ numberLinePage.steps.verifyAlternateAnswerAccordionIsCollapsed(0);
65
+ });
66
+ });
67
+ });
@@ -0,0 +1,135 @@
1
+ import { numberLinePage } from "../../../pages";
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 - Number line : Student view settings', () => {
7
+ before(() => {
8
+ cy.loginAs('admin');
9
+ });
10
+
11
+ describe('Student view settings : Edit tab contents', () => {
12
+ abortEarlySetup();
13
+ before(() => {
14
+ cy.log('Navigating to Number line question type');
15
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
16
+ cy.barsPreLoaderWait();
17
+ });
18
+
19
+ numberLinePage.tests.verifyStudentViewSettingsLabelAndCSS();
20
+
21
+ it('When \'Plot number line\' is selected then \'Randomize labels\' label and checkbox should not be displayed', () => {
22
+ utilities.verifyElementVisibilityState(numberLinePage.randomizeOptionsLabel(), 'notExist');
23
+ utilities.verifyElementVisibilityState(numberLinePage.randomizeOptionsCheckbox(), 'notExist');
24
+ });
25
+
26
+ it('\'Allow students to check answer\' label and checkbox should be displayed and it should be unchecked by default', () => {
27
+ utilities.verifyInnerText(numberLinePage.allowStudentToCheckAnswerLabel(), 'Allow students to check answer');
28
+ numberLinePage.steps.verifyAllowStudentsToCheckAnswerCheckboxUnchecked();
29
+ });
30
+
31
+ it('When the user checks the \'Allow students to check answer\' checkbox, then \'Maximum check answer attempts\' dropdown should be displayed', () => {
32
+ numberLinePage.steps.checkAllowStudentsToCheckAnswerCheckbox();
33
+ utilities.verifyElementVisibilityState(numberLinePage.maximumCheckAnswerAttemptsDropdown(), 'visible');
34
+ });
35
+
36
+ numberLinePage.tests.verifyMaxCheckAnswerAttemptsDropdown();
37
+
38
+ numberLinePage.tests.verifyAllowStudentsToCheckAnswerContentsCSSAndA11y();
39
+
40
+ it('CSS of student view settings section', { tags: 'css' }, () => {
41
+ utilities.verifyCSS(numberLinePage.allowStudentToCheckAnswerLabel(), {
42
+ 'color': css.color.labelText,
43
+ 'font-size': css.fontSize.normal,
44
+ 'font-weight': css.fontWeight.regular
45
+ });
46
+ utilities.verifyCSS(numberLinePage.allowStudentToCheckAnswerCheckbox().parent().find('.checkbox-icon-border-rect'), {
47
+ 'fill': css.color.activeButtons
48
+ });
49
+ });
50
+
51
+ it('Accessibility of student view settings section', { tags: 'a11y' }, () => {
52
+ cy.checkAccessibility(numberLinePage.allowStudentToCheckAnswerLabel().parents('.student-view-settings-container'));
53
+ });
54
+ });
55
+
56
+ describe('Allow students to check answer: Preview tab', () => {
57
+ abortEarlySetup();
58
+ before(() => {
59
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
60
+ cy.barsPreLoaderWait();
61
+ numberLinePage.steps.allotPoints(10);
62
+ numberLinePage.steps.plotPointOnNumberLineSpecifyCorrectAnswer([{ x: 1, xRange: 20 }]);
63
+ });
64
+
65
+ it('When the user has 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', () => {
66
+ numberLinePage.steps.checkAllowStudentToCheckAnswerCheckbox();
67
+ numberLinePage.steps.switchToPreviewTab();
68
+ utilities.verifyInnerText(numberLinePage.checkAnswerButton(), 'Check answer');
69
+ });
70
+
71
+ it('When the user plots point on number line and checks the answer then correct icon should be displayed beside the plotted point and the check answer button should be in enabled state', () => {
72
+ numberLinePage.steps.switchToPreviewTab();
73
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
74
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
75
+ numberLinePage.steps.checkAnswer();
76
+ numberLinePage.steps.verifyCorrectPointsOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
77
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
78
+ });
79
+
80
+ 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', () => {
81
+ numberLinePage.steps.switchToEditTab();
82
+ numberLinePage.steps.expandMaxCheckAnswerAttemptsDropdown();
83
+ numberLinePage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('1');
84
+ numberLinePage.steps.switchToPreviewTab();
85
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
86
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
87
+ numberLinePage.steps.checkAnswer();
88
+ numberLinePage.steps.verifyCheckAnswerButtonDisabled();
89
+ });
90
+
91
+ it('When the user reaches maximum check answer attempts, then the \'Check Answer\' button should become disabled', () => {
92
+ utilities.verifyElementDisabled(numberLinePage.checkAnswerButton());
93
+ });
94
+
95
+ it('CSS of disabled \'Check Answer\' button', { tags: 'css' }, () => {
96
+ utilities.verifyCSS(numberLinePage.checkAnswerButton(), {
97
+ 'color': css.color.primaryBtnDisabled,
98
+ 'font-size': css.fontSize.default,
99
+ 'font-weight': css.fontWeight.semibold
100
+ });
101
+ });
102
+
103
+ it('Accessibility of disabled Check Answer button', { tags: 'a11y' }, () => {
104
+ cy.checkAccessibility(numberLinePage.checkAnswerButton().parents('.check-answer-and-status-wrapper'));
105
+ });
106
+
107
+ it('When the user updates the value of \'Maximum check answer attempts\' dropdown, it should get reflected on the Preview tab', () => {
108
+ numberLinePage.steps.switchToEditTab();
109
+ numberLinePage.steps.expandMaxCheckAnswerAttemptsDropdown();
110
+ numberLinePage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('3');
111
+ numberLinePage.steps.switchToPreviewTab();
112
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
113
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
114
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
115
+ numberLinePage.steps.checkAnswer();
116
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
117
+ });
118
+
119
+ it('When the user selects \'No limit\' option from the dropdown then user should be able to check answer multiple times', () => {
120
+ numberLinePage.steps.switchToEditTab();
121
+ numberLinePage.steps.expandMaxCheckAnswerAttemptsDropdown();
122
+ numberLinePage.steps.selectMaxCheckAnswerAttemptsDropdownListOption('no limit');
123
+ numberLinePage.steps.switchToPreviewTab();
124
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
125
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
126
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 1, xRange: 20 }]);
127
+ numberLinePage.steps.checkAnswer();
128
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
129
+ numberLinePage.steps.plotPointOnNumberLinePreviewTab([{ x: 3, xRange: 20 }]);
130
+ numberLinePage.steps.verifyPointsPlottedOnNumberLinePreviewTab([{ x: 3, xRange: 20 }]);
131
+ numberLinePage.steps.checkAnswer();
132
+ numberLinePage.steps.verifyCheckAnswerButtonEnabled();
133
+ });
134
+ });
135
+ });
@@ -0,0 +1,73 @@
1
+ import { toolSettingsComponent } from "../../../pages/components";
2
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
+ import utilities from "../../../support/helpers/utilities";
4
+ import { dialogBoxBase, numberLinePage, rulerPage } from "../../../pages";
5
+
6
+ const css = Cypress.env('css');
7
+
8
+ describe('Create Item page: Tool settings', () => {
9
+ before(() => {
10
+ cy.loginAs('admin');
11
+ });
12
+
13
+ describe('Tool settings: Contents', () => {
14
+ abortEarlySetup();
15
+ before(() => {
16
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
17
+ });
18
+
19
+ numberLinePage.tests.verifyToolSettingsContent();
20
+ });
21
+
22
+ describe('Tool settings: Edit tool settings', () => {
23
+ abortEarlySetup();
24
+ before(() => {
25
+ numberLinePage.steps.navigateToCreateQuestion('Number line');
26
+ toolSettingsComponent.steps.expandToolSettingsAccordion();
27
+ });
28
+
29
+ it('When user clicks on edit icon for ruler tool, then popup for ruler tool settings should be displayed', () => {
30
+ toolSettingsComponent.steps.clickOnToolEditIcon(0);
31
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
32
+ });
33
+
34
+ it('When user modifies the settings for the ruler tool and clicks the \'Ok\' button, then ruler tool should enter selected state.', () => {
35
+ rulerPage.steps.expandUnitOfMeasurementDropdown();
36
+ rulerPage.steps.selectOptionFromUnitOfMeasurementDropdown('Inch');
37
+ rulerPage.steps.selectOptionFromLengthOfRulerOptions('12 in');
38
+ rulerPage.steps.selectColorBlock(1);
39
+ rulerPage.steps.expandRotationDropdown();
40
+ rulerPage.steps.selectOptionFromRotationDropdown('Allow rotation and display angle');
41
+ rulerPage.steps.enterInputToOpacityInputField(60);
42
+ rulerPage.steps.checkAddShowHideButtonCheckbox();
43
+ dialogBoxBase.steps.clickOnAcceptButtonInDialogBox();
44
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'notExist');
45
+ toolSettingsComponent.steps.verifyToolSelectedState(0);
46
+ });
47
+
48
+ it('When user has made changes for ruler tool in edit tab then changes should be reflected in the ruler tool in the preview tab', () => {
49
+ cy.log('Switching to Preview Tab');
50
+ rulerPage.steps.switchToPreviewTab();
51
+ rulerPage.steps.verifyPreviewTabRulerVisibilityButtonLabel('Show');
52
+ rulerPage.steps.clickOnRulerVisibilityButton();
53
+ utilities.verifyElementVisibilityState(rulerPage.rulerPreviewTab(), 'visible');
54
+ rulerPage.steps.verifyLengthOfRulerInPreview('12in');
55
+ rulerPage.steps.verifyColorOfRulerInPreview(1);
56
+ rulerPage.steps.verifyRulerOpacityInPreview('0.6');
57
+ rulerPage.steps.verifyRotationButtonWithDegreeVisible();
58
+ });
59
+
60
+ it('CSS of the \'Hide ruler\' button', { tags: 'css' }, () => {
61
+ utilities.verifyCSS(rulerPage.rulerVisibilityButtonPreviewTab(), {
62
+ 'border': `1px solid ${css.color.activeButtons}`,
63
+ 'background-color': css.color.defaultBackground,
64
+ 'font-size': css.fontSize.normal,
65
+ 'font-weight': css.fontWeight.semibold
66
+ });
67
+ });
68
+
69
+ it('Accessibility of \'Hide ruler\' button', { tags: 'a11y' }, () => {
70
+ cy.checkAccessibility(rulerPage.rulerVisibilityButtonPreviewTab().parents('[class*="ItemEnginestyles__MainWrapper"]'));
71
+ });
72
+ });
73
+ });