itemengine-cypress-automation 1.0.253-TEMSmokeTestUpdates-82559a5.0 → 1.0.254-UpdatedRepo4thNov-c5b0050.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabAddFeatureRadioButton.js +231 -0
  2. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabAddTranscriptRadioButton .js +213 -0
  3. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabAudioPlayerStyle.js +148 -0
  4. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerEditTabStudentViewSettings.js +249 -0
  5. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerHeaderSectionAndButtons.js +164 -0
  6. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTab.js +444 -0
  7. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabSupportedFileTypes.js +102 -0
  8. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabTranscript.js +134 -0
  9. package/cypress/e2e/ILC/CkEditorEquationEditor/equationEditorBasicFile.js +46 -0
  10. package/cypress/e2e/ILC/CkEditorInsertTable/insertTableEditorBasicFile.js +98 -0
  11. package/cypress/e2e/ILC/CkEditorInsertTable/tableDimension&FooterProperties.js +147 -0
  12. package/cypress/e2e/ILC/CkEditorInsertTable/tableHeaders.js +127 -0
  13. package/cypress/e2e/ILC/CkEditorInsertTable/tableRowAndColumn.js +71 -0
  14. package/cypress/e2e/ILC/CkEditorInsertTable/tableStyle.js +154 -0
  15. package/cypress/e2e/ILC/Compass/compassPreviewContent.smoke.js +1 -0
  16. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +41 -17
  17. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingBasicForGroupedOptionsLayout.js +24 -12
  18. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +47 -20
  19. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +43 -16
  20. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/manuallyAndNonScoredScoring.js +5 -5
  21. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perCorrectOptionAlternativePointsGreaterThanCorrectPoints.js +52 -21
  22. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perCorrectOptionBasic.js +23 -11
  23. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perCorrectOptionCorrectPointsEqualToAlternativePoints.js +55 -21
  24. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perCorrectOptionCorrectPointsGreaterThanAlternativePoints.js +53 -21
  25. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneAlternativePointsGreaterThanCorrectPoints.js +48 -19
  26. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneBasic.js +23 -11
  27. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneCorrectPointsEqualToAlternativePoints.js +47 -17
  28. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/Scoring/perDropzoneCorrectPointsGreaterThanAlternativePoints.js +50 -19
  29. package/cypress/e2e/ILC/DrawingResponse/drawingResponseCustomizeAdditionalOptions.js +0 -2
  30. package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +3 -0
  31. package/cypress/e2e/ILC/DrawingResponse/drawingResponsePreviewTabContents.smoke.js +0 -3
  32. package/cypress/e2e/ILC/EssayResponse/createCustomCategory.smoke.js +2 -1
  33. package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +4 -4
  34. package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions4.js +261 -0
  35. package/cypress/e2e/ILC/EssayResponse/gradingViewAndCorrectAnswerViewContents.smoke.js +4 -2
  36. package/cypress/e2e/ILC/EssayResponseBasic/gradingViewAndCorrectAnswerViewContents.smoke.js +4 -2
  37. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/Scoring/responseLevelAlternateAnswerBasicScoring.js +1 -1
  38. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/dropzoneAlternateAnswerPopup.js +2 -2
  39. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +5 -3
  40. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -2
  41. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -2
  42. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/dropdownAlternateAnswerPopup.js +1 -0
  43. package/cypress/e2e/ILC/GridFill/customizeLayoutFillColor.js +3 -0
  44. package/cypress/e2e/ILC/GridFill/customizeLayoutFillImageBackgroundImage.js +15 -0
  45. package/cypress/e2e/ILC/GridFill/customizeLayoutSectionShadeCellsGridBorders.js +10 -0
  46. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +2 -1
  47. package/cypress/e2e/ILC/GridFill/specifyCorrectAnswerSection.js +3 -2
  48. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +56 -8
  49. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +1 -1
  50. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
  51. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +1 -1
  52. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsScoringBasic.js +4 -4
  53. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
  54. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +1 -1
  55. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +3 -3
  56. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasic.js +2 -2
  57. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +16 -16
  58. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViewsFormulaTemplate.smoke.js +4 -5
  59. package/cypress/e2e/ILC/TextEntryMath/customSettings.js +8 -22
  60. package/cypress/e2e/ILC/TextEntryMathWithImage/allOrNothingScoringForAllViews.smoke.js +19 -19
  61. package/cypress/e2e/ILC/TextEntryMathWithImage/backgroundImageAndCanvasProperties.js +2 -2
  62. package/cypress/e2e/ILC/TextEntryMathWithImage/previewTabContentsForAllViews.smoke.js +5 -5
  63. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +1 -4
  64. package/cypress/e2e/ILC/ToolAudioPlayerNew/studentViewSettings.js +8 -2
  65. package/cypress/fixtures/theme/ilc.json +9 -5
  66. package/cypress/pages/components/ckEditorAudioPlayerComponent.js +615 -0
  67. package/cypress/pages/components/ckEditorEquationEditorComponent.js +41 -0
  68. package/cypress/pages/components/ckEditorInsertTableComponent.js +741 -0
  69. package/cypress/pages/components/essayResponseCommonComponents.js +145 -7
  70. package/cypress/pages/components/imageCanvasComponent.js +2 -2
  71. package/cypress/pages/components/index.js +2 -1
  72. package/cypress/pages/components/layoutSectionComponent.js +25 -4
  73. package/cypress/pages/components/numberLineCommonComponent.js +39 -0
  74. package/cypress/pages/components/optionsWrapperComponent.js +1 -1
  75. package/cypress/pages/components/scoringSectionBaseEditTab.js +1 -0
  76. package/cypress/pages/dragAndDropIntoCategoriesPage.js +28 -0
  77. package/cypress/pages/fillInTheGapsDragAndDropPage.js +1 -1
  78. package/cypress/pages/graphingPage.js +8 -8
  79. package/cypress/pages/gridFillPage.js +11 -11
  80. package/cypress/pages/multipleSelectionPage.js +12 -0
  81. package/cypress/pages/singleSelectionPage.js +1 -1
  82. package/cypress/pages/textEntryMathPage.js +18 -0
  83. package/cypress/pages/textEntryMathWithImagePage.js +15 -2
  84. package/cypress/pages/textSelectionPage.js +7 -1
  85. package/package.json +1 -1
