itemengine-cypress-automation 1.0.239 → 1.0.240

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +2 -2
  2. package/cypress/e2e/ILC/ChartsBar/headerSection.js +22 -5
  3. package/cypress/e2e/ILC/ChartsLine/headerSection.js +23 -5
  4. package/cypress/e2e/ILC/ContentBlocks/editTabBasics.js +3 -4
  5. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +2 -4
  6. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/draggableOptions.js +3 -4
  7. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/headerSection.js +4 -6
  8. package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +1 -3
  9. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/Scoring/allOrNothingWithCorrectPointsEqualToAlternativePoints.js +1 -1
  10. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +2 -4
  11. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/draggableOptions.js +3 -4
  12. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/editTabBasicSection.js +2 -2
  13. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/headerSection.js +4 -5
  14. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/dropdownOptionsSection.js +2 -2
  15. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/editTabBasicSection.js +2 -2
  16. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/headerSection.js +3 -5
  17. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/specifyCorrectAnswerSection.js +1 -1
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/additionalSettings.js +172 -0
  19. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +3 -5
  20. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/draggableOptions.js +0 -1
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/headerSection.js +3 -8
  22. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/Scoring/manuallyAndNonScored.js +6 -6
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/additionalSettingsBasic.js +2 -2
  24. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/dropdownOptionsSection.js +2 -2
  25. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/editTabBasicSection.js +3 -1
  26. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/headerSection.js +2 -8
  27. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/supportedFileTypes.js +2 -3
  28. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/HeaderSection.js +3 -5
  29. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/backgroundImageAndCanvasProperties.js +2 -2
  30. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/specifyCorrectAnswerSection.js +3 -3
  31. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/styleAndLayoutCustomization.js +16 -16
  32. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabBasicSection.js +3 -2
  33. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +3 -3
  34. package/cypress/e2e/ILC/FillInTheGapsTextNew/specifyCorrectAnswerSection.js +3 -3
  35. package/cypress/e2e/ILC/Graphing/headerSection.js +2 -3
  36. package/cypress/e2e/ILC/GridFill/headerSection.js +2 -4
  37. package/cypress/e2e/ILC/GridFill/specifyCorrectAnswerSection.js +6 -3
  38. package/cypress/e2e/ILC/ImageHighlight/headerSection.js +2 -4
  39. package/cypress/e2e/ILC/ListOrderingDropdown/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +2 -2
  40. package/cypress/e2e/ILC/ListOrderingDropdown/minimumScoringPenaltyPointsAndRoundingDropdown.js +1 -1
  41. package/cypress/e2e/ILC/ListOrderingDropdown/specifyCorrectAnswerSection.js +6 -8
  42. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +2 -8
  43. package/cypress/e2e/ILC/ListOrderingNew/optionsOrientationSection.js +150 -0
  44. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/horizontalOrientationAllOrNothingForAllViews.smoke.js +218 -0
  45. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/previewContentsForAllViews.smoke.js +176 -0
  46. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +170 -0
  47. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +170 -0
  48. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +230 -0
  49. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/allOrNothingPenaltyScoring.js +64 -0
  50. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/Scoring/manuallyAndNonScored.js +110 -0
  51. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/allOrNothingForAllViews.smoke.js +249 -0
  52. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/previewContentsForAllViews.smoke.js +172 -0
  53. package/cypress/e2e/ILC/Matching/clickAndDrop.js +6 -10
  54. package/cypress/e2e/ILC/Matching/headerSection.js +2 -10
  55. package/cypress/e2e/ILC/Matching/matchingConnector.js +128 -0
  56. package/cypress/e2e/ILC/Matching/minimumScoringPenaltyPointsAndRoundingDropdown.js +2 -2
  57. package/cypress/e2e/ILC/Matching/questionInstructionsAndPromptSection.js +2 -15
  58. package/cypress/e2e/ILC/MatchingDropdown/editTabBasicSection.js +154 -0
  59. package/cypress/e2e/ILC/MultipleSelection/headerSection.js +4 -6
  60. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +4 -4
  61. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +1 -1
  62. package/cypress/e2e/ILC/MultipleSelectionGridNew/headerSection.js +3 -9
  63. package/cypress/e2e/ILC/NumberLine/headerSection.js +2 -3
  64. package/cypress/e2e/ILC/NumberLineLabel/headerSection.js +4 -4
  65. package/cypress/e2e/ILC/ShortTextResponseNew/headerSection.js +2 -4
  66. package/cypress/e2e/ILC/SingleSelection/headerSection.js +2 -5
  67. package/cypress/e2e/ILC/SingleSelectionGridNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +2 -2
  68. package/cypress/e2e/ILC/SingleSelectionGridNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +2 -2
  69. package/cypress/e2e/ILC/SingleSelectionGridNew/headerSection.js +2 -9
  70. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +210 -0
  71. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +210 -0
  72. package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +258 -0
  73. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +246 -0
  74. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +203 -0
  75. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +245 -0
  76. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsScoringBasic.js +541 -0
  77. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +243 -0
  78. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +203 -0
  79. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +242 -0
  80. package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasic.js +195 -0
  81. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +6 -0
  82. package/cypress/e2e/ILC/TextEntryMath/editTabBasicSection.js +8 -1
  83. package/cypress/e2e/ILC/TextEntryMath/editTabScoringSection.js +12 -0
  84. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodEquivalentStructures.js +10 -0
  85. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchExact.js +2 -0
  86. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodMatchValue.js +2 -0
  87. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodSymbolsAreEquivalent.js +2 -0
  88. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodValueIsEquivalent.js +2 -0
  89. package/cypress/e2e/ILC/TextEntryMath/evaluationMethodsWithoutSetResponse.js +4 -0
  90. package/cypress/e2e/ILC/TextEntryMath/minimumScoringPenaltyPointsAndRoundingDropdown.js +6 -0
  91. package/cypress/e2e/ILC/TextEntryMath/previewContentsForAllViews.smoke.js +2 -0
  92. package/cypress/e2e/ILC/TextEntryMathWithImage/allOrNothingScoringForAllViews.smoke.js +6 -0
  93. package/cypress/e2e/ILC/TextEntryMathWithImage/backgroundImageAndCanvasProperties.js +2 -0
  94. package/cypress/e2e/ILC/TextEntryMathWithImage/previewTabContentsForAllViews.smoke.js +2 -0
  95. package/cypress/e2e/ILC/TextSelection/Scoring/singleSelectionPreviewScoring.js +247 -0
  96. package/cypress/e2e/ILC/TextSelection/headerSection.js +4 -5
  97. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +1 -2
  98. package/cypress/e2e/ILC/TextSelection/singleMultipleSelection.js +100 -0
  99. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordionOutline.js +248 -0
  100. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordionStrikethrough.js +247 -0
  101. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordionUnderline.js +239 -0
  102. package/cypress/e2e/ILC/TextSelection/textSelectionStyle.js +150 -0
  103. package/cypress/e2e/ILC/ToolAudioPlayerNew/headerSection.js +3 -2
  104. package/cypress/e2e/ILC/UploadResponse/editTabBasicSection.js +2 -3
  105. package/cypress/e2e/ILC/chartsDotsPlot/allOrNothingForAllViews.smoke.js +1 -1
  106. package/cypress/e2e/ILC/chartsDotsPlot/headerSection.js +21 -5
  107. package/cypress/pages/components/autoScoredScoringPreviewTab.js +1 -0
  108. package/cypress/pages/components/autoScoredSetCorrectAnswerSection.js +0 -11
  109. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +11 -29
  110. package/cypress/pages/components/draggableOptionsStyleAndLayoutComponent.js +1 -1
  111. package/cypress/pages/components/figCommonStyleAndLayoutComponent.js +1 -1
  112. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +2 -3
  113. package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +2 -2
  114. package/cypress/pages/components/optionsWrapperComponent.js +2 -2
  115. package/cypress/pages/components/playbackControlsBaseComponent.js +2 -2
  116. package/cypress/pages/components/questionInputFieldComponent.js +1 -0
  117. package/cypress/pages/components/scoringSectionBaseEditTab.js +3 -2
  118. package/cypress/pages/components/singleMultipleSelectionModeComponent.js +1 -1
  119. package/cypress/pages/createItemPage.js +1 -1
  120. package/cypress/pages/dialogBoxBase.js +21 -9
  121. package/cypress/pages/dragAndDropIntoCategoriesPage.js +4 -5
  122. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +83 -5
  123. package/cypress/pages/graphingPage.js +4 -7
  124. package/cypress/pages/gridFillPage.js +15 -16
  125. package/cypress/pages/listOrderingPage.js +373 -2
  126. package/cypress/pages/matchingPage.js +89 -33
  127. package/cypress/pages/multipleSelectionGridPage.js +11 -13
  128. package/cypress/pages/multipleSelectionPage.js +4 -5
  129. package/cypress/pages/numberLinePage.js +2 -13
  130. package/cypress/pages/shortTextResponsePage.js +2 -3
  131. package/cypress/pages/textEntryMathPage.js +28 -0
  132. package/cypress/pages/textSelectionPage.js +242 -3
  133. package/cypress/pages/videoResponsePage.js +0 -2
  134. package/package.json +1 -1
  135. /package/cypress/e2e/ILC/TextSelection/{styleAndLayoutCustomizationAccordion.js → styleAndLayoutCustomizationAccordionFilledIn.js} +0 -0
