itemengine-cypress-automation 1.0.327-IEI-5098-RCA-for-FIG-text-and-short-text-7bbafe1.0 → 1.0.328-UpdateRepo28thFeb-24a9148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerHeaderSectionAndButtons.js +5 -4
  2. package/cypress/e2e/ILC/CkEditorInsertTable/updateTable.js +1 -0
  3. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +100 -0
  4. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/studentViewSettingsForGroupedLayout.js +1 -0
  5. package/cypress/e2e/ILC/DrawingResponse/drawingResponseBackground.js +12 -0
  6. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/dropdownAndDropdownMenuSection.js +1 -0
  7. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/editQuestion.smoke.js +24 -0
  8. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/studentViewSettingsForGroupedLayout.js +5 -4
  9. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/styleAndLayoutCustomization.js +4 -3
  10. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/styleAndLayoutCustomizationDraggableOptionsPanel.js +1 -1
  11. package/cypress/e2e/ILC/FillInTheGapsTextNew/editTabBasicSection.js +1 -2
  12. package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/previewContentsForAllViews.smoke.js +1 -1
  13. package/cypress/e2e/ILC/ListOrderingNew/editQuestion.smoke.js +1 -3
  14. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/allOrNothingForAllViews.smoke.js +2 -1
  15. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/previewContentsForAllViews.smoke.js +1 -1
  16. package/cypress/e2e/ILC/Matching/draggableOptions.js +29 -0
  17. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDropzoneConnectorStyle.js +52 -47
  18. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionAlignment.js +6 -4
  19. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionPlacement.js +60 -54
  20. package/cypress/e2e/ILC/MatchingDropdown/allOrNothingScoringForAllViews.smoke.js +1 -1
  21. package/cypress/e2e/ILC/MultipleSelection/checkAddAlternativeButton.js +34 -0
  22. package/cypress/e2e/ILC/MultipleSelection/checkScoringLabelBannerAndCorrectAnswer.js +79 -0
  23. package/cypress/e2e/ILC/MultipleSelection/editQuestion.smoke.js +1 -1
  24. package/cypress/e2e/ILC/MultipleSelection/editTabBasicSection.js +31 -0
  25. package/cypress/e2e/ILC/MultipleSelection/headerSection.js +36 -7
  26. package/cypress/e2e/ILC/MultipleSelection/previewContentsForInCompleteAuthoring.js +98 -0
  27. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/blankResponseScoring.js +5 -19
  28. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/checkScoringLabelBannerAndCorrectAnswer.js +80 -0
  29. package/cypress/e2e/ILC/MultipleSelectionGridNew/checkAddAlternativeButton.js +38 -0
  30. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +35 -1
  31. package/cypress/e2e/ILC/MultipleSelectionGridNew/headerSection.js +36 -10
  32. package/cypress/e2e/ILC/MultipleSelectionGridNew/previewContentForAllViewsInIncompleteAuthoring.smoke.js +71 -0
  33. package/cypress/e2e/ILC/SingleSelection/checkAddAlternativeButton.js +34 -0
  34. package/cypress/e2e/ILC/SingleSelection/checkScoringLabelBannerAndCorrectAnswer.js +79 -0
  35. package/cypress/e2e/ILC/SingleSelection/editQuestion.smoke.js +72 -0
  36. package/cypress/e2e/ILC/SingleSelection/editTabBasicSection.js +31 -0
  37. package/cypress/e2e/ILC/SingleSelection/headerSection.js +36 -11
  38. package/cypress/e2e/ILC/SingleSelection/previewContentsForInCompleteAuthoring.js +92 -0
  39. package/cypress/e2e/ILC/SingleSelectionGridNew/Scoring/blankResponseScoring.js +4 -18
  40. package/cypress/e2e/ILC/SingleSelectionGridNew/Scoring/checkScoringLabelBannerAndCorrectAnswerSection.js +79 -0
  41. package/cypress/e2e/ILC/SingleSelectionGridNew/checkAddAlternativeButton.js +35 -0
  42. package/cypress/e2e/ILC/SingleSelectionGridNew/editTabBasicSection.js +34 -0
  43. package/cypress/e2e/ILC/SingleSelectionGridNew/headerSection.js +37 -10
  44. package/cypress/e2e/ILC/SingleSelectionGridNew/previewContentsForAllViewsInIncompleteAuthoring.smoke.js +69 -0
  45. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViewsFormulaTemplate.smoke.js +5 -6
  46. package/cypress/e2e/ILC/TextEntryMath/customSettings.js +1 -1
  47. package/cypress/e2e/ILC/TextEntryMath/previewContentsForAllViews.smoke.js +33 -0
  48. package/cypress/e2e/ILC/TextSelection/ScoringGeneric/basicScoringForAllTextSelectionTypes.smoke.js +7 -7
  49. package/cypress/e2e/ILC/TextSelection/previewContentsForAllViews.smoke.js +8 -8
  50. package/cypress/e2e/ILC/UploadResponse/editTabBasicSection.js +2 -3
  51. package/cypress/e2e/ILC/VideoResponseNew/compactRecorderStyle.smoke.js +3 -3
  52. package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +6 -6
  53. package/cypress/pages/components/autoScoredScoringPreviewTab.js +0 -1
  54. package/cypress/pages/components/barAndLineChartComponent.js +1 -1
  55. package/cypress/pages/components/ckEditorInsertTableComponent.js +1 -1
  56. package/cypress/pages/components/ckEditorToolbar.js +1 -1
  57. package/cypress/pages/components/equationEditorSectionCommonComponent.js +2 -2
  58. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +11 -0
  59. package/cypress/pages/components/gridQuestionCommonComponent.js +3 -4
  60. package/cypress/pages/components/imageCanvasComponent.js +2 -0
  61. package/cypress/pages/components/layoutSectionComponent.js +1 -1
  62. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  63. package/cypress/pages/components/numberLineCommonComponent.js +3 -3
  64. package/cypress/pages/createItemPage.js +0 -7
  65. package/cypress/pages/dragAndDropIntoCategoriesPage.js +32 -0
  66. package/cypress/pages/drawingResponsePage.js +13 -3
  67. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +6 -5
  68. package/cypress/pages/fillInTheGapsOverImageTextPage.js +14 -4
  69. package/cypress/pages/graphingPage.js +12 -12
  70. package/cypress/pages/matchingPage.js +3 -3
  71. package/cypress/pages/multipleSelectionGridPage.js +4 -5
  72. package/cypress/pages/multipleSelectionPage.js +4 -6
  73. package/cypress/pages/shortTextResponsePage.js +1 -2
  74. package/cypress/pages/singleSelectionPage.js +2 -3
  75. package/cypress/pages/textEntryMathPage.js +13 -2
  76. package/cypress/pages/textEntryMathWithImagePage.js +2 -2
  77. package/cypress/pages/uploadResponsePage.js +1 -0
  78. package/package.json +1 -1
  79. package/cypress/e2e/ILC/ThinkSphere/dummyTest.js +0 -17
