itemengine-cypress-automation 1.0.166-migrationScripts-b8c79a0.0 → 1.0.167-repoUpdate10April-1465c8c.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. package/cypress/e2e/ILC/BrainingCampManipulative/additionalSettings.js +83 -0
  2. package/cypress/e2e/ILC/BrainingCampManipulative/editTabBasicSection.js +200 -0
  3. package/cypress/e2e/ILC/BrainingCampManipulative/editTabScoringSection.js +56 -0
  4. package/cypress/e2e/ILC/BrainingCampManipulative/gradingViewAndCorrectAnswerViewContents.smoke.js +95 -0
  5. package/cypress/e2e/ILC/BrainingCampManipulative/headerSection.js +71 -0
  6. package/cypress/e2e/ILC/BrainingCampManipulative/previewTabContent.smoke.js +72 -0
  7. package/cypress/e2e/ILC/BrainingCampManipulative/toolSettings.js +71 -0
  8. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +2 -2
  9. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/clickAndDrop.js +22 -11
  10. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettings.js +432 -0
  11. package/cypress/e2e/ILC/EssayResponse/essayResponseAdditionalSettingsBasic.js +134 -0
  12. package/cypress/e2e/ILC/FeedbackScaleNew/feedbackScaleStylePreviewTab.js +161 -0
  13. package/cypress/e2e/ILC/FeedbackScaleNew/numbersFeedbackScaleStyle.js +308 -0
  14. package/cypress/e2e/ILC/FeedbackScaleNew/previewContentsForAllViews.smoke.js +216 -0
  15. package/cypress/e2e/ILC/FeedbackScaleNew/starsHeartsFeedbackScaleStyle.js +336 -0
  16. package/cypress/e2e/ILC/FeedbackScaleNew/textFeedbackScaleStyle.js +570 -0
  17. package/cypress/e2e/ILC/FeedbackScaleNew/thumbsFeedbackScaleStyle.js +214 -0
  18. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettings.js +356 -0
  19. package/cypress/e2e/ILC/FillInTheGapsDragAndDrop/fillInTheGapsDragAndDropAdditionalSettingsResponseAccordion.js +299 -0
  20. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/clickAndDrop.js +18 -7
  21. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/clickAndDrop.js +11 -6
  22. package/cypress/e2e/ILC/Graphing/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +355 -0
  23. package/cypress/e2e/ILC/Graphing/previewContentsForAllViews.smoke.js +0 -1
  24. package/cypress/e2e/ILC/Graphing/toolsControlsAndBackgroundSection.js +2 -36
  25. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +22 -34
  26. package/cypress/e2e/ILC/GridFill/checkAnswerFunctionalityForAllViews.smoke.js +8 -24
  27. package/cypress/e2e/ILC/GridFill/previewContentsForAllViews.smoke.js +5 -25
  28. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingAlternativePointsGreaterThanCorrectPoints.js +68 -114
  29. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsEqualToAlternativePoints.js +67 -111
  30. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingCorrectPointsGreaterThanAlternativePoints.js +71 -123
  31. package/cypress/e2e/ILC/GridFill/scoring/allOrNothingScoringCellShadeCount.js +41 -63
  32. package/cypress/e2e/ILC/GridFill/scoring/manuallyAndNonScored.js +21 -25
  33. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsBasic.js +50 -85
  34. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +68 -115
  35. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +54 -98
  36. package/cypress/e2e/ILC/GridFill/scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +72 -120
  37. package/cypress/e2e/ILC/GridFill/studentViewSettingsSection.js +3 -3
  38. package/cypress/e2e/ILC/Matching/maximumCapacityPerDropzoneSection.js +309 -0
  39. package/cypress/e2e/ILC/Matching/specifyCorrectAnswerSection.js +1 -1
  40. package/cypress/e2e/ILC/Matching/toolSettings.js +72 -0
  41. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +1033 -0
  42. package/cypress/e2e/ILC/MultipleSelectionGridNew/test.js +28 -0
  43. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithAlternatePointsGreaterThanCorrectPoints.js +236 -0
  44. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsEqualToAlternatePoints.js +239 -0
  45. package/cypress/e2e/ILC/NumberLine/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternativePoints.js +278 -0
  46. package/cypress/e2e/ILC/NumberLine/Scoring/manualAndNonScoredScoring.js +178 -0
  47. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsBasic.js +407 -0
  48. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithAlternatePointsGreaterThanCorrectPoints.js +273 -0
  49. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternatePoints.js +278 -0
  50. package/cypress/e2e/ILC/NumberLine/Scoring/partialEqualWeigtsWithCorrectPointsEqualToAlternatePoints.js +228 -0
  51. package/cypress/e2e/ILC/NumberLine/additionalSettings.js +120 -0
  52. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +659 -0
  53. package/cypress/e2e/ILC/NumberLine/checkAnswerFunctionalityForAllViews.smoke.js +149 -0
  54. package/cypress/e2e/ILC/NumberLine/editTabScoringSection.js +151 -0
  55. package/cypress/e2e/ILC/NumberLine/gradingViewAndCorrectAnswerView.smoke.js +171 -0
  56. package/cypress/e2e/ILC/NumberLine/headerSection.js +76 -0
  57. package/cypress/e2e/ILC/NumberLine/minimumScoringPenaltyPointsAndRoundingDropdown.js +54 -0
  58. package/cypress/e2e/ILC/NumberLine/previewTabContentsForAllViews.smoke.js +200 -0
  59. package/cypress/e2e/ILC/NumberLine/specifyCorrectAnswerSection.js +67 -0
  60. package/cypress/e2e/ILC/NumberLine/studentViewSettings.js +135 -0
  61. package/cypress/e2e/ILC/NumberLine/toolSettings.js +73 -0
  62. package/cypress/e2e/ILC/NumberLine/toolsAndControls.js +372 -0
  63. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +1014 -0
  64. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingAlternatePointsMoreThanCorrectPoints.js +235 -0
  65. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +235 -0
  66. package/cypress/e2e/ILC/TextSelection/Scoring/allOrNothingCorrectPointsMoreThanAlternatePoints.js +235 -0
  67. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsBasic.js +457 -0
  68. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithAlternativePointsGreaterThanCorrectPoints.js +342 -0
  69. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +342 -0
  70. package/cypress/e2e/ILC/TextSelection/Scoring/partialDifferentWeightsWithCorrectPointsGreaterThanAlternativePoints.js +342 -0
  71. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsBasic.js +155 -0
  72. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithAlternativePointsGreaterThanCorrectPoints.js +314 -0
  73. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +275 -0
  74. package/cypress/e2e/ILC/TextSelection/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +314 -0
  75. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +290 -0
  76. package/cypress/e2e/ILC/TextSelection/checkAnswerFunctionalityForAllViews.smoke.js +142 -0
  77. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.js +137 -0
  78. package/cypress/e2e/ILC/ToolSettings/toolSettingsContent.js +4 -4
  79. package/cypress/fixtures/theme/ilc.json +14 -26
  80. package/cypress/pages/brainingCampManipulativePage.js +122 -0
  81. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +1 -1
  82. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -0
  83. package/cypress/pages/components/autoScoredStudentViewSettings.js +1 -1
  84. package/cypress/pages/components/colorPopupComponent.js +2 -2
  85. package/cypress/pages/components/defaultToolDropdown.js +77 -0
  86. package/cypress/pages/components/gridQuestionCommonComponent.js +629 -2
  87. package/cypress/pages/components/index.js +3 -0
  88. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  89. package/cypress/pages/components/measuringToolComponent.js +2 -2
  90. package/cypress/pages/components/resetPopupComponent.js +74 -0
  91. package/cypress/pages/components/scoringSectionBaseEditTab.js +1 -1
  92. package/cypress/pages/components/setPointsPopupBase.js +6 -4
  93. package/cypress/pages/components/specifyRowsAndColumnsComponent.js +60 -3
  94. package/cypress/pages/components/toolSettingsComponent.js +80 -12
  95. package/cypress/pages/components/toolsAndControlsComponent.js +69 -0
  96. package/cypress/pages/dragAndDropIntoCategoriesPage.js +0 -8
  97. package/cypress/pages/feedbackScalePage copy.js +716 -0
  98. package/cypress/pages/feedbackScalePage.js +591 -449
  99. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +3 -1
  100. package/cypress/pages/graphingPage.js +9 -145
  101. package/cypress/pages/gridFillPage.js +135 -120
  102. package/cypress/pages/highlightPage.js +0 -394
  103. package/cypress/pages/index.js +5 -2
  104. package/cypress/pages/matchingPage.js +78 -20
  105. package/cypress/pages/multipleSelectionGridPage.js +88 -1
  106. package/cypress/pages/numberLinePage.js +723 -0
  107. package/cypress/pages/singleSelectionGridPage.js +86 -0
  108. package/cypress/pages/textSelectionPage.js +582 -0
  109. package/cypress/support/migrationHelpers/extractLrnQuestionData.js +3 -12
  110. package/cypress/support/migrationHelpers/lrnQestionTypesENUM.js +0 -1
  111. package/cypress/support/migrationHelpers/migrationScript.js +0 -10
  112. package/cypress/support/migrationHelpers/verifyIeQuestionData.js +0 -8
  113. package/package.json +1 -1
