itemengine-cypress-automation 1.0.183 → 1.0.184

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/AudioPlayerNew/allSupportedFileTypes.js +79 -0
  2. package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +345 -0
  3. package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +429 -0
  4. package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +162 -0
  5. package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +489 -0
  6. package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +313 -0
  7. package/cypress/e2e/ILC/AudioResponseNew/barRecorderStyle.smoke.js +1 -1
  8. package/cypress/e2e/ILC/AudioResponseNew/compactRecorderStyle.smoke.js +1 -1
  9. package/cypress/e2e/ILC/AudioResponseNew/standardRecorderStyle.smoke.js +1 -1
  10. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +1 -1
  11. package/cypress/e2e/ILC/DrawingResponse/drawingResponseGradingViewAndCorrectAnswerViewContents.smoke.js +5 -8
  12. package/cypress/e2e/ILC/EditTabSettingPage/itemPreviewSettingsTabFunctionality.js +417 -28
  13. package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +1 -1
  14. package/cypress/e2e/ILC/FeedbackScaleNew/headerSection.js +29 -1
  15. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/previewContentsForAllViews.smoke.js +2 -2
  16. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/studentViewSettings.js +1 -1
  17. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/studentViewSettings.js +1 -1
  18. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/editTabScoring.js +1 -0
  19. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/previewContentsForAllViews.smoke.js +2 -2
  20. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettings.js +1 -1
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/studentViewSettings.js +1 -1
  22. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +4 -4
  23. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  24. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/studentViewSettings.js +1 -1
  25. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +5 -5
  26. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +3 -4
  27. package/cypress/e2e/ILC/FillInTheGapsTextNew/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +1 -1
  28. package/cypress/e2e/ILC/FillInTheGapsTextNew/headerSection.js +1 -0
  29. package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +1 -1
  30. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +2 -2
  31. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +2 -2
  32. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +2 -2
  33. package/cypress/e2e/ILC/Graphing/addBackgroundShapesSection.js +2 -2
  34. package/cypress/e2e/ILC/Graphing/studentViewSettings.js +1 -1
  35. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +2 -2
  36. package/cypress/e2e/ILC/GridFill/gridLayoutContents.js +11 -3
  37. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +3 -3
  38. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +1 -1
  39. package/cypress/e2e/ILC/ListOrderingDropdown/allOrNothingForAllViews.smoke.js +230 -0
  40. package/cypress/e2e/ILC/ListOrderingDropdown/checkAnswerFunctionalityForAllViews.smoke.js +124 -0
  41. package/cypress/e2e/ILC/ListOrderingDropdown/previewContentsForAllViews.smoke.js +201 -0
  42. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +216 -0
  43. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +214 -0
  44. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +251 -0
  45. package/cypress/e2e/ILC/ListOrderingNew/Scoring/allOrNothingPenaltyScoring.js +52 -0
  46. package/cypress/e2e/ILC/ListOrderingNew/Scoring/manuallyAndNonScored.js +128 -0
  47. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +279 -0
  48. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsBasic.js +109 -0
  49. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +278 -0
  50. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +278 -0
  51. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialDifferentWeightsMinimumAndPenaltyScoring.js +335 -0
  52. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +250 -0
  53. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsBasic.js +161 -0
  54. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +216 -0
  55. package/cypress/e2e/ILC/ListOrderingNew/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +252 -0
  56. package/cypress/e2e/ILC/ListOrderingNew/additionalSettings.js +118 -0
  57. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +243 -0
  58. package/cypress/e2e/ILC/ListOrderingNew/checkAnswerFunctionalityForAllViews.smoke.js +128 -0
  59. package/cypress/e2e/ILC/ListOrderingNew/editTabBasicSection.js +155 -0
  60. package/cypress/e2e/ILC/ListOrderingNew/editTabScoring.js +195 -0
  61. package/cypress/e2e/ILC/ListOrderingNew/headerSection.js +78 -0
  62. package/cypress/e2e/ILC/ListOrderingNew/minimumScoringPenaltyPointsAndRoundingDropdown.js +194 -0
  63. package/cypress/e2e/ILC/ListOrderingNew/previewContentsForAllViews.smoke.js +176 -0
  64. package/cypress/e2e/ILC/ListOrderingNew/specifyCorrectAnswerSection.js +112 -0
  65. package/cypress/e2e/ILC/ListOrderingNew/studentViewSettings.js +244 -0
  66. package/cypress/e2e/ILC/Matching/studentViewSettings.js +1 -1
  67. package/cypress/e2e/ILC/MultipleSelection/allOrNothingWithAlternativeAnswer.js +1 -0
  68. package/cypress/e2e/ILC/MultipleSelectionGridNew/studentViewSettings.js +1 -1
  69. package/cypress/e2e/ILC/NumberLine/LayoutSection.js +181 -0
  70. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +3 -3
  71. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +57 -1
  72. package/cypress/e2e/ILC/NumberLine/lineSettingsSection.js +33 -0
  73. package/cypress/e2e/ILC/NumberLine/numberLineSection.js +46 -0
  74. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +1 -1
  75. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +1 -1
  76. package/cypress/e2e/ILC/NumberLine/toolSettings.js +2 -1
  77. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/allOrNothingScoringForAllViews.smoke.js +696 -0
  78. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/gradingViewAndCorrectAnswerView.smoke.js +173 -0
  79. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/layoutSection.js +183 -0
  80. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/numberLineSection.js +73 -0
  81. package/cypress/e2e/ILC/NumberLine/verticalNumberLine/previewTabContentsForAllViews.smoke.js +204 -0
  82. package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +288 -0
  83. package/cypress/e2e/ILC/NumberLineLabel/checkAnswerFunctionalityForAllViews.smoke.js +153 -0
  84. package/cypress/e2e/ILC/NumberLineLabel/gradingViewAndCorrectAnswerView.smoke.js +164 -0
  85. package/cypress/e2e/ILC/NumberLineLabel/previewContentsForAllViews.smoke.js +120 -0
  86. package/cypress/e2e/ILC/Protractor/protractorPreviewContents.smoke.js +1 -1
  87. package/cypress/e2e/ILC/ReadingRuler/readingRulerEditTabBasicsSection.js +49 -1
  88. package/cypress/e2e/ILC/ShortTextResponseNew/studentViewSettings.js +1 -1
  89. package/cypress/e2e/ILC/SingleSelectionGridNew/studentViewSettings.js +1 -1
  90. package/cypress/e2e/ILC/TextEntryMath/responseEvaluationMethodsAndCustomSettings.js +2 -2
  91. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +0 -1
  92. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +0 -1
  93. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +0 -1
  94. package/cypress/e2e/ILC/TextSelection/Scoring/basicScoringForAllTextSelectionTypes.smoke.js +0 -1
  95. package/cypress/e2e/ILC/TextSelection/additionalSettings.js +125 -0
  96. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +0 -1
  97. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +1 -2
  98. package/cypress/e2e/ILC/TextSelection/editTabScoringSection.js +5 -4
  99. package/cypress/e2e/ILC/TextSelection/headerSection.js +73 -0
  100. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +6 -7
  101. package/cypress/e2e/ILC/TextSelection/questionInstructionsAndQuestion.js +179 -0
  102. package/cypress/e2e/ILC/TextSelection/specifyCorrectAnswerSection.js +89 -0
  103. package/cypress/e2e/ILC/TextSelection/studentViewSettings.js +436 -0
  104. package/cypress/e2e/ILC/TextSelection/styleAndLayoutCustomizationAccordion.js +277 -0
  105. package/cypress/e2e/ILC/TextSelection/textSelectionModesInPreviewTab.js +222 -0
  106. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyCorrectAnswerSection.js +260 -0
  107. package/cypress/e2e/ILC/TextSelection/textSelectionModesInSpecifyPossibleOptionsSection.js +380 -0
  108. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +5 -5
  109. package/cypress/e2e/ILC/ToolSettings/toolSettingsPreviewContents.smoke.js +3 -3
  110. package/cypress/fixtures/constants.js +1 -1
  111. package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +20 -20
  112. package/cypress/fixtures/theme/ilc.json +20 -18
  113. package/cypress/pages/audioPlayerPage.js +274 -504
  114. package/cypress/pages/brainingCampManipulativePage.js +1 -1
  115. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -3
  116. package/cypress/pages/components/autoScoredStudentViewSettings.js +5 -5
  117. package/cypress/pages/components/commonComponents.js +1 -0
  118. package/cypress/pages/components/draggableOptionContainer.js +1 -0
  119. package/cypress/pages/components/equationEditorFlyout.js +3 -2
  120. package/cypress/pages/components/essayResponseCommonComponents.js +8 -2
  121. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +1 -0
  122. package/cypress/pages/components/imageCanvasComponent.js +2 -1
  123. package/cypress/pages/components/index.js +3 -0
  124. package/cypress/pages/components/layoutSectionComponent.js +1191 -0
  125. package/cypress/pages/components/numberLineCommonComponent.js +36 -0
  126. package/cypress/pages/components/optionsWrapperComponent.js +13 -2
  127. package/cypress/pages/components/playbackControlsBaseComponent.js +20 -13
  128. package/cypress/pages/components/styleAndLayoutCustomizationAccordionComponent.js +46 -0
  129. package/cypress/pages/components/toolSettingsComponent.js +6 -0
  130. package/cypress/pages/contentBlocksPage.js +18 -2
  131. package/cypress/pages/createItemPage.js +75 -8
  132. package/cypress/pages/dialogBoxBase.js +2 -2
  133. package/cypress/pages/drawingResponsePage.js +24 -4
  134. package/cypress/pages/feedbackScalePage.js +3 -0
  135. package/cypress/pages/graphingPage.js +19 -1
  136. package/cypress/pages/gridFillPage.js +25 -8
  137. package/cypress/pages/index.js +2 -1
  138. package/cypress/pages/itemPreviewSettingsPage.js +4 -0
  139. package/cypress/pages/listOrderingPage.js +435 -557
  140. package/cypress/pages/matchingPage.js +1 -1
  141. package/cypress/pages/multipleSelectionPage.js +23 -1
  142. package/cypress/pages/numberLineLabelPage.js +333 -0
  143. package/cypress/pages/numberLinePage.js +1370 -132
  144. package/cypress/pages/rulerPage.js +6 -2
  145. package/cypress/pages/textSelectionPage.js +461 -23
  146. package/package.json +1 -1