@@ -146,14 +146,13 @@ const steps = {
146
146
  utilities.verifyElementVisibilityState(autoScoredScoringPreviewTab.incorrectIcon(), 'notExist');
147
147
  });
148
148
  },
149
-
150
149
  /**
151
- * Verify placeholder text in the input field of a table cell property.
152
- * @param {Object} position - The position of the table cell property.
153
- * @param {number} position.row - The row index (zero-based) of the table cell property.
154
- * @param {number} position.column - The column index (zero-based) of the table cell property.
155
- * @param {string} text - The placeholder text to verify in the input field.
156
- */
150
+ * Verify placeholder text in the input field of a table cell property.
151
+ * @param {Object} position - The position of the table cell property.
152
+ * @param {number} position.row - The row index (zero-based) of the table cell property.
153
+ * @param {number} position.column - The column index (zero-based) of the table cell property.
154
+ * @param {string} text - The placeholder text to verify in the input field.
155
+ */
157
156
  verifyPlaceholderTextInCellPropertyInputField: ({ row, column }, text) => {
158
157
  utilities.getNthElement(gridQuestionCommonComponent.editCellPropertyRow(), row).within(() => {
159
158
  utilities.getNthElement(gridQuestionCommonComponent.tableCell(), column).within(() => {
@@ -161,7 +160,7 @@ const steps = {
161
160
  .should('have.attr', 'placeholder', text);
162
161
  });
163
162
  });
164
- }
163
+ },
165
164
  }