@@ -31,13 +31,32 @@ const selectors = {
31
31
  return cy.get('.essay-preview-wrapper a[role="button"]')
32
32
  }
33
33
  },
34
-
34
+ popupLabel: () => cy.get('[class*="ColorOptionsDialogstyles__PopupHeading"]'),
35
+ colorOption: () => cy.get('.color-block'),
36
+ responseFieldText: () => cy.get('.cke_contents p'),
37
+ colorPicker: () => cy.get('[class*="ColorPickerstyles__ColorPickerIconWrapper"]'),
38
+ colorOptionEditTab: () => cy.get('[class*="ColorSelectionComponentstyles__ColorPickerWrapper"] .color-picker-block'),
39
+ defaultColorLabel: () => cy.get('[class*="ColorSelectionComponentstyles__LabelWrapper"]'),
40
+ enableColorPickerLabel: () => cy.get('[data-ngie-testid="enable-color-picker-checkbox"] .MuiFormControlLabel-label'),
41
+ enableColorPickerCheckbox: () => cy.get('[data-ngie-testid="enable-color-picker-checkbox"] .MuiCheckbox-root'),
42
+ fontSizeOption: (fontSizeOption = null) => {
43
+ if (fontSizeOption) {
44
+ return cy.get(`[class*="cke_panel_list"][title*="(${fontSizeOption})"]`)
45
+ } else {
46
+ return cy.get('li[class*="cke_panel_list"]')
47
+ }
48
+ },
49
+ clearTextMessage: () => cy.get('[class*="indexstyle__ClearPopupContent"]'),
50
+ cancelButton: () => cy.get('.reject-button'),
51
+ clearAllButton: () => cy.get('.accept-button'),
52
+ clearAllLabel: () => cy.get('.dialog-title-clear-all-popup'),
53
+ selectColorLabel: () => cy.get('[class*="ColorOptionsDialogstyles__LabelWrapper"]'),
35
54
  //Customize Formatting options section
36
55
  customizeFormattingOptionsAccordionLabel: () => cy.get('.customize-formatting-options-label'),
37
56
  customizeFormattingOptionsSectionExpandIcon: () => cy.get('.customize-formatting-option-wrapper [class*="expandIconWrapper"]'),
