itemengine-cypress-automation 1.0.184 → 1.0.185

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.smoke.js +1 -1
  2. package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +1 -1
  3. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +1 -1
  4. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +1 -1
  5. package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +8 -5
  6. package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +28 -417
  7. package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +1 -1
  8. package/cypress/e2e/ILC/FeedbackScaleNew/headerSection.js +1 -29
  9. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +2 -2
  10. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +1 -1
  11. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/studentViewSettings.js +1 -1
  12. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/editTabScoring.js +0 -1
  13. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +2 -2
  14. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +1 -1
  15. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +1 -1
  16. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -4
  17. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +1 -1
  19. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +5 -5
  20. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -3
  21. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  22. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +0 -1
  23. package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +1 -1
  24. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
  25. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +2 -2
  26. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +2 -2
  27. package/cypress/e2e/ILC/Graphing/addBackgroundShapesSection.js +2 -2
  28. package/cypress/e2e/ILC/Graphing/studentViewSettings.js +1 -1
  29. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +2 -2
  30. package/cypress/e2e/ILC/GridFill/gridLayoutContents.js +3 -11
  31. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +3 -3
  32. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +1 -1
  33. package/cypress/e2e/ILC/Matching/studentViewSettings.js +1 -1
  34. package/cypress/e2e/ILC/MultipleSelection/allOrNothingWithAlternativeAnswer.js +0 -1
  35. package/cypress/e2e/ILC/MultipleSelectionGridNew/studentViewSettings.js +1 -1
  36. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +3 -3
  37. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +1 -57
  38. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +1 -1
  39. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +1 -1
  40. package/cypress/e2e/ILC/NumberLine/toolSettings.js +1 -2
  41. package/cypress/e2e/ILC/Protractor/protractorPreviewContents.smoke.js +1 -1
  42. package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +1 -49
  43. package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +1 -1
  44. package/cypress/e2e/ILC/SingleSelectionGridNew/studentViewSettings.js +1 -1
  45. package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +2 -2
  46. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +1 -0
  47. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +1 -0
  48. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +1 -0
  49. package/cypress/e2e/ILC/TextSelection/Scoring/basicScoringForAllTextSelectionTypes.smoke.js +1 -0
  50. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +1 -0
  51. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +2 -1
  52. package/cypress/e2e/ILC/TextSelection/editTabScoringSection.js +4 -5
  53. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +7 -6
  54. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +5 -5
  55. package/cypress/e2e/ILC/ToolSettings/toolSettingsPreviewContents.smoke.js +3 -3
  56. package/cypress/fixtures/constants.js +1 -1
  57. package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +20 -20
  58. package/cypress/fixtures/theme/ilc.json +18 -20
  59. package/cypress/pages/audioPlayerPage.js +504 -274
  60. package/cypress/pages/brainingCampManipulativePage.js +1 -1
  61. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -3
  62. package/cypress/pages/components/autoScoredStudentViewSettings.js +5 -5
  63. package/cypress/pages/components/commonComponents.js +0 -1
  64. package/cypress/pages/components/draggableOptionContainer.js +0 -1
  65. package/cypress/pages/components/equationEditorFlyout.js +2 -3
  66. package/cypress/pages/components/essayResponseCommonComponents.js +2 -8
  67. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +0 -1
  68. package/cypress/pages/components/imageCanvasComponent.js +1 -2
  69. package/cypress/pages/components/index.js +0 -3
  70. package/cypress/pages/components/optionsWrapperComponent.js +2 -13
  71. package/cypress/pages/components/playbackControlsBaseComponent.js +13 -20
  72. package/cypress/pages/components/toolSettingsComponent.js +0 -6
  73. package/cypress/pages/contentBlocksPage.js +2 -18
  74. package/cypress/pages/createItemPage.js +8 -75
  75. package/cypress/pages/dialogBoxBase.js +2 -2
  76. package/cypress/pages/drawingResponsePage.js +4 -24
  77. package/cypress/pages/feedbackScalePage.js +0 -3
  78. package/cypress/pages/graphingPage.js +1 -19
  79. package/cypress/pages/gridFillPage.js +8 -25
  80. package/cypress/pages/index.js +1 -2
  81. package/cypress/pages/itemPreviewSettingsPage.js +0 -4
  82. package/cypress/pages/listOrderingPage.js +557 -435
  83. package/cypress/pages/matchingPage.js +1 -1
  84. package/cypress/pages/multipleSelectionPage.js +1 -23
  85. package/cypress/pages/numberLinePage.js +132 -1370
  86. package/cypress/pages/rulerPage.js +2 -6
  87. package/cypress/pages/textSelectionPage.js +23 -461
  88. package/package.json +1 -1
  89. package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +0 -79
  90. package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +0 -345
  91. package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +0 -429
  92. package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +0 -162
  93. package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +0 -489
  94. package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +0 -313
  95. package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +0 -230
  96. package/cypress/e2e/ILC/ListOrderingDropdown/checkAnswerFunctionalityForAllViews.smoke.js +0 -124
  97. package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +0 -201
  98. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +0 -216
  99. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +0 -214
  100. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +0 -251
  101. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingPenaltyScoring.js +0 -52
  102. package/cypress/e2e/ILC/ListOrderingNew/Scoring/manuallyAndNonScored.js +0 -128
  103. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +0 -279
  104. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsBasic.js +0 -109
  105. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +0 -278
  106. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +0 -278
  107. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +0 -335
  108. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +0 -250
  109. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsBasic.js +0 -161
  110. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +0 -216
  111. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +0 -252
  112. package/cypress/e2e/ILC/ListOrderingNew/additionalSettings.js +0 -118
  113. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +0 -243
  114. package/cypress/e2e/ILC/ListOrderingNew/checkAnswerFunctionalityForAllViews.smoke.js +0 -128
  115. package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +0 -155
  116. package/cypress/e2e/ILC/ListOrderingNew/editTabScoring.js +0 -195
  117. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +0 -78
  118. package/cypress/e2e/ILC/ListOrderingNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +0 -194
  119. package/cypress/e2e/ILC/ListOrderingNew/previewContentsForAllViews.smoke.js +0 -176
  120. package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +0 -112
  121. package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +0 -244
  122. package/cypress/e2e/ILC/NumberLine/LayoutSection.js +0 -181
  123. package/cypress/e2e/ILC/NumberLine/lineSettingsSection.js +0 -33
  124. package/cypress/e2e/ILC/NumberLine/numberLineSection.js +0 -46
  125. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/allOrNothingScoringForAllViews.smoke.js +0 -696
  126. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +0 -173
  127. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/layoutSection.js +0 -183
  128. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/numberLineSection.js +0 -73
  129. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/previewTabContentsForAllViews.smoke.js +0 -204
  130. package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +0 -288
  131. package/cypress/e2e/ILC/NumberLineLabel/checkAnswerFunctionalityForAllViews.smoke.js +0 -153
  132. package/cypress/e2e/ILC/NumberLineLabel/gradingViewAndCorrectAnswerView.smoke.js +0 -164
  133. package/cypress/e2e/ILC/NumberLineLabel/previewContentsForAllViews.smoke.js +0 -120
  134. package/cypress/e2e/ILC/TextSelection/additionalSettings.js +0 -125
  135. package/cypress/e2e/ILC/TextSelection/headerSection.js +0 -73
  136. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +0 -179
  137. package/cypress/e2e/ILC/TextSelection/specifyCorrectAnswerSection.js +0 -89
  138. package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +0 -436
  139. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordion.js +0 -277
  140. package/cypress/e2e/ILC/TextSelection/textSelectionModesInPreviewTab.js +0 -222
  141. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyCorrectAnswerSection.js +0 -260
  142. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +0 -380
  143. package/cypress/pages/components/layoutSectionComponent.js +0 -1191
  144. package/cypress/pages/components/numberLineCommonComponent.js +0 -36
  145. package/cypress/pages/components/styleAndLayoutCustomizationAccordionComponent.js +0 -46
  146. package/cypress/pages/numberLineLabelPage.js +0 -333
@@ -1,297 +1,405 @@
1
1
  import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