@@ -0,0 +1,36 @@
1
+ import utilities from "../../support/helpers/utilities";
2
+
3
+ const selectors = {
4
+ numberLineSpecifyCorrectAnswer: () => cy.get('.ngie-accordion .ngie-jxgbox svg').eq(0),
5
+ numberLinePreviewTab: () => cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox svg').eq(0),
6
+ numberLinePointPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .ngie-jxgbox').eq(0).find('svg ellipse[display="inline"]'),
7
+ correctAnswersLabel: () => cy.get('[class*="AnswerLabel"]'),
8
+ correctIcon: () => cy.get('[data-icon="CorrectAnswer"]'),
9
+ incorrectIcon: () => cy.get('[data-icon="Incorrect"]'),
10
+ correctIncorrectAnswerTextWrapper: () => cy.get('[class*="CorrectIncorrectWrapper"]'),
11
+ }
12
+
13
+ const steps = {
14
+ /**
15
+ * @param {("correct" | "incorrect")} answerStatus - The status of the answer.
16
+ * @description Verifies the visibility and content of the correct/incorrect answer label block.
17
+ * If the answer is correct, it also verifies the visibility of the correct icon;
18
+ * otherwise, it verifies the visibility of the incorrect icon.
19
+ */
20
+ verifyCorrectIncorrectAnswerLabel: (answerStatus) => {
21
+ utilities.verifyInnerText(numberLineCommonComponent.correctIncorrectAnswerTextWrapper(), `Your answer is\n${answerStatus}`)
22
+ numberLineCommonComponent.correctIncorrectAnswerTextWrapper()
23
+ .within(() => {
24
+ if (answerStatus === 'correct') {
25
+ utilities.verifyElementVisibilityState(numberLineCommonComponent.correctIcon(), 'visible');
26
+ } else {
27
+ utilities.verifyElementVisibilityState(numberLineCommonComponent.incorrectIcon(), 'visible');
28
+ }
29
+ });
30
+ },
31
+ }
32
+
33
+ export const numberLineCommonComponent = {
34
+ ...selectors,
35
+ steps
36
+ }
@@ -6,7 +6,7 @@ import { equationEditorFlyout } from "./equationEditorFlyout";
6
6
  const css = Cypress.env('css');