38
57
  customizeFormattingOptionsTiles: (formattingOption = null) => {
39
58
  if (formattingOption) {
40
- return cy.get(`.toolbar-options-wrapper .icon-button-custom-format[aria-label*="${formattingOption}"]`)
59
+ return cy.get(`.icon-button-custom-format[aria-label*="${formattingOption}"]`)
41
60
  } else {
42
61
  return cy.get('.toolbar-options-wrapper .icon-button-custom-format')
43
62
  }
@@ -56,6 +75,7 @@ const selectors = {
56
75
  responseField: () => cy.get('[title="Enter your response to the question here."]'),
57
76
  responseFieldWordCount: () => cy.get('[class*="InputLimitLabelWrapper"]'),
58
77
  responseFieldEquation: () => cy.get('.cke_widget_element'),
78
+ responseFieldText: () => cy.get('[class*="EssayResponseGradingViewstyle__GradingViewWrapper"] .question-text-wrapper'),
59
79
 
60
80
  //Additional settings, These are old selectors. Need to update them along with additional settings file revamp
61
81
  studentResponseAndLayoutLabel: () => cy.get('.layout-text'),
@@ -293,8 +313,10 @@ const steps = {
293
313
  },
294
314
 
295
315
  verifyGradingViewResponseFieldIsNonEditable: () => {
296
- essayResponseCommonComponents.responseField()
297
- .should('have.attr', 'contenteditable', 'false');
316
+ essayResponseCommonComponents.responseFieldText()
317
+ .then(($el) => {
318
+ expect($el[0].isContentEditable).to.be.false;
319
+ });
298
320
  },
299
321
 
300
322
  /**
@@ -320,7 +342,7 @@ const steps = {
320
342
  * @description Select the toolbar option in preview tab.
321
343
  */
322
344
  selectPreviewTabToolbarOption: (toolbarOption) => {
323
- if (toolbarOption == 'Insert Horizontal Line' || toolbarOption == 'Code Editor' || toolbarOption == 'Increase Indent' || toolbarOption == 'Decrease Indent' || toolbarOption == 'Remove Format') {
345
+ if (toolbarOption == 'Insert Horizontal Line' || toolbarOption == 'Code Editor' || toolbarOption == 'Increase Indent' || toolbarOption == 'Decrease Indent' || toolbarOption == 'Remove Format' || toolbarOption == 'Clear all') {
324
346
  essayResponseCommonComponents.previewTabToolbarOption(toolbarOption)
325
347
  .click()
326
348
  .should('have.attr', 'aria-pressed', 'false');
@@ -328,7 +350,12 @@ const steps = {
328
350
  essayResponseCommonComponents.previewTabToolbarOption(toolbarOption)
329
351
  .click()
330
352
  .should('have.attr', 'aria-pressed', 'true');
331
- } else {
353
+ }
354
+ else if (toolbarOption == 'Text Color' || toolbarOption == 'Highlight Text' || toolbarOption == 'Font Size') {
355
+ essayResponseCommonComponents.previewTabToolbarOption(toolbarOption)
356
+ .click()
357
+ }
358
+ else {
332
359
  essayResponseCommonComponents.previewTabToolbarOption(toolbarOption)
333
360
  .click();
334
361
  }
@@ -565,7 +592,118 @@ const steps = {
565
592
  }
566
593
  essayResponseCommonComponents.responseField()
567
594
  .verifyInnerHTML(formattedText);
568
- }
595
+ },
596
+
597
+ /**
598
+ * select color option in preview tab.
599
+ * @param {number} index - The color option number.
600
+ */
601
+ selectColorOptionInPreviewTab: (index) => {
602
+ essayResponseCommonComponents.colorOption()
603
+ .eq(index)
604
+ .click()
605
+ },
606
+
607
+ /**
608
+ * verify response field text in preview tab.
609
+ * @param {string} color - The color option number.
610
+ */
611
+ verifyResponseFieldTextColor: (color) => {
612
+ utilities.verifyCSS(essayResponseCommonComponents.responseFieldText().find('span'), {
613
+ 'color': color
614
+ });
615
+ },
616
+
617
+ /**
618
+ * verify response field text font size in preview tab.
619
+ * @param {number} size - The font size.
620
+ */
621
+ verifyResponseFieldTextFontSize: (size) => {
622
+ utilities.verifyCSS(essayResponseCommonComponents.responseFieldText().find('span'), {
623
+ 'font-size': `${size}px`
624
+ });
625
+ },
626
+
627
+ /**
628
+ * verify response field text font size in preview tab.
629
+ * @param {number} size - The font size.
630
+ */
631
+ verifyResponseFieldTextFontSizeNew: (size) => {
632
+ utilities.verifyCSS(essayResponseCommonComponents.responseFieldText(), {
633
+ 'font-size': `${size}px`
634
+ });
635
+ },
636
+
637
+ /**
638
+ * verify response field text is highted preview tab.
639
+ * @param {string} color - The color option number.
640
+ * @param {string} text -response field text
641
+ */
642
+ verifyResponseFieldTextIsHighlighted: (color, text) => {
643
+ utilities.verifyCSS(essayResponseCommonComponents.responseFieldText().find('span').contains(text), {
644
+ 'background-color': color
645
+ });
646
+ },
647
+
648
+ clickOnColorPicker: () => {
649
+ essayResponseCommonComponents.colorPicker()
650
+ .click()
651
+ },
652
+
653
+ /**
654
+ * verify font size list content.
655
+ * @param {string} option - The font size option.
656
+ */
657
+ verifyFontSizeListContent: (option) => {
658
+ cy.getIframeBody()
659
+ .within(() => {
660
+ essayResponseCommonComponents.fontSizeOption()
661
+ .contains(option, { matchCase: false })
662
+ .should('exist');
663
+ });
664
+ },
665
+
666
+ /**
667
+ * verify font size list content.
668
+ * @param {string} option - The font size option.
669
+ */
670
+ selectFontSizeOption: (option) => {
671
+ cy.getIframeBody()
672
+ .within(() => {
673
+ essayResponseCommonComponents.fontSizeOption()
674
+ .contains(option, { matchCase: false })
675
+ .click();
676
+ });
677
+ },
678
+
679
+ /**
680
+ * verify font size list content.
681
+ * @param {string} option - The font size option.
682
+ */
683
+ verifySelectedFontSize: (option) => {
684
+ essayResponseCommonComponents.fontSizeOption(option)
685
+ .should('have.attr', 'aria-selected', 'true')
686
+ },
687
+
688
+ clickOnClearAllButton: () => {
689
+ essayResponseCommonComponents.clearAllButton()
690
+ .click()
691
+ },
692
+
693
+ clickOnEnableColorPickerCheckbox: () => {
694
+ essayResponseCommonComponents.enableColorPickerCheckbox()
695
+ .click()
696
+ },
697
+
698
+ /**
699
+ * verify response field text in preview tab.
700
+ * @param {string} color - The color option number.
701
+ */
702
+ verifyResponseFieldTextNewColor: (color) => {
703
+ utilities.verifyCSS(essayResponseCommonComponents.responseFieldText(), {
704
+ 'color': color
705
+ });
706
+ },
569
707
  }
570
708
 
571
709
  const tests = {
@@ -144,13 +144,13 @@ const steps = {
144
144
  verifyCanvasImageTopLeftAligned: () => {
145
145
  imageCanvasComponent.canvasImage()
146
146
  .should('have.css', 'top', '0px')
147
- .and('have.css', 'left', '0px');
147
+ .and('have.css', 'left', '1px');
148
148
  },
149
149
 
150
150
  verifyCanvasImageTopLeftAlignedInPreviewTab: () => {
151
151
  imageCanvasComponent.canvasImageInPreviewTab()
152
152
  .should('have.css', 'top', '0px')
153
- .and('have.css', 'left', '0px');
153
+ .and('have.css', 'left', '1px');
154
154
  },
155
155
 
156
156
  verifyCanvasImageTopRightAligned: () => {
@@ -66,4 +66,5 @@ export * from './figCommonStyleAndLayoutComponent'
66
66
  export * from './showAvailableOptionsToStudents';
67
67
  export * from './showStudentMaximumNumberOfPossibleSelections';
68
68
  export * from './draggableOptionsStyleAndLayoutComponent';
69
- export * from './connectorStyleStyleAndLayoutCustomizationComponent'
69
+ export * from './connectorStyleStyleAndLayoutCustomizationComponent';
70
+ export * from './ckEditorAudioPlayerComponent';
@@ -41,7 +41,9 @@ const selectors = {
41
41
  showLabelsLabel: () => cy.get('[data-ngie-testid="display-values-checkbox"] .MuiFormControlLabel-label'),
42
42
  showLabelsCheckbox: () => cy.get('[data-ngie-testid="display-values-checkbox"] input'),
43
43
  showTicksLabel: () => cy.get('[data-ngie-testid="display-nodes-checkbox"] .MuiFormControlLabel-label'),
44
+ displayMinorNodeLabel: () => cy.get('[data-ngie-testid="display-minor-nodes-checkbox"] .MuiFormControlLabel-label'),
44
45
  showTicksCheckbox: () => cy.get('[data-ngie-testid="display-nodes-checkbox"] input'),
46
+ displayMinorNodeCheckbox: () => cy.get('[data-ngie-testid="display-minor-nodes-checkbox"] input'),
45
47
  showMinLabel: () => cy.get('[data-ngie-testid="show-min-checkbox"] .MuiFormControlLabel-label'),
46
48
  showMinCheckbox: () => cy.get('[data-ngie-testid="show-min-checkbox"] input'),
47
49
  showMaxLabel: () => cy.get('[data-ngie-testid="show-max-checkbox"] .MuiFormControlLabel-label'),
@@ -221,7 +223,7 @@ const steps = {
221
223
 
222
224
  /**
223
225
  * @description Verify that the specified checkbox is checked.
224
- * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray')} checkboxName - The name of the checkbox to verify.
226
+ * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray'|'Display minor nodes')} checkboxName - The name of the checkbox to verify.
225
227
  */
226
228
  verifyCheckboxChecked: (checkboxName) => {
227
229
  switch (checkboxName) {
@@ -261,6 +263,10 @@ const steps = {
261
263
  layoutSectionComponent.limitNumbersOfResponsesCheckbox()
262
264
  .should('be.checked');
263
265
  break;
266
+ case 'Display minor nodes':
267
+ layoutSectionComponent.displayMinorNodeCheckbox()
268
+ .should('be.checked');
269
+ break;
264
270
  default:
265
271
  throw new Error('invalid state string');
266
272
  }
@@ -268,7 +274,7 @@ const steps = {
268
274
 
269
275
  /**
270
276
  * @description Verify that the specified checkbox is unchecked.
271
- * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray')} checkboxName - The name of the checkbox to verify.
277
+ * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray'|'Display minor nodes')} checkboxName - The name of the checkbox to verify.
272
278
  */
273
279
  verifyCheckboxUnchecked: (checkboxName) => {
274
280
  switch (checkboxName) {
@@ -308,6 +314,10 @@ const steps = {
308
314
  layoutSectionComponent.limitNumbersOfResponsesCheckbox()
309
315
  .should('not.be.checked');
310
316
  break;
317
+ case 'Display minor nodes':
318
+ layoutSectionComponent.displayMinorNodeCheckbox()
319
+ .should('not.be.checked');
320
+ break;
311
321
  default:
312
322
  throw new Error('invalid state string');
313
323
  }
@@ -315,7 +325,7 @@ const steps = {
315
325
 
316
326
  /**
317
327
  *@description Checks the specified checkbox
318
- * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray')} checkboxName - The name of the checkbox.
328
+ * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray'|'Display minor nodes')} checkboxName - The name of the checkbox.
319
329
  */
320
330
  checkCheckbox: (checkboxName) => {
321
331
  switch (checkboxName) {
@@ -364,6 +374,11 @@ const steps = {
364
374
  .click()
365
375
  .should('be.checked');
366
376
  break;
377
+ case 'Display minor nodes':
378
+ layoutSectionComponent.displayMinorNodeCheckbox()
379
+ .click()
380
+ .should('be.checked');
381
+ break;
367
382
  default:
368
383
  throw new Error('invalid state string');
369
384
  }
@@ -371,7 +386,7 @@ const steps = {
371
386
 
372
387
  /**
373
388
  *@description Unchecks the specified checkbox
374
- * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray')} checkboxName - The name of the checkbox.
389
+ * @param {('Stagger response'|'Display values'|'Display nodes'|'Show min'|'Show max'|'Limit number of responses'|'Display minimum arrow'|'Display maximum arrow'|'Stack segment/ray'|'Display minor nodes')} checkboxName - The name of the checkbox.
375
390
  */
376
391
  uncheckCheckbox: (checkboxName) => {
377
392
  switch (checkboxName) {
@@ -420,6 +435,11 @@ const steps = {
420
435
  .click()
421
436
  .should('not.be.checked');
422
437
  break;
438
+ case 'Display minor nodes':
439
+ layoutSectionComponent.displayMinorNodeCheckbox()
440
+ .click()
441
+ .should('not.be.checked');
442
+ break;
423
443
  default:
424
444
  throw new Error('invalid state string');
425
445
  }
@@ -815,6 +835,7 @@ const tests = {
815
835
  { getLabelElement: layoutSectionComponent.showMinLabel, label: 'Show min', defaultChecked: true },
816
836
  { getLabelElement: layoutSectionComponent.showMaxLabel, label: 'Show max', defaultChecked: true },
817
837
  { getLabelElement: layoutSectionComponent.limitNumbersOfResponsesLabel, label: 'Limit number of responses', defaultChecked: true },
838
+ { getLabelElement: layoutSectionComponent.displayMinorNodeLabel, label: 'Display minor nodes', defaultChecked: true },
818
839
  ];
819
840
 
820
841
  it('Layout label should be displayed', () => {
@@ -20,6 +20,9 @@ const selectors = {
20
20
  correctIncorrectAnswerTextWrapper: () => cy.get('[class*="CorrectIncorrectWrapper"]'),
21
21
  warningMessage: () => cy.get('.disabled-wrapper-cls [class*="DisabledTextWrapper"]'),
22
22
  warningMessageContainer: () => cy.get('.disabled-wrapper-cls'),
23
+ nodesOnNumberLineOfNumberLineSection: () => cy.get('[class*="LineGridSettingstyles__LineSettingWrapper"] .ngie-jxgbox [stroke-linecap="round"]'),
24
+ nodesOnNumberLineOfSpecifyCorrectAnswerSection: () => cy.get('[class*="AnswerAccordionstyles__AnswerPanel"] .ngie-jxgbox [stroke-linecap="round"]'),
25
+ nodesOnNumberLineInPreviewTab: () => cy.get('[class*="TabsComponentstyles__PreviewWrapper"] .ngie-jxgbox [stroke-linecap="round"]'),
23
26
  }
24
27
 
25
28
  const steps = {
@@ -422,6 +425,24 @@ const tests = {
422
425
  it('When user checks Display nodes checkbox, then ticks on number line should be displayed in number line section and specify correct answer section', () => {
423
426
 
424
427
  });
428
+
429
+ it('When user set annotation to 2, small node will appear between 2 major nodes in number line section and specify correct answer section', () => {
430
+ numberLineCommonComponent.steps.enterTextInAnnotateEveryInputField(2);
431
+ numberLineCommonComponent.steps.verifyTextInAnnotateEveryInputField(2);
432
+ numberLineCommonComponent.steps.verifyAnnotatedLabelsOnNumberLineNumberLineSection(-10, 2);
433
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineOfNumberLineSection(), 21);
434
+ numberLineCommonComponent.steps.verifyAnnotatedLabelsOnNumberLineSpecifyCorrectAnswerSection(-10, 2);
435
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineOfSpecifyCorrectAnswerSection(), 21);
436
+ });
437
+
438
+ it('When the user unchecks the \'Display minor nodes\' then the only major nodes should display on the number line of number line section and specify correct answer section', () => {
439
+ numberLineCommonComponent.steps.uncheckCheckbox('Display minor nodes');
440
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineOfNumberLineSection(), 11);
441
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineOfSpecifyCorrectAnswerSection(), 11);
442
+ numberLineCommonComponent.steps.checkCheckbox('Display minor nodes');
443
+ numberLineCommonComponent.steps.enterTextInAnnotateEveryInputField(1);
444
+ });
445
+
425
446
  },
426
447
 
427
448
  /**
@@ -517,6 +538,24 @@ const tests = {
517
538
  it('When user checks Display nodes checkbox, then ticks on number line should be displayed in preview tab', () => {
518
539
 
519
540
  });
541
+
542
+ it('When user set annotation to 2, small node will appear between 2 major nodes in number line section and specify correct answer section', () => {
543
+ numberLineCommonComponent.steps.switchToEditTab();
544
+ numberLineCommonComponent.steps.enterTextInAnnotateEveryInputField(2);
545
+ numberLineCommonComponent.steps.verifyTextInAnnotateEveryInputField(2);
546
+ numberLineCommonComponent.steps.switchToPreviewTab();
547
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineInPreviewTab(), 21);
548
+ });
549
+
550
+ it('When the user unchecks the \'Display minor nodes\' then the only major nodes should display on the number line of number line section and specify correct answer section', () => {
551
+ numberLineCommonComponent.steps.switchToEditTab();
552
+ numberLineCommonComponent.steps.uncheckCheckbox('Display minor nodes');
553
+ numberLineCommonComponent.steps.switchToPreviewTab();
554
+ utilities.verifyElementCount(numberLineCommonComponent.nodesOnNumberLineInPreviewTab(), 11);
555
+ numberLineCommonComponent.steps.switchToEditTab();
556
+ numberLineCommonComponent.steps.checkCheckbox('Display minor nodes');
557
+ numberLineCommonComponent.steps.enterTextInAnnotateEveryInputField(1);
558
+ });
520
559
  },
521
560
 
522
561
  /**
@@ -183,7 +183,7 @@ const steps = {
183
183
  .eq(index)
184
184
  .find('[data-widget="ngie_equation"]')
185
185
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
186
- // .contains(constants.CKEditorInputFieldEnteredEquationText); ;
186
+ // .contains(constants.CKEditorInputFieldEnteredEquationText); ;
187
187
  },
188
188
 
189
189
  /**
@@ -157,6 +157,7 @@ const steps = {
157
157
  expandMinimumScoringDropdown: () => {
158
158
  scoringSectionBaseEditTab.minimumScoringDropdown()
159
159
  .click();
160
+ cy.wait(1500);
160
161
  },
161
162
 
162
163
  /**
@@ -154,6 +154,8 @@ const selectors = {
154
154
  optionsWrapper: () => cy.get('[class*="StandardDropZonestyles__DraggableItemsGrid"]'),
155
155
  optionsWrapperPreviewTab: () => cy.get('.edit-question-preview-wrapper [class*="StandardDropZonestyles__DraggableItemsGrid"]'),
156
156
  optionsPreviewTab: () => cy.get('[class*="CellDropZonestyles__DraggableItemWrapper"]'),
157
+ iconWrapperInPreviewTab: () => cy.get('[class*="DragAndDropMatrixstyles__TickIconWrapper"]'),
158
+ gridBoxInPreviewTab: () => cy.get('[class*="CellDropZonestyles__DraggableWrapper"]'),
157
159
  optionPanelWrapper: () => cy.get('.option-drag-and-drop')
158
160
  }
159
161
 
@@ -482,6 +484,19 @@ const steps = {
482
484
  });
483
485
  },
484
486
 
487
+ /**
488
+ * Verifies the presence of an incorrect icon for a specified empty container in the Preview Tab.
489
+ * @param {number} optionIndex - The index of the container to verify.
490
+ */
491
+ verifyIncorrectIconForEmptyContainer: (optionIndex) => {
492
+ dragAndDropIntoCategoriesPage.gridBoxInPreviewTab()
493
+ .eq(optionIndex)
494
+ .within(() => {
495
+ dragAndDropIntoCategoriesPage.iconWrapperInPreviewTab()
496
+ .should('have.class', 'incorrect-circle-icon');
497
+ });
498
+ },
499
+
485
500
  /**
486
501
  * Verifies the presence of a correct option icon for a specified option in the Preview Tab.
487
502
  * @param {number} optionIndex - The index of the option to verify.
@@ -495,6 +510,19 @@ const steps = {
495
510
  });
496
511
  },
497
512
 
513
+ /**
514
+ * Verifies the presence of a correct icon for a specified empty container in the Preview Tab.
515
+ * @param {number} optionIndex - The index of the container to verify.
516
+ */
517
+ verifyCorrectIconForEmptyContainer: (optionIndex) => {
518
+ dragAndDropIntoCategoriesPage.gridBoxInPreviewTab()
519
+ .eq(optionIndex)
520
+ .within(() => {
521
+ dragAndDropIntoCategoriesPage.iconWrapperInPreviewTab()
522
+ .should('have.class', 'correct-circle-icon');
523
+ });
524
+ },
525
+
498
526
  setRowsAndColumnsForQuestion: () => {
499
527
  dragAndDropIntoCategoriesPage.steps.modifyTableCellProperty(0, 'None');
500
528
  dragAndDropIntoCategoriesPage.steps.modifyTableCellProperty(3, 'Heading');
@@ -381,7 +381,7 @@ const steps = {
381
381
  .click();
382
382
  },
383
383
 
384
- CancelDropzoneAlternateAnswersPopup: () => {
384
+ cancelDropzoneAlternateAnswersPopup: () => {
385
385
  fillInTheGapsDragAndDropPage.alternateAnswerPopupCancelButton()
386
386
  .click();
387
387
  },
@@ -38,9 +38,9 @@ const selectors = {
38
38
  snapToGridCheckbox: () => cy.get('[data-ngie-testid="snap-to-grid-checkbox"] input'),
39
39
  snapToGridLabel: () => cy.get('[data-ngie-testid="snap-to-grid-checkbox"] .MuiFormControlLabel-label'),
40
40
  graphLine: () => cy.get('line[tabindex="null"]'),
41
- graphCircle: () => cy.get('ellipse[stroke-linecap="butt"]'),
41
+ graphCircle: () => cy.get('ellipse[fill-opacity="0"]'),
42
42
  graphPolygon: () => cy.get('polygon'),
43
- graphSine: () => cy.get('path[stroke-linecap="butt"][stroke-opacity="1"]'),
43
+ graphSine: () => cy.get('[pointer-events="visiblePainted"][tabindex="0"][fill-rule="evenodd"]'),
44
44
  textOnGraphEditTab: (graphText) => {
45
45
  if (graphText) {
46
46
  return cy.get('[class*="GraphingWrapper"] .ngie-jxgbox .JXGtext').contains(graphText)
@@ -116,7 +116,7 @@ const selectors = {
116
116
  yAxisGraphPreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg line[stroke-linecap="butt"]').eq(1),
117
117
  graphLinePreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('line[tabindex="null"]'),
118
118
  graphLineSegmentsPreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('line[tabindex="0"]'),
119
- graphCirclePreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('ellipse[stroke-linecap="butt"]'),
119
+ graphCirclePreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('ellipse[fill-opacity="0"]'),
120
120
  graphPolygonPreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('polygon'),
121
121
  textOnGraphPreviewTab: (graphText) => {
122
122
  if (graphText) {
@@ -125,7 +125,7 @@ const selectors = {
125
125
  return cy.get('[class*="GraphingQuestion"] .ngie-jxgbox .JXGtext')
126
126
  }
127
127
  },
128
- graphSineAndParabolaPreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('path[stroke-linecap="butt"][stroke-opacity="1"]'),
128
+ graphSineAndParabolaPreviewTab: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg').eq(0).find('[pointer-events="visiblePainted"][tabindex="0"][fill-rule="evenodd"]'),
129
129
  repeatedPointsSwitch: () => cy.get('.repeated-points-wrapper .MuiSwitch-input'),
130
130
  graphLabelInputField: () => cy.get('.label-tool:visible'),
131
131
 
@@ -224,17 +224,17 @@ const selectors = {
224
224
  makeResponsiveHelpText: () => cy.get('[class*="WhatIsThisDescriptionWrapper"]'),
225
225
 
226
226
  //Grading view
227
- gradingViewQuestionSineWave: () => cy.get('.ngie-jxgbox').eq(0).find('path[stroke-linecap="butt"][stroke-opacity="1"]'),
228
- gradingViewQuestionCircle: () => cy.get('.ngie-jxgbox').eq(0).find('ellipse[stroke-linecap="butt"]'),
227
+ gradingViewQuestionSineWave: () => cy.get('.ngie-jxgbox').eq(0).find('[pointer-events="visiblePainted"][tabindex="0"][fill-rule="evenodd"]'),
228
+ gradingViewQuestionCircle: () => cy.get('.ngie-jxgbox').eq(0).find('ellipse[fill-opacity="0"]'),
229
229
  gradingViewQuestionLine: () => cy.get('.ngie-jxgbox').eq(0).find('line[tabindex="null"]'),
230
230
 
231
231
  //Correct answer section
232
232
  correctAnswerLabel: () => cy.get('[class*="AnswerLabel"]'),
233
233
  graphCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox svg'),
234
- graphCircleCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('ellipse[stroke-linecap="butt"]'),
234
+ graphCircleCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('ellipse[fill-opacity="0"]'),
235
235
  graphLineCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('line[tabindex="null"]'),
236
236
  graphPolygonCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('polygon'),
237
- graphSineWaveCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('path[stroke-linecap="butt"][stroke-opacity="1"]'),
237
+ graphSineWaveCorrectAnswerSection: () => cy.get('[class*="GraphingQuestion"] .ngie-jxgbox').eq(1).find('[pointer-events="visiblePainted"][tabindex="0"][fill-rule="evenodd"]'),
238
238
  correctIncorrectStatusMessageText: () => cy.get('[class*="Graphingstyles__CorrectIncorrectWrapper"]'),
239
239
  incorrectIcon: () => cy.get('[data-icon="Incorrect"]'),
240
240
  correctIcon: () => cy.get('[data-icon="CorrectAnswer"]'),
@@ -2943,6 +2943,17 @@ const tests = {
2943
2943
  it('When user selects a cell by clicking on it, then error message should not be displayed', () => {
2944
2944
  gridFillPage.steps.selectCellSpecifyCorrectAnswerSection(0, 0);
2945
2945
  commonComponents.steps.verifyErrorMessageIsNotDisplayed();
2946
+ if (accordionName == 'Correct') {
2947
+ autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
2948
+ .within(() => {
2949
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
2950
+ });
2951
+ } else {
2952
+ autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
2953
+ .within(() => {
2954
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
2955
+ });
2956
+ };
2946
2957
  });
2947
2958
 
2948
2959
  it(`\'Match exact position of cells\' label and checkbox should be displayed in the ${accordionName} accordion and the checkbox should be checked`, () => {
@@ -2973,17 +2984,6 @@ const tests = {
2973
2984
  gridFillPage.steps.clearCellShadeCountInputField();
2974
2985
  utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
2975
2986
  utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
2976
- if (accordionName == 'Correct') {
2977
- autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
2978
- .within(() => {
2979
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
2980
- });
2981
- } else {
2982
- autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
2983
- .within(() => {
2984
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
2985
- });
2986
- };
2987
2987
  });
2988
2988
 
2989
2989
  it('CSS of \'Cell shade count\' input field error message', { tags: 'css' }, () => {
@@ -1,6 +1,9 @@
1
1
  import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities"
3
3
  import { autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, commonComponents, createQuestionBasePage, optionsWrapperComponent, questionInstructionsComponent, scoringSectionBaseEditTab, autoScoredScoringPreviewTab, autoScoredStudentViewSettings, additionalSettingsPanel, ckEditorToolbar, equationEditorFlyout, mcqAdditionalSettingsBase, randomizeOptionsComponent, lockUnlockOptionComponent, additionalSettingsAccessibilitySectionComponent } from "./components"
4
+ import { ckEditorAudioPlayerComponent } from "../pages/components/ckEditorAudioPlayerComponent"
5
+ import { ckEditorEquationEditorComponent } from "../pages/components/ckEditorEquationEditorComponent"
6
+ import { ckEditorInsertTableComponent } from "../pages/components/ckEditorInsertTableComponent"
4
7
  const css = Cypress.env('css');
5
8
  const options = ['Pollution caused by treating chemical waste', 'Pollution caused by cement production', 'Pollution caused by methane production', 'Pollution caused by cement and methane production'];
6
9
 
@@ -20,6 +23,9 @@ const selectors = {
20
23
  ...equationEditorFlyout,
21
24
  ...randomizeOptionsComponent,
22
25
  ...lockUnlockOptionComponent,
26
+ ...ckEditorAudioPlayerComponent,
27
+ ...ckEditorEquationEditorComponent,
28
+ ...ckEditorInsertTableComponent,
23
29
  //Specify correct answer section
24
30
  optionWrapperSpecifyCorrectAnswerSection: () => cy.get('.mcq-option-wrapper'),
25
31
  optionsText: () => cy.get('.mcq-label'),
@@ -83,6 +89,9 @@ const steps = {
83
89
  ...commonComponents.steps,
84
90
  ...randomizeOptionsComponent.steps,
85
91
  ...lockUnlockOptionComponent.steps,
92
+ ...ckEditorAudioPlayerComponent.steps,
93
+ ...ckEditorEquationEditorComponent.steps,
94
+ ...ckEditorInsertTableComponent.steps,
86
95
  /**
87
96
  * Verifies the contents of an option wrapper in the 'Specify correct answer' section for multiple selection questions.
88
97
  * @param {number} optionIndex - The index of the option wrapper to be verified.
@@ -843,6 +852,9 @@ const tests = {
843
852
  ...autoScoredStudentViewSettings.tests,
844
853
  ...additionalSettingsAccessibilitySectionComponent.tests,
845
854
  ...mcqAdditionalSettingsBase.tests,
855
+ ...ckEditorAudioPlayerComponent.tests,
856
+ ...ckEditorEquationEditorComponent.tests,
857
+ ...ckEditorInsertTableComponent.tests,
846
858
  /**
847
859
  * Verifies the contents and functionality of the 'Specify correct answer' accordion for multiple selection questions.
848
860
  * @param {{'Correct' | 'Alternative'}} accordionName - The name of the accordion to be used in the validation.
@@ -708,7 +708,7 @@ const tests = {
708
708
 
709
709
  it('On deleting correct answer option(s), \'Error: Please set a correct answer.\' validation error message should be thrown along with an error icon on the \'Correct\' tab', () => {
710
710
  singleSelectionPage.steps.deleteOption(1);
711
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'exist');
711
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
712
712
  autoScoredSpecifyCorrectAnswerSection.steps.verifySpecifyCorrectAnswerErrorIconNotExists();
713
713
  });
714
714
 
@@ -878,6 +878,13 @@ const steps = {
878
878
  .should('not.be.checked');
879
879
  },
880
880
 
881
+ switchToGradingView: () => {
882
+ autoScoredScoringPreviewTab.gradingViewRadioButton()
883
+ .click()
884
+ .should('be.checked');
885
+ cy.wait(1500);
886
+ },
887
+
881
888
  //Additional settings
882
889
  selectEquationEditorSectionCategories: (categoriesArray) => {
883
890
  categoriesArray.forEach((categoryName) => {
@@ -906,6 +913,17 @@ const steps = {
906
913
  addResponseContainer: () => {
907
914
  textEntryMathPage.addResponseContainerButton()
908
915
  .click();
916
+ },
917
+
918
+ /**
919
+ * @description type in the equation editor input field preview tab
920
+ * @param {string} text - text to be entered in the input field
921
+ * @param {number} index - index of input field in preview tab
922
+ */
923
+ enterTextInPreviewInputFieldNew: (index, text) => {
924
+ textEntryMathPage.responseFieldPreviewTab()
925
+ .eq(index)
926
+ .type(text);
909
927
  }
910
928
  }
911
929