- import { autoScoredScoringPreviewTab, autoScoredScoringSectionMultiResponseType, autoScoredSpecifyCorrectAnswerSection, autoScoredStudentViewSettings, commonComponents, correctIncorrectAnswerLabelComponent, createQuestionBasePage, optionsWrapperComponent, questionInstructionsComponent, randomizeOptionsComponent, scoringSectionBaseEditTab, studentViewSettingsLabelComponent, additionalSettingsPanel, additionalSettingsAccessibilitySectionComponent } from "./components"
4
- const options = ['sprout', 'plant', 'flower', 'seed'];
3
+ import { additionalSettingsPanel, autoScoredAdditionalSettings, autoScoredPreviewBase, autoScoredScoringSection, autoScoredScoringSectionMultipleResponsesType, autoScoredSetCorrectAnswerSection, ckEditorToolbar, commonComponents, createQuestionBasePage, equationEditorFlyout, optionsWrapperComponent, previewScoringAndShowCorrectAnswerComponent, questionInstructionsComponent, scoringSectionBase } from "./components"
4
+ import { answerNumerationComponent } from "./components/answerNumerationComponent";
5
+ import { listSortingAndOrderingBase } from "./components/listSortingAndOrderingBase";
6
+ import { setPointsPopupBase } from "./components/setPointsPopupBase";
7
+ import { studentResponseAndLayoutComponent } from "./components/studentResponseAreaAndLayoutComponent";
5
8
  const css = Cypress.env('css');
6
9
 
7
10
  const selectors = {
8
- ...optionsWrapperComponent,
9
- ...questionInstructionsComponent,
10
11
  ...commonComponents,
11
- ...autoScoredScoringSectionMultiResponseType,
12
- ...randomizeOptionsComponent,
13
- ...autoScoredScoringPreviewTab,
12
+ ...optionsWrapperComponent,
13
+ ...scoringSectionBase,
14
+ ...autoScoredScoringSectionMultipleResponsesType,
15
+ ...autoScoredSetCorrectAnswerSection,
16
+ ...autoScoredAdditionalSettings,
17
+ ...previewScoringAndShowCorrectAnswerComponent,
18
+ ...autoScoredPreviewBase,
14
19
  ...additionalSettingsPanel,
15
- ...correctIncorrectAnswerLabelComponent,
16
- //Specify correct answer section
17
- optionSpecifyCorrectAnswerSection: () => cy.get('.list-ordering-set-correct-answer .draggable-item-wrapper[role="button"]'),
18
- optionWrapperSpecifyCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__DroppableWrapper"]'),
19
- partialDifferentWeightsPointsLabel: () => cy.get('.partial-points-per-response-label'),
20
- pointsPerResponseValue: () => cy.get('.alternate-points-points-per-value-span'),
21
- //Student view settings
22
- enableOuterBorderForQuestionLabel: () => cy.get('[data-ngie-testid*="enable-outer-border-for-question-checkbox"] .MuiFormControlLabel-label'),
23
- enableOuterBorderForQuestionCheckbox: () => cy.get('[data-ngie-testid*="enable-outer-border-for-question-checkbox"] input'),
20
+ ...questionInstructionsComponent,
21
+ ...answerNumerationComponent,
22
+ ...setPointsPopupBase,
23
+ ...listSortingAndOrderingBase,
24
+ //Set correct answer section
25
+ setCorrectAnswerSectionOption: () => cy.get('.list-ordering-set-correct-answer .draggable-item-wrapper[role="button"]'),
26
+ setCorrectAnswerSectionOptionsWrapper: () => cy.get('[class*="ListOrderingResponsestyles__DroppableWrapper"]'),
24
27
  //Preview Tab
25
- optionPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .draggable-item-wrapper[role="button"]'),
26
- optionWrapperPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .orderlist-option-wrapper'),
27
- correctAnswersLabel: () => cy.get('.check-answer-and-status-wrapper [class*="CorrectAnswerLabel"]'),
28
- correctAnswerSectionAnswerWrapper: () => cy.get('[class*="CorrectAnswers"] [class*="__OptionsWrapper"]'),
29
- correctAnswerSectionWrapper: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"]'),
30
- correctAnswerSectionAnswerText: () => cy.get('.question-text-wrapper'),
31
- questionBorderPreviewTab: () => cy.get('[class*="ListOrderingResponsestyles__DroppableDiv"]'),
32
- //grading view and correct answer view
33
- optionGradingView: () => cy.get('[class*="DraggableItemsWrapper"] [class*="OptionTextWrapper"]'),
34
- optionWrapperGradingView: () => cy.get('[class*="DraggableItemsWrapper"] [class*="OptionsWrapper"]'),
35
- //Orientation and layout
36
- orderingLayoutLabel: () => cy.get('.list-ordering-order-layout .options-label'),
37
- reorderInTheSameListButton: () => cy.get('[data-ngie-testid="reorder-in-the-same-list-toggle-button"]'),
38
- reorderAsSeparateListButton: () => cy.get('[data-ngie-testid="reorder-as-a-separate-list-toggle-button"]'),
39
- dropdownMenuButton: () => cy.get('[data-ngie-testid="dropdown-menu-toggle-button"]'),
40
- optionOrientationLabel: () => cy.get('.option-orientation-toggle-button-wrapper .options-label'),
41
- verticalButton: () => cy.get('button[aria-label*="Vertical"]'),
42
- horizontalButton: () => cy.get('button[aria-label*="Horizontal"]'),
43
-
44
- //Dropdown menu selectors
45
- dropdownMenuOptionsDropdown: () => cy.get('#Dropdown-menu-options-select'),
46
- dropdownMenuListOptions: (ariaLabel = null) => {
47
- if (ariaLabel) {
48
- return cy.get(`[aria-labelledby*="Dropdown-menu-options-dropdown-label"] [role="option"][aria-label*="${ariaLabel}"]`)
49
- } else {
50
- return cy.get('[aria-labelledby*="Dropdown-menu-options-dropdown-label"] [role="option"]')
51
- }
52
- },
53
- positionDropdownSpecifyCorrectAnswerSection: () => cy.get('.response-dropdown-wrapper [role="combobox"]'),
54
- positionDropdownListOption: (ariaLabel = null) => {
55
- if (ariaLabel) {
56
- return cy.get(`[aria-labelledby*="-dropdown-label"] [role="option"][aria-label*="${ariaLabel}"]`)
57
- } else {
58
- return cy.get('[aria-labelledby*="-dropdown-label"] [role="option"]')
59
- }
60
- },
61
- dropdownSelectedOptionLabel: () => cy.get('.dropdown-label-text'),
62
- dropdownOptionWrapperGradingView: () => cy.get('[class*="DropdownLayoutstyles__OptionsWrapper"]'),
63
- dropdownWrapperPreviewTab: () => cy.get('[class*="ListOrderingResponsestyles__DroppableDiv"] [class*="DropdownLayoutstyles__ResponseWrapper"]'),
64
- dropdownOptionWrapperPreviewTab: () => cy.get('[class*="DropdownLayoutstyles__OptionsWrapper"]'),
65
- positionDropdownPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .response-dropdown-wrapper [role="combobox"]'),
66
- positionDropdownCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"] .response-dropdown-wrapper [role="combobox"]'),
67
- dropdownWrapperCorrectAnswerSection: () => cy.get('[class*="ListOrderingResponsestyles__CorrectAnswers"] [class*="DropdownLayoutstyles__ResponseWrapper"]'),
68
- alertMessage: () => cy.get('[class*="ListOrderingResponsestyles__DisabledWrapper"]')
28
+ pointsPerResponseLabel: () => cy.get('.list-ordering-points-text'),
29
+ previewTabOption: () => cy.get('.edit-question-preview-wrapper .draggable-item-wrapper[role="button"]'),
30
+ previewTabOptionsWrapper: () => cy.get('.edit-question-preview-wrapper [class*="ListOrderingResponsestyles__DroppableWrapper"]'),
31
+ partialEqualWeightsPointsPerResponseScore: () => cy.get('.orderlist-points-wrapper'),
32
+ partialDifferentWeightsPointsInputField: () => cy.get('.orderlist-points-wrapper input'),
33
+ partialDifferentWeightsPointsPerResponseLabel: () => cy.get('.list-ordering-points-wrapper'),
34
+ //Additional Settings
35
+ optionNumeration: () => cy.get('[class*="__IndexWrapper"]'),
36
+ setCorrectAnswerSectionTopLabel: () => cy.get('[class*="TopLabelWrapper"].top-bottom-label'),
37
+ setCorrectAnswerSectionBottomLabel: () => cy.get('[class*="BottomLabelWrapper"].top-bottom-label'),
38
+ previewTabTopLabel: () => cy.get('.edit-question-preview-wrapper [class*="TopLabelWrapper"].top-bottom-label'),
39
+ previewTabBottomLabel: () => cy.get('.edit-question-preview-wrapper [class*="BottomLabelWrapper"].top-bottom-label'),
40
+ pointsPerResponseLabelForInlineOption: () => cy.get('[class*="ListOrderingstyles__EqualPointsWrapper"]'),
41
+ pointsPerResponseScoreForInlineOption: () => cy.get('[class*="ListOrderingstyles__EqualPointsWrapper"] span'),
42
+ //Set points popup
43
+ buttonSetPoints: () => cy.get('[class*="SetPointsstyle__Button"]'),
44
+ setPointsIcon: () => cy.get('[class*="SetPointsstyle__Button"] svg'),
45
+ //Remove after https://redmine.zeuslearning.com/issues/518498 is fixed
46
+ dragHandleButton: () => cy.get('[class*="DragIcon"]')
69
47
  }