166
165
 
167
166
  const tests = {
@@ -190,19 +189,18 @@ const tests = {
190
189
  gridQuestionCommonComponent.steps.setAnswerInSpecifyCorrectAnswerSection({ row: 1, column: 0 });
191
190
  });
192
191
 
193
- it(`When the user has unchecked all the options in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
192
+ it(`When the user has unchecked all the options in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should not be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
194
193
  gridQuestionCommonComponent.steps.uncheckOptionInSpecifyCorrectAnswerSection({ row: 1, column: 0 });
195
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
196
- utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
194
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist')
197
195
  if (accordionName == 'Correct') {
198
196
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
199
197
  .within(() => {
200
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
198
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
201
199
  });
202
200
  } else {
203
201
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
204
202
  .within(() => {
205
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
203
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
206
204
  });
207
205
  };
208
206
  });
@@ -867,18 +867,17 @@ const tests = {
867
867
  multipleSelectionPage.steps.uncheckOptionsCheckboxInSpecifyCorrectAnswerSection(1);
868
868
  });
869
869
 
870
- it(`When the user has unchecked all selected options in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
871
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible')
872
- utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
870
+ it(`When the user has unchecked all selected options in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should not be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
871
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist')
873
872
  if (accordionName == 'Correct') {
874
873
  autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
875
874
  .within(() => {
876
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
875
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
877
876
  });
878
877
  } else {
879
878
  autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
880
879
  .within(() => {
881
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
880
+ utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'notExist');
882
881
  });
883
882
  };
884
883
  });
