itemengine-cypress-automation 1.0.197 → 1.0.198
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/ImageHighlight/editTabScoring.js +355 -0
- package/cypress/e2e/ILC/ImageHighlight/headerSection.js +83 -0
- package/cypress/e2e/ILC/ImageHighlight/minimumScoringPenaltyPointsAndRoundingDropdown.js +205 -0
- package/cypress/e2e/ILC/ImageHighlight/specifyCorrectAnswerSection.js +92 -0
- package/cypress/e2e/ILC/ImageHighlight/studentViewSettings.js +404 -0
- package/cypress/e2e/ILC/ImageHighlight/supportedFileTypes.js +42 -0
- package/cypress/e2e/ILC/ImageHighlight/toolSettings.js +73 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/editTabScoring.js +253 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/partialDifferentWeightsBasic.js +114 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +288 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/partialEqualWeightsBasic.js +164 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/previewContentsForAllViews.smoke.js +168 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/setPointsPopup.js +83 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/specifyCorrectAnswerSection.js +114 -0
- package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/studentViewSettings.js +179 -0
- package/cypress/e2e/ILC/ListOrderingNew/horizontalOrientationAllOrNothingForAllViews.smoke.js +214 -0
- package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +5 -21
- package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +3 -37
- package/cypress/e2e/ILC/VideoResponseNew/previewContentsForAllViews.smoke.js +1 -1
- package/cypress/fixtures/uploads/sampleVirus.zip +0 -0
- package/cypress/pages/components/draggableOptionContainer.js +1 -1
- package/cypress/pages/components/enableOuterBorderComponent.js +16 -2
- package/cypress/pages/components/index.js +3 -1
- package/cypress/pages/components/scoringSectionBase.js +1 -1
- package/cypress/pages/components/setPointsPopupBase.js +7 -10
- package/cypress/pages/components/showAvailableOptionsToStudents.js +76 -0
- package/cypress/pages/components/showStudentMaximumNumberOfPossibleSelections.js +56 -0
- package/cypress/pages/imageHighlightPage.js +434 -4
- package/cypress/pages/listOrderingPage.js +287 -43
- package/cypress/pages/textSelectionPage.js +6 -71
- package/package.json +1 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
import utilities from "../support/helpers/utilities";
|
2
|
-
import { autoScoredScoringPreviewTab, autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, autoScoredStudentViewSettings, backgroundImageUploadComponent, commonComponents, createQuestionBasePage, enableOuterBorderComponent, imageCanvasComponent, questionInstructionsComponent, scoringSectionBaseEditTab, singleMultipleSelectionModeComponent } from "./components"
|
2
|
+
import { additionalSettingsAccessibilitySectionComponent, additionalSettingsPanel, autoScoredScoringPreviewTab, autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, autoScoredStudentViewSettings, backgroundImageUploadComponent, commonComponents, createQuestionBasePage, enableOuterBorderComponent, gradingViewEnumerationComponent, imageActionsComponent, imageCanvasComponent, questionInstructionsComponent, scoringSectionBaseEditTab, showAvailableOptionsToStudents, showStudentMaximumNumberOfPossibleSelections, singleMultipleSelectionModeComponent } from "./components"
|
3
3
|
const css = Cypress.env('css');
|
4
4
|
let imageWidth = 768;
|
5
5
|
let imageHeight = 432;
|
@@ -10,7 +10,13 @@ const selectors = {
|
|
10
10
|
...autoScoredSpecifyCorrectAnswerSection,
|
11
11
|
...commonComponents,
|
12
12
|
...enableOuterBorderComponent,
|
13
|
+
...showAvailableOptionsToStudents,
|
14
|
+
...showStudentMaximumNumberOfPossibleSelections,
|
13
15
|
...autoScoredScoringPreviewTab,
|
16
|
+
...imageCanvasComponent,
|
17
|
+
...imageActionsComponent,
|
18
|
+
...additionalSettingsPanel,
|
19
|
+
...gradingViewEnumerationComponent,
|
14
20
|
|
15
21
|
//Specify possible options
|
16
22
|
specifyPossibleOptionsImageWrapper: () => cy.get('.drawing-tool__wrapper .drawing-tool__canvas'),
|
@@ -22,6 +28,11 @@ const selectors = {
|
|
22
28
|
redoTool: () => cy.get('.drawing-tool__button-redo'),
|
23
29
|
clearAllTool: () => cy.get('.drawing-tool__button-clearAll'),
|
24
30
|
optionCount: () => cy.get('[class*="HighlightImagestyles__HighlightCountWrapper"]'),
|
31
|
+
specifyPossibleOptionsLabel: () => cy.get('[class*="HighlightImagestyles__HighlightImageLabel"]'),
|
32
|
+
clearAllPopupHeading: () => cy.get('.drawing-tool__delete-popup__heading'),
|
33
|
+
clearAllPopupDescription: () => cy.get('.drawing-tool__delete-popup__body'),
|
34
|
+
cancelButton: () => cy.get('.cancel-button'),
|
35
|
+
clearAllButton: () => cy.get('.clear-button'),
|
25
36
|
//Specify correct answer section
|
26
37
|
specifyCorrectAnswerSectionImage: () => cy.get('.highlight-svg-responseive image'),
|
27
38
|
specifyCorrectAnswerSectionHighlight: () => cy.get('.ngie-accordion [class*="HighlightImageControlstyles__ShapeWrapper"] a'),
|
@@ -41,7 +52,16 @@ const selectors = {
|
|
41
52
|
correctAnswerNumeration: () => cy.get('[class*="CellIndexWrapper"]'),
|
42
53
|
correctIncorrectAnswerTextWrapper: () => cy.get('[class*="_CorrectIncorrectWrapper"]'),
|
43
54
|
incorrectIcon: () => cy.get('[data-icon="Incorrect"]'),
|
44
|
-
correctIcon: () => cy.get('[data-icon="CorrectAnswer"]')
|
55
|
+
correctIcon: () => cy.get('[data-icon="CorrectAnswer"]'),
|
56
|
+
//Additional settings
|
57
|
+
descriptorsAccordion: () => cy.get('.descriptor-wrapper .MuiAccordionSummary-root'),
|
58
|
+
descriptorsHeading: () => cy.get('[class*="Descriptorsstyles__AddToolsHeading"]'),
|
59
|
+
descriptorsInfoIcon: () => cy.get('[class*="Descriptorsstyles__InfoIconWrapper"]'),
|
60
|
+
descriptorsInputField: () => cy.get('.option-without-ckeditor input'),
|
61
|
+
descriptorsInputFieldNumeration: () => cy.get('.descriptor-wrapper .MuiInputAdornment-positionStart'),
|
62
|
+
ariaLabelInputField: () => cy.get('input[placeholder*="Enter ARIA label"]'),
|
63
|
+
inputFieldNumeration: () => cy.get('.MuiInputAdornment-root'),
|
64
|
+
ariaLabelSectionLabel: () => cy.get('[class*="styles__LabelWrapper"]').contains('ARIA'),
|
45
65
|
}
|
46
66
|
|
47
67
|
const steps = {
|
@@ -56,6 +76,10 @@ const steps = {
|
|
56
76
|
...autoScoredSpecifyCorrectAnswerSection.steps,
|
57
77
|
...autoScoredScoringSectionMultiResponseType.steps,
|
58
78
|
...enableOuterBorderComponent.steps,
|
79
|
+
...showAvailableOptionsToStudents.steps,
|
80
|
+
...showStudentMaximumNumberOfPossibleSelections.steps,
|
81
|
+
...additionalSettingsPanel.steps,
|
82
|
+
...gradingViewEnumerationComponent.steps,
|
59
83
|
|
60
84
|
//Specify possible options
|
61
85
|
clickOnFreeformTool: () => {
|
@@ -79,7 +103,16 @@ const steps = {
|
|
79
103
|
clickOnClearAllTool: () => {
|
80
104
|
imageHighlightPage.clearAllTool()
|
81
105
|
.click()
|
82
|
-
|
106
|
+
},
|
107
|
+
|
108
|
+
clickOnClearAllButton: () => {
|
109
|
+
imageHighlightPage.clearAllButton()
|
110
|
+
.click();
|
111
|
+
},
|
112
|
+
|
113
|
+
clickOnCancelAllButton: () => {
|
114
|
+
imageHighlightPage.cancelButton()
|
115
|
+
.click();
|
83
116
|
},
|
84
117
|
|
85
118
|
verifyImageUploadedInSpecifyPossibleOptionsSection: () => {
|
@@ -157,7 +190,233 @@ const steps = {
|
|
157
190
|
.should('not.have.class', 'drawing-tool__button--active');
|
158
191
|
},
|
159
192
|
|
193
|
+
verifyCanvasImageTopLeftAligned: () => {
|
194
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
195
|
+
.should('have.css', 'top', '0px')
|
196
|
+
.and('have.css', 'left', '0px');
|
197
|
+
},
|
198
|
+
|
199
|
+
verifyCanvasImageCenterAligned: () => {
|
200
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
201
|
+
.should('not.have.css', 'top', '0px')
|
202
|
+
.and('not.have.css', 'left', '0px');
|
203
|
+
},
|
204
|
+
|
205
|
+
verifyCanvasImageTopRightAligned: () => {
|
206
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
207
|
+
.should('have.css', 'top', '0px')
|
208
|
+
.and('not.have.css', 'left', '0px');
|
209
|
+
},
|
210
|
+
|
211
|
+
/**
|
212
|
+
* @param {number} value holds opacity value for image
|
213
|
+
* @description function verifies opacity value for image
|
214
|
+
*/
|
215
|
+
verifyOpacityValueForCanvasImage: (value) => {
|
216
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
217
|
+
.should('have.attr', 'opacity', value / 100);
|
218
|
+
},
|
219
|
+
|
220
|
+
verifyImageFitsToCanvas: () => {
|
221
|
+
imageHighlightPage.canvasWidthInputField()
|
222
|
+
.invoke('attr', 'value')
|
223
|
+
.then((value) => {
|
224
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
225
|
+
.should('have.css', 'width', `${value}px`);
|
226
|
+
});
|
227
|
+
},
|
228
|
+
|
229
|
+
verifyImageDoesNotFitToCanvas: () => {
|
230
|
+
imageHighlightPage.canvasWidthInputField()
|
231
|
+
.invoke('attr', 'value')
|
232
|
+
.then(($element) => {
|
233
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
234
|
+
.should('not.have.css', 'width', `${$element}px`);
|
235
|
+
});
|
236
|
+
},
|
237
|
+
|
238
|
+
/**
|
239
|
+
* @param {*} width width of canvas
|
240
|
+
* @description this function verifies width of canvas
|
241
|
+
*/
|
242
|
+
verifyCanvasWidth: (width) => {
|
243
|
+
const tolerance = 2
|
244
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
245
|
+
.should('have.attr', 'width', width - tolerance);
|
246
|
+
},
|
247
|
+
|
248
|
+
/**
|
249
|
+
* @param {*} height height of canvas
|
250
|
+
* @description this function verifies height of canvas
|
251
|
+
*/
|
252
|
+
verifyCanvasHeight: (height) => {
|
253
|
+
const tolerance = 2
|
254
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
255
|
+
.should('have.css', 'height')
|
256
|
+
.then(($cssHeight) => {
|
257
|
+
const actualHeight = parseFloat($cssHeight);
|
258
|
+
expect(actualHeight).to.be.closeTo(height, tolerance);
|
259
|
+
});
|
260
|
+
},
|
261
|
+
|
262
|
+
/**
|
263
|
+
* @param {string} text alternative text for canvas image
|
264
|
+
* @description this function verifies text for canvas image
|
265
|
+
*/
|
266
|
+
verifyImageAltTextSpecifyPossibleOptionsImageCanvas: (text) => {
|
267
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
268
|
+
.parents('.drawing-tool__wrapper')
|
269
|
+
.find('.lower-canvas')
|
270
|
+
.should('have.attr', 'aria-label', text);
|
271
|
+
},
|
272
|
+
|
273
|
+
verifyNoImageAltTextSpecifyPossibleOptionsImageCanvas: () => {
|
274
|
+
imageHighlightPage.specifyPossibleOptionsImageCanvas()
|
275
|
+
.parents('.drawing-tool__wrapper')
|
276
|
+
.find('.lower-canvas')
|
277
|
+
.should('have.attr', 'aria-label', 'Image');
|
278
|
+
},
|
279
|
+
|
160
280
|
//Specify correct answer section
|
281
|
+
/**
|
282
|
+
* @param {string} text alternative text for canvas image
|
283
|
+
* @description this function verifies text for canvas image
|
284
|
+
*/
|
285
|
+
verifyImageAltTextSpecifyCorrectAnswerImageCanvas: (text) => {
|
286
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
287
|
+
.should('have.attr', 'alt', text);
|
288
|
+
},
|
289
|
+
|
290
|
+
verifyNoImageAltTextSpecifyCorrectAnswerImageCanvas: () => {
|
291
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
292
|
+
.should('have.attr', 'alt', '');
|
293
|
+
},
|
294
|
+
|
295
|
+
verifyCanvasImageTopLeftAlignedSpecifyCorrectAnswer: () => {
|
296
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
297
|
+
.should('have.css', 'top', '0px')
|
298
|
+
.and('have.css', 'left', '0px');
|
299
|
+
},
|
300
|
+
|
301
|
+
verifyCanvasImageCenterAlignedSpecifyCorrectAnswer: () => {
|
302
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
303
|
+
.should('not.have.css', 'top', '0px')
|
304
|
+
.and('not.have.css', 'left', '0px');
|
305
|
+
},
|
306
|
+
|
307
|
+
verifyCanvasImageTopRightAlignedSpecifyCorrectAnswer: () => {
|
308
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
309
|
+
.should('have.css', 'top', '0px')
|
310
|
+
.and('not.have.css', 'left', '0px');
|
311
|
+
},
|
312
|
+
|
313
|
+
/**
|
314
|
+
* @param {number} value holds opacity value for image
|
315
|
+
* @description function verifies opacity value for image
|
316
|
+
*/
|
317
|
+
verifyOpacityValueForCanvasImageSpecifyCorrectAnswer: (value) => {
|
318
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
319
|
+
.should('have.attr', 'opacity', value / 100);
|
320
|
+
},
|
321
|
+
|
322
|
+
verifyImageFitsToCanvasSpecifyCorrectAnswer: () => {
|
323
|
+
imageHighlightPage.canvasWidthInputField()
|
324
|
+
.invoke('attr', 'value')
|
325
|
+
.then((value) => {
|
326
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
327
|
+
.should('have.css', 'width', `${value}px`);
|
328
|
+
});
|
329
|
+
},
|
330
|
+
|
331
|
+
verifyImageDoesNotFitToCanvasSpecifyCorrectAnswer: () => {
|
332
|
+
imageHighlightPage.canvasWidthInputField()
|
333
|
+
.invoke('attr', 'value')
|
334
|
+
.then(($element) => {
|
335
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
336
|
+
.should('not.have.css', 'width', `${$element}px`);
|
337
|
+
});
|
338
|
+
},
|
339
|
+
|
340
|
+
/**
|
341
|
+
* @param {*} width width of canvas
|
342
|
+
* @description this function verifies width of canvas
|
343
|
+
*/
|
344
|
+
verifyCanvasWidthSpecifyCorrectAnswer: (width) => {
|
345
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
346
|
+
.should('have.attr', 'width', width);
|
347
|
+
},
|
348
|
+
|
349
|
+
/**
|
350
|
+
* @param {*} height height of canvas
|
351
|
+
* @description this function verifies height of canvas
|
352
|
+
*/
|
353
|
+
verifyCanvasHeightSpecifyCorrectAnswer: (height) => {
|
354
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
355
|
+
.should('have.css', 'height', `${height}px`);
|
356
|
+
},
|
357
|
+
|
358
|
+
/**
|
359
|
+
* @param {string} text alternative text for canvas image
|
360
|
+
* @description this function verifies text for canvas image
|
361
|
+
*/
|
362
|
+
verifyImageAlternativeTextPresentInSpecifyCorrectAnswer: (text) => {
|
363
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
364
|
+
.should('have.attr', 'alt', text);
|
365
|
+
},
|
366
|
+
|
367
|
+
verifyNoImageAlternativeTextPresentInSpecifyCorrectAnswer: () => {
|
368
|
+
imageHighlightPage.specifyCorrectAnswerSectionImage()
|
369
|
+
.should('not.have.attr', 'alt');
|
370
|
+
},
|
371
|
+
|
372
|
+
/**
|
373
|
+
* This function verifies highlight region aria label
|
374
|
+
* @param {number} index for the highlight region
|
375
|
+
* @param {string} ariaLabel for the highlight region
|
376
|
+
*/
|
377
|
+
verifyHighlightRegionAriaLabelSpecifyCorrectAnswer: (index, ariaLabel) => {
|
378
|
+
imageHighlightPage.specifyCorrectAnswerSectionHighlight()
|
379
|
+
.eq(index)
|
380
|
+
.should('have.attr', 'aria-label', ariaLabel);
|
381
|
+
},
|
382
|
+
|
383
|
+
/**
|
384
|
+
* Verifies the ARIA label text input fields.
|
385
|
+
* @param {number} inputFieldIndex - The index of the input field to verify.
|
386
|
+
*/
|
387
|
+
verifyAriaLabelTextInputFields: (inputFieldIndex) => {
|
388
|
+
imageHighlightPage.ariaLabelInputField()
|
389
|
+
.eq(inputFieldIndex)
|
390
|
+
.parents('.input-editable')
|
391
|
+
.within(() => {
|
392
|
+
utilities.verifyInnerText(imageHighlightPage.inputFieldNumeration(), `${inputFieldIndex + 1}`)
|
393
|
+
utilities.verifyInputFieldValue(imageHighlightPage.ariaLabelInputField(), '');
|
394
|
+
});
|
395
|
+
},
|
396
|
+
|
397
|
+
/**
|
398
|
+
* Enters text in the ARIA label input field.
|
399
|
+
* @param {number} inputFieldIndex - The index of the input field to enter text into.
|
400
|
+
* @param {string} text - The text to enter into the input field.
|
401
|
+
*/
|
402
|
+
enterTextInAriaLabelInputField: (inputFieldIndex, text) => {
|
403
|
+
imageHighlightPage.ariaLabelInputField()
|
404
|
+
.eq(inputFieldIndex)
|
405
|
+
.type(text)
|
406
|
+
.should('have.value', text)
|
407
|
+
.blur();
|
408
|
+
},
|
409
|
+
|
410
|
+
/**
|
411
|
+
* Clears text in the ARIA label input field.
|
412
|
+
* @param {number} inputFieldIndex - The index of the input field to clear.
|
413
|
+
*/
|
414
|
+
clearTextInAriaLabelInputField: (inputFieldIndex) => {
|
415
|
+
imageHighlightPage.ariaLabelInputField()
|
416
|
+
.eq(inputFieldIndex)
|
417
|
+
.clear();
|
418
|
+
},
|
419
|
+
|
161
420
|
verifyImageUploadedSpecifyCorrectAnswer: () => {
|
162
421
|
utilities.verifyElementVisibilityState(imageHighlightPage.specifyCorrectAnswerSectionImage(), 'visible')
|
163
422
|
},
|
@@ -331,6 +590,103 @@ const steps = {
|
|
331
590
|
utilities.verifyElementVisibilityState(imageHighlightPage.imagePreviewTab(), 'visible')
|
332
591
|
},
|
333
592
|
|
593
|
+
verifyImageNotUploadedPreviewTab: () => {
|
594
|
+
imageHighlightPage.imagePreviewTab()
|
595
|
+
.should('have.attr', 'href', '');
|
596
|
+
},
|
597
|
+
|
598
|
+
verifyCanvasImageTopLeftAlignedInPreviewTab: () => {
|
599
|
+
imageHighlightPage.imagePreviewTab()
|
600
|
+
.should('have.css', 'top', '0px')
|
601
|
+
.and('have.css', 'left', '0px');
|
602
|
+
},
|
603
|
+
|
604
|
+
verifyCanvasImageCenterAlignedInPreviewTab: () => {
|
605
|
+
imageHighlightPage.imagePreviewTab()
|
606
|
+
.should('not.have.css', 'top', '0px')
|
607
|
+
.and('not.have.css', 'left', '0px');
|
608
|
+
},
|
609
|
+
|
610
|
+
verifyCanvasImageTopRightAlignedInPreviewTab: () => {
|
611
|
+
imageHighlightPage.imagePreviewTab()
|
612
|
+
.should('have.css', 'top', '0px')
|
613
|
+
.and('not.have.css', 'left', '0px');
|
614
|
+
},
|
615
|
+
|
616
|
+
/**
|
617
|
+
* @param {number} value holds opacity value for image
|
618
|
+
* @description function verifies opacity value for image
|
619
|
+
*/
|
620
|
+
verifyOpacityValueForCanvasImageInPreviewTab: (value) => {
|
621
|
+
imageHighlightPage.imagePreviewTab()
|
622
|
+
.should('have.attr', 'opacity', value / 100);
|
623
|
+
},
|
624
|
+
|
625
|
+
/**
|
626
|
+
* @param {*} width width of canvas
|
627
|
+
* @description this function verifies width of canvas
|
628
|
+
*/
|
629
|
+
verifyCanvasWidthInPreviewTab: (width) => {
|
630
|
+
imageHighlightPage.imagePreviewTab()
|
631
|
+
.should('have.attr', 'width', width);
|
632
|
+
},
|
633
|
+
|
634
|
+
/**
|
635
|
+
* @param {*} height height of canvas
|
636
|
+
* @description this function verifies height of canvas
|
637
|
+
*/
|
638
|
+
verifyCanvasHeightInPreviewTab: (height) => {
|
639
|
+
imageHighlightPage.imagePreviewTab()
|
640
|
+
.should('have.css', 'height', `${height}px`);
|
641
|
+
},
|
642
|
+
|
643
|
+
/**
|
644
|
+
* @param {string} text alternative text for canvas image
|
645
|
+
* @description this function verifies text for canvas image
|
646
|
+
*/
|
647
|
+
verifyImageAlternativeTextInPreviewTab: (text) => {
|
648
|
+
imageHighlightPage.imagePreviewTab()
|
649
|
+
.should('have.attr', 'alt', text);
|
650
|
+
},
|
651
|
+
|
652
|
+
verifyNoImageAlternativeTextPresentInPreviewTab: () => {
|
653
|
+
imageHighlightPage.imagePreviewTab()
|
654
|
+
.should('have.attr', 'alt', '');
|
655
|
+
},
|
656
|
+
|
657
|
+
verifyImageFitsToCanvasInPreviewTab: () => {
|
658
|
+
createQuestionBasePage.steps.switchToEditTab();
|
659
|
+
imageCanvasComponent.canvasWidthInputField()
|
660
|
+
.invoke('attr', 'value')
|
661
|
+
.then((value) => {
|
662
|
+
createQuestionBasePage.steps.switchToPreviewTab();
|
663
|
+
imageHighlightPage.imagePreviewTab()
|
664
|
+
.should('have.css', 'width', `${value}px`);
|
665
|
+
});
|
666
|
+
},
|
667
|
+
|
668
|
+
verifyImageDoesNotFitToCanvasInPreviewTab: () => {
|
669
|
+
createQuestionBasePage.steps.switchToEditTab();
|
670
|
+
imageHighlightPage.canvasWidthInputField()
|
671
|
+
.invoke('attr', 'value')
|
672
|
+
.then(($element) => {
|
673
|
+
createQuestionBasePage.steps.switchToPreviewTab();
|
674
|
+
imageHighlightPage.imagePreviewTab()
|
675
|
+
.should('not.have.css', 'width', `${$element}px`);
|
676
|
+
});
|
677
|
+
},
|
678
|
+
|
679
|
+
/**
|
680
|
+
* This function verifies highlight region aria label
|
681
|
+
* @param {number} index for the highlight region
|
682
|
+
* @param {string} ariaLabel for the highlight region
|
683
|
+
*/
|
684
|
+
verifyHighlightRegionAriaLabelPreviewTab: (index, ariaLabel) => {
|
685
|
+
imageHighlightPage.highlightPreviewTab()
|
686
|
+
.eq(index)
|
687
|
+
.should('have.attr', 'aria-label', ariaLabel);
|
688
|
+
},
|
689
|
+
|
334
690
|
/**
|
335
691
|
* This function verifies the alt text of the image
|
336
692
|
* @param {string} altText for the image in preview tab
|
@@ -474,7 +830,7 @@ const steps = {
|
|
474
830
|
},
|
475
831
|
|
476
832
|
/**
|
477
|
-
* @param {
|
833
|
+
* @param {number} index of highlight region
|
478
834
|
* @description this function verifies the highlight region is correct
|
479
835
|
*/
|
480
836
|
verifyCorrectHighlightRegion: (index) => {
|
@@ -517,6 +873,23 @@ const steps = {
|
|
517
873
|
});
|
518
874
|
},
|
519
875
|
|
876
|
+
verifyHighlightNumerationNotExist: () => {
|
877
|
+
imageHighlightPage.highlightNumerationPreviewTab()
|
878
|
+
.should('not.exist');
|
879
|
+
},
|
880
|
+
|
881
|
+
/**
|
882
|
+
* This function checks numeration array for highlights
|
883
|
+
* @param {string[]} numerationArray array of numeration to be checked for highlight options
|
884
|
+
*/
|
885
|
+
verifyHighlightEnumeration: (numerationArray) => {
|
886
|
+
numerationArray.forEach((numeration, index) => {
|
887
|
+
imageHighlightPage.highlightNumerationPreviewTab()
|
888
|
+
.eq(index)
|
889
|
+
.should('have.text', numeration);
|
890
|
+
});
|
891
|
+
},
|
892
|
+
|
520
893
|
/**
|
521
894
|
* @param {string[]} numerationArray array of numeration numbers, lowercase, uppercase
|
522
895
|
* @description this function verifies the numeration of Correct Answer Container
|
@@ -575,6 +948,56 @@ const steps = {
|
|
575
948
|
.should('have.css', 'border')
|
576
949
|
.and('match', /0px none/);
|
577
950
|
},
|
951
|
+
|
952
|
+
verifyDescriptorsAccordionIsCollapsed: () => {
|
953
|
+
imageHighlightPage.descriptorsAccordion()
|
954
|
+
.should('have.attr', 'aria-expanded', 'false');
|
955
|
+
},
|
956
|
+
|
957
|
+
expandDescriptorsAccordion: () => {
|
958
|
+
imageHighlightPage.descriptorsAccordion()
|
959
|
+
.click()
|
960
|
+
.should('have.attr', 'aria-expanded', 'true');
|
961
|
+
},
|
962
|
+
|
963
|
+
/**
|
964
|
+
* Verifies that the descriptors input fields are visible and correctly numbered.
|
965
|
+
* @param {number} countOfDescriptors - The total number of descriptor input fields to verify.
|
966
|
+
*/
|
967
|
+
verifyDescriptorsInputFieldContents: (countOfDescriptors) => {
|
968
|
+
for (let i = 0; i < countOfDescriptors; i++) {
|
969
|
+
imageHighlightPage.descriptorsInputField()
|
970
|
+
.eq(i)
|
971
|
+
.should('be.visible')
|
972
|
+
imageHighlightPage.descriptorsInputFieldNumeration()
|
973
|
+
.eq(i)
|
974
|
+
.should('have.text', `${i + 1}`);
|
975
|
+
}
|
976
|
+
},
|
977
|
+
|
978
|
+
/**
|
979
|
+
* Verifies that a specific descriptor input field contains the expected text.
|
980
|
+
* @param {number} index - The index of the descriptor input field to verify.
|
981
|
+
* @param {string} inputText - The expected text to be found in the input field.
|
982
|
+
*/
|
983
|
+
verifyDescriptorsInputField: (index, inputText) => {
|
984
|
+
imageHighlightPage.descriptorsInputField()
|
985
|
+
.eq(index)
|
986
|
+
.should('have.value', inputText)
|
987
|
+
},
|
988
|
+
|
989
|
+
/**
|
990
|
+
* Enters text into a specific descriptor input field and verifies the input.
|
991
|
+
* @param {number} index - The index of the descriptor input field where the text will be entered.
|
992
|
+
* @param {string} inputText - The text to enter into the input field.
|
993
|
+
*/
|
994
|
+
enterTextInDescriptorsInputField: (index, inputText) => {
|
995
|
+
imageHighlightPage.descriptorsInputField()
|
996
|
+
.eq(index)
|
997
|
+
.type(inputText)
|
998
|
+
.blur();
|
999
|
+
steps.verifyDescriptorsInputField(index, inputText);
|
1000
|
+
}
|
578
1001
|
}
|
579
1002
|
|
580
1003
|
const tests = {
|
@@ -586,6 +1009,13 @@ const tests = {
|
|
586
1009
|
...commonComponents.tests,
|
587
1010
|
...enableOuterBorderComponent.tests,
|
588
1011
|
...autoScoredStudentViewSettings.tests,
|
1012
|
+
...showAvailableOptionsToStudents.tests,
|
1013
|
+
...questionInstructionsComponent.tests,
|
1014
|
+
...backgroundImageUploadComponent.tests,
|
1015
|
+
...imageCanvasComponent.tests,
|
1016
|
+
...additionalSettingsPanel.tests,
|
1017
|
+
...gradingViewEnumerationComponent.tests,
|
1018
|
+
...additionalSettingsAccessibilitySectionComponent.tests,
|
589
1019
|
|
590
1020
|
/**
|
591
1021
|
* @param {string} scoringType scoring type 'All or nothing| Partial equal weights| Partial different weights'
|