itemengine-cypress-automation 1.0.193-packageUpdated-b3f3d0b.0 → 1.0.193
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +3 -3
- package/cypress/e2e/ILC/AudioPlayerNew/audioOverviewAndTranscript.js +568 -0
- package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +4 -4
- package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +5 -5
- package/cypress/e2e/ILC/AudioPlayerNew/customizePlayerLayoutSettings.js +2 -2
- package/cypress/e2e/ILC/AudioPlayerNew/headerSection.js +125 -0
- package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +5 -5
- package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +4 -4
- package/cypress/e2e/ILC/AudioPlayerNew/studentViewSettings.js +3 -3
- package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +19 -17
- package/cypress/e2e/ILC/ChartsBar/previewContentsForAllViews.smoke.js +7 -4
- package/cypress/e2e/ILC/ChartsLine/allOrNothingScoringForAllViews.smoke.js +366 -0
- package/cypress/e2e/ILC/ChartsLine/checkAnswerFunctionalityForAllViews.smoke.js +183 -0
- package/cypress/e2e/ILC/ChartsLine/gradingViewAndCorrectAnswerView.smoke.js +281 -0
- package/cypress/e2e/ILC/ChartsLine/previewContentsForAllViews.smoke.js +595 -0
- package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +8 -8
- package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +241 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithCorrectPointsEqualToAlternativePoints.js +241 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternatePoints.js +285 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/manuallyAndNonScored.js +164 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +281 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsScoring.js +467 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +250 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeigtsCorrectPointsGreaterThanAlternativePoints.js +281 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +260 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsScoring.js +184 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +229 -0
- package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +261 -0
- package/cypress/e2e/ILC/chartsDotsPlot/allOrNothingForAllViews.smoke.js +409 -0
- package/cypress/e2e/ILC/chartsDotsPlot/checkAnswerFunctionalityForAllViews.smoke.js +199 -0
- package/cypress/e2e/ILC/chartsDotsPlot/gradingViewAndCorrectAnswerView.smoke.js +223 -0
- package/cypress/e2e/ILC/chartsDotsPlot/previewContentsForAllViews.smoke.js +402 -0
- package/cypress/pages/audioPlayerPage.js +229 -9
- package/cypress/pages/chartsBarPage.js +2 -70
- package/cypress/pages/chartsDotPlotPage.js +986 -3
- package/cypress/pages/chartsLinePage.js +368 -9
- package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +0 -1
- package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -0
- package/cypress/pages/components/backgroundImageUploadComponent.js +1 -1
- package/cypress/pages/components/barAndLineChartComponent.js +27 -1
- package/cypress/pages/components/chartsCommonComponent.js +31 -2
- package/cypress/pages/components/createQuestionBasePage.js +1 -0
- package/cypress/pages/components/layoutSectionComponent.js +2 -2
- package/cypress/pages/components/singleMultipleSelectionModeComponent.js +5 -0
- package/cypress/pages/components/toolSettingsComponent.js +2 -2
- package/cypress/pages/feedbackScalePage.js +1 -1
- package/cypress/pages/gridFillPage.js +13 -6
- package/cypress/pages/imageHighlightPage.js +308 -2
- package/cypress/pages/numberLinePage.js +40 -16
- package/cypress/pages/videoResponsePage.js +350 -6
- package/package.json +1 -1
@@ -1,21 +1,36 @@
|
|
1
1
|
import utilities from "../support/helpers/utilities";
|
2
|
-
import { autoScoredScoringPreviewTab, autoScoredStudentViewSettings, backgroundImageUploadComponent, createQuestionBasePage, imageCanvasComponent, questionInstructionsComponent, scoringSectionBaseEditTab, singleMultipleSelectionModeComponent } from "./components"
|
2
|
+
import { autoScoredScoringPreviewTab, autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, autoScoredStudentViewSettings, backgroundImageUploadComponent, commonComponents, createQuestionBasePage, enableOuterBorderComponent, imageCanvasComponent, questionInstructionsComponent, scoringSectionBaseEditTab, singleMultipleSelectionModeComponent } from "./components"
|
3
3
|
const css = Cypress.env('css');
|
4
4
|
let imageWidth = 768;
|
5
5
|
let imageHeight = 432;
|
6
6
|
|
7
7
|
const selectors = {
|
8
8
|
...questionInstructionsComponent,
|
9
|
+
...autoScoredScoringSectionMultiResponseType,
|
10
|
+
...autoScoredSpecifyCorrectAnswerSection,
|
11
|
+
...commonComponents,
|
12
|
+
...enableOuterBorderComponent,
|
13
|
+
...autoScoredScoringPreviewTab,
|
9
14
|
|
10
15
|
//Specify possible options
|
11
16
|
specifyPossibleOptionsImageWrapper: () => cy.get('.drawing-tool__wrapper .drawing-tool__canvas'),
|
12
17
|
specifyPossibleOptionsImageCanvas: () => cy.get('.drawing-tool__wrapper .upper-canvas'),
|
13
18
|
freeformTool: () => cy.get('.drawing-tool__button-polygon'),
|
19
|
+
itemEraserTool: () => cy.get('.drawing-tool__button-itemEraser'),
|
20
|
+
selectTool: () => cy.get('.drawing-tool__button-select'),
|
21
|
+
undoTool: () => cy.get('.drawing-tool__button-undo'),
|
22
|
+
redoTool: () => cy.get('.drawing-tool__button-redo'),
|
23
|
+
clearAllTool: () => cy.get('.drawing-tool__button-clearAll'),
|
24
|
+
optionCount: () => cy.get('[class*="HighlightImagestyles__HighlightCountWrapper"]'),
|
14
25
|
//Specify correct answer section
|
15
26
|
specifyCorrectAnswerSectionImage: () => cy.get('.highlight-svg-responseive image'),
|
16
|
-
specifyCorrectAnswerSectionHighlight: () => cy.get('[class*="HighlightImageControlstyles__ShapeWrapper"] a'),
|
27
|
+
specifyCorrectAnswerSectionHighlight: () => cy.get('.ngie-accordion [class*="HighlightImageControlstyles__ShapeWrapper"] a'),
|
28
|
+
specifyCorrectAnswerSectionHighlightPolygon: () => cy.get('[class*="HighlightImageControlstyles__PolygonWrapper"]'),
|
29
|
+
highlightNumerationSpecifyCorrectAnswer: () => cy.get('[class*="__TspanWrapper"]:visible'),
|
30
|
+
partialEqualWeightsPointsPerResponseScore: () => cy.get('.alternate-points-points-per-value-span'),
|
17
31
|
//preview tab
|
18
32
|
imagePreviewTab: () => cy.get('[class*="question-preview-wrapper"] .highlight-svg-responseive image'),
|
33
|
+
imagePreviewTabWrapper: () => cy.get('[class*="question-preview-wrapper"] .highlight-svg-wrapper'),
|
19
34
|
highlightPreviewTab: () => cy.get('[class*="question-preview-wrapper"] [class*="HighlightImageControlstyles__ShapeWrapper"] a'),
|
20
35
|
highlightPolygonPreviewTab: () => cy.get('[class*="question-preview-wrapper"] [class*="HighlightImageControlstyles__PolygonWrapper"]'),
|
21
36
|
checkMarkIcon: () => cy.get('.correct-option-icon [data-name*="Rectangle"]'),
|
@@ -38,6 +53,10 @@ const steps = {
|
|
38
53
|
...imageCanvasComponent.steps,
|
39
54
|
...autoScoredScoringPreviewTab.steps,
|
40
55
|
...autoScoredStudentViewSettings.steps,
|
56
|
+
...autoScoredSpecifyCorrectAnswerSection.steps,
|
57
|
+
...autoScoredScoringSectionMultiResponseType.steps,
|
58
|
+
...enableOuterBorderComponent.steps,
|
59
|
+
|
41
60
|
//Specify possible options
|
42
61
|
clickOnFreeformTool: () => {
|
43
62
|
imageHighlightPage.freeformTool()
|
@@ -45,6 +64,24 @@ const steps = {
|
|
45
64
|
.blur();
|
46
65
|
},
|
47
66
|
|
67
|
+
clickOnUndoTool: () => {
|
68
|
+
imageHighlightPage.undoTool()
|
69
|
+
.click();
|
70
|
+
steps.clickOnFreeformTool();
|
71
|
+
},
|
72
|
+
|
73
|
+
clickOnRedoTool: () => {
|
74
|
+
imageHighlightPage.redoTool()
|
75
|
+
.click();
|
76
|
+
steps.clickOnFreeformTool();
|
77
|
+
},
|
78
|
+
|
79
|
+
clickOnClearAllTool: () => {
|
80
|
+
imageHighlightPage.clearAllTool()
|
81
|
+
.click()
|
82
|
+
.blur();
|
83
|
+
},
|
84
|
+
|
48
85
|
verifyImageUploadedInSpecifyPossibleOptionsSection: () => {
|
49
86
|
imageHighlightPage.specifyPossibleOptionsImageWrapper()
|
50
87
|
.should('be.visible')
|
@@ -76,6 +113,50 @@ const steps = {
|
|
76
113
|
cy.wait(200);
|
77
114
|
},
|
78
115
|
|
116
|
+
/**
|
117
|
+
* @description verify the highlight count
|
118
|
+
* @param {number} count shows the count of highlight
|
119
|
+
*/
|
120
|
+
verifyOptionCountInHighlightImageSection: (count) => {
|
121
|
+
imageHighlightPage.optionCount()
|
122
|
+
.verifyInnerText(`Option count: ${count}`)
|
123
|
+
},
|
124
|
+
|
125
|
+
verifySelectedStateOfFreeformTool: () => {
|
126
|
+
imageHighlightPage.freeformTool()
|
127
|
+
.should('have.class', 'drawing-tool__button--active');
|
128
|
+
},
|
129
|
+
|
130
|
+
verifyUnselectedStateOfSelectTool: () => {
|
131
|
+
imageHighlightPage.selectTool()
|
132
|
+
.should('not.have.class', 'drawing-tool__button--active');
|
133
|
+
},
|
134
|
+
|
135
|
+
verifyUnselectedStateOfUndoTool: () => {
|
136
|
+
imageHighlightPage.undoTool()
|
137
|
+
.should('not.have.class', 'drawing-tool__button--active');
|
138
|
+
},
|
139
|
+
|
140
|
+
verifyUnselectedStateOfRedoTool: () => {
|
141
|
+
imageHighlightPage.redoTool()
|
142
|
+
.should('not.have.class', 'drawing-tool__button--active');
|
143
|
+
},
|
144
|
+
|
145
|
+
verifyUnselectedStateOfItemEraserTool: () => {
|
146
|
+
imageHighlightPage.itemEraserTool()
|
147
|
+
.should('not.have.class', 'drawing-tool__button--active');
|
148
|
+
},
|
149
|
+
|
150
|
+
verifySelectedStateOfItemEraserTool: () => {
|
151
|
+
imageHighlightPage.itemEraserTool()
|
152
|
+
.should('have.class', 'drawing-tool__button--active');
|
153
|
+
},
|
154
|
+
|
155
|
+
verifyUnselectedStateOfClearAllTool: () => {
|
156
|
+
imageHighlightPage.clearAllTool()
|
157
|
+
.should('not.have.class', 'drawing-tool__button--active');
|
158
|
+
},
|
159
|
+
|
79
160
|
//Specify correct answer section
|
80
161
|
verifyImageUploadedSpecifyCorrectAnswer: () => {
|
81
162
|
utilities.verifyElementVisibilityState(imageHighlightPage.specifyCorrectAnswerSectionImage(), 'visible')
|
@@ -104,6 +185,16 @@ const steps = {
|
|
104
185
|
/**
|
105
186
|
* @param {number} index of highlight region
|
106
187
|
* @description this functions highlights a region in set correct answer section
|
188
|
+
*/
|
189
|
+
clickOnARegionInSpecifyCorrectAnswerSection: (index) => {
|
190
|
+
imageHighlightPage.specifyCorrectAnswerSectionHighlight()
|
191
|
+
.eq(index)
|
192
|
+
.click();
|
193
|
+
},
|
194
|
+
|
195
|
+
/**
|
196
|
+
* @param {number} index of highlight region
|
197
|
+
* @description this functions highlights a region in set correct answer section
|
107
198
|
*/
|
108
199
|
highlightARegionInSpecifyCorrectAnswerSection: (index) => {
|
109
200
|
imageHighlightPage.specifyCorrectAnswerSectionHighlight()
|
@@ -123,7 +214,119 @@ const steps = {
|
|
123
214
|
steps.verifyRegionIsNotHighlightedInSetCorrectAnswerSection(index);
|
124
215
|
},
|
125
216
|
|
217
|
+
/**
|
218
|
+
* @param {number} index of points input field
|
219
|
+
* @param {number} points alloted in the points input field
|
220
|
+
* @description this function verifies the Options label and points input field
|
221
|
+
*/
|
222
|
+
verifyPartialDifferentWeightsOptionLabelAndPoints: (index, points) => {
|
223
|
+
utilities.verifyInnerText(scoringSectionBaseEditTab.pointsLabel().eq(index + 1), `Option ${index + 1}`);
|
224
|
+
scoringSectionBaseEditTab.pointsInputField()
|
225
|
+
.eq(index)
|
226
|
+
.should('have.value', points);
|
227
|
+
utilities.verifyElementVisibilityState(scoringSectionBaseEditTab.pointsInputField().eq(index), 'visible');
|
228
|
+
},
|
229
|
+
|
230
|
+
verifyHighlightRegionNumerationSpecifyCorrectAnswer: () => {
|
231
|
+
imageHighlightPage.highlightNumerationSpecifyCorrectAnswer()
|
232
|
+
.each(($el, index) => {
|
233
|
+
cy.wrap($el)
|
234
|
+
.should('have.text', `${index + 1}`);
|
235
|
+
});
|
236
|
+
},
|
237
|
+
|
238
|
+
verifyPointsPerResponseLabel: () => {
|
239
|
+
utilities.verifyInnerText(autoScoredScoringSectionMultiResponseType.pointsPerResponseLabel(), 'Points per response:\n-');
|
240
|
+
utilities.verifyElementVisibilityState(autoScoredScoringSectionMultiResponseType.pointsPerResponseLabel(), 'visible');
|
241
|
+
},
|
242
|
+
|
243
|
+
/**
|
244
|
+
* @param {number} points - The expected points value to be verified.
|
245
|
+
* @description Verifies the partial equal weights points per response score for a specific option in the specify correct answer section for a multi-response type question.
|
246
|
+
*/
|
247
|
+
verifyPartialEqualWeightsPointsPerResponseScore: (points) => {
|
248
|
+
imageHighlightPage.partialEqualWeightsPointsPerResponseScore()
|
249
|
+
.should('have.text', points)
|
250
|
+
},
|
251
|
+
|
252
|
+
/**
|
253
|
+
* verify the displayed penalty points for each incorrect option
|
254
|
+
* @param {number} penaltyPoints displayed penalty points
|
255
|
+
*/
|
256
|
+
verifyPenaltyPointsForEachIncorrectOption: (penaltyPoints) => {
|
257
|
+
utilities.verifyInnerText(autoScoredScoringSectionMultiResponseType.penaltyPointsDetailsSectionAllottedPointsLabel(), `Penalty points for each incorrect answer: ${penaltyPoints}`);
|
258
|
+
},
|
259
|
+
|
260
|
+
/**
|
261
|
+
* This function erases highlight on the canvas
|
262
|
+
* @param {number[][]} arrayOfCoordinates coordinates of the highlight region
|
263
|
+
*/
|
264
|
+
eraseAHighlightRegion: (arrayOfCoordinates) => {
|
265
|
+
imageHighlightPage.itemEraserTool()
|
266
|
+
.click();
|
267
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
268
|
+
.then(($element) => {
|
269
|
+
const clientWidth = $element[0].clientWidth;
|
270
|
+
arrayOfCoordinates.forEach((coordinates) => {
|
271
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
272
|
+
.click(coordinates[0] * clientWidth / 100, coordinates[1] * clientWidth / 100);
|
273
|
+
});
|
274
|
+
});
|
275
|
+
},
|
276
|
+
|
277
|
+
/**
|
278
|
+
* @param {string} fileFormat format of the uploaded file in the highlight region
|
279
|
+
* @description this function verifies the attribute of the image has the expected file format
|
280
|
+
*/
|
281
|
+
verifyUploadedImageFormatInSetCorrectAnswerSection: (fileFormat) => {
|
282
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
283
|
+
.should(($element) => {
|
284
|
+
const hrefAttributeValue = $element.attr('href');
|
285
|
+
expect(hrefAttributeValue).to.include(fileFormat);
|
286
|
+
});
|
287
|
+
},
|
288
|
+
|
289
|
+
/**
|
290
|
+
* @param {number} index of highlighted region
|
291
|
+
* @param {number[]} hotspotCoordsInPercentage co-ordinates of the highlighted image in set correct answer section
|
292
|
+
* @description this function verifies the co-ordinates of region highlighted in set correct answer section
|
293
|
+
*/
|
294
|
+
verifyHighlightRegionsInSpecifyCorrectAnswerSection: (index, hotspotCoordsInPercentage) => {
|
295
|
+
let flattenedArr = hotspotCoordsInPercentage.flat();
|
296
|
+
imageHighlightPage.specifyCorrectAnswerSectionHighlightPolygon()
|
297
|
+
.eq(index)
|
298
|
+
.then(($element) => {
|
299
|
+
const pointsValue = $element.attr('points');
|
300
|
+
const pointsArray = pointsValue.split(',');
|
301
|
+
let wholeNumbersArray = pointsArray.map((point) => {
|
302
|
+
return Math.floor(Number(point))
|
303
|
+
});
|
304
|
+
wholeNumbersArray.forEach((actualPointsValue, index) => {
|
305
|
+
const expectedPointsValue = flattenedArr[index] * imageWidth / 100;
|
306
|
+
cy.wrap(actualPointsValue).should('be.closeTo', expectedPointsValue, 2);
|
307
|
+
});
|
308
|
+
});
|
309
|
+
imageHighlightPage.specifyCorrectAnswerSectionHighlight()
|
310
|
+
.eq(index)
|
311
|
+
.within(() => {
|
312
|
+
imageHighlightPage.highlightNumerationSpecifyCorrectAnswer()
|
313
|
+
.should('have.text', index + 1);
|
314
|
+
});
|
315
|
+
},
|
316
|
+
|
126
317
|
//Preview tab
|
318
|
+
/**
|
319
|
+
* @param {string} fileFormat format of the uploaded file in the highlight region
|
320
|
+
* @description this function verifies the attribute of the image has the expected file format
|
321
|
+
*/
|
322
|
+
verifyUploadedImageFormatInPreviewTab: (fileFormat) => {
|
323
|
+
imageHighlightPage.imagePreviewTab()
|
324
|
+
.should(($element) => {
|
325
|
+
const hrefAttributeValue = $element.attr('href');
|
326
|
+
expect(hrefAttributeValue).to.include(fileFormat);
|
327
|
+
});
|
328
|
+
},
|
329
|
+
|
127
330
|
verifyImageUploadedPreviewTab: () => {
|
128
331
|
utilities.verifyElementVisibilityState(imageHighlightPage.imagePreviewTab(), 'visible')
|
129
332
|
},
|
@@ -228,6 +431,16 @@ const steps = {
|
|
228
431
|
.click();
|
229
432
|
},
|
230
433
|
|
434
|
+
/**
|
435
|
+
* @param {number} index of highlight region
|
436
|
+
* @description this functions highlights a region in preview tab
|
437
|
+
*/
|
438
|
+
clickOnARegionInPreviewTab: (index) => {
|
439
|
+
imageHighlightPage.highlightPolygonPreviewTab()
|
440
|
+
.eq(index)
|
441
|
+
.click();
|
442
|
+
},
|
443
|
+
|
231
444
|
/**
|
232
445
|
* @param {number} index of highlight region
|
233
446
|
* @description this functions highlights a region in preview tab
|
@@ -351,10 +564,103 @@ const steps = {
|
|
351
564
|
}
|
352
565
|
});
|
353
566
|
},
|
567
|
+
|
568
|
+
verifyOuterBorderForQuestion: () => {
|
569
|
+
imageHighlightPage.imagePreviewTabWrapper()
|
570
|
+
.should('have.css', 'border', `1px solid ${css.color.outerBorder}`)
|
571
|
+
},
|
572
|
+
|
573
|
+
verifyOuterBorderOfQuestionPreviewNotExists: () => {
|
574
|
+
imageHighlightPage.imagePreviewTabWrapper()
|
575
|
+
.should('have.css', 'border')
|
576
|
+
.and('match', /0px none/);
|
577
|
+
},
|
354
578
|
}
|
355
579
|
|
356
580
|
const tests = {
|
357
581
|
...autoScoredScoringPreviewTab.tests,
|
582
|
+
...scoringSectionBaseEditTab.tests,
|
583
|
+
...autoScoredScoringSectionMultiResponseType.tests,
|
584
|
+
...autoScoredSpecifyCorrectAnswerSection.tests,
|
585
|
+
...createQuestionBasePage.tests,
|
586
|
+
...commonComponents.tests,
|
587
|
+
...enableOuterBorderComponent.tests,
|
588
|
+
...autoScoredStudentViewSettings.tests,
|
589
|
+
|
590
|
+
/**
|
591
|
+
* @param {string} scoringType scoring type 'All or nothing| Partial equal weights| Partial different weights'
|
592
|
+
* @description this function verifies the contents of Set correct answer section for different scoring types
|
593
|
+
*/
|
594
|
+
verifyContentsOfSpecifyCorrectAnswerSection: () => {
|
595
|
+
it(`When user has selected a scoring type then the uploaded image with highlight regions should be displayed in the set correct answer section`, () => {
|
596
|
+
imageHighlightPage.steps.verifyImageUploadedInSpecifyPossibleOptionsSection();
|
597
|
+
imageHighlightPage.specifyCorrectAnswerSectionHighlight()
|
598
|
+
.should('be.visible');
|
599
|
+
imageHighlightPage.steps.verifyHighlightRegionNumerationSpecifyCorrectAnswer();
|
600
|
+
imageHighlightPage.steps.verifyRegionIsNotHighlightedInSetCorrectAnswerSection(0);
|
601
|
+
imageHighlightPage.steps.verifyRegionIsNotHighlightedInSetCorrectAnswerSection(1);
|
602
|
+
imageHighlightPage.steps.verifyRegionIsNotHighlightedInSetCorrectAnswerSection(2);
|
603
|
+
});
|
604
|
+
},
|
605
|
+
|
606
|
+
/**
|
607
|
+
* Verifies the contents and functionality of the 'Specify correct answer' accordion for multiple selection questions.
|
608
|
+
* @param {{'Correct' | 'Alternative'}} accordionName - The name of the accordion to be used in the validation.
|
609
|
+
* @example - verifySpecifyCorrectAnswerAccordionContentsAndFunctionality('Correct');
|
610
|
+
*/
|
611
|
+
verifySpecifyCorrectAnswerAccordionContentsAndFunctionality: (accordionName) => {
|
612
|
+
it('User should be able to select and de-select highlight regions in specify correct answer section', () => {
|
613
|
+
imageHighlightPage.steps.highlightARegionInSpecifyCorrectAnswerSection(0);
|
614
|
+
imageHighlightPage.steps.highlightARegionInSpecifyCorrectAnswerSection(1);
|
615
|
+
imageHighlightPage.steps.removeHighlightOfARegionInSetCorrectAnswerSection(0);
|
616
|
+
});
|
617
|
+
|
618
|
+
it(`When the user has removed all the options from the dropzone in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
|
619
|
+
imageHighlightPage.steps.removeHighlightOfARegionInSetCorrectAnswerSection(1);
|
620
|
+
utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
|
621
|
+
utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
|
622
|
+
if (accordionName == 'Correct') {
|
623
|
+
autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
|
624
|
+
.within(() => {
|
625
|
+
utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
|
626
|
+
});
|
627
|
+
} else {
|
628
|
+
autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
|
629
|
+
.within(() => {
|
630
|
+
utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
|
631
|
+
});
|
632
|
+
};
|
633
|
+
});
|
634
|
+
|
635
|
+
autoScoredSpecifyCorrectAnswerSection.tests.verifyAutoScoredCorrectAnswerErrorMessageCSSAndA11y();
|
636
|
+
|
637
|
+
it('When the user drops an option in the dropzone, the error message should disappear', () => {
|
638
|
+
imageHighlightPage.steps.highlightARegionInSpecifyCorrectAnswerSection(0);
|
639
|
+
imageHighlightPage.steps.highlightARegionInSpecifyCorrectAnswerSection(1);
|
640
|
+
utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
|
641
|
+
autoScoredSpecifyCorrectAnswerSection.steps.verifySpecifyCorrectAnswerErrorIconNotExists();
|
642
|
+
});
|
643
|
+
|
644
|
+
autoScoredSpecifyCorrectAnswerSection.tests.verifyAutoScoredPointsErrorMessageWhenPointsFieldIsEmpty(accordionName);
|
645
|
+
|
646
|
+
it('CSS of \'Correct\' accordion contents', { tags: 'css' }, () => {
|
647
|
+
utilities.verifyCSS(imageHighlightPage.specifyCorrectAnswerSectionHighlightPolygon().eq(2), {
|
648
|
+
'stroke': css.color.activeButtons,
|
649
|
+
'stroke-width': '2px'
|
650
|
+
});
|
651
|
+
utilities.verifyCSS(imageHighlightPage.highlightNumerationSpecifyCorrectAnswer(), {
|
652
|
+
'fill': css.color.activeButtons,
|
653
|
+
});
|
654
|
+
utilities.verifyCSS(imageHighlightPage.specifyCorrectAnswerSectionHighlightPolygon().eq(0), {
|
655
|
+
'stroke': css.color.activeButtons,
|
656
|
+
'stroke-width': '4px'
|
657
|
+
});
|
658
|
+
});
|
659
|
+
|
660
|
+
it('Accessibility of \'Correct\' accordion contents', { tags: 'a11y' }, () => {
|
661
|
+
cy.checkAccessibility(imageHighlightPage.specifyCorrectAnswerSectionImage());
|
662
|
+
});
|
663
|
+
}
|
358
664
|
}
|
359
665
|
|
360
666
|
export const imageHighlightPage = {
|
@@ -75,6 +75,30 @@ const steps = {
|
|
75
75
|
...numberLineCommonComponent.steps,
|
76
76
|
...layoutSectionComponent.steps,
|
77
77
|
|
78
|
+
/**
|
79
|
+
* This function selects tool options
|
80
|
+
* @param {string[]} toolOptionAriaLabelArray array aria-label of tool options
|
81
|
+
*/
|
82
|
+
selectToolOptions: (toolOptionAriaLabelArray) => {
|
83
|
+
toolOptionAriaLabelArray.forEach((toolOptionAriaLabel) => {
|
84
|
+
toolOptionAriaLabel = toolOptionAriaLabel.toLowerCase()
|
85
|
+
toolsAndControlsComponent.toolOptions(toolOptionAriaLabel)
|
86
|
+
.click();
|
87
|
+
});
|
88
|
+
},
|
89
|
+
|
90
|
+
/**
|
91
|
+
* This function de-selects tool options
|
92
|
+
* @param {string[]} toolOptionAriaLabelArray array aria-label of tool options
|
93
|
+
*/
|
94
|
+
deselectToolOptions: (toolOptionAriaLabelArray) => {
|
95
|
+
toolOptionAriaLabelArray.forEach((toolOptionAriaLabel) => {
|
96
|
+
toolOptionAriaLabel = toolOptionAriaLabel.toLowerCase()
|
97
|
+
toolsAndControlsComponent.toolOptions(toolOptionAriaLabel)
|
98
|
+
.click();
|
99
|
+
});
|
100
|
+
},
|
101
|
+
|
78
102
|
/**
|
79
103
|
* @description This function selects the tool option from graph
|
80
104
|
* @param {string} toolOption aria label of the tool option to be selected
|
@@ -1113,7 +1137,7 @@ const steps = {
|
|
1113
1137
|
const originX = graphWidth / 2;
|
1114
1138
|
const originY = graphHeight / 2;
|
1115
1139
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1116
|
-
const rayArrowHeight =
|
1140
|
+
const rayArrowHeight = 18;
|
1117
1141
|
const y2Pixel = direction === 'up' ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1118
1142
|
cy.get(`.ngie-accordion .ngie-jxgbox svg [stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1119
1143
|
.should('be.visible');
|
@@ -1133,7 +1157,7 @@ const steps = {
|
|
1133
1157
|
const originX = graphWidth / 2;
|
1134
1158
|
const originY = graphHeight / 2;
|
1135
1159
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1136
|
-
const rayArrowHeight =
|
1160
|
+
const rayArrowHeight = 18;
|
1137
1161
|
const y2Pixel = direction === 'up' ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1138
1162
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(0).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1139
1163
|
.should('be.visible');
|
@@ -1154,7 +1178,7 @@ const steps = {
|
|
1154
1178
|
const originX = graphWidth / 2;
|
1155
1179
|
const originY = graphHeight / 2;
|
1156
1180
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1157
|
-
const rayArrowHeight =
|
1181
|
+
const rayArrowHeight = 18;
|
1158
1182
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1159
1183
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(0).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1160
1184
|
.should('have.css', 'stroke', css.color.correctAnswer);
|
@@ -1174,7 +1198,7 @@ const steps = {
|
|
1174
1198
|
const originX = graphWidth / 2;
|
1175
1199
|
const originY = graphHeight / 2;
|
1176
1200
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1177
|
-
const rayArrowHeight =
|
1201
|
+
const rayArrowHeight = 18;
|
1178
1202
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1179
1203
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(0).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1180
1204
|
.should('have.css', 'stroke', css.color.incorrectAnswer);
|
@@ -1194,7 +1218,7 @@ const steps = {
|
|
1194
1218
|
const originX = graphWidth / 2;
|
1195
1219
|
const originY = graphHeight / 2;
|
1196
1220
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1197
|
-
const rayArrowHeight =
|
1221
|
+
const rayArrowHeight = 18;
|
1198
1222
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1199
1223
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(0).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1200
1224
|
.should('not.exist');
|
@@ -1214,7 +1238,7 @@ const steps = {
|
|
1214
1238
|
const originX = graphWidth / 2;
|
1215
1239
|
const originY = graphHeight / 2;
|
1216
1240
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1217
|
-
const rayArrowHeight =
|
1241
|
+
const rayArrowHeight = 18;
|
1218
1242
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1219
1243
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(1).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1220
1244
|
.should('be.visible');
|
@@ -1234,7 +1258,7 @@ const steps = {
|
|
1234
1258
|
const originX = graphWidth / 2;
|
1235
1259
|
const originY = graphHeight / 2;
|
1236
1260
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1237
|
-
const rayArrowHeight =
|
1261
|
+
const rayArrowHeight = 18;
|
1238
1262
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1239
1263
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(1).find(`[stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1240
1264
|
.should('have.css', 'stroke', css.color.correctAnswer);
|
@@ -1254,7 +1278,7 @@ const steps = {
|
|
1254
1278
|
const originX = graphWidth / 2;
|
1255
1279
|
const originY = graphHeight / 2;
|
1256
1280
|
const y1Pixel = originY - startingPoint * (graphHeight / range);
|
1257
|
-
const rayArrowHeight =
|
1281
|
+
const rayArrowHeight = 18;
|
1258
1282
|
const y2Pixel = direction === "up" ? rayArrowHeight : graphHeight - rayArrowHeight;
|
1259
1283
|
cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(1).find(`svg [stroke-linecap="butt"][x1*="${Math.floor(originX)}"][y1*="${Math.floor(y1Pixel)}"][x2*="${Math.floor(originX)}"][y2*="${Math.floor(y2Pixel)}"]`)
|
1260
1284
|
.should('not.exist');
|
@@ -1416,10 +1440,10 @@ const tests = {
|
|
1416
1440
|
});
|
1417
1441
|
},
|
1418
1442
|
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1443
|
+
/**
|
1444
|
+
* Verifies the functionality of the number line section in the edit tab.
|
1445
|
+
* @param {string} orientation - The orientation of the number line ('Horizontal' or 'Vertical').
|
1446
|
+
*/
|
1423
1447
|
verifyDisplayNumberSettingsFunctionalitySpecifyCorrectAnswerSection: (orientation) => {
|
1424
1448
|
const displayNumbersOptions = (orientation === "Horizontal") ? ["Below line", "Above line"] : ["Left of line", "Right of line"];
|
1425
1449
|
const direction = (orientation === "Horizontal") ? "Below" : "Left of";
|
@@ -1437,10 +1461,10 @@ const tests = {
|
|
1437
1461
|
});
|
1438
1462
|
},
|
1439
1463
|
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1464
|
+
/**
|
1465
|
+
* Verifies the functionality of the number line section in the preview tab.
|
1466
|
+
* @param {string} orientation - The orientation of the number line ('Horizontal' or 'Vertical').
|
1467
|
+
*/
|
1444
1468
|
verifyDisplayNumberSettingsFunctionalityPreviewTab: (orientation) => {
|
1445
1469
|
const displayNumbersOptions = (orientation === "Horizontal") ? ["Below line", "Above line"] : ["Left of line", "Right of line"];
|
1446
1470
|
const direction = (orientation === "Horizontal") ? "Below" : "Left of";
|