@@ -1452,19 +1452,8 @@ const tests = {
1452
1452
  it(`When the user resets the number line in the ${accordionName} accordion, \'Error: Please set a correct answer.\' error message should be thrown along with an error icon on the \'${accordionName}\' accordion`, () => {
1453
1453
  numberLinePage.steps.selectNumberLineControlOptionSpecifyCorrectAnswerSection('Reset');
1454
1454
  numberLinePage.steps.confirmReset();
1455
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible');
1456
- utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Please set a correct answer.');
1457
- if (accordionName == 'Correct') {
1458
- autoScoredSpecifyCorrectAnswerSection.correctAnswerAccordion()
1459
- .within(() => {
1460
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
1461
- });
1462
- } else {
1463
- autoScoredSpecifyCorrectAnswerSection.alternativeAnswerAccordion()
1464
- .within(() => {
1465
- utilities.verifyElementVisibilityState(autoScoredSpecifyCorrectAnswerSection.specifyCorrectAnswerErrorIcon(), 'visible');
1466
- });
1467
- };
1455
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
1456
+ utilities.verifyElementDisabled(autoScoredSpecifyCorrectAnswerSection.alternativeAnswerButton());
1468
1457
  });
1469
1458
 
1470
1459
  autoScoredSpecifyCorrectAnswerSection.tests.verifyAutoScoredCorrectAnswerErrorMessageCSSAndA11y();
@@ -924,10 +924,9 @@ const tests = {
924
924
  shortTextResponsePage.steps.enterTextInAnswerInputFieldSpecifyCorrectAnswerSection('Petals');
925
925
  });
926
926
 