@@ -250,7 +250,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
250
250
  textSelectionPage.steps.switchToPreviewTab();
251
251
  });
252
252
 
253
- it('When the user selects \'Grading\' view without attempting the question, then correct/incorrect answer should not be displayed in the preview tab and correct answer section should be displayed with correct answers', () => {
253
+ it('When the user selects "Grading" view without attempting the question, then correct/incorrect answer should not be displayed in the preview tab and correct answer section should be displayed with correct answers', () => {
254
254
  textSelectionPage.steps.verifyPreviewScore(0, 20);
255
255
  textSelectionPage.steps.switchToGradingView();
256
256
  textSelectionPage.steps.verifyCorrectIncorrectIconForOptionNotExist(sentenceTextArray[0]);
@@ -260,7 +260,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
260
260
  textSelectionPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
261
261
  });
262
262
 
263
- it('When the user attempts the question incorrectly, then the user should be awarded 0 points and on switching to \'Grading\' view, incorrect icons should be displayed besides all incorrect responses, a status message with text \'Your answer is incorrect\' and correct answer section with all correct answers should be displayed', () => {
263
+ it('When the user attempts the question incorrectly, then the user should be awarded 0 points and on switching to "Grading" view, incorrect icons should be displayed besides all incorrect responses, a status message with text "Your answer is incorrect" and correct answer section with all correct answers should be displayed', () => {
264
264
  textSelectionPage.steps.resetQuestionPreview();
265
265
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[2]);
266
266
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[3]);
@@ -274,7 +274,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
274
274
  textSelectionPage.steps.verifyCorrectIconForOptionCorrectAnswerSection(sentenceTextArray[0]);
275
275
  textSelectionPage.steps.verifyCorrectIconForOptionCorrectAnswerSection(sentenceTextArray[1]);
276
276
  textSelectionPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
277
- /*cy.log('When user clicks on Check answer button after attempting the question incorrectly, then incorrect icons should be displayed besides all incorrect responses, a status message with text \'Your answer is incorrect\' should be displayed and correct answer section should not be displayed')
277
+ /*cy.log('When user clicks on Check answer button after attempting the question incorrectly, then incorrect icons should be displayed besides all incorrect responses, a status message with text "Your answer is incorrect" should be displayed and correct answer section should not be displayed')
278
278
  textSelectionPage.steps.checkAnswer();
279
279
  textSelectionPage.steps.verifyCorrectIncorrectIconForOptionNotExist(sentenceTextArray[0]);
280
280
  textSelectionPage.steps.verifyCorrectIncorrectIconForOptionNotExist(sentenceTextArray[1]);
@@ -284,7 +284,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
284
284
  textSelectionPage.steps.verifyCorrectAnswerSectionNotExists();*/
285
285
  });
286
286
 
287
- it('When the user attempts the question partially correct with some correct and some incorrect options, then the user should be awarded 0 points and on switching to \'Grading\' view, correct icon should be displayed besides the correct answer response, incorrect icon should be displayed besides the incorrect answer response, a status message with text \'Your answer is incorrect\' and correct answer section with all correct answers should be displayed', () => {
287
+ it('When the user attempts the question partially correct with some correct and some incorrect options, then the user should be awarded 0 points and on switching to "Grading" view, correct icon should be displayed besides the correct answer response, incorrect icon should be displayed besides the incorrect answer response, a status message with text "Your answer is incorrect" and correct answer section with all correct answers should be displayed', () => {
288
288
  textSelectionPage.steps.resetQuestionPreview();
289
289
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[0]);
290
290
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[2]);
@@ -298,7 +298,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
298
298
  textSelectionPage.steps.verifyCorrectIconForOptionCorrectAnswerSection(sentenceTextArray[0]);
299
299
  textSelectionPage.steps.verifyCorrectIconForOptionCorrectAnswerSection(sentenceTextArray[1]);
300
300
  textSelectionPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
301
- /*cy.log('When user clicks on Check answer button after he attempts the question partially correct with some correct and some incorrect options, 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\' should be displayed and correct answer section should not be displayed')
301
+ /*cy.log('When user clicks on Check answer button after he attempts the question partially correct with some correct and some incorrect options, 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" should be displayed and correct answer section should not be displayed')
302
302
  textSelectionPage.steps.checkAnswer();
303
303
  textSelectionPage.steps.verifyCorrectIconForOption(sentenceTextArray[0]);
304
304
  textSelectionPage.steps.verifyCorrectIncorrectIconForOptionNotExist(sentenceTextArray[1]);
@@ -308,7 +308,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
308
308
  textSelectionPage.steps.verifyCorrectAnswerSectionNotExists();*/
309
309
  });
310
310
 
311
- it('When the user attempts the question correctly then the user should be awarded full points and on switching to \'Grading\' view, correct icon should be displayed besides the correct answer responses, a status message with text \'Your answer is correct\' should be displayed and correct answer section should not be displayed', () => {
311
+ it('When the user attempts the question correctly then the user should be awarded full points and on switching to "Grading" view, correct icon should be displayed besides the correct answer responses, a status message with text "Your answer is correct" should be displayed and correct answer section should not be displayed', () => {
312
312
  textSelectionPage.steps.resetQuestionPreview();
313
313
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[0]);
314
314
  textSelectionPage.steps.selectOptionInPreviewTab(sentenceTextArray[1]);
@@ -321,7 +321,7 @@ describe('Create Item page - Text selection - Basic scoring for all text selecti
321
321
  textSelectionPage.steps.verifyCorrectIncorrectAnswerLabel('correct');
322
322
  textSelectionPage.steps.verifyCorrectAnswerSectionNotExists();
323
323
  textSelectionPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
324
- /*cy.log('When user clicks on Check answer button after he attempts the question correctly, then correct icon should be displayed besides the correct answer responses, a status message with text \'Your answer is correct\' should be displayed and correct answer section should not be displayed')
324
+ /*cy.log('When user clicks on Check answer button after he attempts the question correctly, then correct icon should be displayed besides the correct answer responses, a status message with text "Your answer is correct" should be displayed and correct answer section should not be displayed')
325
325
  textSelectionPage.steps.checkAnswer();
326
326
  textSelectionPage.steps.verifyCorrectIconForOption(sentenceTextArray[0]);
327
327
  textSelectionPage.steps.verifyCorrectIconForOption(sentenceTextArray[1]);
@@ -82,12 +82,12 @@ describe('Create item page - Text selection : Preview contents', () => {
82
82
  });
83
83
  });
84
84
 
85
- it('The text which is not available as option should not be interactive in preview tab', () => {
85
+ it(`Text selection - ${view} - The text which is not available as option should not be interactive in preview tab`, () => {
86
86
  textSelectionPage.steps.verifyNonOptionTextIsNotInteractiveInPreviewTab(paragraphTextArray[3]);
87
87
  });
88
88
 
89
89
  if (view !== 'Grading view' && view !== 'Correct answer view') {
90
- it('The selected options in specify possible options section should be displayed and by default all options should not be selected', () => {
90
+ it(`The selected options in specify possible options section should be displayed and by default all options should not be selected`, () => {
91
91
  for (let index = 0; index < 3; index++) {
92
92
  utilities.verifyInnerText(utilities.getNthElement(textSelectionPage.optionPreviewTab(), index), paragraphTextArray[index]);
93
93
  utilities.verifyElementVisibilityState(utilities.getNthElement(textSelectionPage.optionPreviewTab(), index), 'visible');
@@ -96,34 +96,34 @@ describe('Create item page - Text selection : Preview contents', () => {
96
96
  utilities.verifyElementCount(textSelectionPage.optionPreviewTab(), 3);
97
97
  });
98
98
 
99
- it('When user hovers on the available options, then those options should be displayed in hover state highlight', () => {
99
+ it(`When user hovers on the available options, then those options should be displayed in hover state highlight`, () => {
100
100
  for (let index = 0; index < 3; index++) {
101
101
  textSelectionPage.steps.verifyHoverStateOfOptionInPreviewTab(paragraphTextArray[index], "blue");
102
102
  };
103
103
  });
104
104
 
105
- it('When user selects an option, then that option should be displayed in selected state', () => {
105
+ it(`When user selects an option, then that option should be displayed in selected state`, () => {
106
106
  textSelectionPage.steps.selectOptionInPreviewTab(paragraphTextArray[0]);
107
107
  textSelectionPage.steps.verifySelectedStateOptionInPreviewTab(paragraphTextArray[0], "blue");
108
108
  textSelectionPage.steps.selectOptionInPreviewTab(paragraphTextArray[1]);
109
109
  textSelectionPage.steps.verifySelectedStateOptionInPreviewTab(paragraphTextArray[1], "blue");
110
110
  });
111
111
 
112
- it('When user clicks on a selected option, then that option should be deselected', () => {
112
+ it(`When user clicks on a selected option, then that option should be deselected`, () => {
113
113
  textSelectionPage.steps.deselectOptionInPreviewTab(paragraphTextArray[0]);
114
114
  textSelectionPage.steps.verifyStandardStateOptionInPreviewTab(paragraphTextArray[0]);
115
115
  });
116
116
  } else if (view === 'Grading view') {
117
- it('The question text should be displayed with the selected correct options and status message \' Your answer is incorrect\' should be displayed', () => {
117
+ it(`The question text should be displayed with the selected correct options and status message 'Your answer is incorrect' should be displayed`, () => {
118
118
  textSelectionPage.steps.verifyCorrectIconForOption(paragraphTextArray[1]);
119
119
  textSelectionPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
120
120
  });
121
121
 
122
- it('The submitted answer options should not be editable', () => {
122
+ it(`The submitted answer options should not be editable`, () => {
123
123
  textSelectionPage.steps.verifyAnswerSectionNotEditableInPreviewTab();
124
124
  });
125
125
  } else {
126
- it('The question text should be displayed with the selected correct options', () => {
126
+ it(`The question text should be displayed with the selected correct options`, () => {
127
127
  for (let index = 0; index < 2; index++) {
128
128
  textSelectionPage.steps.verifyCorrectIconForOption(paragraphTextArray[index]);
129
129
  };
@@ -116,8 +116,7 @@ describe('Create question page - Upload Response: Question Instructions, Support
116
116
  it('When the user deselects all the file types from the \'Supported file types\' accordion menu, then a validation text \'Error: Please select a file type.\' should not be displayed', () => {
117
117
  cy.log('Deselecting all file types to get error message.');
118
118
  uploadResponsePage.steps.uncheckDefaultSelectedFileTypes();
119
- utilities.verifyInnerText(uploadResponsePage.errorMessage(), 'Error: Please select a file type.');
120
- utilities.verifyElementVisibilityState(uploadResponsePage.errorMessage(), 'visible');
119
+ utilities.verifyElementVisibilityState(uploadResponsePage.errorMessage(), 'notExist');
121
120
  });
122
121
 
123
122
  uploadResponsePage.tests.verifyErrorMessageCSSAndA11y();
@@ -226,7 +225,7 @@ describe('Create question page - Upload Response: Question Instructions, Support
226
225
 
227
226
  it('User should be able to upload maximum 15 files and count in the file limit section should update accordingly', () => {
228
227
  uploadResponsePage.steps.fileUploadAndVerify(['sample.csv', 'sample.xlsx', 'sample.gif', 'sample.jpg', 'sample.pdf', 'image.png', 'sample.ppt', 'sample.pub', 'sample.rtf', 'sample.txt', 'sample.doc', 'sample.xps', 'sample.zip', 'sample1.jpg', 'sample2.jpg']);
229
- utilities.verifyInnerText(uploadResponsePage.uploadedFileCount(), '15/15 File Limit');
228
+ uploadResponsePage.steps.verifyUploadedFileLimitCount(15, 15);
230
229
  });
231
230
 
232
231
  it('When user updates \'Maximum number of files\' input field , then file limit should be updated in preview tab', () => {
@@ -19,7 +19,7 @@ describe('Preview of Video response for compact recorder style', () => {
19
19
  videoResponsePage.steps.switchToPreviewTab();
20
20
  });
21
21
 
22
- it('If user selects \'Compact\' option from \'video recorder style\' toggle buttons, then \'Record\' button and \'Click the button to start recording...\' help text should be displayed in the preview tab', () => {
22
+ it(`Video response : If user selects \'Compact\' option from \'video recorder style\' toggle buttons, then \'Record\' button and \'Click the button to start recording...\' help text should be displayed in the preview tab`, () => {
23
23
  utilities.verifyElementVisibilityState(videoResponsePage.recordButtonCompactPreview(), 'visible');
24
24
  utilities.verifyInnerText(videoResponsePage.recordButtonCompactPreview(), 'Record');
25
25
  utilities.verifyInnerText(videoResponsePage.recordingHelpTextCompactPreview(), 'Click the button to start recording...');
@@ -139,7 +139,7 @@ describe('Preview of Video response for compact recorder style', () => {
139
139
  cy.checkAccessibility(videoResponsePage.previewTabQuestionWrapper());
140
140
  });
141
141
 
142
- it('When the recorder is in paused state and the user clicks on the \'Resume recording\' button the recording should get resumed from where it was paused. Resume recording button should update to Pause button and the help text should update to "Recording...". Resume icon button should get replaced with Pause icon button in the flyout, user should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs / min:sec)\'. Stop button should be displayed in preview tab.', () => {
142
+ it(`Video response: When the recorder is in paused state and the user clicks on the \'Resume recording\' button the recording should get resumed from where it was paused. Resume recording button should update to Pause button and the help text should update to "Recording...". Resume icon button should get replaced with Pause icon button in the flyout, user should be able to view the duration of their recorded video in minutes, displayed as \'(min:secs / min:sec)\'. Stop button should be displayed in preview tab.`, () => {
143
143
  videoResponsePage.steps.resumeRecordingCompactPreview();
144
144
  utilities.verifyElementVisibilityState(videoResponsePage.resumeRecordingButtonCompactPreview(), 'notExist');
145
145
  utilities.verifyElementVisibilityState(videoResponsePage.pauseRecordingButtonCompactPreview(), 'visible');
@@ -196,7 +196,7 @@ describe('Preview of Video response for compact recorder style', () => {
196
196
  utilities.verifyElementVisibilityState(videoResponsePage.playPlaybackButtonCompactPreview(), 'visible');
197
197
  });
198
198
 
199
- it('When recording is inprogress, recording should stop at maximum recording duration and \'Stop\' button should get replaced with Retake button. Playback button should be displayed in enabled state.', () => {
199
+ it(`Video response : When recording is inprogress, recording should stop at maximum recording duration and \'Stop\' button should get replaced with Retake button. Playback button should be displayed in enabled state.`, () => {
200
200
  cy.log('Pre-step: Switch to edit tab and set maximum recording duration to 10 secs')
201
201
  videoResponsePage.steps.switchToEditTab();
202
202
  videoResponsePage.steps.setMaximumRecordingDuration(40);
@@ -117,7 +117,6 @@ describe('Create item page - Video response: Question instructions, Maximum reco
117
117
  });
118
118
  });
119
119
 
120
- //Failing due to https://redmine.zeuslearning.com/issues/573549
121
120
  describe('Maximum recording duration: Edit tab', () => {
122
121
  abortEarlySetup();
123
122
  before(() => {
@@ -162,8 +161,7 @@ describe('Create item page - Video response: Question instructions, Maximum reco
162
161
 
163
162
  it('When the user focuses in and out of the empty \'Maximum recording duration\' input field, \'Error: Maximum recording duration is required.\' validation error should be displayed below the \'Maximum recording duration\' input field', () => {
164
163
  videoResponsePage.steps.clearMaximumRecordingDurationInputField();
165
- //Failing due to https://redmine.zeuslearning.com/issues/573549
166
- // utilities.verifyInnerText(videoResponsePage.errorMessage(), 'Error: Maximum recording duration is required.');
164
+ utilities.verifyInnerText(videoResponsePage.errorMessage(), 'Error: Maximum recording duration is required.');
167
165
  utilities.verifyElementVisibilityState(videoResponsePage.errorMessage(), 'visible');
168
166
  });
169
167
 
@@ -208,8 +206,9 @@ describe('Create item page - Video response: Question instructions, Maximum reco
208
206
 
209
207
  it('When the user focuses in and out of the empty \'Maximum recording duration\' input field, \'Error: Maximum recording duration is required.\' validation error should be displayed below the \'Maximum recording duration\' input field', () => {
210
208
  videoResponsePage.steps.clearMaximumRecordingDurationInputField();
211
- //Failing due to https://redmine.zeuslearning.com/issues/573549
212
- // utilities.verifyInnerText(videoResponsePage.errorMessage(), 'Error: Maximum recording duration is required.');
209
+ videoResponsePage.steps.toggleMaximumRecordingDurationInputField('Secs');
210
+ videoResponsePage.steps.clearMaximumRecordingDurationInputField();
211
+ utilities.verifyInnerText(videoResponsePage.errorMessage(), 'Error: Maximum recording duration is required.');
213
212
  utilities.verifyElementVisibilityState(videoResponsePage.errorMessage(), 'visible');
214
213
  });
215
214
 
@@ -221,7 +220,7 @@ describe('Create item page - Video response: Question instructions, Maximum reco
221
220
  });
222
221
 
223
222
  it('When the user has set \'Maximum recording duration\' to \'0\' (zero), a validation message \'Error: Value must be greater than 0 mins.\' should be displayed', () => {
224
- videoResponsePage.steps.setMaximumRecordingDuration(0);
223
+ videoResponsePage.steps.setMaximumRecordingDurationNew(0);
225
224
  videoResponsePage.steps.verifyMaximumRecordingDuration(0);
226
225
  // Uncomment once https://redmine.zeuslearning.com/issues/583618 is resolved
227
226
  // utilities.verifyInnerText(videoResponsePage.errorMessage(), 'Error: Value must be greater than 0 mins.');
@@ -233,6 +232,7 @@ describe('Create item page - Video response: Question instructions, Maximum reco
233
232
  it('When the user updates the \'Maximum recording duration\' value, then the validation message \'Error: Value must be greater than 0 mins.\' should disappear', () => {
234
233
  videoResponsePage.steps.setMaximumRecordingDuration(5);
235
234
  videoResponsePage.steps.verifyErrorMessageIsNotDisplayed();
235
+ videoResponsePage.steps.toggleMaximumRecordingDurationInputField('Mins');
236
236
  });
237
237
 
238
238
  it('When user tries to add a value greater than 10 it should be automatically set back to 10 and should not allow to add greater than set value', () => {
@@ -153,7 +153,6 @@ const steps = {
153
153
  }
154
154
 
155
155
  const tests = {
156
- //Note: need to fix this function once save as you go is available for all question types
157
156
  verifyPreviewModesAndScoreWhenPointsAndCorrectAnswersIsNotSet: () => {
158
157
  it('When the user has not set correct answer option(s) and alloted points, \'Student view\' radio button should be checked, \'Grading view\' button should not be checked, 0 points should be displayed and no correct or incorrect icons should be displayed in the preview tab', () => {
159
158
  utilities.verifyInnerText(autoScoredScoringPreviewTab.studentViewRadioButtonLabel(), 'Student view');
@@ -37,7 +37,7 @@ const selectors = {
37
37
  xAxisCheckbox: () => cy.get('[data-ngie-testid="x-axis-checkbox"] input'),
38
38
  xAxisLabelSelectChartType: () => cy.get('[data-ngie-testid="x-axis-checkbox"] .MuiFormControlLabel-label'),
39
39
  gridCellSelectChartType: () => cy.get('[class*="Chartsstyles__ChartsQuestionWrapper"] .grid-cell'),
40
- gridSnappingLabel: () => cy.get('[aria-labelledby="grid snapping"]'),
40
+ gridSnappingLabel: () => cy.get('[for="grid snapping"]'),
41
41
  gridSnappingInputField: () => cy.get('input[id="grid snapping"]'),
42
42
 
43
43
  //Specify correct answer section
@@ -756,4 +756,4 @@ const steps = {
756
756
  export const ckEditorInsertTableComponent = {
757
757
  ...selectors,
758
758
  steps
759
- }
759
+ }
@@ -81,4 +81,4 @@ const steps = {
81
81
  export const ckEditorToolbar = {
82
82
  ...selectors,
83
83
  steps
84
- }
84
+ }
@@ -312,7 +312,6 @@ const tests = {
312
312
  equationEditorSectionCommonComponent.steps.focusInResponseAnswerInputFieldPreviewTab(0);
313
313
  }
314
314
  utilities.verifyElementVisibilityState(equationEditorFlyout.dialogBox(), 'visible');
315
- cy.eyesCheckWindow('Equation Editor flyout in preview tab');
316
315
  });
317
316
 
318
317
  it(`In the equation editor flyout the ${allCategories[0].displayName} should be selected by default and the Equation editor input field should be prefilled with the added equation`, () => {
@@ -364,6 +363,7 @@ const tests = {
364
363
  equationEditorSectionCommonComponent.steps.focusInResponseAnswerInputFieldPreviewTab(0);
365
364
  }
366
365
  utilities.verifyElementVisibilityState(equationEditorFlyout.dialogBox(), 'visible');
366
+ cy.eyesCheckWindow('Equation Editor flyout in preview tab');
367
367
  });
368
368
 
369
369
  it('\'Done\'button should be displayed at the bottom of the flyout', () => {
@@ -431,7 +431,7 @@ const tests = {
431
431
  cy.checkAccessibility(equationEditorFlyout.dialogBox());
432
432
  });
433
433
 
434
- it('Cancel button should be displayed in the flyout and when user clicks the \'Cancel\' button then the flyout should close', () => {
434
+ it(`${questionType} Cancel button should be displayed in the flyout and when user clicks the 'Cancel' button then the flyout should close`, () => {
435
435
  utilities.verifyElementVisibilityState(equationEditorFlyout.buttonCancel(), 'visible');
436
436
  utilities.verifyInnerText(equationEditorFlyout.buttonCancel(), 'Cancel');
437
437
  equationEditorFlyout.steps.clickOnEquationEditorCancelButton();
@@ -44,6 +44,7 @@ const selectors = {
44
44
 
45
45
  //Preview tab
46
46
  dropdownWrapperPreviewTab: () => cy.get('[class*="question-preview-wrapper"] .response-dropdown-wrapper'),
47
+ dropdownPreviewWrapper: () => cy.get('[class*="AnswerStatusIconAndResponseWrapper"]'),
47
48
  dropdownPreviewTab: () => cy.get('[class*="question-preview-wrapper"] [aria-haspopup="listbox"]'),
48
49
  dropdownPlaceholderText: () => cy.get('.cloze-with-dropdown-placeholder'),
49
50
  dropdownTextLabel: () => cy.get('.dropdown-label-text'),
@@ -734,6 +735,16 @@ const steps = {
734
735
  });
735
736
  }
736
737
  });
738
+ },
739
+
740
+ checkIfDropdownMenuOverflowForAutoScale: () => {
741
+ fillInTheGapsDropdownCommonComponent.dropdownPreviewWrapper()
742
+ .should('exist')
743
+ .then(($dropdown) => {
744
+ const scrollWidth = $dropdown[0].scrollWidth;
745
+ const clientWidth = $dropdown[0].clientWidth;
746
+ expect(scrollWidth).to.not.be.greaterThan(clientWidth);
747
+ });
737
748
  }
738
749
  }
739
750
 
@@ -8,6 +8,7 @@ import { autoScoredSpecifyCorrectAnswerSection } from "./autoScoredSpecifyCorrec
8
8
  import { colorPopupComponent } from "./colorPopupComponent";
9
9
  import { commonComponents } from "./commonComponents";
10
10
  import { createQuestionBasePage } from "./createQuestionBasePage";
11
+ import { scoringSectionBaseEditTab } from "./scoringSectionBaseEditTab";
11
12
  import { specifyRowsAndColumnsComponent } from "./specifyRowsAndColumnsComponent";
12
13
  const css = Cypress.env('css');
13
14
 
@@ -105,7 +106,7 @@ const selectors = {
105
106
  //Style and layout customization
106
107
  layoutLabel: () => cy.get('[class*="Layoutstyles__SectionWrapper"]'),
107
108
  rowSpacingDropdownLabel: () => cy.get('#Row-spacing-dropdown-label'),
108
- rowSpacingDropdown: () => cy.get('[aria-labelledby*="Row-spacing-dropdown-label"]').eq(0),
109
+ rowSpacingDropdown: () => cy.get('[aria-labelledby*="Row-spacing-select"]').eq(0),
109
110
  rowSpacingDropdownOptions: (ariaLabel = null) => {
110
111
  if (ariaLabel) {
111
112
  return cy.get(`[aria-labelledby*="Row-spacing-dropdown-label"] .dropdown-menu-item[aria-label*="${ariaLabel}"]`)
@@ -114,7 +115,7 @@ const selectors = {
114
115
  }
115
116
  },
116
117
  columnSpacingDropdownLabel: () => cy.get('#Column-spacing-dropdown-label'),
117
- columnSpacingDropdown: () => cy.get('[aria-labelledby*="Column-spacing-dropdown-label"]'),
118
+ columnSpacingDropdown: () => cy.get('[aria-labelledby*="Column-spacing-select"]'),
118
119
  columnSpacingDropdownOptions: (ariaLabel = null) => {
119
120
  if (ariaLabel) {
120
121
  return cy.get(`[aria-labelledby*="Column-spacing-dropdown-label"] .dropdown-menu-item[aria-label*="${ariaLabel}"]`)
@@ -2052,7 +2053,6 @@ const steps = {
2052
2053
  .within(() => {
2053
2054
  utilities.verifyElementVisibilityState(commonComponents.warningIcon(), 'notExist');
2054
2055
  });
2055
-
2056
2056
  scoringSectionBaseEditTab.pointsWrapper()
2057
2057
  .within(() => {
2058
2058
  utilities.verifyElementVisibilityState(commonComponents.warningIcon(), 'notExist');
@@ -2071,7 +2071,6 @@ const steps = {
2071
2071
  }
2072
2072
 
2073
2073
  const tests = {
2074
- //Note: need to remove this as change the global function once save as you go is available for all question types
2075
2074
  verifyPreviewModesAndScoreWhenPointsAndCorrectAnswersIsNotSet: () => {
2076
2075
  it('When the user has not set correct answer option(s) and alloted points, \'Student view\' radio button should be checked, \'Grading view\' button should not be checked, 0 points should be displayed and no correct or incorrect icons should be displayed in the preview tab', () => {
2077
2076
  utilities.verifyInnerText(autoScoredScoringPreviewTab.studentViewRadioButtonLabel(), 'Student view');
@@ -1017,6 +1017,8 @@ const tests = {
1017
1017
  });
1018
1018
 
1019
1019
  it(`'Image alignment' section should have three options ${alignmentOptions} and ${alignmentOptions[0]} should be active selection by default`, () => {
1020
+ //Uncheck Fill image to canvas checkbox to verify image is left aligned in the canvas
1021
+ imageCanvasComponent.steps.uncheckFillImageToCanvasCheckbox();
1020
1022
  utilities.verifyInnerText(imageCanvasComponent.topLeftAlignmentButton(), 'Top left');
1021
1023
  utilities.verifyElementVisibilityState(imageCanvasComponent.topLeftAlignmentButton(), 'visible');
1022
1024
  utilities.verifyInnerText(imageCanvasComponent.centerAlignmentButton(), 'Center');
@@ -23,7 +23,7 @@ const selectors = {
23
23
  heightInputField: () => cy.get('.number-line-layout-options input[aria-label="Height (px)"]'),
24
24
  marginLabel: () => cy.get('.margin-input-wrapper [for="Margin (px)"]'),
25
25
  marginInputField: () => cy.get('.number-line-layout-options input[aria-label="Margin (px)"]'),
26
- responseSpacingLabel: () => cy.get('.dropdown-wrapper [aria-labelledby="Response Spacing"]'),
26
+ responseSpacingLabel: () => cy.get('.dropdown-wrapper [for="Response Spacing"]'),
27
27
  responseSpacingInputField: () => cy.get('.dropdown-wrapper input[aria-label="Response Spacing"]'),
28
28
  makeResponsiveLabel: () => cy.get('.mobile-responsive-wrapper .MuiFormControlLabel-label'),
29
29
  makeResponsiveCheckbox: () => cy.get('.mobile-responsive-wrapper input'),
@@ -26,7 +26,7 @@ const steps = {
26
26
  */
27
27
  selectOptionFromMaxCapacityPerDropzoneDropdown: (listOption) => {
28
28
  maximumCapacityPerDropzoneComponent.maxCapacityPerDropzoneDropdownListOptions(listOption)
29
- .click();
29
+ .click({force: true});
30
30
  },
31
31
 
32
32
  verifyMaxCapacityPerDropzoneListOptions: (options) => {
@@ -20,9 +20,9 @@ const selectors = {
20
20
  correctIncorrectAnswerTextWrapper: () => cy.get('[class*="CorrectIncorrectWrapper"]'),
21
21
  warningMessage: () => cy.get('.disabled-wrapper-cls [class*="DisabledTextWrapper"]'),
22
22
  warningMessageContainer: () => cy.get('.disabled-wrapper-cls'),
23
- nodesOnNumberLineOfNumberLineSection: () => cy.get('[class*="LineGridSettingstyles__LineSettingWrapper"] .ngie-jxgbox [stroke-linecap="round"]'),
24
- nodesOnNumberLineOfSpecifyCorrectAnswerSection: () => cy.get('[class*="AnswerAccordionstyles__AnswerPanel"] .ngie-jxgbox [stroke-linecap="round"]'),
25
- nodesOnNumberLineInPreviewTab: () => cy.get('[class*="TabsComponentstyles__PreviewWrapper"] .ngie-jxgbox [stroke-linecap="round"]'),
23
+ nodesOnNumberLineOfNumberLineSection: () => cy.get('[class*="LineGridSettingstyles__LineSettingWrapper"] .ngie-jxgbox [id*="ticks"][stroke-linecap="round"]'),
24
+ nodesOnNumberLineOfSpecifyCorrectAnswerSection: () => cy.get('[class*="AnswerAccordionstyles__AnswerPanel"] .ngie-jxgbox [id*="ticks"][stroke-linecap="round"]'),
25
+ nodesOnNumberLineInPreviewTab: () => cy.get('[class*="TabsComponentstyles__PreviewWrapper"] .ngie-jxgbox [id*="ticks"][stroke-linecap="round"]'),
26
26
  }
27
27
 
28
28
  const steps = {
@@ -31,7 +31,6 @@ const selectors = {
31
31
  sectionsNumber1Label: () => cy.get('.tablist-numbered-label').eq(0),
32
32
  sectionsNumber2Label: () => cy.get('.tablist-numbered-label').eq(1),
33
33
  noPreviewText: () => cy.get('[class*="__NoPreview"]'),
34
- buttonEditItemTitle: () => cy.get('[data-at="edit-button"]'),
35
34
  editItemButton: () => cy.get('.column-component-column .icon-pencil'),
36
35
  pointsValue: () => cy.get('[class*="PreviewTabstyles__PointsValue"]'),
37
36
  moreActionsButton: () => cy.get('[class*="MoreActionMenuButton"] [type="button"]'),
@@ -149,8 +148,6 @@ const steps = {
149
148
  enterTitle: (value) => {
150
149
  createItemPage.titleInputField()
151
150
  .type(value);
152
- createItemPage.titleInputField()
153
- .blur();
154
151
  },
155
152
 
156
153
  clickOnSubmitButton: () => {
@@ -586,10 +583,6 @@ const steps = {
586
583
  });
587
584
  },
588
585
 
589
- editItemTitle: () => {
590
- createItemPage.buttonEditItemTitle()
591
- },
592
-
593
586
  /**
594
587
  * @param {number} index of the question
595
588
  * @description this function is used to click on edit item button
@@ -328,6 +328,38 @@ const steps = {
328
328
  };
329
329
  },
330
330
 
331
+ /**
332
+ * @param {number} cellIndex - Index of the table cell.
333
+ * @param {("Heading" | "Subheading" | "Text" | "Dropzone" | "None")} cellProperty - Type of property to verify.
334
+ * @description Verifies the appearance and content of a specific property in a table cell on the preview tab.
335
+ */
336
+ verifyTableCellPropertyStudentView: (cellIndex, cellProperty) => {
337
+ switch (cellProperty) {
338
+ case 'Heading':
339
+ utilities.getNthElement(dragAndDropIntoCategoriesPage.cellContainerPreviewTab(), cellIndex)
340
+ .should('have.class', 'header-cell');
341
+ break;
342
+ case 'Subheading':
343
+ utilities.getNthElement(dragAndDropIntoCategoriesPage.cellContainerPreviewTab(), cellIndex)
344
+ .should('have.class', 'sub-header-cell');
345
+ break;
346
+ case 'Text':
347
+ utilities.getNthElement(dragAndDropIntoCategoriesPage.cellContainerPreviewTab(), cellIndex)
348
+ .should('have.class', 'text-cell');
349
+ break;
350
+ case 'Dropzone':
351
+ utilities.getNthElement(dragAndDropIntoCategoriesPage.cellContainerPreviewTab(), cellIndex)
352
+ .should('have.class', 'dropzone-cell');
353
+ break;
354
+ case 'None':
355
+ utilities.getNthElement(dragAndDropIntoCategoriesPage.cellContainerPreviewTab(), cellIndex)
356
+ .should('have.class', 'none-cell');
357
+ break;
358
+ default:
359
+ throw new Error('Invalid list option');
360
+ };
361
+ },
362
+
331
363
  /**
332
364
  * @param {number} cellIndex - Index of the table cell.
333
365
  * @param {("Heading" | "Subheading" | "Text" | "Dropzone" | "None")} cellProperty - Type of property to verify.
@@ -1,5 +1,5 @@
1
1
  import utilities from "../support/helpers/utilities"
2
- import { questionInstructionsComponent, createQuestionBasePage, commonComponents, additionalSettingsPanel, scoringSectionBaseEditTab, customizeSpecialCharacterComponent, customizeMathCharacterComponent } from "./components"
2
+ import { questionInstructionsComponent, createQuestionBasePage, commonComponents, additionalSettingsPanel, scoringSectionBaseEditTab, customizeSpecialCharacterComponent, customizeMathCharacterComponent, backgroundImageUploadComponent } from "./components"
3
3
  import { createItemPage } from "./createItemPage";
4
4
  import { dialogBoxBase } from "./dialogBoxBase";
5
5
 
@@ -15,6 +15,7 @@ const selectors = {
15
15
  ...createQuestionBasePage,
16
16
  ...customizeSpecialCharacterComponent,
17
17
  ...customizeMathCharacterComponent,
18
+ ...backgroundImageUploadComponent,
18
19
  //Customize toolbar options and controls
19
20
  customizeToolbarOptionsAndControlsAccordion: () => cy.get('.drawing-response-accordion .ngie-accordion-summary'),
20
21
  customizeToolbarOptionsAndControlsLabel: () => cy.get('.customized-options-label'),
@@ -116,9 +117,9 @@ const selectors = {
116
117
  imageRadioButton: () => cy.get('input[aria-label="Image"]'),
117
118
  patternLabel: () => cy.get('label[aria-label="Pattern"]'),
118
119
  patternRadioButton: () => cy.get('input[aria-label="Pattern"]'),
119
- canvasWidthLabel: () => cy.get('label[aria-labelledby="Canvas width (px)"]'),
120
+ canvasWidthLabel: () => cy.get('label[for="Canvas width (px)"]'),
120
121
  canvasWidthInputField: () => cy.get('input[aria-label="Canvas width (px)"]'),
121
- canvasHeightLabel: () => cy.get('label[aria-labelledby="Canvas height (px)"]'),
122
+ canvasHeightLabel: () => cy.get('label[for="Canvas height (px)"]'),
122
123
  canvasHeightInputField: () => cy.get('input[aria-label="Canvas height (px)"]'),
123
124
  aspectRatioButton: () => cy.get('.lock-reset-icon-wrapper button').eq(0),
124
125
  resetDimensionsButton: () => cy.get('.lock-reset-icon-wrapper button').eq(1),
@@ -231,6 +232,7 @@ const steps = {
231
232
  ...customizeSpecialCharacterComponent.steps,
232
233
  ...customizeMathCharacterComponent.steps,
233
234
  ...createItemPage.steps,
235
+ ...backgroundImageUploadComponent.steps,
234
236
  /**
235
237
  * @param {string[]} arrayOfToolbarOptions array of toolbar options to be selected
236
238
  * @description this function selects toolbar options from edit tab
@@ -642,6 +644,14 @@ const steps = {
642
644
  .attachFile(file);
643
645
  },
644
646
 
647
+ /**
648
+ * @description this function deletes an uploaded file
649
+ */
650
+ deleteUploadedFile: () => {
651
+ backgroundImageUploadComponent.steps.deleteImage();
652
+ backgroundImageUploadComponent.steps.clickOnDeleteButtonInDeleteImagePopup();
653
+ },
654
+
645
655
  verifyImageContainerErrorMessage: (fileName) => {
646
656
  drawingResponsePage.insertImageContainerErrorMessage()
647
657
  .should('have.text', `The following files were rejected${fileName} is too large. The maximum file size is 5MB`)
@@ -76,9 +76,9 @@ const selectors = {
76
76
  optionAlignmentInDropzoneOptions: (alignmentOption) => cy.get(`.option-alignment button[aria-label*="option alignment in dropzone ${alignmentOption}"]`),
77
77
  setHeightAndWidthForAllDropzoneCheckboxLabel: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-dropzones-checkbox"] .MuiFormControlLabel-label'),
78
78
  setHeightAndWidthForAllDropzoneCheckbox: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-dropzones-checkbox"] input'),
79
- dropzoneHeightInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Height (px)"]'),
79
+ dropzoneHeightInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [for="Height (px)"]'),
80
80
  dropzoneHeightInputField: () => cy.get('.dropzone-text-container-dimension [id="Height (px)"]'),
81
- dropzoneWidthInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Width (px)"]'),
81
+ dropzoneWidthInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [for="Width (px)"]'),
82
82
  dropzoneWidthInputField: () => cy.get('.dropzone-text-container-dimension [id="Width (px)"]'),
83
83
  draggableOptionPanelPlacementLabel: () => cy.get('.draggable-option-panel-label'),
84
84
  panelPlacementLabel: () => cy.get('.panel-placement-style .options-label'),
@@ -711,7 +711,7 @@ const steps = {
711
711
 
712
712
  verifyNoImageAlternativeTextPresentInPreviewTab: () => {
713
713
  imageCanvasComponent.canvasImageInPreviewTab()
714
- .should('have.attr', 'alt', 'highlightImage.jpg');
714
+ .should('have.attr', 'alt', 'highlightImage');
715
715
  },
716
716
 
717
717
  /**
@@ -765,10 +765,11 @@ const steps = {
765
765
 
766
766
  checkBlockRadioButton: () => {
767
767
  fillInTheGapsOverImageDragAndDropPage.blockRadioButton()
768
- .click()
768
+ .click();
769
769
  cy.wait(500);
770
770
  fillInTheGapsOverImageDragAndDropPage.blockRadioButton()
771
- .should('be.checked');
771
+ .parents('[data-value="block"]')
772
+ .should('have.class', 'radio-option-checked');
772
773
  },
773
774
 
774
775
  verifyInlineOptionPlacementSpecifyCorrectAnswer: () => {
@@ -36,9 +36,9 @@ const selectors = {
36
36
  correctAnswerSectionWithoutEnumerationWrapper: () => cy.get('.label-image-with-text-correct-answer-wrapper'),
37
37
  setHeightAndWidthForAllTextContainersCheckboxLabel: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-text-containers-checkbox"] .MuiFormControlLabel-label'),
38
38
  setHeightAndWidthForAllTextContainersCheckbox: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-text-containers-checkbox"] input'),
39
- textContainerHeightInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Height (px)"]'),
39
+ textContainerHeightInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [for="Height (px)"]'),
40
40
  textContainerHeightInputField: () => cy.get('.dropzone-text-container-dimension [id="Height (px)"]'),
41
- textContainerWidthInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Width (px)"]'),
41
+ textContainerWidthInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [for="Width (px)"]'),
42
42
  textContainerWidthInputField: () => cy.get('.dropzone-text-container-dimension [id="Width (px)"]'),
43
43
  textContainerConnectorStyleLabel: () => cy.get('.dropzone-connector-style-label'),
44
44
  responseArea: () => cy.get('.canvas-dropzone'),
@@ -69,7 +69,7 @@ const steps = {
69
69
  ...styleAndLayoutCustomizationAccordionComponent.steps,
70
70
  ...figCommonStyleAndLayoutComponent.steps,
71
71
  ...connectorStyleStyleAndLayoutCustomizationComponent.steps,
72
- ...createItemPage.steps,
72
+ ...createItemPage.steps,
73
73
  /**
74
74
  * Verify that the incorrect option icon is displayed for a specific answer input field.
75
75
  * @param {number} inputFieldIndex - The index of the answer input field to verify.
@@ -316,7 +316,17 @@ const steps = {
316
316
  */
317
317
  verifyTextContainerWidthInputFieldValue: (value) => {
318
318
  utilities.verifyInputFieldValue(fillInTheGapsOverImageTextPage.textContainerWidthInputField(), value);
319
- }
319
+ },
320
+
321
+ /**
322
+ * @param {string} file name of the file in fixtures/upload folder
323
+ ] * @description this function uploads a file
324
+ */
325
+ uploadFileWithoutVerification: (file) => {
326
+ fillInTheGapsOverImageTextPage.inputTypeFile()
327
+ .attachFile(file);
328
+ cy.wait(4000);
329
+ },
320
330
  }
321
331
 
322
332
  const tests = {