7
7
 
8
8
  const selectors = {
9
- optionsLabel: () => cy.get('.options-label'),
9
+ optionsLabel: () => cy.get('.options-label-wrapper .options-label'),
10
10
  optionsSectionWrapper: () => cy.get('[data-rbd-droppable-id="assessment-option-item-options"]'),
11
11
  optionWrapper: () => cy.get('[data-rbd-draggable-id*="option-draggable"]'),
12
12
  addOptionButton: () => cy.get('.add-option-wrapper-cls button').contains('Add option'),
@@ -140,6 +140,17 @@ const steps = {
140
140
  .should('have.text', '​​​​​​​This is a bold option');
141
141
  },
142
142
 
143
+ /**
144
+ * @param {number} index of the option input field
145
+ * @description this function add input to options input field which contains an image
146
+ */
147
+ addTextInputToOptionsInputFieldWithImage: (index) => {
148
+ optionsWrapperComponent.optionsInputField()
149
+ .eq(index)
150
+ .type('Petals')
151
+ .should('have.text', '​​​​​​​Petals');
152
+ },
153
+
143
154
  /**
144
155
  * @param {number} index of option
145
156
  * @description this function verifies bold text in options input fields
@@ -416,7 +427,7 @@ const tests = {
416
427
  utilities.triggerMouseover(commonComponents.dragHandleButton());
417
428
  });
418
429
  utilities.verifyElementVisibilityState(commonComponents.tooltipText(), 'visible')
419
- cy.checkAccessibility(commonComponents.tooltipText());
430
+ cy.checkAccessibility(commonComponents.nextGenCreateItemWrapper());
420
431
  optionsWrapperComponent.optionWrapper()
421
432
  .eq(0)
422
433
  .within(() => {
@@ -174,10 +174,13 @@ const steps = {
174
174
  .should('be.disabled');
175
175
  },
176
176
 
177
- verifyPlaybackSpeedListOptions: () => {
178
- const playbackSpeedOptions = ['1x', '1.25x', '1.5x', '2x'];
177
+ /**
178
+ * Verify the playback speed list options
179
+ * @param {string[]} playbackSpeedOptions Array of playback speed list options
180
+ */
181
+ verifyPlaybackSpeedListOptions: (playbackSpeedOptions) => {
179
182
  playbackSpeedOptions.forEach((option, optionIndex) => {
180
- utilities.verifyInnerText(utilities.getNthElement(playbackControlsBaseComponent.playbackSpeedOption(), optionIndex), option);
183
+ utilities.verifyInnerText(utilities.getNthElement(playbackControlsBaseComponent.playbackSpeedOption(), optionIndex), `${option}x`);
181
184
  });
182
185
  },
183
186
 
@@ -188,7 +191,7 @@ const steps = {
188
191
  */
189
192
  verifyPlaybackSpeedOptionSelectedState: (speed) => {
190
193
  playbackControlsBaseComponent.playbackSpeedOption(speed)
191
- .should('have.class', 'selected-speed-option')
194
+ .should('have.attr', 'aria-label', `${speed} selected`);
192
195
  },
193
196
 
194
197
  /**
@@ -272,30 +275,34 @@ const tests = {
272
275
  });
273
276
  },
274
277
 
275
- verifyPlaybackSpeedContents: () => {
276
- it('When the user hovers overs the playback button, a list of 4 playback speed options - 1x, 1.25x, 1.5x, 2x should be displayed and by default 1x should be in selected state', () => {
278
+ /**
279
+ * Verify the contents of playback speed list and button
280
+ * @param {string[]} playbackSpeedOptions Array of playback speed list options
281
+ */
282
+ verifyPlaybackSpeedContents: (playbackSpeedOptions) => {
283
+ it(`When the user hovers overs the playback button, a list of ${playbackSpeedOptions.length} playback speed options - ${playbackSpeedOptions.join(' ')} should be displayed and by default 1x should be in selected state`, () => {
277
284
  playbackControlsBaseComponent.playbackSpeedButton()
278
285
  .trigger('mouseover');
279
- utilities.verifyElementVisibilityState(playbackControlsBaseComponent.playbackSpeedOptionsList(), 'visible');
280
- utilities.verifyElementCount(playbackControlsBaseComponent.playbackSpeedOption(), 4);
281
- playbackControlsBaseComponent.steps.verifyPlaybackSpeedListOptions();
286
+ utilities.verifyElementVisibilityState(playbackControlsBaseComponent.playbackSpeedOption(), 'visible');
287
+ utilities.verifyElementCount(playbackControlsBaseComponent.playbackSpeedOption(), playbackSpeedOptions.length);
288
+ playbackControlsBaseComponent.steps.verifyPlaybackSpeedListOptions(playbackSpeedOptions);
282
289
  playbackControlsBaseComponent.steps.verifyPlaybackSpeedOptionSelectedState('1x');
283
290
  playbackControlsBaseComponent.steps.selectPlaybackSpeed('1x');
284
291
  });
285
292
 
286
293
  it('CSS of playback speed options', { tags: 'css' }, () => {
287
294
  utilities.hoverOverElement(playbackControlsBaseComponent.playbackSpeedButton());
288
- utilities.verifyCSS(playbackControlsBaseComponent.playbackSpeedButton().find('[id="playback-speed"] path'), {
295
+ utilities.verifyCSS(playbackControlsBaseComponent.playbackSpeedButton().find('path').eq(1), {
289
296
  'fill': css.color.activeButtons
290
297
  });
291
- utilities.verifyCSS(utilities.getNthElement(playbackControlsBaseComponent.playbackSpeedOption(), 0), {
298
+ utilities.verifyCSS(playbackControlsBaseComponent.playbackSpeedOption().contains('1x'), {
292
299
  'color': css.color.liText,
293
300
  'background-color': css.color.liTextSelectedBg,
294
301
  'font-size': css.fontSize.small
295
302
  });
296
- utilities.verifyCSS(utilities.getNthElement(playbackControlsBaseComponent.playbackSpeedOption(), 1), {
303
+ utilities.verifyCSS(playbackControlsBaseComponent.playbackSpeedOption().last(), {
297
304
  'color': css.color.liText,
298
- 'background-color': css.color.defaultBackground,
305
+ 'background-color': css.color.transparent,
299
306
  'font-size': css.fontSize.small
300
307
  });
301
308
  });
@@ -0,0 +1,46 @@
1
+ import utilities from "../../support/helpers/utilities";
2
+
3
+ const css = Cypress.env('css');
4
+
5
+ const selectors = {
6
+ styleAndLayoutCustomizationAccordion: () => cy.get('.style-and-layout-customization-wrapper .MuiAccordionSummary-root'),
7
+ }
8
+
9
+ const steps = {
10
+ expandStyleAndLayoutCustomizationAccordion: () => {
11
+ styleAndLayoutCustomizationAccordionComponent.styleAndLayoutCustomizationAccordion()
12
+ .click()
13
+ .should('have.attr', 'aria-expanded', 'true');
14
+ },
15
+ }
16
+
17
+ const tests = {
18
+ verifyStyleAndLayoutCustomizationAccordionProperties: () => {
19
+ it('By default \'Style and layout customization\' accordion should be collapsed and by clicking on the \'Style and layout customization\' accordion, user should be able to expand the accordion', () => {
20
+ styleAndLayoutCustomizationAccordionComponent.styleAndLayoutCustomizationAccordion()
21
+ .should('have.attr', 'aria-expanded', 'false');
22
+ styleAndLayoutCustomizationAccordionComponent.steps.expandStyleAndLayoutCustomizationAccordion();
23
+ });
24
+
25
+ it('CSS of \'Style and layout customization\' accordion', { tags: 'css' }, () => {
26
+ utilities.verifyCSS(styleAndLayoutCustomizationAccordionComponent.styleAndLayoutCustomizationAccordion().find('.accordion_label'), {
27
+ 'color': css.color.accordionLabel,
28
+ 'font-size': css.fontSize.default,
29
+ 'font-weight': css.fontWeight.bold
30
+ });
31
+ utilities.verifyCSS(styleAndLayoutCustomizationAccordionComponent.styleAndLayoutCustomizationAccordion().find('svg'), {
32
+ 'fill': css.color.activeButtons
33
+ });
34
+ });
35
+
36
+ it('Accessibility of \'Style and layout customization\' accordion', { tags: 'a11y' }, () => {
37
+ cy.checkAccessibility(styleAndLayoutCustomizationAccordionComponent.styleAndLayoutCustomizationAccordion().parents('.style-and-layout-customization-wrapper'));
38
+ });
39
+ }
40
+ }
41
+
42
+ export const styleAndLayoutCustomizationAccordionComponent = {
43
+ ...selectors,
44
+ steps,
45
+ tests
46
+ }
@@ -13,6 +13,7 @@ const selectors = {
13
13
  toolLabel: () => cy.get('.tool-settings-customization-wrapper [class*="DragItemstyles__ButtonLabel"]'),
14
14
  toolDragHandleButton: () => cy.get('.tool-settings-customization-wrapper [class*="DragItemstyles__DragIconWrapper"]'),
15
15
  toolEditIcon: () => cy.get('.tool-settings-customization-wrapper [class*="DragItemstyles__ItemContainer"] .icon-pencil'),
16
+ okButton: () => cy.get('.action-button').eq(1)
16
17
  }
17
18
 
18
19
  const steps = {
@@ -87,6 +88,11 @@ const steps = {
87
88
  clickOnToolEditIcon: (toolIndex) => {
88
89
  utilities.getNthElement(toolSettingsComponent.toolEditIcon(), toolIndex)
89
90
  .click();
91
+ },
92
+
93
+ clickOnOkButton: () => {
94
+ toolSettingsComponent.okButton()
95
+ .click();
90
96
  }
91
97
  }
92
98
 
@@ -6,6 +6,7 @@ const css = Cypress.env('css');
6
6
  const selectors = {
7
7
  ...commonComponents,
8
8
  ...createQuestionBasePage,
9
+ ...createItemPage,
9
10
  headerLabel: () => cy.get('[class*="ContentBlocksstyles__LabelContent"]'),
10
11
  titleLabel: () => cy.get('.inline-text-property-label').eq(0),
11
12
  titleInputField: () => cy.get('.input-field input').eq(0),
@@ -591,10 +592,25 @@ const steps = {
591
592
  .within(() => {
592
593
  utilities.verifyInnerText(createItemPage.questionTitle().eq(questionIndex), questionTitle);
593
594
  utilities.verifyElementVisibilityState(createItemPage.questionTitle().eq(questionIndex), 'visible');
594
- utilities.verifyInnerText(contentBlocksPage.contentWrapperPreviewTab().eq(questionIndex), questionInstructions);
595
- utilities.verifyElementVisibilityState(contentBlocksPage.contentWrapperPreviewTab().eq(questionIndex), 'visible');
595
+ utilities.verifyInnerText(contentBlocksPage.contentWrapperPreviewTab(), questionInstructions);
596
+ utilities.verifyElementVisibilityState(contentBlocksPage.contentWrapperPreviewTab(), 'visible');
596
597
  });
597
598
  },
599
+
600
+ /**
601
+ * @param {number} panel denotes panel number
602
+ * @param {string} questionInstruction denotes question instruction
603
+ * @description verify question content
604
+ */
605
+ verifyContentBlockContentsPreviewPreviewTab: ({ questionInstructions, panel = 0 }) => {
606
+ createItemPage.panelWrapper()
607
+ .eq(panel)
608
+ .within(() => {
609
+ utilities.verifyElementVisibilityState(createItemPage.questionTitle(), 'notExist');
610
+ utilities.verifyInnerText(contentBlocksPage.contentWrapperPreviewTab(), questionInstructions);
611
+ utilities.verifyElementVisibilityState(contentBlocksPage.contentWrapperPreviewTab(), 'visible');
612
+ });
613
+ }
598
614
  }
599
615
 
600
616
  export const contentBlocksPage = {
@@ -21,6 +21,7 @@ const selectors = {
21
21
  rowQuestionWrapper: () => cy.get('[class*="Widgetstyles__RowWrapper"]'),
22
22
  columnQuestionWrapper: () => cy.get('[class*="ColumnComponentstyles__WidgetsWrapper"]'),
23
23
  panelWrapper: () => cy.get('.column-tab-without-scroll'),
24
+ itemContainer: () => cy.get('.item-layout-columns-wrapper-without-scroll'),
24
25
  questionTitle: () => cy.get('.question-type-text'),
25
26
  sectionsTitleWrapper: () => cy.get('[class*="TabsComponentstyles__TabListWrapper"]'),
26
27
  sectionsTitleBoxWrapper: () => cy.get('[class*="TabsComponentstyles__TabListWrapper"] .ngie-tablist-box-wrapper'),
@@ -29,6 +30,7 @@ const selectors = {
29
30
  selectedSectionUnderline: () => cy.get('[class*="MuiTabs-indicator"]').eq(1),
30
31
  sectionsNumber1Label: () => cy.get('.tablist-numbered-label').eq(0),
31
32
  sectionsNumber2Label: () => cy.get('.tablist-numbered-label').eq(1),
33
+ noPreviewText: () => cy.get('[class*="__NoPreview"]')
32
34
  }
33
35
 
34
36
  const steps = {
@@ -166,22 +168,39 @@ const steps = {
166
168
  .click();
167
169
  },
168
170
 
171
+ /**
172
+ * @param {number} panel denotes panel number
173
+ * @param {number} questionNumber denotes question number
174
+ * @param {string} questionTitle denotes question title
175
+ * @param {string} questionInstruction denotes question instruction
176
+ * @description verify question content
177
+ */
178
+ verifyBasicQuestionContentsPreview: ({ questionIndex, questionTitle, questionInstructions, panel = 0 }) => {
179
+ createItemPage.panelWrapper()
180
+ .eq(panel)
181
+ .within(() => {
182
+ utilities.verifyInnerText(createItemPage.questionTitle().eq(questionIndex), questionTitle);
183
+ utilities.verifyElementVisibilityState(createItemPage.questionTitle().eq(questionIndex), 'visible');
184
+ utilities.verifyInnerText(questionInstructionsComponent.questionInstructionsText().eq(questionIndex), questionInstructions);
185
+ utilities.verifyElementVisibilityState(questionInstructionsComponent.questionInstructionsText().eq(questionIndex), 'exist');
186
+ });
187
+ },
188
+
169
189
  /**
170
190
  * @param {number} panel denotes panel number
171
- * @param {number} questionNumber denotes question number
172
- * @param {string} questionTitle denotes question title
191
+ * @param {number} questionIndex denotes question number
192
+ * @param {string} totalPoints denotes total points
173
193
  * @param {string} questionInstruction denotes question instruction
174
194
  * @description verify question content
175
195
  */
176
196
 
177
- verifyBasicQuestionContentsPreview: ({ questionIndex, questionTitle, questionInstructions, panel = 0 }) => {
197
+ verifyBasicQuestionContentsPreviewPreviewTab: ({ questionIndex, questionInstructions, panel = 0 }) => {
178
198
  createItemPage.panelWrapper()
179
199
  .eq(panel)
180
200
  .within(() => {
181
- utilities.verifyInnerText(createItemPage.questionTitle().eq(questionIndex), questionTitle);
182
- utilities.verifyElementVisibilityState(createItemPage.questionTitle().eq(questionIndex), 'visible');
201
+ utilities.verifyElementVisibilityState(createItemPage.questionTitle(), 'notExist');
183
202
  utilities.verifyInnerText(questionInstructionsComponent.questionInstructionsText().eq(questionIndex), questionInstructions);
184
- utilities.verifyElementVisibilityState(questionInstructionsComponent.questionInstructionsText().eq(questionIndex), 'visible');
203
+ utilities.verifyElementVisibilityState(questionInstructionsComponent.questionInstructionsText().eq(questionIndex), 'exist');
185
204
  });
186
205
  },
187
206
 
@@ -433,9 +452,9 @@ const steps = {
433
452
 
434
453
  verifyNumberedSectionNavigationStyle: () => {
435
454
  utilities.verifyInnerText(createItemPage.sectionsNumber1Label(), '1');
436
- utilities.verifyElementVisibilityState(createItemPage.sectionsNumber1Label(), 'visible');
455
+ utilities.verifyElementVisibilityState(createItemPage.sectionsNumber1Label(), 'exist');
437
456
  utilities.verifyInnerText(createItemPage.sectionsNumber2Label(), '2');
438
- utilities.verifyElementVisibilityState(createItemPage.sectionsNumber2Label(), 'visible');
457
+ utilities.verifyElementVisibilityState(createItemPage.sectionsNumber2Label(), 'exist');
439
458
  },
440
459
 
441
460
  /**
@@ -504,7 +523,55 @@ const steps = {
504
523
  });
505
524
  },
506
525
 
526
+ /**
527
+ * This function verifies the Panel width is half of the item width
528
+ * @param {number} panelIndex index of the panel
529
+ */
530
+ verifyPanelWidthIsHalfOfItemWidth: (panelIndex) => {
531
+ createItemPage.itemContainer()
532
+ .then(($el) => {
533
+ const itemWidth = $el[0].clientWidth;
534
+ const expectedPanelWidth = itemWidth / 2
535
+ createItemPage.panelWrapper()
536
+ .eq(panelIndex)
537
+ .then(($el) => {
538
+ const panelWidth = $el[0].clientWidth;
539
+ expect(expectedPanelWidth).to.be.closeTo(Math.floor(panelWidth), 1);
540
+ });
541
+ });
542
+ },
507
543
 
544
+ verifyPanelWidthEqualToItemWidth: () => {
545
+ createItemPage.itemContainer()
546
+ .then(($el) => {
547
+ const itemWidth = $el[0].clientWidth;
548
+ createItemPage.panelWrapper()
549
+ .then(($el) => {
550
+ const panelWidth = $el[0].clientWidth;
551
+ expect(itemWidth).to.be.eq(panelWidth);
552
+ });
553
+ });
554
+ },
555
+
556
+ verifyPanelWidthAndSectionWidthEqualToItemWidth: () => {
557
+ createItemPage.itemContainer()
558
+ .then(($item) => {
559
+ const itemWidth = $item[0].clientWidth;
560
+ let panelWidth = 0;
561
+ let sectionWidth = 0;
562
+ cy.get('[class*="ColumnComponentstyles__TabsComponentWrapper"]')
563
+ .then(($section) => {
564
+ sectionWidth = $section[0].clientWidth;
565
+ })
566
+ cy.get('[class*="ColumnComponentstyles__WidgetsWrapper"]')
567
+ .then(($panelWidth) => {
568
+ panelWidth = $panelWidth[0].clientWidth;
569
+ })
570
+ .then(() => {
571
+ expect(panelWidth + sectionWidth).to.be.closeTo(itemWidth, 1);
572
+ });
573
+ });
574
+ }
508
575
  }
509
576
 
510
577
  export const createItemPage = {
@@ -6,8 +6,8 @@ const selectors = {
6
6
  dialogBox: () => cy.get('[aria-labelledby="alert-dialog-title"]'),
7
7
  dialogBoxTitle: () => cy.get('.dialog-title'),
8
8
  dialogBoxContent: () => cy.get('[class*="dialog-content"]'),
9
- buttonReject: () => cy.get('.save-action-btn-wrapper button').eq(0),
10
- buttonAccept: () => cy.get('.save-action-btn-wrapper button').eq(1),
9
+ buttonReject: () => cy.get('[data-testid="reject-button"]'),
10
+ buttonAccept: () => cy.get('[data-testid="accept-button"]'),
11
11
  buttonClose: () => cy.get('[aria-label="CLOSE"]')
12
12
  }
13
13
 
@@ -59,8 +59,8 @@ const selectors = {
59
59
  }
60
60
  },
61
61
  previewTabToolbarOptionTooltip: () => cy.get('.edit-question-preview-wrapper [role="tooltip"][class*="Tooltipstyles__TooltipContent"]'),
62
- previewTabLowerCanvas: () => cy.get('.edit-question-preview-wrapper .lower-canvas'),
63
- previewTabUpperCanvas: () => cy.get('.edit-question-preview-wrapper .upper-canvas'),
62
+ previewTabLowerCanvas: () => cy.get('.question-preview-wrapper .lower-canvas'),
63
+ previewTabUpperCanvas: () => cy.get('.question-preview-wrapper .upper-canvas'),
64
64
  previewTabSecondaryToolbarOptionLabel: () => cy.get('.edit-question-preview-wrapper .drawing-tool__secondary-toolbar__tool-name'),
65
65
  previewTabSecondaryToolbarOption: (ariaLabel = null) => {
66
66
  if (ariaLabel) {
@@ -198,7 +198,7 @@ const selectors = {
198
198
  editTabColorPickerPopupOpacityPalette: () => cy.get('.react-colorful__last-control .react-colorful__interactive'),
199
199
  editTabColorPickerPopupOpacityPicker: () => cy.get('.react-colorful__last-control .react-colorful__pointer'),
200
200
  editTabColorPickerPopupCancelButton: () => cy.get('.compact-popup-action-button-wrapper button').eq(0),
201
- editTabColorPickerPopupOkButton: () => cy.get('.compact-popup-action-button-wrapper button').eq(2),
201
+ editTabColorPickerPopupOkButton: () => cy.get('.compact-popup-action-button-wrapper button').eq(1),
202
202
 
203
203
  //TODO: Student view: Need to remove once https://redmine.zeuslearning.com/issues/556302 is fixed
204
204
  studentAndGradingViewDrawingToolbarOption: (drawingOption = null) => {
@@ -208,7 +208,8 @@ const selectors = {
208
208
  return cy.get('.drawing-tool__button')
209
209
  }
210
210
  },
211
- studentViewUpperCanvas: () => cy.get('.upper-canvas').eq(0)
211
+ studentViewUpperCanvas: () => cy.get('.upper-canvas').eq(0),
212
+ gradingViewPlayFeatureButton: () => cy.get('[class*="DrawingResponsePreviewstyles__PlayBtnWrapper"] button')
212
213
  }
213
214
 
214
215
  const steps = {
@@ -1225,6 +1226,25 @@ const steps = {
1225
1226
  });
1226
1227
  });
1227
1228
  },
1229
+
1230
+ /**
1231
+ * This function sets basic question and saves it
1232
+ * @param {string} inputQuestion input for the question instruction
1233
+ * @param {number} points for the question
1234
+ */
1235
+ createBasicDrawingResponseQuestion: (inputQuestion, points) => {
1236
+ drawingResponsePage.questionInstructionsInputField()
1237
+ .type(inputQuestion);
1238
+ drawingResponsePage.pointsInputField()
1239
+ .type(points);
1240
+ drawingResponsePage.saveQuestionButton()
1241
+ .click();
1242
+ },
1243
+
1244
+ clickOnPlayButtonInGradingView: () => {
1245
+ drawingResponsePage.gradingViewPlayFeatureButton()
1246
+ .click();
1247
+ }
1228
1248
  }
1229
1249
 
1230
1250
  const tests = {
@@ -1,11 +1,13 @@
1
1
  import { additionalSettingsPanel, commonComponents, createQuestionBasePage, questionInstructionsComponent, autoScoredScoringPreviewTab, studentViewSettingsLabelComponent } from "./components"
2
2
  import utilities from "../support/helpers/utilities";
3
+ import { selectQuestionResourceToolPage } from "./selectQuestionResourceToolPage";
3
4
  const css = Cypress.env('css');
4
5
 
5
6
  const selectors = {
6
7
  ...questionInstructionsComponent,
7
8
  ...commonComponents,
8
9
  ...additionalSettingsPanel,
10
+ ...selectQuestionResourceToolPage,
9
11
  specifyFeedbackScaleOptionsLabel: () => cy.get('[class*="FeedbackScalestyles__SpecifyFeedbackLabel"]'),
10
12
  feedbackScaleStyleDropdownLabel: () => cy.get('#feedback-scale-style-dropdown-label'),
11
13
  feedbackScaleStyleDropdown: () => cy.get('#feedback-scale-style-select'),
@@ -103,6 +105,7 @@ const steps = {
103
105
  ...additionalSettingsPanel.steps,
104
106
  ...questionInstructionsComponent.steps,
105
107
  ...autoScoredScoringPreviewTab.steps,
108
+ ...selectQuestionResourceToolPage.steps,
106
109
  /**
107
110
  * Adds legend text to a specific option in the Legend Text accordion.
108
111
  * @param {number} optionIndex - The index of the option in the Legend Text accordion.
@@ -1554,7 +1554,7 @@ const steps = {
1554
1554
  */
1555
1555
  selectGraphToolOptionPreviewTab: (toolOption) => {
1556
1556
  graphingPage.graphToolOptionPreviewTab(toolOption)
1557
- .click();
1557
+ .dblclick();
1558
1558
  },
1559
1559
 
1560
1560
  /**
@@ -1664,6 +1664,24 @@ const steps = {
1664
1664
 
1665
1665
  verifyCorrectAnswerSectionNotExist: () => {
1666
1666
  utilities.verifyElementVisibilityState(utilities.getNthElement(graphingPage.graphCorrectAnswerSection(), 1), 'notExist');
1667
+ },
1668
+
1669
+ /**
1670
+ * This function sets basic question and saves it
1671
+ * @param {string} inputQuestion input for the question instruction
1672
+ * @param {number} points for the question
1673
+ */
1674
+ createBasicGraphingResponseQuestion: (inputQuestion, points) => {
1675
+ graphingPage.questionInstructionsInputField()
1676
+ .type(inputQuestion);
1677
+ graphingPage.pointsInputField()
1678
+ .type(points);
1679
+ graphingPage.steps.selectGraphToolOptionEditTab('Line');
1680
+ graphingPage.steps.plotPointsOnGraphEditTab([{ x: 2, xRange: 20, y: 1, yRange: 20 }, { x: 2, xRange: 20, y: -5, yRange: 20 }]);
1681
+ graphingPage.steps.selectGraphToolOptionSpecifyCorrectAnswer('Line');
1682
+ graphingPage.steps.plotPointsOnGraphSpecifyCorrectAnswerSection([{ x: -4, xRange: 20, y: 0, yRange: 20 }, { x: 0, xRange: 20, y: 4, yRange: 20 }]);
1683
+ graphingPage.saveQuestionButton()
1684
+ .click();
1667
1685
  }
1668
1686
  }
1669
1687
 
@@ -31,6 +31,7 @@ const selectors = {
31
31
  makeResponsiveCheckbox: () => cy.get('.mobile-responsive-wrapper input'),
32
32
  makeResponsiveCheckboxIcon: () => cy.get('.mobile-responsive-wrapper .MuiSwitch-thumb'),
33
33
  whatIsThisLabel: () => cy.get('.what-is-wrapper [class*="StyledLink"]'),
34
+ makeResponsiveHelpText: () => cy.get('[class*="WhatIsThisDescriptionWrapper"]'),
34
35
  columnsInputField: () => cy.get('[class*="GridFillstyles__RowsColWrapper"] .input-stepper-textfield').eq(0),
35
36
  columnsLabel: () => cy.get('[class*="GridFillstyles__RowsColWrapper"] [class*="GridFillstyles__CanvasInputLabelWrapper"]').eq(0),
36
37
  columnsIncreaseButton: () => cy.get('[class*="GridFillstyles__RowsColWrapper"] [aria-label="Increase count"]').eq(0),
@@ -479,10 +480,10 @@ const steps = {
479
480
  .click()
480
481
  .invoke('attr', 'aria-label')
481
482
  .should('include', 'Hide cell');
482
- /* utilities.getNthElement(gridFillPage.cellInCustomizeLayout(), columnIndex)
483
- .within(() => {
484
- utilities.verifyElementVisibilityState(gridFillPage.hiddenCellIcon(), 'exist');
485
- });*/
483
+ utilities.getNthElement(gridFillPage.cellInCustomizeLayout(), columnIndex)
484
+ .within(() => {
485
+ utilities.verifyElementVisibilityState(gridFillPage.hiddenCellIcon(), 'exist');
486
+ });
486
487
  });
487
488
  },
488
489
 
@@ -787,7 +788,7 @@ const steps = {
787
788
  const element = $element[0];
788
789
  const pseudoStyle = win.getComputedStyle(element, '::after');
789
790
  const pseudoBackgroundColor = pseudoStyle.getPropertyValue('background-color');
790
- expect(pseudoBackgroundColor).to.equal(css.color.gridCellSelectedStateBg);
791
+ expect(pseudoBackgroundColor).to.equal(css.color.titleContainerBorder);
791
792
  });
792
793
  });
793
794
  });
@@ -954,7 +955,11 @@ const steps = {
954
955
  * @param {number} lengthRows - The expected count of rows.
955
956
  */
956
957
  verifyRowsCountPreviewTab: (lengthRows) => {
957
- utilities.verifyElementCount(gridFillPage.rowsWrapperPreviewTab(), lengthRows);
958
+ gridFillPage.gridWrapperPreviewTab()
959
+ .eq(0)
960
+ .within(() => {
961
+ utilities.verifyElementCount(gridFillPage.rowsWrapperPreviewTab(), lengthRows);
962
+ });
958
963
  },
959
964
 
960
965
  /**
@@ -968,6 +973,18 @@ const steps = {
968
973
  });
969
974
  },
970
975
 
976
+ /**
977
+ * @description Verifies the count of cells in a grid in the preview tab.
978
+ * @param {number} expectedCount - The expected count of cells in the grid.
979
+ */
980
+ getCellCountInGridPreviewTab: (expectedCount) => {
981
+ gridFillPage.gridWrapperPreviewTab()
982
+ .eq(0)
983
+ .within(() => {
984
+ utilities.verifyElementCount(gridFillPage.cellInPreviewTab(), expectedCount);
985
+ });
986
+ },
987
+
971
988
  expandOpenTheGridSelectorDropdown: () => {
972
989
  gridFillPage.openTheGridSelectorDropdownButton()
973
990
  .click()
@@ -2985,8 +3002,8 @@ const tests = {
2985
3002
  commonComponents.steps.verifyErrorMessageIsNotDisplayed();
2986
3003
  });
2987
3004
 
2988
- it(`\'Exact match position of cells\' label and checkbox should be displayed in the ${accordionName} accordion and the checkbox should be checked`, () => {
2989
- utilities.verifyInnerText(gridFillPage.matchExactPositionLabel(), 'Exact match position of cells');
3005
+ it(`\'Match exact position of cells\' label and checkbox should be displayed in the ${accordionName} accordion and the checkbox should be checked`, () => {
3006
+ utilities.verifyInnerText(gridFillPage.matchExactPositionLabel(), 'Match exact position of cells');
2990
3007
  utilities.verifyElementVisibilityState(gridFillPage.matchExactPositionLabel(), 'visible');
2991
3008
  utilities.verifyElementVisibilityState(gridFillPage.matchExactPositionCheckbox(), 'exist');
2992
3009
  gridFillPage.steps.verifyMatchExactPositionOfCellsCheckboxIsChecked();
@@ -47,4 +47,5 @@ export * from './geoGebraToolsPage';
47
47
  export * from './matchingPage';
48
48
  export * from './brainingCampManipulativePage';
49
49
  export * from './numberLinePage';
50
- export * from './textSelectionPage';
50
+ export * from './textSelectionPage';
51
+ export * from './numberLineLabelPage';
@@ -7,6 +7,8 @@ import { scoringSectionBase } from "./components";
7
7
  import { questionInstructionsComponent } from "./components";
8
8
  import { contentBlocksPage } from "./contentBlocksPage";
9
9
  import { createQuestionBasePage } from "./components";
10
+ import { graphingPage } from "./graphingPage";
11
+ import { drawingResponsePage } from "./drawingResponsePage";
10
12
 
11
13
  const selectors = {
12
14
  ...createItemPage,
@@ -105,6 +107,8 @@ const steps = {
105
107
  ...scoringSectionBase.steps,
106
108
  ...questionInstructionsComponent.steps,
107
109
  ...selectQuestionResourceToolPage.steps,
110
+ ...graphingPage.steps,
111
+ ...drawingResponsePage.steps,
108
112
 
109
113
  verifyEnableSideBySidePanelsCheckboxUnchecked: () => {
110
114
  itemPreviewSettingsPage.enableSideBySidePanelsCheckbox()