927
- it('When user focuses in and out of the response accordion \'Answer\' input field, \'Error: Answer is required.\' error message should be displayed', () => {
927
+ it('When user focuses in and out of the response accordion \'Answer\' input field, \'Error: Answer is required.\' error message should not be displayed', () => {
928
928
  shortTextResponsePage.steps.clearAndFocusOutOfSpecifyCorrectAnswerInputField();
929
- utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'visible');
930
- utilities.verifyInnerText(commonComponents.errorMessage(), 'Error: Answer is required.');
929
+ utilities.verifyElementVisibilityState(commonComponents.errorMessage(), 'notExist');
931
930
  });
932
931
 
933
932
  autoScoredSpecifyCorrectAnswerSection.tests.verifyAutoScoredCorrectAnswerErrorMessageCSSAndA11y();
@@ -11,6 +11,7 @@ const selectors = {
11
11
  ...autoScoredScoringSectionMultiResponseType,
12
12
  ...autoScoredSpecifyCorrectAnswerSection,
13
13
  ...commonComponents,
14
+ ...autoScoredScoringPreviewTab,
14
15
 
15
16
  addStructureTab: () => cy.get('[data-ngie-testid="add-structure-tab"]'),
16
17
  responseToken: () => cy.get('.cke_button__addresponse'),
@@ -59,6 +60,13 @@ const selectors = {
59
60
  return cy.get('[class*="CustomSettingsstyles__CheckboxContainer"] label')
60
61
  }
61
62
  },
63
+ customSettingsCheckbox: (customSettingCheckboxId = null) => {
64
+ if (customSettingCheckboxId) {
65
+ return cy.get(`[class*="CustomSettingsstyles__CheckboxContainer"] input[aria-label*="${customSettingCheckboxId}"]`)
66
+ } else {
67
+ return cy.get('[class*="CustomSettingsstyles__CheckboxContainer"] input')
68
+ }
69
+ },
62
70
  toggleSeparatorWrapper: () => cy.get('[class*="CustomSettingsstyles__ToggleWrapper"]'),
63
71
  decimalSeparatorWrapper: () => cy.get('[class*="SingleSelectToggleGroupstyles__ToggleButtonWrapper"]').eq(0),
64
72
  thousandsSeparatorWrapper: () => cy.get('[class*="SingleSelectToggleGroupstyles__ToggleButtonWrapper"]').eq(1),
@@ -834,6 +842,26 @@ const steps = {
834
842
  utilities.verifyElementVisibilityState(textEntryMathPage.alternativeAnswerAccordion().contains('Alternative 2'), 'notExist');
835
843
  },
836
844
 
845
+ /**
846
+ * This function checks the custom settings checkbox
847
+ * @param {("Case sensitive"|"Accept interval notation"|"Check for equality across sides"|"Exclude LaTeX text from validation"|"Exclude LaTeX text from validation"|"Interpret e as Euler\'s number"|"Accept expressions in any order"|"Ignore unit coefficient"|"Ignore zeros after decimal")} ariaLabel
848
+ */
849
+ checkCustomSettingsCheckbox: (ariaLabel) => {
850
+ textEntryMathPage.customSettingsCheckbox(ariaLabel)
851
+ .click()
852
+ .should('be.checked');
853
+ },
854
+
855
+ /**
856
+ * This function unchecks the custom settings checkbox
857
+ * @param {("Case sensitive"|"Accept interval notation"|"Check for equality across sides"|"Exclude LaTeX text from validation"|"Exclude LaTeX text from validation"|"Interpret e as Euler\'s number"|"Accept expressions in any order"|"Ignore unit coefficient"|"Ignore zeros after decimal")} ariaLabel
858
+ */
859
+ uncheckCustomSettingsCheckbox: (ariaLabel) => {
860
+ textEntryMathPage.customSettingsCheckbox(ariaLabel)
861
+ .click()
862
+ .should('not.be.checked');
863
+ },
864
+
837
865
  //Additional settings
838
866
  selectEquationEditorSectionCategories: (categoriesArray) => {
839
867
  categoriesArray.forEach((categoryName) => {
@@ -2,6 +2,7 @@ import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
3
  import { createQuestionBasePage, autoScoredScoringPreviewTab, scoringSectionBaseEditTab, questionInputFieldComponent, questionInstructionsComponent, autoScoredStudentViewSettings, correctIncorrectAnswerLabelComponent, autoScoredSpecifyCorrectAnswerSection, autoScoredScoringSectionMultiResponseType, setPointsPopupBase, commonComponents, ckEditorToolbar, equationEditorFlyout, studentViewSettingsLabelComponent, enableOuterBorderComponent, additionalSettingsPanel, additionalSettingsAccessibilitySectionComponent, styleAndLayoutCustomizationAccordionComponent, colorPopupComponent, showAvailableOptionsToStudents, showStudentMaximumNumberOfPossibleSelections } from "./components";
4
4
  import { dialogBoxBase } from "./dialogBoxBase";
5
+ import { singleMultipleSelectionModeComponent } from "./components";
5
6
  const css = Cypress.env('css');
6
7
  const colorLibrary = css.textSelectionColorLibrary;
7
8
 
@@ -22,6 +23,21 @@ const selectors = {
22
23
  questionLabel: () => cy.get('[class*="Highlightstyles__QuestionComponentWrapper"] .title-casing'),
23
24
  questionInputField: () => cy.get('[class*="Highlightstyles__QuestionComponentWrapper"] [title="Question"]'),
24
25
  specifyPossibleOptionsTextFieldWrapper: () => cy.get('[class*="Highlightstyles__HighLightWrapper"] .question-text-wrapper'),
26
+ textSelectionStyleLabel: () => cy.get('.text-selection-style .options-label'),
27
+ textSelectionStyleButtonLabel: (ariaLabel = null) => {
28
+ if (ariaLabel) {
29
+ return cy.get(`.text-selection-style [type="button"][aria-label*="${ariaLabel}"] .ngie-toggle-button-label`)
30
+ } else {
31
+ return cy.get('.text-selection-style [type="button"] .ngie-toggle-button-label')
32
+ }
33
+ },
34
+ textSelectionStyle: (ariaLabel = null) => {
35
+ if (ariaLabel) {
36
+ return cy.get(`.text-selection-style [type="button"][aria-label*="${ariaLabel}"]`)
37
+ } else {
38
+ return cy.get('.text-selection-style [type="button"]')
39
+ }
40
+ },
25
41
  textSelectionModeLabel: () => cy.get('.text-selection-mode .options-label'),
26
42
  textSelectionMode: (ariaLabel = null) => {
27
43
  if (ariaLabel) {
@@ -57,12 +73,15 @@ const selectors = {
57
73
  partialEqualWeightsPointsPerResponseScore: () => cy.get('[class*="Highlightstyles__PartialPointsPerResponseValue"]'),
58
74
  specifyCorrectAnswerErrorMessage: () => cy.get('[class*="ErrorMessageContainer"]').eq(1),
59
75
  //Style and customization layout
60
- filledInStyleLabel: () => cy.get('.text-selection-style-title'),
61
- fillColorLabel: () => cy.get('[class*="StyleAndLayoutCustomizationstyles__SubSectionLabel"]'),
62
- colorBlock: () => cy.get('.color-picker-block'),
76
+ styleLabel: () => cy.get('.text-selection-style-title'),
77
+ colorLabel: () => cy.get('[class*="StyleAndLayoutCustomizationstyles__SubSectionLabel"]'),
78
+ colorBlock: () => cy.get('.color-grid-wrapper .color-picker-block'),
63
79
  editColorButton: () => cy.get('.ngie-icon-with-label-btn[aria-label="edit color"]'),
64
80
  changeFontColorToWhiteCheckbox: () => cy.get('[data-ngie-testid="change-font-color-to-white-checkbox"] input'),
65
81
  changeFontColorToWhiteCheckboxLabel: () => cy.get('[data-ngie-testid="change-font-color-to-white-checkbox"] [class*="label"]'),
82
+ borderStyle: () => cy.get('[class*="TextSelectionStylestyles__SectionWrapper"] .options-label'),
83
+ borderBlock: () => cy.get('.options-border-style [class*="OptionsContainerstyles__ToggleButtonWrapper"] .ngie-outlined-toggle-button'),
84
+ borderBlockInnerText: () => cy.get('.options-border-style .ngie-toggle-button-label'),
66
85
 
67
86
  //Preview tab
68
87
  questionTextOuterBorderPreviewTab: () => cy.get('[class*="Highlightstyles__HighlightPreviewWrapper"]'),
@@ -98,6 +117,8 @@ const steps = {
98
117
  ...colorPopupComponent.steps,
99
118
  ...showAvailableOptionsToStudents.steps,
100
119
  ...showStudentMaximumNumberOfPossibleSelections.steps,
120
+ ...singleMultipleSelectionModeComponent.steps,
121
+
101
122
  addInputToQuestionInputField: (text) => {
102
123
  textSelectionPage.questionInputField()
103
124
  .type(text);
@@ -256,6 +277,15 @@ const steps = {
256
277
  .click();
257
278
  },
258
279
 
280
+ /**
281
+ * @param {string} textSelectionStyle Type of text selection
282
+ * @description Switch text selection type in text selection dropdown
283
+ */
284
+ switchTextSelectionStyle: (textSelectionStyle) => {
285
+ textSelectionPage.textSelectionStyle(textSelectionStyle)
286
+ .click();
287
+ },
288
+
259
289
  /**
260
290
  * @param {string} textSelectionType Type of text selection
261
291
  * @description Verify text selection mode is selected
@@ -265,6 +295,15 @@ const steps = {
265
295
  .should('have.attr', 'aria-pressed', 'true');
266
296
  },
267
297
 
298
+ /**
299
+ * @param {string} textSelectionType Type of text selection
300
+ * @description Verify text selection style is selected
301
+ */
302
+ verifyTextSelectionStyleIsSelected: (textSelectionType) => {
303
+ textSelectionPage.textSelectionStyle(textSelectionType)
304
+ .should('have.attr', 'aria-pressed', 'true');
305
+ },
306
+
268
307
  /**
269
308
  * @param {string} textSelectionType Type of text selection
270
309
  * @description Verify text selection mode is not selected
@@ -273,6 +312,185 @@ const steps = {
273
312
  textSelectionPage.textSelectionMode(textSelectionType)
274
313
  .should('have.attr', 'aria-pressed', 'false');
275
314
  },
315
+ /**
316
+ * @param {string} textSelectionType Type of text selection
317
+ * @description Verify text selection style is not selected
318
+ */
319
+ verifyTextSelectionStyleIsNotSelected: (textSelectionType) => {
320
+ textSelectionPage.textSelectionStyle(textSelectionType)
321
+ .should('have.attr', 'aria-pressed', 'false');
322
+ },
323
+
324
+ /**
325
+ * @param {string} textSelectionStyle Type of text selection style
326
+ * @param {number} index of the option in specify possible options section
327
+ * @description verifies the style of the selected options in specify possible option section
328
+ */
329
+ verifyStyleInSpecifyPossibleOptions: (textSelectionStyle, index, color) => {
330
+ if (textSelectionStyle === 'filled-in') {
331
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
332
+ 'background-color': color,
333
+ 'color': 'rgb(255, 255, 255)',
334
+ 'border-bottom-color': 'rgba(0, 0, 0, 0)',
335
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
336
+ });
337
+ } else if (textSelectionStyle === 'outline') {
338
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
339
+ 'color': 'rgb(0, 0, 46)',
340
+ 'border-bottom-color': color,
341
+ 'border-left-color': color,
342
+ });
343
+ } else if (textSelectionStyle === 'underline') {
344
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
345
+ 'color': 'rgb(0, 0, 46)',
346
+ 'border-bottom-color': color,
347
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
348
+ 'border-right-color': 'rgba(0, 0, 0, 0)',
349
+ });
350
+ } else if (textSelectionStyle === 'strikethrough') {
351
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
352
+ 'color': 'rgb(0, 0, 46)',
353
+ 'text-decoration-color': color,
354
+ 'text-decoration-line': 'line-through',
355
+ 'text-decoration-thickness': '1.5px',
356
+ });
357
+ }
358
+ },
359
+
360
+ /**
361
+ * @param {string} textSelectionStyle Type of text selection style
362
+ * @param {number} index of the option in specify possible options section
363
+ * @description verifies the style of the selected options in specify correct answer section
364
+ */
365
+ verifyStyleInSpecifyCorrectAnswer: (textSelectionStyle, index, color) => {
366
+ if (textSelectionStyle === 'filled-in') {
367
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
368
+ 'background-color': color,
369
+ 'color': 'rgb(255, 255, 255)',
370
+ 'border-bottom-color': 'rgba(0, 0, 0, 0)',
371
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
372
+ });
373
+ } else if (textSelectionStyle === 'outline') {
374
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
375
+ 'color': 'rgb(0, 0, 46)',
376
+ 'border-bottom-color': color,
377
+ 'border-left-color': color,
378
+ });
379
+ } else if (textSelectionStyle === 'underline') {
380
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
381
+ 'color': 'rgb(0, 0, 46)',
382
+ 'border-bottom-color': color,
383
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
384
+ 'border-right-color': 'rgba(0, 0, 0, 0)',
385
+ });
386
+ } else if (textSelectionStyle === 'strikethrough') {
387
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
388
+ 'color': 'rgb(0, 0, 46)',
389
+ 'text-decoration-color': color,
390
+ 'text-decoration-line': 'line-through',
391
+ 'text-decoration-thickness': '1.5px',
392
+ });
393
+ }
394
+ },
395
+
396
+ /**
397
+ * @param {string} textSelectionStyle Type of text selection style
398
+ * @param {number} index of the option in specify possible options section
399
+ * @description verifies the style of the selected options in preview section
400
+ */
401
+ verifyStyleInPreview: (textSelectionStyle, index, color) => {
402
+ if (textSelectionStyle === 'filled-in') {
403
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
404
+ 'background-color': color,
405
+ 'color': 'rgb(255, 255, 255)',
406
+ 'border-bottom-color': 'rgba(0, 0, 0, 0)',
407
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
408
+ });
409
+ } else if (textSelectionStyle === 'outline') {
410
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
411
+ 'color': 'rgb(0, 0, 46)',
412
+ 'border-bottom-color': color,
413
+ 'border-left-color': color,
414
+ });
415
+ } else if (textSelectionStyle === 'underline') {
416
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
417
+ 'color': 'rgb(0, 0, 46)',
418
+ 'border-bottom-color': color,
419
+ 'border-left-color': 'rgba(0, 0, 0, 0)',
420
+ 'border-right-color': 'rgba(0, 0, 0, 0)',
421
+ });
422
+ } else if (textSelectionStyle === 'strikethrough') {
423
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
424
+ 'color': 'rgb(0, 0, 46)',
425
+ 'text-decoration-color': color,
426
+ 'text-decoration-line': 'line-through',
427
+ 'text-decoration-thickness': '1.5px',
428
+ });
429
+ }
430
+ },
431
+
432
+ /**
433
+ * @param {string} textSelectionBorderStyle Type of text selection style
434
+ * @param {number} index of the option in specify possible options section
435
+ * @description verifies the style of the selected options in specify possible option section
436
+ */
437
+ verifyBorderStyleInSpecifyPossibleOptions: (textSelectionBorderStyle, index, border) => {
438
+ if (textSelectionBorderStyle === 'outline') {
439
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
440
+ 'border-bottom-style': border,
441
+ });
442
+ } else if (textSelectionBorderStyle === 'underline') {
443
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
444
+ 'border-bottom-style': border,
445
+ });
446
+ } else if (textSelectionBorderStyle === 'strikethrough') {
447
+ utilities.verifyCSS(textSelectionPage.specifyPossibleOptionsTextSpans().eq(index), {
448
+ 'text-decoration-style': border,
449
+ });
450
+ }
451
+ },
452
+
453
+ /**
454
+ * @param {string} textSelectionBorderStyle Type of text selection style
455
+ * @param {number} index of the option in specify possible options section
456
+ * @description verifies the style of the selected options in specify correct answer section
457
+ */
458
+ verifyBorderStyleInSpecifyCorrectAnswer: (textSelectionBorderStyle, index, border) => {
459
+ if (textSelectionBorderStyle === 'outline') {
460
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
461
+ 'border-bottom-style': border,
462
+ });
463
+ } else if (textSelectionBorderStyle === 'underline') {
464
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
465
+ 'border-bottom-style': border,
466
+ });
467
+ } else if (textSelectionBorderStyle === 'strikethrough') {
468
+ utilities.verifyCSS(textSelectionPage.specifyCorrectAnswerTextSpans().eq(index), {
469
+ 'text-decoration-style': border,
470
+ });
471
+ }
472
+ },
473
+
474
+ /**
475
+ * @param {string} textSelectionBorderStyle Type of text selection style
476
+ * @param {number} index of the option in specify possible options section
477
+ * @description verifies the style of the selected options in preview section
478
+ */
479
+ verifyBorderStyleInPreview: (textSelectionBorderStyle, index, border) => {
480
+ if (textSelectionBorderStyle === 'outline') {
481
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
482
+ 'border-bottom-style': border,
483
+ });
484
+ } else if (textSelectionBorderStyle === 'underline') {
485
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
486
+ 'border-bottom-style': border,
487
+ });
488
+ } else if (textSelectionBorderStyle === 'strikethrough') {
489
+ utilities.verifyCSS(textSelectionPage.previewTabQuestionTextSpans().eq(index), {
490
+ 'text-decoration-style': border,
491
+ });
492
+ }
493
+ },
276
494
 