@@ -175,7 +175,7 @@ describe('Create item page - Drag and drop into categories: All or nothing ', ()
175
175
  dragAndDropIntoCategoriesPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount([['Bat'], ['Eagle', 'Parrot'], ['Platypus'], ['Ostrich'], ['Whale']], ['1', '2', '3', '4', '5']);
176
176
  });
177
177
 
178
- it('When the user attempts the question partially correct with all the cells correctly attempted but with an extra option which is not set as correct answer, then the user should be awarded 0 points and on switching to \'Grading\' view, correct icon should be displayed besides the correct answer responses, incorrect icon should be displayed besides incorrect answer response, a status message with text \'Your answer is incorrect\' and correct answer section should not be displayed', () => {
178
+ it('When the user attempts the question partially correct with all the cells correctly attempted but with an extra option which is not set as correct answer, then the user should be awarded 0 points and on switching to \'Grading\' view, correct icon should be displayed besides the correct answer responses, incorrect icon should be displayed besides incorrect answer response, a status message with text \'Your answer is incorrect\' and correct answer section with all correct answers along with dropzone cell numeration should be displayed', () => {
179
179
  if (view === 'Grading view') {
180
180
  studentViewPage.steps.clearResponses();
181
181
  };
@@ -198,7 +198,7 @@ describe('Create item page - Drag and drop into categories: All or nothing ', ()
198
198
  dragAndDropIntoCategoriesPage.steps.verifyCorrectOptionIcon(5);
199
199
  dragAndDropIntoCategoriesPage.steps.verifyIncorrectOptionIcon(6);
200
200
  dragAndDropIntoCategoriesPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
201
- dragAndDropIntoCategoriesPage.steps.verifyCorrectAnswerSectionNotExists();
201
+ dragAndDropIntoCategoriesPage.steps.verifyCorrectAnswerResponsesInCorrectAnswerSectionAndCount([['Bat'], ['Eagle', 'Parrot'], ['Platypus'], ['Ostrich'], ['Whale']], ['1', '2', '3', '4', '5']);
202
202
  });
203
203
 
204
204
  it('When user attempts the question correctly, the user should be awarded full points and on switching to \'Grading\' view, then correct icons should be displayed beside all the correct responses, correct icon should be displayed besides the correct answer responses, a status message with text \'Your answer is correct\' and correct answer section should not be displayed', () => {
@@ -84,7 +84,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
84
84
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
85
85
  });
86
86
 
87
- it('When the user drops an option in one of the dropzone cells, the option should get removed from the response container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
87
+ it('When the user drops an option in one of the dropzone cells, the option should get removed from the options container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
88
88
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Bat': 0 });
89
89
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneCellOfSpecifyCorrectAnswerSection(0, ['Bat']);
90
90
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(['Eagle', 'Parrot', 'Whale']);
@@ -122,7 +122,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
122
122
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(['Parrot', 'Whale']);
123
123
  });
124
124
 
125
- it('When the user selects an option from the filled dropzone cell, the response container as well as all dropzone cells should get active for dropping the option', () => {
125
+ it('When the user selects an option from the filled dropzone cell, the options container as well as all dropzone cells should get active for dropping the option', () => {
126
126
  dragAndDropIntoCategoriesPage.steps.clickOnDraggableOptionInDropzoneCellOfSpecifyCorrectAnswerSection('Bat', 0);
127
127
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfDraggableOptionsContainerInSpecifyCorrectAnswerSection();
128
128
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
@@ -149,7 +149,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
149
149
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
150
150
  });
151
151
 
152
- it('When the user selects a filled option and clicks in the response container, the selected option should get back in the response container and \'Error: Please set a correct answer\' error message should be displayed', () => {
152
+ it('When the user selects a filled option and clicks in the options container, the selected option should get back in the options container and \'Error: Please set a correct answer\' error message should be displayed', () => {
153
153
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerSpecifyCorrectAnswerSection('Bat');
154
154
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerSpecifyCorrectAnswerSection('Eagle');
155
155
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInOptionsContainerSpecifyCorrectAnswerSection(['Bat', 'Eagle', 'Parrot', 'Whale']);
@@ -253,7 +253,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
253
253
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInPreviewTab();
254
254
  });
255
255
 
256
- it('When the user drops an option in one of the dropzone cells, the option should get removed from the response container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
256
+ it('When the user drops an option in one of the dropzone cells, the option should get removed from the options container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
257
257
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Bat': 0 });
258
258
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(0, ['Bat']);
259
259
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(['Eagle', 'Parrot', 'Whale']);
@@ -291,7 +291,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
291
291
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(['Parrot', 'Whale']);
292
292
  });
293
293
 
294
- it('When the user selects an option from the filled dropzone cell, the response container as well as all dropzone cells should get active for dropping the option', () => {
294
+ it('When the user selects an option from the filled dropzone cell, the options container as well as all dropzone cells should get active for dropping the option', () => {
295
295
  dragAndDropIntoCategoriesPage.steps.clickOnDraggableOptionInDropzoneCellOfPreviewTab('Bat', 0);
296
296
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfDraggableOptionsContainerInPreviewTab();
297
297
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfAllDropzonesInPreviewTab();
@@ -324,6 +324,11 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
324
324
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(0, ['Eagle']);
325
325
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(1, ['Bat']);
326
326
  });
327
+
328
+ it('When the user selects a filled option and clicks in the options container, the selected option should get back in the options container', () => {
329
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerPreviewTab('Eagle', 0);
330
+ dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionsInOptionsContainerPreviewTab(['Whale', 'Platypus', 'Eagle']);
331
+ });
327
332
  });
328
333
 
329
334
  describe('Click and drop cases for \'Grouped\' response options layout in \'Specify correct answer\' section', () => {
@@ -403,7 +408,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
403
408
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
404
409
  });
405
410
 
406
- it('When the user drops an option in one of the dropzone cells, the option should get removed from the respective group of the response container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
411
+ it('When the user drops an option in one of the dropzone cells, the option should get removed from the respective group of the options container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
407
412
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Bat': 0 });
408
413
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneCellOfSpecifyCorrectAnswerSection(0, ['Bat']);
409
414
  dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInSpecifyCorrectAnswerSection(0, ['Eagle', 'Whale', 'Platypus']);
@@ -442,7 +447,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
442
447
  dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInSpecifyCorrectAnswerSection(0, ['Whale', 'Platypus']);
443
448
  });
444
449
 
445
- it('When the user selects an option from the filled dropzone cell, the response container as well as all dropzone cells should get active for dropping the option', () => {
450
+ it('When the user selects an option from the filled dropzone cell, the options container as well as all dropzone cells should get active for dropping the option', () => {
446
451
  dragAndDropIntoCategoriesPage.steps.clickOnDraggableOptionInDropzoneCellOfSpecifyCorrectAnswerSection('Bat', 0);
447
452
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfDraggableOptionsContainerInSpecifyCorrectAnswerSection();
448
453
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
@@ -469,7 +474,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
469
474
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInSpecifyCorrectAnswerSection();
470
475
  });
471
476
 
472
- it('When the user selects a filled option and clicks in the response container, the selected option should get back in the response container and \'Error: Please set a correct answer\' error message should be displayed', () => {
477
+ it('When the user selects a filled option and clicks in the options container, the selected option should get back in the options container and \'Error: Please set a correct answer\' error message should be displayed', () => {
473
478
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerSpecifyCorrectAnswerSection('Bat');
474
479
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerSpecifyCorrectAnswerSection('Eagle');
475
480
  dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInSpecifyCorrectAnswerSection(0, groupedOptions[0]);
@@ -583,7 +588,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
583
588
  dragAndDropIntoCategoriesPage.steps.verifyInactiveStateOfAllDropzonesInPreviewTab();
584
589
  });
585
590
 
586
- it('When the user drops an option in one of the dropzone cells, the option should get removed from the respective group of the response container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
591
+ it('When the user drops an option in one of the dropzone cells, the option should get removed from the respective group of the options container, the dropzone cell should get filled with that option and the other dropzone cells should return to inactive state', () => {
587
592
  dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Bat': 0 });
588
593
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(0, ['Bat']);
589
594
  dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInPreviewTab(0, ['Eagle', 'Whale', 'Platypus']);
@@ -622,7 +627,7 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
622
627
  dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInPreviewTab(0, ['Whale', 'Platypus']);
623
628
  });
624
629
 
625
- it('When the user selects an option from the filled dropzone cell, the response container as well as all dropzone cells should get active for dropping the option', () => {
630
+ it('When the user selects an option from the filled dropzone cell, the options container as well as all dropzone cells should get active for dropping the option', () => {
626
631
  dragAndDropIntoCategoriesPage.steps.clickOnDraggableOptionInDropzoneCellOfPreviewTab('Bat', 0);
627
632
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfDraggableOptionsContainerInPreviewTab();
628
633
  dragAndDropIntoCategoriesPage.steps.verifyActiveStateOfAllDropzonesInPreviewTab(1);
@@ -656,8 +661,14 @@ describe('Create Item Page: Drag and drop into categories: Click and drop cases
656
661
  dragAndDropIntoCategoriesPage.steps.verifyDraggableOptionInDropzoneOfPreviewTab(1, ['Bat']);
657
662
  });
658
663
 
664
+ it('When the user selects a filled option and clicks in the options container, the selected option should get back in the options container', () => {
665
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionFromDropzoneToOptionContainerPreviewTab('Eagle');
666
+ dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInPreviewTab(0, ['Whale', 'Platypus', 'Eagle']);
667
+ dragAndDropIntoCategoriesPage.steps.verifyGroupedContainerContentsInPreviewTab(1, groupedOptions[1]);
668
+ });
669
+
659
670
  it('When user has dropped all the options from a group in the response areas, then empty group should be displayed in the options container', () => {
660
- dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Whale': 0, 'Platypus': 1 });
671
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Whale': 0, 'Platypus': 1, 'Eagle': 0 });
661
672
  dragAndDropIntoCategoriesPage.steps.verifyGroupedOptionsTitlePreviewTab(0, 'Group A')
662
673
  dragAndDropIntoCategoriesPage.steps.verifyEmptyGroupInPreviewTab(0);
663
674
  });
@@ -0,0 +1,432 @@
1
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
2
+ import { essayResponsePage } from "../../../pages";
3
+ import { ckEditorToolbar } from "../../../pages/components";
4
+ const css = Cypress.env('css');
5
+
6
+ let specialCharacters = [':', ')', '`']
7
+ describe('Create question page - Essay Response: Additional Settings', () => {
8
+ before(() => {
9
+ cy.loginAs('admin');
10
+ });
11
+
12
+ describe('Additional Settings: Predefined text', () => {
13
+ abortEarlySetup();
14
+ before(() => {
15
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
16
+ essayResponsePage.steps.setWordLimit(5);
17
+ essayResponsePage.steps.expandAdditionalSettings();
18
+ });
19
+
20
+ it('\'Predefined text\' label and input field should be displayed and by default, the input field should be empty', () => {
21
+ essayResponsePage.predefinedTextLabel()
22
+ .verifyInnerText('Predefined text')
23
+ essayResponsePage.predefinedTextInputField()
24
+ .should('have.text', '');
25
+ });
26
+
27
+ it('CSS of \'Predefined text\' section', { tags: 'css' }, () => {
28
+ essayResponsePage.predefinedTextLabel()
29
+ .verifyCSS(css.color.labels, css.fontSize.normal, css.fontWeight.semibold);
30
+ essayResponsePage.predefinedTextInputField()
31
+ .verifyCSS(css.color.text, css.fontSize.default, css.fontWeight.regular);
32
+ });
33
+
34
+ it('Accessibility of \'Predefined text\' section', { tags: 'css' }, () => {
35
+ cy.checkAccessibility(essayResponsePage.predefinedTextLabel().parent('[class*="StudentResponseAreaLayoutstyles__StyledDiv"]'));
36
+ });
37
+
38
+ it('The user should be able to add \'Predefined text\' and the \'Predefined text\' added by the user should be displayed in the response field in the preview tab. Also, the word count displayed by default should have value - word count of predefined text/word limit', () => {
39
+ essayResponsePage.predefinedTextInputField()
40
+ .type('Lorem Ipsum')
41
+ .should('have.text', 'Lorem Ipsum');
42
+ essayResponsePage.steps.switchToPreviewTab();
43
+ essayResponsePage.responseField()
44
+ .should('have.text', 'Lorem Ipsum');
45
+ essayResponsePage.steps.verifyResponseFieldWordCount('2/5');
46
+ });
47
+
48
+ it('The user should not be able to enter words more than the set word limit in the \'Predefined text\' input field', () => {
49
+ cy.log('Switching to edit tab')
50
+ essayResponsePage.steps.switchToEditTab()
51
+ essayResponsePage.predefinedTextInputField()
52
+ .type(' dolor sit amet c');
53
+ essayResponsePage.predefinedTextInputField()
54
+ .should('have.text', 'Lorem Ipsum dolor sit amet\u00a0');
55
+ });
56
+
57
+ it('When the user adds same number of words as the word limit in the \'Predefined text\' input field, \'word limit reached\' warning message should be displayed in the preview tab', () => {
58
+ essayResponsePage.steps.switchToPreviewTab();
59
+ essayResponsePage.steps.verifyResponseFieldWordCount('5/5');
60
+ essayResponsePage.steps.verifyWordLimitReachedWarningMessage();
61
+ });
62
+
63
+ it('The word count should increase/decrease in the preview tab when the user adds/removes some words from predefined text in the response field', () => {
64
+ cy.log('checking update in word count after removing a word from predefined text')
65
+ essayResponsePage.responseField()
66
+ .type('{backspace}{backspace}{backspace}{backspace}{backspace}')
67
+ .should('have.text', 'Lorem Ipsum dolor sit');
68
+ essayResponsePage.steps.verifyResponseFieldWordCount('4/5');
69
+ essayResponsePage.wordLimitReachedWarningMessage()
70
+ .should('not.exist');
71
+ cy.log('checking update in word count after adding a word after predefined text')
72
+ essayResponsePage.responseField()
73
+ .type(' amet')
74
+ .should('have.text', 'Lorem Ipsum dolor sit amet');
75
+ essayResponsePage.steps.verifyResponseFieldWordCount('5/5');
76
+ });
77
+ });
78
+
79
+ //Failing due to https://redmine.zeuslearning.com/issues/551117
80
+ describe('Additional Settings: Placeholder text', () => {
81
+ abortEarlySetup();
82
+ before(() => {
83
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
84
+ essayResponsePage.steps.setWordLimit(5);
85
+ essayResponsePage.steps.expandAdditionalSettings();
86
+ });
87
+
88
+ it('CSS of \'Placeholder text\' section', { tags: 'css' }, () => {
89
+ essayResponsePage.placeholderTextLabel()
90
+ .verifyCSS(css.color.labels, css.fontSize.normal, css.fontWeight.semibold);
91
+ essayResponsePage.placeholderTextInputField()
92
+ .verifyCSS(css.color.text, css.fontSize.default, css.fontWeight.regular);
93
+ });
94
+
95
+ it('Accessibility of \'Placeholder text\' section', { tags: 'a11y' }, () => {
96
+ cy.checkAccessibility(essayResponsePage.placeholderTextLabel().parent('[class*="StudentResponseAreaLayoutstyles__PlaceHolderWrapper"]'))
97
+ });
98
+
99
+ it('\'Placeholder text\' label and input field should be displayed and by default, the input field should be empty', () => {
100
+ essayResponsePage.placeholderTextLabel()
101
+ .verifyInnerText('Placeholder text');
102
+ essayResponsePage.placeholderTextInputField()
103
+ .should('have.value', '');
104
+ });
105
+
106
+ it('The user should be able to add \'Placeholder text\' and the \'Placeholder text\' added by the user should be displayed in the response field in the preview tab.', () => {
107
+ essayResponsePage.placeholderTextInputField()
108
+ .type('Lorem Ipsum')
109
+ .should('have.value', 'Lorem Ipsum');
110
+ essayResponsePage.steps.switchToPreviewTab();
111
+ essayResponsePage.responseField()
112
+ .and('have.attr', 'data-cke-editorplaceholder', 'Lorem Ipsum');
113
+ essayResponsePage.responseFieldWordCount()
114
+ .should('have.text', '0/5');
115
+ });
116
+
117
+ it('CSS of \'Placeholder text\' in preview tab', { tags: 'css' }, () => {
118
+ essayResponsePage.responseField()
119
+ .verifyPseudoClassBeforeProperty('color', css.color.placeholderText);
120
+ });
121
+
122
+ //Comment: The placeholder text is present as a pseudo element, how to check accessibility?
123
+ it('Accessibility of \'Placeholder text\' in preview tab', { tags: 'a11y' }, () => {
124
+ });
125
+
126
+ it('The word count displayed by default should not consider the word count of placedholder text and the word count displayed should be - 0/*word limit*', () => {
127
+ essayResponsePage.steps.verifyResponseFieldWordCount('0/5');
128
+ });
129
+
130
+ it('When the user starts typing in the response field in the preview tab, then the placeholder text should disappear', () => {
131
+ essayResponsePage.steps.enterTextInResponseField('dolor sit amet');
132
+ essayResponsePage.responseField()
133
+ .should('not.have.attr', 'data-cke-editorplaceholder');
134
+ });
135
+
136
+ it('When the user clears the entered text in the response field, then the placeholder text should appear again', () => {
137
+ essayResponsePage.responseField()
138
+ .clear()
139
+ .should('not.have.text', 'dolor sit amet')
140
+ .blur();
141
+ essayResponsePage.responseField()
142
+ .and('have.attr', 'data-cke-editorplaceholder', 'Lorem Ipsum');
143
+ });
144
+
145
+ it('When the user has defined both, \'Predefined text\' and \'Placeholder text\', then in the preview tab the placeholder text should not be displayed and the word count displayed should be - word count of predefined text/*word limit*', () => {
146
+ cy.log('Go to edit tab and define \'Predefined text\'')
147
+ essayResponsePage.steps.switchToEditTab();
148
+ essayResponsePage.predefinedTextInputField()
149
+ .type('Dolor set amet')
150
+ .should('have.text', 'Dolor set amet');
151
+ essayResponsePage.steps.switchToPreviewTab();
152
+ essayResponsePage.responseField()
153
+ .should('have.text', 'Dolor set amet');
154
+ essayResponsePage.responseFieldWordCount()
155
+ .should('have.text', '3/5');
156
+ })
157
+ });
158
+
159
+ describe('Additional Settings: Minimum height and Maximum height', () => {
160
+ abortEarlySetup();
161
+ before(() => {
162
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
163
+ essayResponsePage.steps.expandAdditionalSettings();
164
+ });
165
+
166
+ it('CSS of \'Minimum height\' and \'Maximum height\' section', { tags: 'css' }, () => {
167
+ essayResponsePage.minHeightLabel()
168
+ .verifyCSS(css.color.labels, css.fontSize.normal, css.fontWeight.semibold);
169
+ essayResponsePage.minHeightInputField()
170
+ .verifyCSS(css.color.text, css.fontSize.default, css.fontWeight.regular);
171
+ essayResponsePage.maxHeightLabel()
172
+ .verifyCSS(css.color.labels, css.fontSize.normal, css.fontWeight.semibold);
173
+ essayResponsePage.maxHeightInputField()
174
+ .verifyCSS(css.color.text, css.fontSize.default, css.fontWeight.regular);
175
+ });
176
+
177
+ it('Accessibility of \'Minimum height\' and \'Maximum height\' section', { tags: 'a11y' }, () => {
178
+ cy.checkAccessibility(essayResponsePage.minHeightLabel().parents('[class*="StudentResponseAreaLayoutstyles__SizeWrapper"]'));
179
+ });
180
+
181
+ it('\'Minimum height\' and \'Maximum height\' labels and input fields should be displayed and by default, the input fields should be empty', () => {
182
+ essayResponsePage.minHeightLabel()
183
+ .verifyInnerText('Minimum height (px)');
184
+ essayResponsePage.minHeightInputField()
185
+ .should('have.value', '');
186
+ essayResponsePage.maxHeightLabel()
187
+ .verifyInnerText('Maximum height (px)');
188
+ essayResponsePage.maxHeightInputField()
189
+ .should('have.value', '');
190
+ });
191
+
192
+ it('When the input field of \'Minimum height\' is kept empty, the default minimum height of the response field in the preview tab should be 232px', () => {
193
+ cy.log('Switching to preview tab')
194
+ essayResponsePage.steps.switchToPreviewTab();
195
+ essayResponsePage.responseField()
196
+ .should('have.css', 'min-height', '232px');
197
+ });
198
+
199
+ it('User should be able to add \'Minimum height\' for the response field and in the preview tab the minimum height of the response field should get updated accordingly', () => {
200
+ cy.log('Switching to edit tab')
201
+ essayResponsePage.steps.switchToEditTab();
202
+ essayResponsePage.minHeightInputField()
203
+ .type(50)
204
+ .should('have.value', '50');
205
+ cy.log('Switching to preview tab')
206
+ essayResponsePage.steps.switchToPreviewTab();
207
+ essayResponsePage.responseField()
208
+ .should('have.css', 'min-height', '50px');
209
+ });
210
+
211
+ it('When the user adds \'Maximum height\' for the response field then in the preview tab, the maximum height of the response field should get updated accordingly', () => {
212
+ cy.log('Switching to edit tab')
213
+ essayResponsePage.steps.switchToEditTab();
214
+ essayResponsePage.maxHeightInputField()
215
+ .type(100)
216
+ .should('have.value', '100');
217
+ cy.log('Switching to preview tab')
218
+ essayResponsePage.steps.switchToPreviewTab();
219
+ essayResponsePage.responseField()
220
+ .should('have.css', 'max-height', '100px');
221
+ });
222
+ });
223
+
224
+ describe('Additional Settings: Disable cut, copy and paste section', () => {
225
+ abortEarlySetup();
226
+ before(() => {
227
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
228
+ essayResponsePage.steps.expandAdditionalSettings();
229
+ essayResponsePage.steps.setWordLimit(15);
230
+ });
231
+
232
+ it('\'Disable cut, copy and paste\' functionality label and checkbox should be displayed and by default it should be unchecked', () => {
233
+ essayResponsePage.disableCutCopyPasteLabel()
234
+ .verifyInnerText('Disable cut, copy and paste');
235
+ essayResponsePage.disableCutCopyPasteCheckbox()
236
+ .should('not.be.checked');
237
+ });
238
+
239
+ it('CSS of \'Disable cut, copy and paste\' section - unchecked state', { tags: 'css' }, () => {
240
+ essayResponsePage.disableCutCopyPasteLabel()
241
+ .verifyCSS(css.color.labelText, css.fontSize.normal, css.fontWeight.regular);
242
+ essayResponsePage.disableCutCopyPasteCheckbox()
243
+ .parent()
244
+ .find('svg')
245
+ .should('have.css', 'fill', css.color.uncheckedCheckbox);
246
+ });
247
+
248
+ it('Accessibility of \'Disable cut, copy and paste\' section - unchecked state', { tags: 'a11y' }, () => {
249
+ cy.checkAccessibility(essayResponsePage.additionalSettingsRegion());
250
+ });
251
+
252
+ //TODO: Need to verify the code for cut, changes are required
253
+ //Comment: We are currently checking only cut action, copy and paste actions need to be tested manually
254
+ it('When the \'Disable cut, copy and paste\' functionality is disabled, the user should be able to perform cut, copy and paste actions', () => {
255
+ essayResponsePage.steps.switchToPreviewTab();
256
+ essayResponsePage.responseField()
257
+ .type('Lorem')
258
+ essayResponsePage.responseField()
259
+ .type('{selectAll}')
260
+ .type('{ctrl}x');
261
+ essayResponsePage.responseField()
262
+ .should('not.have.text', 'Lorem');
263
+ });
264
+
265
+ it('When the user enables the \'Disable cut, copy and paste\' functionality, the user should not be able to perform cut, copy and paste actions', () => {
266
+ cy.log('Switching to edit tab')
267
+ essayResponsePage.steps.switchToEditTab();
268
+ essayResponsePage.disableCutCopyPasteCheckbox()
269
+ .click()
270
+ .should('be.checked');
271
+ essayResponsePage.steps.switchToPreviewTab();
272
+ essayResponsePage.responseField()
273
+ .type('Lorem{selectall}')
274
+ essayResponsePage.responseField()
275
+ .focus()
276
+ .trigger('keydown', { key: 'x', ctrlKey: true })
277
+ essayResponsePage.responseField()
278
+ .should('have.text', 'Lorem');
279
+ });
280
+
281
+ it('CSS of \'Disable cut, copy and paste\' section - checked state', { tags: 'css' }, () => {
282
+ cy.log('Switching to edit tab')
283
+ essayResponsePage.steps.switchToEditTab();
284
+ essayResponsePage.disableCutCopyPasteCheckbox()
285
+ .parents('[data-ngie-testid="disable-cut,-copy-and-paste-checkbox"]')
286
+ .find('svg g')
287
+ .eq(1)
288
+ .should('have.css', 'fill', css.color.activeButtons);
289
+ });
290
+
291
+ it('Accessibility of \'Disable cut, copy and paste\' section - checked state', { tags: 'a11y' }, () => {
292
+ cy.checkAccessibility(essayResponsePage.additionalSettingsRegion());
293
+ });
294
+ });
295
+
296
+ describe('Additional Settings: Disable automatic hyperlinking section', () => {
297
+ abortEarlySetup();
298
+ before(() => {
299
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
300
+ essayResponsePage.steps.expandAdditionalSettings();
301
+ });
302
+
303
+ it('\'Disable automatic hyperlinking\' functionality label and checkbox should be displayed and by default it should be unchecked', () => {
304
+ essayResponsePage.disableAutoHyperlinkingLabel()
305
+ .verifyInnerText('Disable automatic hyperlinking');
306
+ essayResponsePage.disableAutoHyperlinkingCheckbox()
307
+ .should('not.be.checked');
308
+ });
309
+
310
+ it('CSS of \'Disable automatic hyperlinking\' section - unchecked state', { tags: 'css' }, () => {
311
+ essayResponsePage.disableAutoHyperlinkingLabel()
312
+ .verifyCSS(css.color.labelText, css.fontSize.normal, css.fontWeight.regular);
313
+ essayResponsePage.disableAutoHyperlinkingCheckbox()
314
+ .parent()
315
+ .find('svg')
316
+ .should('have.css', 'fill', css.color.uncheckedCheckbox);
317
+ });
318
+
319
+ it('Accessibility of \'Disable automatic hyperlinking\' section - unchecked state', { tags: 'a11y' }, () => {
320
+ cy.checkAccessibility(essayResponsePage.disableAutoHyperlinkingLabel().parents('.MuiFormGroup-root'));
321
+ });
322
+
323
+ it('When the \'Disable automatic hyperlinking\' functionality is disabled and the user types any link text in the response field in the preview tab, then the link text should be displayed as a hyperlink', () => {
324
+ cy.log('Switching to preview tab')
325
+ essayResponsePage.steps.switchToPreviewTab();
326
+ essayResponsePage.responseField()
327
+ .type('https://www.google.com ');
328
+ essayResponsePage.responseField()
329
+ .find('a')
330
+ .should('have.attr', 'href', 'https://www.google.com');
331
+ });
332
+
333
+ //https://redmine.zeuslearning.com/issues/530056
334
+ it('CSS of \'hyperlink\' text in the response field', { tags: 'css' }, () => {
335
+ essayResponsePage.responseField()
336
+ .find('a')
337
+ .verifyCSS(css.color.linkText, css.fontSize.default, css.fontWeight.regular);
338
+ });
339
+
340
+ it('Accessibility of \'hyperlink\' text in the response field', { tags: 'a11y' }, () => {
341
+ cy.checkAccessibility(essayResponsePage.previewTabQuestionWrapper());
342
+ });
343
+
344
+ it('When the user enables the \'Disable automatic hyperlinking\' functionality, then even if the user types any link text in the response field in the preview tab, it should appear as a plain text', () => {
345
+ cy.log('Switching to edit tab')
346
+ essayResponsePage.steps.switchToEditTab();
347
+ essayResponsePage.disableAutoHyperlinkingCheckbox()
348
+ .click()
349
+ .should('be.checked');
350
+ cy.log('Switching to preview tab')
351
+ essayResponsePage.steps.switchToPreviewTab();
352
+ essayResponsePage.responseField()
353
+ .type('https://www.google.com');
354
+ essayResponsePage.responseField()
355
+ .find('a')
356
+ .should('not.exist');
357
+ cy.log('Post step: Switching to edit tab')
358
+ essayResponsePage.steps.switchToEditTab();
359
+ });
360
+
361
+ it('CSS of \'Disable automatic hyperlinking\' section - checked state', { tags: 'css' }, () => {
362
+ essayResponsePage.disableAutoHyperlinkingCheckbox()
363
+ .parents('[data-ngie-testid="disable-automatic-hyperlinking-checkbox"]')
364
+ .find('svg g')
365
+ .eq(1)
366
+ .should('have.css', 'fill', css.color.activeButtons);
367
+ });
368
+
369
+ it('Accessibility of \'Disable automatic hyperlinking\' section - checked state', { tags: 'a11y' }, () => {
370
+ cy.checkAccessibility(essayResponsePage.disableAutoHyperlinkingLabel().parents('.MuiFormGroup-root'));
371
+ });
372
+ });
373
+
374
+ describe('Additional Settings: Spell check section', () => {
375
+ abortEarlySetup();
376
+ before(() => {
377
+ essayResponsePage.steps.navigateToCreateQuestion('essay response');
378
+ essayResponsePage.steps.expandAdditionalSettings();
379
+ });
380
+
381
+ it('\'Spell check\' functionality label and checkbox should be displayed and by default it should be checked', () => {
382
+ essayResponsePage.spellCheckLabel()
383
+ .verifyInnerText('Spell check');
384
+ essayResponsePage.spellCheckCheckbox()
385
+ .should('be.checked');
386
+ });
387
+
388
+ it('CSS of \'Spell check\' section - checked state', { tags: 'css' }, () => {
389
+ essayResponsePage.spellCheckLabel()
390
+ .verifyCSS(css.color.labelText, css.fontSize.normal, css.fontWeight.regular);
391
+ essayResponsePage.spellCheckCheckbox()
392
+ .parents('[data-ngie-testid="spell-check-checkbox"]')
393
+ .find('svg g')
394
+ .eq(1)
395
+ .should('have.css', 'fill', css.color.activeButtons);
396
+ });
397
+
398
+ it('Accessibility of \'Spell check\' section - checked state', { tags: 'a11y' }, () => {
399
+ cy.checkAccessibility(essayResponsePage.spellCheckLabel().parents('.MuiFormGroup-root'))
400
+ });
401
+
402
+ it('When the \'Spell check\' functionality is enabled, the response field in preview tab should have \'spellcheck\' attribute set as \'true\'', () => {
403
+ essayResponsePage.steps.switchToPreviewTab();
404
+ essayResponsePage.responseField()
405
+ .should('have.attr', 'spellcheck', 'true');
406
+ });
407
+
408
+ it('When the user disables the \'Spell check\' functionality, the response field in preview tab should not have \'spellcheck\' attribute set as \'false\'', () => {
409
+ cy.log('Switching to edit tab')
410
+ essayResponsePage.steps.switchToEditTab();
411
+ essayResponsePage.spellCheckCheckbox()
412
+ .click()
413
+ .should('not.be.checked');
414
+ essayResponsePage.steps.switchToPreviewTab();
415
+ essayResponsePage.responseField()
416
+ .should('have.attr', 'spellcheck', 'false');
417
+ cy.log('Post step: Switch to edit tab')
418
+ essayResponsePage.steps.switchToEditTab();
419
+ });
420
+
421
+ it('CSS of \'Spell check\' section - unchecked state', { tags: 'css' }, () => {
422
+ essayResponsePage.spellCheckCheckbox()
423
+ .parents('[data-ngie-testid="spell-check-checkbox"]')
424
+ .find('svg')
425
+ .should('have.css', 'fill', css.color.uncheckedCheckbox);
426
+ });
427
+
428
+ it('Accessibility of \'Spell check\' section - unchecked state', { tags: 'a11y' }, () => {
429
+ cy.checkAccessibility(essayResponsePage.spellCheckLabel().parents('.MuiFormGroup-root'))
430
+ });
431
+ });
432
+ });