70
48
 
71
49
  const steps = {
72
50
  ...createQuestionBasePage.steps,
73
51
  ...questionInstructionsComponent.steps,
74
- ...scoringSectionBaseEditTab.steps,
75
- ...optionsWrapperComponent.steps,
76
- ...autoScoredScoringPreviewTab.steps,
77
- ...correctIncorrectAnswerLabelComponent.steps,
78
- ...autoScoredStudentViewSettings.steps,
79
- ...autoScoredScoringSectionMultiResponseType.steps,
80
- ...autoScoredSpecifyCorrectAnswerSection.steps,
81
- ...randomizeOptionsComponent.steps,
52
+ ...scoringSectionBase.steps,
53
+ ...autoScoredSetCorrectAnswerSection.steps,
82
54
  ...commonComponents.steps,
55
+ ...optionsWrapperComponent.steps,
56
+ ...ckEditorToolbar.steps,
57
+ ...equationEditorFlyout.steps,
58
+ ...autoScoredScoringSectionMultipleResponsesType.steps,
83
59
  ...additionalSettingsPanel.steps,
84
- /**
85
- * @param {string} optionsText text content of the option
86
- * @param {number} targetIndex the position at which the options is being dropped
87
- * @description click and drop a option into a position in the specify correct answer section
60
+ ...previewScoringAndShowCorrectAnswerComponent.steps,
61
+ ...autoScoredPreviewBase.steps,
62
+ ...autoScoredAdditionalSettings.steps,
63
+ ...autoScoredScoringSection.steps,
64
+ ...answerNumerationComponent.steps,
65
+ ...setPointsPopupBase.steps,
66
+ ...listSortingAndOrderingBase.steps,
67
+ /**
68
+ * @param {number} index set correct answer option index
69
+ * @description this function verfies contents of options
88
70
  */
89
- clickAndReorderOptionInSpecifyCorrectAnswerSection: (optionsText, targetIndex) => {
90
- listOrderingPage.optionSpecifyCorrectAnswerSection()
91
- .contains(optionsText)
92
- .click();
93
- listOrderingPage.optionSpecifyCorrectAnswerSection()
94
- .eq(targetIndex)
95
- .click();
71
+ verifyDragHandleButtonOfOptionInSetCorrectAnswerSection: (index) => {
72
+ listOrderingPage.setCorrectAnswerSectionOption()
73
+ .eq(index)
74
+ .within(() => {
75
+ listOrderingPage.dragHandleButton()
76
+ .should('exist');
77
+ });
96
78
  },
97
79
 
98
80
  /**
99
- * @param {string} optionsText text content of the option
100
- * @param {number} targetIndex the position at which the options is being dropped
101
- * @description click and drop a option into a position in the preview tab
81
+ * @param {string[]} optionsTextArray options array for set correct answer option
82
+ * @description this function verifies options text content
102
83
  */
103
- clickAndReorderOptionInPreviewTab: (optionsText, targetIndex) => {
104
- listOrderingPage.optionPreviewTab()
105
- .contains(optionsText)
106
- .click();
107
- listOrderingPage.optionPreviewTab()
108
- .eq(targetIndex)
109
- .click();
84
+ verifyOptionsTextContentInSetCorrectAnswerSection: (optionsTextArray) => {
85
+ optionsTextArray.forEach((optionsText, index) => {
86
+ listOrderingPage.setCorrectAnswerSectionOption()
87
+ .eq(index)
88
+ .should('have.text', optionsText);
89
+ });
110
90
  },
111
91
 
112
92
  /**
113
- * @description Verifies that the image in the Preview tab has the correct source and alt text.
114
- * @param {number} optionIndex - The index of the option in the Preview tab.
115
- */
116
- verifyOptionWithImageInPreviewTab: (optionIndex) => {
117
- listOrderingPage.optionWrapperPreviewTab()
118
- .eq(optionIndex)
93
+ * @param {number} index of option
94
+ * @description this function verifies image in set correct answer option input field
95
+ */
96
+ verifyImageAddedToOptionInSetCorrectAnswerSection: (index) => {
97
+ listOrderingPage.setCorrectAnswerSectionOption()
98
+ .eq(index)
119
99
  .find('img')
120
100
  .should('have.attr', 'src', constants.foxImageLink)
121
101
  .and('have.attr', 'alt', constants.foxImageAltText);
122
102
  },
123
103
 
124
104
  /**
125
- * @description Verifies that the bold text in the Preview tab is correct.
126
- * @param {number} optionIndex - The index of the option in the Preview tab.
105
+ * @param {number} index of option
106
+ * @description this function verifies equation in set correct answer option input field
127
107
  */
128
- verifyOptionWithBoldTextInPreviewTab: (optionIndex) => {
129
- listOrderingPage.optionWrapperPreviewTab()
130
- .eq(optionIndex)
131
- .find('strong')
132
- .should('have.text', 'This is a bold option');
133
- },
134
-
135
- /**
136
- * @description Verifies that the equation text in the Preview tab is correct.
137
- * @param {number} optionIndex - The index of the option in the Preview tab.
138
- */
139
- verifyOptionWithEquationTextInPreviewTab: (optionIndex) => {
140
- listOrderingPage.optionWrapperPreviewTab()
141
- .eq(optionIndex)
108
+ verifyEquationAddedToOptionInSetCorrectAnswerSection: (index) => {
109
+ listOrderingPage.setCorrectAnswerSectionOption()
110
+ .eq(index)
111
+ .contains(constants.CKEditorInputFieldEnteredEquationText)
112
+ listOrderingPage.setCorrectAnswerSectionOption()
142
113
  .find('[role="math"]')
143
114
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
144
- .contains(constants.CKEditorInputFieldEnteredEquationText);
145
115
  },
146
116
 
147
117
  /**
148
- * @param {string[]} optionsTextArray options array for preview tab options
149
- * @description this function verifies options text content
118
+ * @param {number} index of option
119
+ * @description this function link in set correct answer option input field
150
120
  */
151
- verifyTextContentOfOptionInPreviewTab: (optionsText, index) => {
152
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionPreviewTab(), index), optionsText);
121
+ verifyLinkAddedToOptionInSetCorrectAnswerSection: (index) => {
122
+ listOrderingPage.setCorrectAnswerSectionOption()
123
+ .eq(index)
124
+ .should('have.text', 'lorem')
125
+ .find('a')
126
+ .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
153
127
  },
154
128
 
155
129
  /**
156
- * @param {string[]} optionsTextArray options array for set correct answer options
157
- * @description this function verifies options text content
130
+ * @param {number} index of option
131
+ * @description this function bold text in set correct answer option input field
158
132
  */
159
- verifyTextContentOfOptionInSpecifyCorrectAnswerSection: (optionsText, index) => {
160
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index), optionsText);
133
+ verifyBoldTextAddedToOptionInSetCorrectAnswerSection: (index) => {
134
+ listOrderingPage.setCorrectAnswerSectionOption()
135
+ .eq(index)
136
+ .find('strong')
137
+ .eq(0)
138
+ .should('have.text', 'This is a bold option');
139
+ },
140
+
141
+ verifyDefaultAndActiveStateOfOptionInSetCorrectAnswerSection: () => {
142
+ listOrderingPage.setCorrectAnswerSectionOption()
143
+ .eq(0)
144
+ .realHover()
145
+ .should('have.css', 'border', `2px solid ${css.color.activeButtons}`)
146
+ .find('.question-text-wrapper')
147
+ .and('have.css', 'color', css.color.activeButtons);
148
+ listOrderingPage.setCorrectAnswerSectionOption()
149
+ .eq(0)
150
+ .realHover({ position: 'topLeft' })
151
+ .should('have.css', 'border', `1px solid ${css.color.figDefaultComponentBorder}`)
152
+ .find('.question-text-wrapper')
153
+ .and('have.css', 'color', css.color.text)
161
154
  },
162
155
 
163
156
  /**
164
- * @param {string} optionsText option to be checked for the correct icon
165
- * @description This function verifies the correct icon in the preview tab
166
- */
167
- verifyCorrectOptionIcon: (optionsText) => {
168
- listOrderingPage.optionWrapperPreviewTab()
157
+ *
158
+ * @param {string} optionsText text content of the option
159
+ * @param {number} index the position at which the options is being dropped
160
+ * @description click and drop a option into a position in the set correct answer section
161
+ */
162
+ clickAndReorderOptionInSetCorrectAnswerSection: (optionsText, index) => {
163
+ listOrderingPage.setCorrectAnswerSectionOption()
169
164
  .contains(optionsText)
170
- .parents('.orderlist-option-wrapper')
171
- .within(() => {
172
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'exist');
173
- });
165
+ .click();
166
+ listOrderingPage.setCorrectAnswerSectionOption()
167
+ .eq(index)
168
+ .click();
174
169
  },
175
170
 
171
+ verifyPointsInputFieldErrorMessage: () => {
172
+ commonComponents.errorMessage()
173
+ .eq(0)
174
+ .should('have.text', 'Error: Please enter points.');
175
+ },
176
+
177
+ //Preview tab
176
178
  /**
177
- * @param {string} optionsText option to be checked for the correct icon
178
- * @description This function verifies the correct icon in the preview tab
179
+ * @param {number} index set correct answer option index
180
+ * @description this function verfies contents of options
179
181
  */
180
- verifyIncorrectOptionIcon: (optionsText) => {
181
- listOrderingPage.optionWrapperPreviewTab()
182
- .contains(optionsText)
183
- .parents('.orderlist-option-wrapper')
182
+ verifyDragHandleButtonOfOptionInPreviewTab: (index) => {
183
+ listOrderingPage.previewTabOption()
184
+ .eq(index)
184
185
  .within(() => {
185
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'exist');
186
+ listOrderingPage.dragHandleButton()
187
+ .should('exist');
186
188
  });
187
189
  },
188
190
 
189
- verifyCorrectAnswerSectionNotExists: () => {
190
- utilities.verifyElementVisibilityState(listOrderingPage.correctAnswersLabel(), 'notExist');
191
- utilities.verifyElementVisibilityState(listOrderingPage.correctAnswerSectionAnswerWrapper(), 'notExist');
192
- },
193
-
194
191
  /**
195
- * @param {string[]} optionsTextArray array of options in the correct answer section
196
- * @description this function verifies the correct order of options in correct answer section
192
+ * @param {string[]} optionsTextArray options array for set correct answer option
193
+ * @description this function verifies options text content
197
194
  */
198
- verifyOptionsInCorrectAnswerSection: (optionsTextArray) => {
195
+ verifyTextContentOfOptionsInPreviewTab: (optionsTextArray) => {
199
196
  optionsTextArray.forEach((optionsText, index) => {
200
- utilities.getNthElement(listOrderingPage.correctAnswerSectionAnswerWrapper(), index)
201
- .within(() => {
202
- utilities.verifyTextContent(listOrderingPage.correctAnswerSectionAnswerText(), optionsText);
203
- });
197
+ listOrderingPage.previewTabOption()
198
+ .eq(index)
199
+ .should('have.text', optionsText);
204
200
  });
205
201
  },
206
202
 
207
203
  /**
208
- * @description Verifies that the image in the Preview tab has the correct source and alt text.
209
- * @param {number} optionIndex - The index of the option in the Preview tab.
204
+ * @param {number} index of option
205
+ * @description this function verifies image text in preview tab options
210
206
  */
211
- verifyOptionWithImageInGradingView: (optionIndex) => {
212
- listOrderingPage.optionGradingView()
213
- .eq(optionIndex)
207
+ verifyImageAddedToOptionInPreviewTab: (index) => {
208
+ listOrderingPage.previewTabOption()
209
+ .eq(index)
214
210
  .find('img')
215
211
  .should('have.attr', 'src', constants.foxImageLink)
216
212
  .and('have.attr', 'alt', constants.foxImageAltText);
217
213
  },
218
214
 
219
215
  /**
220
- * @description Verifies that the bold text in the Preview tab is correct.
221
- * @param {number} optionIndex - The index of the option in the Preview tab.
222
- */
223
- verifyOptionWithBoldTextInGradingView: (optionIndex) => {
224
- listOrderingPage.optionGradingView()
225
- .eq(optionIndex)
216
+ * @param {number} index of option
217
+ * @description this function verifies equation text in preview tab options
218
+ */
219
+ verifyEquationAddedToOptionInPreviewTab: (index) => {
220
+ listOrderingPage.previewTabOption()
221
+ .eq(index)
222
+ .contains(constants.CKEditorInputFieldEnteredEquationText)
223
+ listOrderingPage.previewTabOption()
224
+ .find('[role="math"]')
225
+ .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
226
+ },
227
+
228
+ /**
229
+ * @param {number} index of option
230
+ * @description this function verifies link in preview tab options
231
+ */
232
+ verifyLinkAddedToOptionInPreviewTab: (index) => {
233
+ listOrderingPage.previewTabOption()
234
+ .eq(index)
235
+ .should('have.text', 'lorem')
236
+ .find('a')
237
+ .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
238
+ },
239
+
240
+ /**
241
+ * @param {number} index of option
242
+ * @description this function verifies bold text in preview tab options
243
+ */
244
+ verifyBoldTextAddedToOptionInPreviewTab: (index) => {
245
+ listOrderingPage.previewTabOption()
246
+ .eq(index)
226
247
  .find('strong')
227
- .should('have.text', 'This is a bold option');
248
+ .should('exist')
249
+ .should('have.text', 'This is a bold option')
228
250
  },
229
251
 
252
+ verifyDefaultAndActiveStateOfOptionInPreviewTab: () => {
253
+ listOrderingPage.previewTabOption()
254
+ .eq(0)
255
+ .realHover()
256
+ .should('have.css', 'border', `2px solid ${css.color.activeButtons}`)
257
+ .find('.question-text-wrapper')
258
+ .and('have.css', 'color', css.color.activeButtons);
259
+ listOrderingPage.previewTabOption()
260
+ .eq(0)
261
+ .realHover({ position: 'topLeft' })
262
+ .should('have.css', 'border', `1px solid ${css.color.figDefaultComponentBorder}`)
263
+ .find('.question-text-wrapper')
264
+ .and('have.css', 'color', css.color.text)
265
+ },
266
+
267
+ //Scoring
230
268
  /**
231
- * @description Verifies that the equation text in the Preview tab is correct.
232
- * @param {number} optionIndex - The index of the option in the Preview tab.
233
- */
234
- verifyOptionWithEquationTextInGradingView: (optionIndex) => {
235
- listOrderingPage.optionGradingView()
236
- .eq(optionIndex)
237
- .find('[role="math"]')
238
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
239
- .contains(constants.CKEditorInputFieldEnteredEquationText);
269
+ * @param {number} points the points to be displayed in the partial equal weights points field
270
+ * @description this function checks the points per response in partial equal weights
271
+ */
272
+ verifyPartialEqualWeightsPointsPerResponseScore: (points) => {
273
+ listOrderingPage.partialEqualWeightsPointsPerResponseScore()
274
+ .each(($element) => {
275
+ cy.wrap($element)
276
+ .verifyInnerText(points);
277
+ });
240
278
  },
241
279
 
242
280
  /**
243
- * @param {string[]} optionsTextArray options array for set correct answer option
244
- * @description this function verifies options text content
281
+ * @description this function checks if the partial different weights points field is empty and visible
282
+ */
283
+ verifyPartialDifferentWeightsPointsInputFieldIsEmptyAndEnabled: () => {
284
+ listOrderingPage.partialDifferentWeightsPointsInputField()
285
+ .each(($element) => {
286
+ cy.wrap($element)
287
+ .should('have.value', '')
288
+ .and('be.visible')
289
+ .and('be.enabled');
290
+ });
291
+ },
292
+
293
+ /**
294
+ * @param {number[]} pointsArray the array of points to be alloted to each option
295
+ * @description this function allots points to all the options
245
296
  */
246
- verifyTextContentOfOptionInGradingView: (optionsText, index) => {
247
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionGradingView(), index), optionsText);
297
+ allotPartialDifferentWeightsToAllPointsFields: (pointsArray) => {
298
+ pointsArray.forEach((points, columnIndex) => {
299
+ listOrderingPage.partialDifferentWeightsPointsInputField()
300
+ .eq(columnIndex)
301
+ .clear()
302
+ .type(points, { delay: 0 })
303
+ .should('have.value', points);
304
+ });
305
+ },
306
+
307
+ verifyPartialDifferentWeightsPointsPerResponseLabel: () => {
308
+ listOrderingPage.partialDifferentWeightsPointsPerResponseLabel()
309
+ .verifyInnerText('Points per response')
310
+ .should('be.visible');
311
+ },
312
+
313
+ verifyPointsPerResponseLabel: () => {
314
+ listOrderingPage.pointsPerResponseLabel()
315
+ .verifyInnerText('Points per response')
316
+ .should('be.visible');
248
317
  },
249
318
 
250
319
  /**
320
+ *
251
321
  * @param {string} optionsText text content of the option
252
322
  * @param {number} index the position at which the options is being dropped
253
323
  * @description click and drop a option into a position in the set correct answer section
254
324
  */
255
- clickAndReorderOptionInGradingView: (optionsText, index) => {
256
- listOrderingPage.optionGradingView()
325
+ clickAndReorderOptionInPrevewTab: (optionsText, index) => {
326
+ listOrderingPage.previewTabOption()
257
327
  .contains(optionsText)
258
328
  .click();
259
- listOrderingPage.optionGradingView()
329
+ listOrderingPage.previewTabOption()
260
330
  .eq(index)
261
331
  .click();
262
332
  },
263
333
 
264
334
  /**
265
- * Verifies the order of options in the "Specify Correct Answer" section.
266
- * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
335
+ *
336
+ * @param {string[]} optionsArray array of options set in options section
337
+ * @description this function resets the question preview
267
338
  */
268
- verifyOptionsOrderInSpecifyCorrectAnswerSection: (optionsTextArray) => {
269
- optionsTextArray.forEach((option, index) => {
270
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index), option);
271
- });
339
+ resetQuestionPreview: (optionsArray) => {
340
+ createQuestionBasePage.steps.switchToEditTab();
341
+ createQuestionBasePage.steps.switchToPreviewTab();
342
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(optionsArray);
272
343
  },
273
344
 
274
345
  /**
275
- * Verifies the order of options in the preview tab
276
- * @param {string[]} optionsTextArray - An array containing the text of options in the expected order.
277
- */
278
- verifyOptionsOrderInPreviewTab: (optionsTextArray) => {
279
- optionsTextArray.forEach((option, index) => {
280
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.optionPreviewTab(), index), option);
346
+ * @param {string[]} numerationArray array of numeration numbers, lowercase, uppercase
347
+ * @description this function verifies the numeration of options
348
+ */
349
+ verifyOptionsNumeration: (numerationArray) => {
350
+ numerationArray.forEach((optionNumeration, index) => {
351
+ listOrderingPage.previewTabOption()
352
+ .eq(index)
353
+ .within(() => {
354
+ listOrderingPage.optionNumeration()
355
+ .should('have.text', optionNumeration);
356
+ });
281
357
  });
282
358
  },
283
359
 
284
360
  /**
285
- * Verifies the points per response score against a given value.
286
- * @param {number} value - The expected points per response score.
287
- */
288
- verifyPointsPerResponseScore: (value) => {
289
- utilities.verifyTextContent(listOrderingPage.pointsPerResponseValue(), value)
361
+ * @param {string} optionsText option to be checked for the correct icon
362
+ * @description This function verifies the correct icon in the preview tab
363
+ */
364
+ verifyCorrectOptionsCheckmarkIcon: (optionsText) => {
365
+ listOrderingPage.previewTabOption()
366
+ .contains(optionsText)
367
+ .parents('.orderlist-option-wrapper')
368
+ .within(() => {
369
+ autoScoredPreviewBase.correctIcon()
370
+ .and('be.visible');
371
+ });
372
+ },
373
+
374
+ /**
375
+ * @param {string} optionsText option to be checked for the correct icon
376
+ * @description This function verifies the correct icon in the preview tab
377
+ */
378
+ verifyIncorrectOptionsCrossmarkIcon: (optionsText) => {
379
+ listOrderingPage.previewTabOption()
380
+ .contains(optionsText)
381
+ .parents('.orderlist-option-wrapper')
382
+ .within(() => {
383
+ autoScoredPreviewBase.incorrectIcon()
384
+ .and('be.visible');
385
+ });
386
+ },
387
+
388
+ verifyQuestionPreviewStateWhenShowCorrectAnswerIsUnchecked: () => {
389
+ cy.log('After deselecting Show correct answer checkbox, the question preview should return to the previous state');
390
+ previewScoringAndShowCorrectAnswerComponent.steps.uncheckShowCorrectAnswerCheckbox();
391
+ autoScoredPreviewBase.correctIcon()
392
+ .should('not.exist');
393
+ autoScoredPreviewBase.incorrectIcon()
394
+ .should('not.exist');
395
+ autoScoredPreviewBase.correctIncorrectAnswerLabel()
396
+ .should('not.exist');
397
+ autoScoredPreviewBase.steps.verifyCorrectIncorrectBorderNotVisible()
290
398
  },
291
399
 
292
400
  getOptionsArray: () => {
293
401
  const optionsArray = []
294
- listOrderingPage.optionPreviewTab()
402
+ listOrderingPage.previewTabOption()
295
403
  .each(($el) => {
296
404
  cy.wrap($el)
297
405
  .invoke('text')
@@ -309,325 +417,339 @@ const steps = {
309
417
  verifyRandomizeOptionOrder: (optionsArray) => {
310
418
  let currentOptionsArray = [...optionsArray]
311
419
  for (let index = 0; index < currentOptionsArray.length; index++) {
312
- listOrderingPage.optionPreviewTab()
420
+ listOrderingPage.previewTabOption()
313
421
  .eq(index)
314
422
  .then(($element) => {
315
423
  expect($element.text()).to.be.oneOf(currentOptionsArray);
316
424
  currentOptionsArray = currentOptionsArray.filter((value) => value !== $element.text())
317
425
  });
318
426
  };
319
- listOrderingPage.steps.verifyOptionsAreReRandomized(optionsArray)
427
+ listOrderingPage.steps.verifyOptionsAreRerandomized(optionsArray)
320
428
  },
321
429
 
322
430
  /**
323
431
  * @param {string[]} previousOrderOfOptionsArray array of previous order of options
324
432
  * @description this function verifies that the order of the options is different from the previous order
325
433
  */
326
- verifyOptionsAreReRandomized: (previousOrderOfOptionsArray) => {
327
- listOrderingPage.optionPreviewTab()
434
+ verifyOptionsAreRerandomized: (previousOrderOfOptionsArray) => {
435
+ listOrderingPage.previewTabOption()
328
436
  .should('not.have.text', '')
329
437
  .and('not.have.text', previousOrderOfOptionsArray.join(''));
330
438
  },
331
439
 
332
- verifyOuterBorderOfQuestionPreview: () => {
333
- utilities.verifyCSS(listOrderingPage.questionBorderPreviewTab(), {
334
- 'border': `1px solid ${css.color.draggableOptionsContainerBorder}`
335
- });
440
+ /**
441
+ * @param {number} index set correct answer option index
442
+ * @description this function verfies drag handle of options does not exist
443
+ */
444
+ verifyDragHandleButtonDoesNotExistInSetCorrectAnswerSection: (index) => {
445
+ listOrderingPage.setCorrectAnswerSectionOption()
446
+ .eq(index)
447
+ .within(() => {
448
+ listOrderingPage.dragHandleButton()
449
+ .should('not.exist');
450
+ });
336
451
  },
337
452
 
338
- verifyOuterBorderOfQuestionPreviewNotExists: () => {
339
- listOrderingPage.questionBorderPreviewTab()
340
- .should('have.css', 'border')
341
- .and('match', /0px none/);
453
+ /**
454
+ * @param {number} index set correct answer option index
455
+ * @description this function verfies drag handle of options does not exist
456
+ */
457
+ verifyDragHandleButtonDoesNotExistInPreviewTab: (index) => {
458
+ listOrderingPage.previewTabOption()
459
+ .eq(index)
460
+ .within(() => {
461
+ listOrderingPage.dragHandleButton()
462
+ .should('not.exist');
463
+ });
342
464
  },
343
465
 
344
- verifyEnableOuterBorderForQuestionCheckboxCheckedState: () => {
345
- listOrderingPage.enableOuterBorderForQuestionCheckbox()
346
- .should('be.checked');
466
+ //Additional settings
467
+
468
+ verifyNoBorderForSetCorrectAnswerOption: () => {
469
+ listOrderingPage.setCorrectAnswerSectionOption()
470
+ .eq(0)
471
+ .should('have.css', 'border')
472
+ .and('match', /0px none/);
347
473
  },
348
474
 
349
- verifyEnableOuterBorderForQuestionCheckboxUncheckedState: () => {
350
- listOrderingPage.enableOuterBorderForQuestionCheckbox()
351
- .should('not.be.checked');
475
+ verifyNoBorderForPreviewTabOption: () => {
476
+ listOrderingPage.previewTabOption()
477
+ .eq(0)
478
+ .should('have.css', 'border')
479
+ .and('match', /0px none/);
352
480
  },
353
481
 
354
- checkEnableOuterBorderForQuestionCheckbox: () => {
355
- listOrderingPage.enableOuterBorderForQuestionCheckbox()
356
- .click()
357
- .should('be.checked');
482
+ clickOnSetPointsButton: () => {
483
+ listOrderingPage.buttonSetPoints()
484
+ .click();
358
485
  },
359
486
 
360
- uncheckEnableOuterBorderForQuestionCheckbox: () => {
361
- listOrderingPage.enableOuterBorderForQuestionCheckbox()
362
- .click()
363
- .should('not.be.checked');
487
+ verifySetPointsButton: () => {
488
+ utilities.verifyInnerText(listOrderingPage.buttonSetPoints(), 'Set points');
489
+ utilities.verifyElementVisibilityState(listOrderingPage.setPointsIcon(), 'visible');
364
490
  },
365
491
 
366
492
  /**
367
- * @description Verifies that the image in the Specify Correct Answer section has the correct source and alt text.
368
- * @param {number} index - The index of the option in the Specify Correct Answer section.
369
- */
370
- verifyImageInSpecifyCorrectAnswerSection: (index) => {
371
- utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
493
+ * @param {number} index of option
494
+ * @description this function verifies image in set points popup
495
+ */
496
+ verifyImageAddedToOptionInSetPointsPopup: (index) => {
497
+ setPointsPopupBase.setPointsPopupOptions()
498
+ .eq(index)
372
499
  .find('img')
373
500
  .should('have.attr', 'src', constants.foxImageLink)
374
501
  .and('have.attr', 'alt', constants.foxImageAltText);
375
502
  },
376
503
 
377
504
  /**
378
- * @description Verifies that the bold text in the Specify Correct Answer section is correct.
379
- * @param {number} index - The index of the option in the Specify Correct Answer section.
380
- */
381
- verifyBoldTextInSpecifyCorrectAnswerSection: (index) => {
382
- utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
383
- .find('strong')
384
- .should('have.text', 'This is a bold option');
385
- },
386
-
387
- /**
388
- * @description Verifies that the equation text in the Specify Correct Answer section is correct.
389
- * @param {number} index - The index of the option in the Specify Correct Answer section.
390
- */
391
- verifyEquationTextInSpecifyCorrectAnswerSection: (index) => {
392
- utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
505
+ * @param {number} index of option
506
+ * @description this function verifies equation text in set points popup
507
+ */
508
+ verifyEquationAddedToOptionInSetPointsPopup: (index) => {
509
+ setPointsPopupBase.setPointsPopupOptions()
510
+ .eq(index)
511
+ .contains(constants.CKEditorInputFieldEnteredEquationText)
512
+ setPointsPopupBase.setPointsPopupOptions()
393
513
  .find('[role="math"]')
394
514
  .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
395
- .contains(constants.CKEditorInputFieldEnteredEquationText);
396
- },
397
-
398
- selectOrderingLayoutOption: (layoutOption) => {
399
- switch (layoutOption) {
400
- case 'Reorder in the same list':
401
- listOrderingPage.reorderInTheSameListButton()
402
- .click()
403
- .should('have.class', 'ngie-toggle-button-selected');
404
- break;
405
- case 'Reorder as a separate list':
406
- listOrderingPage.reorderAsSeparateListButton()
407
- .click()
408
- .should('have.class', 'ngie-toggle-button-selected');
409
- break;
410
- case 'Dropdown menu':
411
- listOrderingPage.dropdownMenuButton()
412
- .click()
413
- .should('have.class', 'ngie-toggle-button-selected');
414
- break;
415
- default:
416
- throw new Error('Invalid layout option');
417
- }
418
- },
419
-
420
- ///Dropdown menu steps
421
- expandDropdownMenuOptionsDropdown: () => {
422
- listOrderingPage.dropdownMenuOptionsDropdown()
423
- .click();
424
515
  },
425
516
 
426
517
  /**
427
- * Expands the position dropdown in the specify correct answer section and selects the specified dropdown index.
428
- * @param {number} dropdownIndex - The index of the dropdown to expand and select.
518
+ * @param {number} index of option
519
+ * @description this function link in set points popup
429
520
  */
430
- expandPositionDropdownSpecifyCorrectAnswerSection: (dropdownIndex) => {
431
- utilities.getNthElement(listOrderingPage.positionDropdownSpecifyCorrectAnswerSection(), dropdownIndex)
432
- .click();
521
+ verifyLinkAddedToOptionInSetPointsPopup: (index) => {
522
+ setPointsPopupBase.setPointsPopupOptions()
523
+ .eq(index)
524
+ .should('have.text', 'lorem')
525
+ .find('a')
526
+ .should('have.attr', 'href', `${Cypress.config().baseUrl}`)
433
527
  },
434
528
 
435
529
  /**
436
- * Selects the specified option from the position dropdown in the specify correct answer section.
437
- * @param {number} optionIndex - The index of the option in the dropdown.
438
- * @param {string} position - The position to select.
439
- */
440
- selectOptionPositionSpecifyCorrectAnswerSection: (optionIndex, position) => {
441
- steps.expandPositionDropdownSpecifyCorrectAnswerSection(optionIndex);
442
- listOrderingPage.positionDropdownListOption(position)
443
- .click();
530
+ * @param {number} index of option
531
+ * @description this function bold text in in set points popup
532
+ */
533
+ verifyBoldTextAddedToOptionInSetPointsPopup: (index) => {
534
+ setPointsPopupBase.setPointsPopupOptions()
535
+ .eq(index)
536
+ .find('strong')
537
+ .eq(0)
538
+ .should('have.text', 'This is a bold option');
444
539
  },
445
540
 
446
541
  /**
447
- * Selects positions for all options in the specify correct answer section according to the provided position object.
448
- * @param {Object[]} positionObject - An array of objects where each object contains optionIndex and position properties.
449
- * @param {number} positionObject[].optionIndex - The index of the option.
450
- * @param {string} positionObject[].position - The position to select.
542
+ * @param {number[]} numerationArray numeration array for the option
543
+ * @description this function checks the numeration of options in set points popup
451
544
  */
452
- selectPositionForAllOptionsSpecifyCorrectAnswerSection: (positionObject) => {
453
- positionObject.forEach(({ optionIndex, position }) => {
454
- steps.selectOptionPositionSpecifyCorrectAnswerSection(optionIndex, position)
545
+ verifySetPointsPopupOptionNumeration: (numerationArray) => {
546
+ numerationArray.forEach((optionNumeration, index) => {
547
+ setPointsPopupBase.dialogBox()
548
+ .within(() => {
549
+ listOrderingPage.optionNumeration()
550
+ .eq(index)
551
+ .should('have.text', optionNumeration);
552
+ });
455
553
  });
456
554
  },
457
555
 
458
- /**
459
- * Expands the position dropdown in the specify correct answer section and selects the specified dropdown index.
460
- * @param {number} dropdownIndex - The index of the dropdown to expand and select.
461
- */
462
- expandPositionDropdownPreviewTab: (dropdownIndex) => {
463
- utilities.getNthElement(listOrderingPage.positionDropdownPreviewTab(), dropdownIndex)
464
- .click();
465
- },
556
+ verifyCorrectIncorrectAnswerLabel: (labelText) => {
557
+ autoScoredPreviewBase.correctIncorrectAnswerLabel()
558
+ .should('be.visible')
559
+ .verifyInnerText(`${labelText} answer`)
560
+ .parents('[class*="__AnswerStatusWrapper"]')
561
+ .find('[class*="__AnswerStatusIcon"]')
562
+ .should('be.visible')
563
+ .should('have.text', `${labelText}-Icon`)
564
+ }
565
+ }
466
566
 
467
- /**
468
- * Selects the specified option from the position dropdown in the specify correct answer section.
469
- * @param {number} optionIndex - The index of the option in the dropdown.
470
- * @param {string} position - The position to select.
471
- */
472
- selectOptionPositionPreviewTab: (optionIndex, position) => {
473
- steps.expandPositionDropdownPreviewTab(optionIndex);
474
- listOrderingPage.positionDropdownListOption(position)
475
- .click();
567
+ const tests = {
568
+ ...createQuestionBasePage.tests,
569
+ ...commonComponents.tests,
570
+ ...questionInstructionsComponent.tests,
571
+ ...autoScoredScoringSection.tests,
572
+ ...scoringSectionBase.tests,
573
+ ...autoScoredSetCorrectAnswerSection.tests,
574
+ ...previewScoringAndShowCorrectAnswerComponent.tests,
575
+ ...additionalSettingsPanel.tests,
576
+ ...autoScoredAdditionalSettings.tests,
577
+ ...answerNumerationComponent.tests,
578
+ ...studentResponseAndLayoutComponent.tests,
579
+ ...listSortingAndOrderingBase.tests,
580
+ verifyAllContentsOfSetCorrectAnswerSectionForScoringType: (scoringType, optionsArray) => {
581
+ it(`When user has selected ${scoringType} scoring type then added options should be displayed in the set correct answer section`, () => {
582
+ listOrderingPage.steps.verifyOptionsTextContentInSetCorrectAnswerSection(optionsArray);
583
+ for (let index = 0; index < 4; index++) {
584
+ listOrderingPage.steps.verifyDragHandleButtonOfOptionInSetCorrectAnswerSection(index);
585
+ }
586
+ });
476
587
  },
477
588
 
478
589
  /**
479
- * Selects positions for all options in the specify correct answer section according to the provided position object.
480
- * @param {Object[]} positionObject - An array of objects where each object contains optionIndex and position properties.
481
- * @param {number} positionObject[].optionIndex - The index of the option.
482
- * @param {string} positionObject[].position - The position to select.
590
+ * @param {number} totalPoints the maximum points that can be scored by the user
591
+ * @description this function verifies the functionality of minimum points when penalty points are not set and user attempts incorrect answer
483
592
  */
484
- selectPositionForAllOptionsPreviewTab: (positionObject) => {
485
- positionObject.forEach(({ optionIndex, position }) => {
486
- steps.selectOptionPositionPreviewTab(optionIndex, position)
593
+ verifyMinimumScoreAwardedIfAttemptedFunctionalityForIncorrectAnswer: (totalPoints) => {
594
+ it('When user has provided minimum score awarded (if attempted) points, then in Preview tab on entering incorrect answer, minimum score should be provided for the question', () => {
595
+ cy.log('Switch to edit tab and set minimum score if attempted points')
596
+ createQuestionBasePage.steps.switchToEditTab();
597
+ scoringSectionBase.steps.expandMinimumScoringDropdown();
598
+ scoringSectionBase.steps.selectMinimumScoringTypeListOption('Award minimum score only if attempted');
599
+ scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted('1')
600
+ createQuestionBasePage.steps.switchToPreviewTab()
601
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 0);
602
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 1);
603
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
604
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['plant', 'seed', 'flower', 'sprout']);
605
+ listOrderingPage.previewScoreText()
606
+ .verifyInnerText(`1/${totalPoints}`);
487
607
  });
488
- },
489
-
490
- /**
491
- * @param {number} optionIndex option to be checked for the correct icon
492
- * @description This function verifies the correct icon in the preview tab for the dropdown order layout
493
- */
494
- verifyCorrectOptionIconDropdownLayout: (optionIndex) => {
495
- utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
496
- .within(() => {
497
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'visible');
498
- });
499
- },
500
-
501
- /**
502
- * @param {number} optionIndex option to be checked for the correct icon
503
- * @description This function verifies the correct icon in the preview tab for the dropdown order layout
504
- */
505
- verifyIncorrectOptionIconDropdownLayout: (optionIndex) => {
506
- utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
507
- .within(() => {
508
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'visible');
509
- });
510
- },
511
608
 
512
- /**
513
- * @param {number} optionIndex option to be checked for the correct/incorrect icon to not exist
514
- * @description This function verifies the correct/incorrect icon to not exist in the preview tab for the dropdown order layout
515
- */
516
- verifyCorrectIncorrectOptionIconDropdownLayoutNotExists: (optionIndex) => {
517
- utilities.getNthElement(listOrderingPage.dropdownWrapperPreviewTab(), optionIndex)
518
- .within(() => {
519
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'notExist');
520
- utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.correctIcon(), 'notExist');
521
- });
522
- },
523
-
524
- /**
525
- * @description Verifies that the image in the Preview tab has the correct source and alt text.
526
- * @param {number} optionIndex - The index of the option in the Preview tab.
527
- */
528
- verifyOptionWithImageDropdownLayoutInGradingView: (optionIndex) => {
529
- listOrderingPage.dropdownOptionWrapperGradingView()
530
- .eq(optionIndex)
531
- .find('img')
532
- .should('have.attr', 'src', constants.foxImageLink)
533
- .and('have.attr', 'alt', constants.foxImageAltText);
609
+ it('When user removes minimum score awarded (if attempted) points, then in Preview tab on selecting any options other than correct answers, points should not be provided', () => {
610
+ cy.log('Switch to edit tab and remove minimum score if attempted points')
611
+ createQuestionBasePage.steps.switchToEditTab();
612
+ scoringSectionBase.steps.clearMinimumScoreIfAttemptedPointsField();
613
+ createQuestionBasePage.steps.switchToPreviewTab()
614
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 0);
615
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 1);
616
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
617
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['plant', 'seed', 'flower', 'sprout']);
618
+ listOrderingPage.previewScoreText()
619
+ .verifyInnerText(`0/${totalPoints}`);
620
+ });
534
621
  },
535
622
 
536
623
  /**
537
- * @description Verifies that the bold text in the Preview tab is correct.
538
- * @param {number} optionIndex - The index of the option in the Preview tab.
624
+ *
625
+ * @param {number} scoredPoints the points scored by the user when penalty points are reduced
626
+ * @param {number} totalPoints the maximum points that can be scored by the user
627
+ * @description this function verifies the functionality of Penalty points when minimum points are not set and user attempts incorrect answer
539
628
  */
540
- verifyOptionWithBoldTextDropdownLayoutInGradingView: (optionIndex) => {
541
- listOrderingPage.dropdownOptionWrapperGradingView()
542
- .eq(optionIndex)
543
- .find('strong')
544
- .should('have.text', 'This is a bold option');
629
+ verifyPenaltyPointsFunctionalityForIncorrectAnswer: (scoredPoints, totalPoints) => {
630
+ it('When user has defined penalty points', () => {
631
+ cy.log('Pre-step: Switch to edit tab and set penalty points');
632
+ createQuestionBasePage.steps.switchToEditTab();
633
+ autoScoredScoringSectionMultipleResponsesType.steps.allotPenaltyPoints(3)
634
+
635
+ cy.log('After switching to preview tab, when user adds an incorrect answer input, then 0 points should be awarded(no negative points)');
636
+ createQuestionBasePage.steps.switchToPreviewTab();
637
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
638
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['sprout', 'plant', 'flower', 'seed']);
639
+ listOrderingPage.previewScoreText()
640
+ .verifyInnerText(`0/${totalPoints}`);
641
+
642
+ cy.log('When user adds a partially correct answer input, the points should be updated accordingly with deducted penalty points');
643
+ listOrderingPage.steps.resetQuestionPreview(['sprout', 'plant', 'flower', 'seed'])
644
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
645
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
646
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'sprout', 'flower']);
647
+ listOrderingPage.previewScoreText()
648
+ .verifyInnerText(`${scoredPoints}/${totalPoints}`);
649
+
650
+ cy.log('Post step: Clearing the Penalty points field')
651
+ createQuestionBasePage.steps.switchToEditTab();
652
+ autoScoredScoringSectionMultipleResponsesType.penaltyPointsInputField()
653
+ .clear();
654
+ });
545
655
  },
546
656
 
547
657
  /**
548
- * @description Verifies that the equation text in the Preview tab is correct.
549
- * @param {number} optionIndex - The index of the option in the Preview tab.
550
- */
551
- verifyOptionWithEquationTextDropdownLayoutInGradingView: (optionIndex) => {
552
- listOrderingPage.dropdownOptionWrapperGradingView()
553
- .eq(optionIndex)
554
- .find('[role="math"]')
555
- .should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
556
- .contains(constants.CKEditorInputFieldEnteredEquationText);
658
+ * @param {*} totalPointsScored the maximum points that can be achieved by the user
659
+ * @description this function verifies the functionality of penalty points when penalty points are set and user attempts alternate tab answers
660
+ */
661
+ verifyPenaltyPointsFunctionalityForAlternateTabAnswers: (totalPointsScored) => {
662
+ it('When the user has alloted penalty points and attempts the question according to the alternate tab then user should be awarded with full points of the alternate tab and penalty points should not be deducted', () => {
663
+ listOrderingPage.steps.switchToEditTab()
664
+ listOrderingPage.steps.allotPenaltyPoints(3);
665
+ listOrderingPage.steps.switchToPreviewTab();
666
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
667
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 3);
668
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 1);
669
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'flower', 'sprout', 'plant']);
670
+ listOrderingPage.steps.verifyPreviewTabScoreText(`${totalPointsScored}`, `${totalPointsScored}`);
671
+ cy.log('Post step: Clearing the Penalty points field')
672
+ createQuestionBasePage.steps.switchToEditTab();
673
+ autoScoredScoringSectionMultipleResponsesType.penaltyPointsInputField()
674
+ .clear();
675
+ });
557
676
  },
558
677
 
559
678
  /**
560
- * @param {string[]} optionsTextArray options array for set correct answer option
561
- * @description this function verifies options text content
679
+ * @param {number[]} scoredPointsArray An array of numbers representing points scored in different cases.
680
+ * - The first element represents points scored for incorrect answers.
681
+ * - The second element represents points scored for partially correct answers.
682
+ * - The third element represents points scored when minimum score awarded (if attempted) points is greater than the points achieved by attempting the question partially correct
683
+ * @param {number} minimumPointsForPartialCorrectAnswers minimum score awarded (if attempted) points on attempting the question partially correct
684
+ * @param {number} totalPoints the maximum points that can be achieved by the user
685
+ * @description this function verifies the functionality of Minimum score if attempted points when penalty points are set and user attempts incorrect answer
686
+ * - For all incorrect responses
687
+ * - For partially correct responses, when points scored > minimum score awarded(if attempted) points
688
+ * - For partially correct responses, when minimum score awarded(if attempted) points > points scored
562
689
  */
563
- verifyTextContentOfOptionDropdownLayoutInGradingView: (optionsText, index) => {
564
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.dropdownOptionWrapperGradingView(), index), optionsText);
690
+ verifyMinimumScoreIfAttemptedAndPenaltyPointsFunctionalityForIncorrectAnswer: (scoredPointsArray, minimumPointsForPartialCorrectAnswers, totalPoints) => {
691
+ it('When user has defined both penalty points and minimum score awarded (if attempted) points', () => {
692
+ cy.log('Pre-step: Switch to edit tab and set minimum score awarded (if attempted) points and Penalty points');
693
+ createQuestionBasePage.steps.switchToEditTab();
694
+ scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted(1);
695
+ autoScoredScoringSectionMultipleResponsesType.steps.allotPenaltyPoints(3);
696
+
697
+ cy.log('Switch to preview tab and give incorrect answer input to check that minimum points are displayed');
698
+ createQuestionBasePage.steps.switchToPreviewTab();
699
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 0);
700
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('sprout', 3);
701
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['flower', 'plant', 'seed', 'sprout']);
702
+ listOrderingPage.previewScoreText()
703
+ .verifyInnerText(`${scoredPointsArray[0]}/${totalPoints}`);
704
+
705
+ cy.log('When user adds a partially correct answer such that the points of the attempt(with penalty points deducted) is more than the minimum score awarded(if attempted) points');
706
+ listOrderingPage.steps.resetQuestionPreview(['sprout', 'plant', 'flower', 'seed']);
707
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
708
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
709
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'sprout', 'flower']);
710
+ listOrderingPage.previewScoreText()
711
+ .verifyInnerText(`${scoredPointsArray[1]}/${totalPoints}`);
712
+
713
+ cy.log('When user switches to edit tab and increases the minimum score awarded (if attempted) points to check the case for an attempt in which points of the attempt is less than minimum score awarded (if attempted) points, then the minimum score awarded (if attempted) points should be displayed to the user');
714
+ createQuestionBasePage.steps.switchToEditTab();
715
+ scoringSectionBase.steps.clearMinimumScoreIfAttemptedPointsField()
716
+ scoringSectionBase.steps.allotMinimumScoreAwardedIfAttempted(minimumPointsForPartialCorrectAnswers)
717
+ cy.log('Switching to preview tab');
718
+ createQuestionBasePage.steps.switchToPreviewTab();
719
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('seed', 0);
720
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('plant', 1);
721
+ listOrderingPage.steps.clickAndReorderOptionInPrevewTab('flower', 2);
722
+ listOrderingPage.steps.verifyTextContentOfOptionsInPreviewTab(['seed', 'plant', 'flower', 'sprout']);
723
+ listOrderingPage.previewScoreText()
724
+ .verifyInnerText(`${scoredPointsArray[2]}/${totalPoints}`);
725
+ });
565
726
  },
566
727
 
728
+ //Additional settings
567
729
  /**
568
- * @param {string[]} optionsTextArray array of options in the correct answer section
569
- * @description this function verifies the correct order of options in correct answer section
730
+ * @param {string[]} numerationArray array of the numeration displayed with options numbers| lowercase| uppercase
731
+ * @description this function checks the numeration displayed for the options and correct answer container options when Show correct answer is checked
570
732
  */
571
- verifyOptionsPositionInCorrectAnswerSection: (optionsTextArray, positionArray) => {
572
- optionsTextArray.forEach((optionsText, index) => {
573
- utilities.getNthElement(listOrderingPage.correctAnswerSectionAnswerWrapper(), index)
574
- .within(() => {
575
- utilities.verifyTextContent(listOrderingPage.correctAnswerSectionAnswerText(), optionsText);
576
- });
577
- });
578
- positionArray.forEach((position, dropdownIndex) => {
579
- utilities.verifyTextContent(utilities.getNthElement(listOrderingPage.positionDropdownCorrectAnswerSection(), dropdownIndex), position);
733
+ verifyOptionsAndCorrectAnswerContainerNumerationWhenShowCorrectAnswerCheckboxIsChecked: (numerationArray) => {
734
+ it('When user clicks on \'Show correct answer\' checkbox then the numeration should be displayed on the options as well as \'Correct answers:\' section', () => {
735
+ listOrderingPage.steps.checkShowCorrectAnswerCheckbox()
736
+ steps.verifyOptionsNumeration(numerationArray)
737
+ steps.verifyCorrectAnswerContainerNumeration(numerationArray)
738
+ cy.log('Post step: Uncheck \'Show correct answer\' checkbox')
739
+ listOrderingPage.steps.uncheckShowCorrectAnswerCheckbox()
580
740
  });
581
741
  },
582
742
 
583
743
  /**
584
- * Verifies the selected option position in the dropdown for the specified dropdown index.
585
- * @param {number} dropdownIndex - The index of the dropdown to verify.
586
- * @param {string} position - The expected position of the selected option.
587
- */
588
- verifySelectedOptionPositionDropdown: (dropdownIndex, position) => {
589
- utilities.getNthElement(listOrderingPage.positionDropdownPreviewTab(), dropdownIndex)
590
- .within(() => {
591
- if (position === '') {
592
- utilities.verifyElementVisibilityState(listOrderingPage.dropdownSelectedOptionLabel(), 'notExist');
593
- } else {
594
- utilities.verifyInnerText(listOrderingPage.dropdownSelectedOptionLabel(), position);
595
- }
596
- });
597
- },
598
-
599
- verifyAssignValueToAllDropdownAlertMessage: () => {
600
- utilities.verifyInnerText(listOrderingPage.alertMessage(), 'All options need to have a value assigned to them from the dropdown.');
601
- utilities.verifyElementVisibilityState(listOrderingPage.alertMessage(), 'visible');
602
- },
603
-
604
- verifyAlertMessageNotExists: () => {
605
- utilities.verifyElementVisibilityState(listOrderingPage.alertMessage(), 'notExist');
606
- }
607
- }
608
-
609
- const tests = {
610
- ...autoScoredScoringPreviewTab.tests,
611
- ...scoringSectionBaseEditTab.tests,
612
- ...autoScoredScoringSectionMultiResponseType.tests,
613
- ...autoScoredSpecifyCorrectAnswerSection.tests,
614
- ...commonComponents.tests,
615
- ...studentViewSettingsLabelComponent.tests,
616
- ...randomizeOptionsComponent.tests,
617
- ...autoScoredStudentViewSettings.tests,
618
- ...questionInstructionsComponent.tests,
619
- ...optionsWrapperComponent.tests,
620
- ...additionalSettingsPanel.tests,
621
- ...additionalSettingsAccessibilitySectionComponent.tests,
622
- ...createQuestionBasePage.tests,
623
- verifyContentsOfSpecifyCorrectAnswerSection: () => {
624
- it('When user selects a scoring type then in the \'Correct\' accordion, all the contents should be displayed', () => {
625
- utilities.verifyElementCount(listOrderingPage.optionSpecifyCorrectAnswerSection(), 4);
626
- options.forEach((optionText, index) => {
627
- listOrderingPage.steps.verifyTextContentOfOptionInSpecifyCorrectAnswerSection(optionText, index);
628
- });
744
+ * @param {string[]} numerationArray array of the numeration displayed with options numbers| lowercase| uppercase
745
+ * @description this function checks the numeration displayed for the options and correct answer container options when check answer is selected
746
+ */
747
+ verifyOptionsNumerationWhenCheckAnswerIsSelected: (numerationArray) => {
748
+ it('When user clicks on \'Check answer\' button then the numeration should be displayed in the options', () => {
749
+ listOrderingPage.steps.checkAnswer()
750
+ steps.verifyOptionsNumeration(numerationArray)
629
751
  });
630
- },
752
+ }
631
753
  }
632
754
 
633
755
  export const listOrderingPage = {