277
495
  /**
278
496
  * @param {string} optionText Text of the option in specify possible options section
@@ -904,6 +1122,16 @@ const steps = {
904
1122
  .should('have.attr', 'aria-pressed', 'true');
905
1123
  },
906
1124
 
1125
+ /**
1126
+ * @description select a color block in style and customization layout accordion
1127
+ * @param {number} index index of color block
1128
+ */
1129
+ selectBorderBlock: (index) => {
1130
+ utilities.getNthElement(textSelectionPage.borderBlock(), index)
1131
+ .click()
1132
+ .should('have.attr', 'aria-pressed', 'true');
1133
+ },
1134
+
907
1135
  /**
908
1136
  * @description verify that a color block is selected in style and customization layout accordion
909
1137
  * @param {number} index index of color block
@@ -913,6 +1141,15 @@ const steps = {
913
1141
  .should('have.attr', 'aria-pressed', 'true');
914
1142
  },
915
1143
 
1144
+ /**
1145
+ * @description verify that a border style block is selected in style and customization layout accordion
1146
+ * @param {number} index index of color block
1147
+ */
1148
+ verifyBorderBlockIsSelected: (index) => {
1149
+ utilities.getNthElement(textSelectionPage.borderBlock(), index)
1150
+ .should('have.attr', 'aria-pressed', 'true');
1151
+ },
1152
+
916
1153
  /**
917
1154
  * @description verify the background color of a color block in style and customization layout accordion
918
1155
  * @param {number} index index of color block
@@ -987,6 +1224,8 @@ const tests = {
987
1224
  ...additionalSettingsAccessibilitySectionComponent.tests,
988
1225
  ...styleAndLayoutCustomizationAccordionComponent.tests,
989
1226
  ...showAvailableOptionsToStudents.tests,
1227
+ ...singleMultipleSelectionModeComponent.tests,
1228
+
990
1229
  verifyContentsOfSpecifyCorrectAnswerSection: () => {
991
1230
  it('When user selects a scoring type, then in the \'Correct\' accordion all the contents should be displayed', () => {
992
1231
  textSelectionPage.specifyCorrectAnswerTextSpans()
@@ -945,8 +945,6 @@ const steps = {
945
945
  cy.wait(2000);
946
946
  videoResponsePage.videoRecorderDefaultWidthInputField()
947
947
  .blur();
948
- videoResponsePage.videoRecorderDefaultWidthInputField()
949
- .should('have.value', value)
950
948
  },
951
949
 
952
950
  clearVideoRecorderDefaultWidthInputField: () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itemengine-cypress-automation",
3
- "version": "1.0.239",
3
+ "version": "1.0.240",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {