itemengine-cypress-automation 1.0.326-IEI-4285-3f1c280.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 (82) 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 +80 -0
  12. package/cypress/e2e/ILC/ListOrderingNew/HorizontalOrientation/previewContentsForAllViews.smoke.js +1 -1
  13. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/allOrNothingForAllViews.smoke.js +2 -1
  14. package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/previewContentsForAllViews.smoke.js +1 -1
  15. package/cypress/e2e/ILC/Matching/draggableOptions.js +29 -0
  16. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDropzoneConnectorStyle.js +52 -47
  17. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionAlignment.js +6 -4
  18. package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionPlacement.js +60 -54
  19. package/cypress/e2e/ILC/MatchingDropdown/allOrNothingScoringForAllViews.smoke.js +1 -1
  20. package/cypress/e2e/ILC/MultipleSelection/checkAddAlternativeButton.js +34 -0
  21. package/cypress/e2e/ILC/MultipleSelection/checkScoringLabelBannerAndCorrectAnswer.js +79 -0
  22. package/cypress/e2e/ILC/MultipleSelection/editQuestion.smoke.js +1 -1
  23. package/cypress/e2e/ILC/MultipleSelection/editTabBasicSection.js +31 -0
  24. package/cypress/e2e/ILC/MultipleSelection/headerSection.js +36 -7
  25. package/cypress/e2e/ILC/MultipleSelection/previewContentsForInCompleteAuthoring.js +98 -0
  26. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/blankResponseScoring.js +5 -19
  27. package/cypress/e2e/ILC/MultipleSelectionGridNew/Scoring/checkScoringLabelBannerAndCorrectAnswer.js +80 -0
  28. package/cypress/e2e/ILC/MultipleSelectionGridNew/checkAddAlternativeButton.js +38 -0
  29. package/cypress/e2e/ILC/MultipleSelectionGridNew/editTabBasicSection.js +35 -1
  30. package/cypress/e2e/ILC/MultipleSelectionGridNew/headerSection.js +36 -10
  31. package/cypress/e2e/ILC/MultipleSelectionGridNew/previewContentForAllViewsInIncompleteAuthoring.smoke.js +71 -0
  32. package/cypress/e2e/ILC/ShortTextResponseNew/editTabBasicSections.js +88 -2
  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/UploadResponse/gradingViewAndCorrectAnswerViewContents.smoke.js +0 -41
  52. package/cypress/e2e/ILC/UploadResponse/thumbNail.smoke.js +1 -17
  53. package/cypress/e2e/ILC/VideoResponseNew/compactRecorderStyle.smoke.js +3 -3
  54. package/cypress/e2e/ILC/VideoResponseNew/editTabBasicSection.js +6 -6
  55. package/cypress/pages/components/autoScoredScoringPreviewTab.js +0 -1
  56. package/cypress/pages/components/barAndLineChartComponent.js +1 -1
  57. package/cypress/pages/components/ckEditorInsertTableComponent.js +1 -1
  58. package/cypress/pages/components/ckEditorToolbar.js +1 -1
  59. package/cypress/pages/components/equationEditorSectionCommonComponent.js +2 -2
  60. package/cypress/pages/components/fillInTheGapsDropdownCommonComponent.js +11 -0
  61. package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +11 -0
  62. package/cypress/pages/components/gridQuestionCommonComponent.js +3 -4
  63. package/cypress/pages/components/imageCanvasComponent.js +2 -0
  64. package/cypress/pages/components/layoutSectionComponent.js +1 -1
  65. package/cypress/pages/components/maximumCapacityPerDropzoneComponent.js +1 -1
  66. package/cypress/pages/components/numberLineCommonComponent.js +3 -3
  67. package/cypress/pages/createItemPage.js +0 -7
  68. package/cypress/pages/dragAndDropIntoCategoriesPage.js +32 -0
  69. package/cypress/pages/drawingResponsePage.js +13 -3
  70. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +6 -5
  71. package/cypress/pages/fillInTheGapsOverImageTextPage.js +14 -4
  72. package/cypress/pages/graphingPage.js +12 -12
  73. package/cypress/pages/matchingPage.js +3 -3
  74. package/cypress/pages/multipleSelectionGridPage.js +4 -5
  75. package/cypress/pages/multipleSelectionPage.js +4 -6
  76. package/cypress/pages/shortTextResponsePage.js +20 -2
  77. package/cypress/pages/singleSelectionPage.js +2 -3
  78. package/cypress/pages/textEntryMathPage.js +13 -2
  79. package/cypress/pages/textEntryMathWithImagePage.js +2 -2
  80. package/cypress/pages/uploadResponsePage.js +2 -2
  81. package/package.json +1 -1
  82. package/cypress/e2e/ILC/ThinkSphere/dummyTest.js +0 -17
@@ -61,10 +61,9 @@ describe('Audio player: Header section, buttons and saving item', () => {
61
61
  utilities.verifyElementVisibilityState(multipleSelectionPage.sourceUrlInputFieldErrorMessage(), 'hidden');
62
62
  });
63
63
 
64
- it('When user adds invalid source URL in \'Source URL\' input field and clicks on \'OK\' button, validation error message should be displayed below source URL input field and popup should not close', () => {
64
+ it('When user adds invalid source URL in \'Source URL\' input field, validation error message should be displayed below source URL input field and popup should not close', () => {
65
65
  multipleSelectionPage.steps.clearTextInSourceURLInputField();
66
66
  multipleSelectionPage.steps.enterTextInSourceURLInputField(constants.sampleJPEGLink);
67
- multipleSelectionPage.steps.clickOnOKButton();
68
67
  utilities.verifyInnerText(multipleSelectionPage.sourceUrlInputFieldErrorMessage(), 'Error: The provided URL does not link to a supported audio file. Please enter a URL for a MP3, WAV, AAC file.');
69
68
  utilities.verifyElementVisibilityState(multipleSelectionPage.ckEditorToolDialogBox(), 'visible');
70
69
  });
@@ -90,12 +89,14 @@ describe('Audio player: Header section, buttons and saving item', () => {
90
89
  it('When user uploads valid audio file in \'Upload\' section, \'Error: Audio file is required.\' validation error message should disappear', () => {
91
90
  multipleSelectionPage.steps.uploadFile('sample.mp3');
92
91
  utilities.verifyElementVisibilityState(multipleSelectionPage.uploadFileSectionErrorMessage(), 'hidden');
92
+ multipleSelectionPage.steps.clickOnOKButton();
93
+ multipleSelectionPage.steps.clearInPromptInputField();
94
+ multipleSelectionPage.steps.selectAudioPlayerOptionFromCKEditorToolbar();
93
95
  });
94
96
 
95
97
  it('When the user uploads an audio and transcript file that is not supported and clicks on \'OK\' button, validation error message should be displayed and popup should not close', () => {
96
- multipleSelectionPage.steps.uploadFile('sample.mp4');
98
+ multipleSelectionPage.steps.uploadInvalidFile('sample.txt');
97
99
  multipleSelectionPage.steps.uploadTranscriptFile('sample.doc');
98
- multipleSelectionPage.steps.clickOnOKButton();
99
100
  utilities.verifyInnerText(multipleSelectionPage.uploadFileSectionErrorMessage(), 'Error: The file type is not supported. Please upload a file with the following supported formats: MP3, WAV, AAC.');
100
101
  utilities.verifyInnerText(multipleSelectionPage.uploadTranscriptFileSectionErrorMessage(), 'Error: The file type is not supported. Please upload a file with the following supported formats: TXT.');
101
102
  utilities.verifyElementVisibilityState(multipleSelectionPage.ckEditorToolDialogBox(), 'visible');
@@ -8,6 +8,7 @@ describe('Update Table: Edit tab', () => {
8
8
  cy.loginAs('admin');
9
9
  });
10
10
 
11
+ //https://weldnorthed.atlassian.net/browse/IEI-5292
11
12
  describe('Update table with missing tbody', () => {
12
13
  abortEarlySetup();
13
14
  before(() => {
@@ -396,4 +396,104 @@ describe('Create item page - Drag and drop into categories: All or nothing ', ()
396
396
  });
397
397
  });
398
398
  };
399
+
400
+ views.forEach((view) => {
401
+ //https://weldnorthed.atlassian.net/browse/IEI-5151
402
+ describe(`${view}: Drag and drop into categories - Auto Scored with 0 points`, { tags: 'smoke' }, () => {
403
+ abortEarlySetup();
404
+ before(() => {
405
+ switch (view) {
406
+ case 'Question preview':
407
+ dragAndDropIntoCategoriesPage.steps.navigateToCreateQuestion('drag and drop into categories');
408
+ cy.barsPreLoaderWait();
409
+ dragAndDropIntoCategoriesPage.steps.addInputToOptionsInputField(['Bat', 'Eagle']);
410
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Bat': 0, 'Eagle': 1 });
411
+ dragAndDropIntoCategoriesPage.steps.allotPoints(0);
412
+ break;
413
+ case 'Grading view':
414
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
415
+ break;
416
+ };
417
+ });
418
+
419
+ beforeEach(() => {
420
+ switch (view) {
421
+ case 'Question preview':
422
+ break;
423
+ case 'Grading view':
424
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
425
+ break;
426
+ }
427
+ });
428
+
429
+ if (view === 'Question preview') {
430
+ after(() => {
431
+ dragAndDropIntoCategoriesPage.steps.clickOnSaveQuestionButton();
432
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
433
+ itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
434
+ });
435
+ };
436
+
437
+ it('When the user attempts the question incorrectly for an auto scored Question with 0 points, then the incorrect Answer label and correct answer section should not be displayed', () => {
438
+ if (view === 'Grading view') {
439
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Bat': 0, 'Eagle': 7 });
440
+ studentViewPage.steps.submitResponse();
441
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
442
+ studentViewPage.steps.clickOnGoToGradingViewButton();
443
+ dragAndDropIntoCategoriesPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
444
+ };
445
+ });
446
+ });
447
+ })
448
+
449
+ views.forEach((view) => {
450
+ //https://weldnorthed.atlassian.net/browse/IEI-5151
451
+ describe(`${view}: Drag and drop into categories - Non Scored`, { tags: 'smoke' }, () => {
452
+ abortEarlySetup();
453
+ before(() => {
454
+ switch (view) {
455
+ case 'Question preview':
456
+ dragAndDropIntoCategoriesPage.steps.navigateToCreateQuestion('drag and drop into categories');
457
+ cy.barsPreLoaderWait();
458
+ dragAndDropIntoCategoriesPage.steps.addInputToOptionsInputField(['Bat', 'Eagle']);
459
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection({ 'Bat': 0, 'Eagle': 1 });
460
+ dragAndDropIntoCategoriesPage.steps.expandScoringTypeDropdown();
461
+ dragAndDropIntoCategoriesPage.steps.selectOptionFromScoringTypeDropdown('Non scored');
462
+ break;
463
+ case 'Grading view':
464
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
465
+ break;
466
+ };
467
+ });
468
+
469
+ beforeEach(() => {
470
+ switch (view) {
471
+ case 'Question preview':
472
+ break;
473
+ case 'Grading view':
474
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
475
+ break;
476
+ }
477
+ });
478
+
479
+ if (view === 'Question preview') {
480
+ after(() => {
481
+ dragAndDropIntoCategoriesPage.steps.clickOnSaveQuestionButton();
482
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
483
+ itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
484
+ });
485
+ };
486
+
487
+ it('When the user attempts the question incorrectly for a non scored Question, then the incorrect Answer label and correct answer section should not be displayed', () => {
488
+ if (view === 'Grading view') {
489
+ dragAndDropIntoCategoriesPage.steps.clickAndDropOptionInDropzonePreviewTab({ 'Bat': 0, 'Eagle': 7 });
490
+ studentViewPage.steps.submitResponse();
491
+ utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
492
+ studentViewPage.steps.clickOnGoToGradingViewButton();
493
+ dragAndDropIntoCategoriesPage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
494
+ };
495
+ });
496
+ });
497
+
498
+ })
399
499
  });
@@ -20,6 +20,7 @@ describe('Create Item page - drag and drop into categories: Student view setting
20
20
  dragAndDropIntoCategoriesPage.steps.navigateToCreateQuestion('drag and drop into categories');
21
21
  cy.barsPreLoaderWait();
22
22
  dragAndDropIntoCategoriesPage.steps.addTextInQuestionInstructionsInputField('Navigating to drag and drop into categories');
23
+
23
24
  dragAndDropIntoCategoriesPage.steps.setGroupedOptions();
24
25
  });
25
26
 
@@ -279,6 +279,18 @@ describe('Create item page - Drawing response: Background: Blank canvas, Image,
279
279
  utilities.verifyElementVisibilityState(drawingResponsePage.fileUploadProgressBar(), 'notExist');
280
280
  });
281
281
 
282
+ it('When the user deletes the image file and uploads the same file again, file should be uploaded again', () => {
283
+ //delete the file
284
+ drawingResponsePage.steps.deleteUploadedFile();
285
+
286
+ //upload the same file again
287
+ drawingResponsePage.steps.uploadFile('uploads/image.png');
288
+ utilities.verifyElementVisibilityState(drawingResponsePage.fileUploadProgressBar(), 'visible');
289
+ utilities.verifyInnerText(drawingResponsePage.uploadedFileNameLabel(), 'image.png');
290
+ utilities.verifyElementVisibilityState(drawingResponsePage.uploadedFileNameLabel(), 'visible');
291
+ utilities.verifyElementVisibilityState(drawingResponsePage.fileUploadProgressBar(), 'notExist');
292
+ });
293
+
282
294
  it('CSS of progress bar and file name when file upload is in progress', { tags: 'css' }, () => {
283
295
  drawingResponsePage.steps.uploadFile('uploads/sample.jpg');
284
296
  drawingResponsePage.fileUploadProgressBar()
@@ -106,6 +106,7 @@ describe('Create item page - Fill in the gaps with dropdown: Dropdown and Dropdo
106
106
 
107
107
  it('When \'Auto scale\' toggle button is selected, then width of the collapsed dropdown and the dropdown menu should be auto scaled(increased) to accommodate the longest option in the dropdown menu in specify correct answer section', () => {
108
108
  fillInTheGapsDropdownPage.steps.compareDropdownMenuAndDropdownWidthForAutoScaledInPreviewTab();
109
+ fillInTheGapsDropdownPage.steps.checkIfDropdownMenuOverflowForAutoScale();
109
110
  cy.log('Choosing an option from dropdown to collapse it')
110
111
  fillInTheGapsDropdownPage.steps.selectOptionFromDropdownList(optionsForDropdown[3]);
111
112
  });
@@ -65,4 +65,28 @@ describe('Edit item - fill in the gaps with dropdown', () => {
65
65
  fillInTheGapsDropdownPage.steps.saveAQuestionAndVerifySnackbar();
66
66
  });
67
67
  });
68
+
69
+ //https://weldnorthed.atlassian.net/browse/IEI-4752
70
+ describe('Edit fill in the gaps with dropdown question - manual to autoscored', () => {
71
+ abortEarlySetup();
72
+ before(() => {
73
+ fillInTheGapsDropdownPage.steps.navigateToCreateQuestion('fill in the gaps with dropdown');
74
+ cy.barsPreLoaderWait();
75
+ fillInTheGapsDropdownPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps with dropdown')
76
+ fillInTheGapsDropdownPage.steps.expandScoringTypeDropdown();
77
+ fillInTheGapsDropdownPage.steps.selectOptionFromScoringTypeDropdown('Manually scored');
78
+ fillInTheGapsDropdownPage.steps.addInputToDropdownOptionFields(0, optionsForDropdown1);
79
+ fillInTheGapsDropdownPage.steps.addInputToDropdownOptionFields(1, optionsForDropdown2);
80
+ fillInTheGapsDropdownPage.steps.saveAQuestionAndVerifySnackbar();
81
+ });
82
+
83
+ it('User should be able to edit the question, set it to autoscored and save the question', () => {
84
+ fillInTheGapsDropdownPage.steps.editItem();
85
+ fillInTheGapsDropdownPage.steps.expandScoringTypeDropdown();
86
+ fillInTheGapsDropdownPage.steps.selectOptionFromScoringTypeDropdown('Auto scored');
87
+ fillInTheGapsDropdownPage.steps.selectResponseFromDropdownSpecifyCorrectAnswerSection(0, correctAnswerArray[0]);
88
+ fillInTheGapsDropdownPage.steps.selectResponseFromDropdownSpecifyCorrectAnswerSection(1, correctAnswerArray[1]);
89
+ fillInTheGapsDropdownPage.steps.saveAQuestionAndVerifySnackbar();
90
+ });
91
+ });
68
92
  });
@@ -68,7 +68,8 @@ describe('Create Item page - Fill in the gaps over image - drag and drop: Studen
68
68
  });
69
69
  });
70
70
 
71
- it('When the user enables the \'Randomize options\' functionality, then the group container as well as the options inside the group should be displayed in a random order', () => {
71
+ //Fails due to https://weldnorthed.atlassian.net/browse/IEI-5309
72
+ it.skip('When the user enables the \'Randomize options\' functionality, then the group container as well as the options inside the group should be displayed in a random order', () => {
72
73
  fillInTheGapsOverImageDragAndDropPage.steps.switchToEditTab();
73
74
  fillInTheGapsOverImageDragAndDropPage.steps.checkRandomizeOptionsCheckbox();
74
75
  fillInTheGapsOverImageDragAndDropPage.steps.switchToPreviewTab();
@@ -81,7 +82,7 @@ describe('Create Item page - Fill in the gaps over image - drag and drop: Studen
81
82
  groupTitleArray = fillInTheGapsOverImageDragAndDropPage.steps.getGroupTitleArray();
82
83
  });
83
84
 
84
- it('When the user switches to \'Edit tab\' and does not modify any question properties, then the order of group containers as well as the options inside the group should not change', () => {
85
+ it.skip('When the user switches to \'Edit tab\' and does not modify any question properties, then the order of group containers as well as the options inside the group should not change', () => {
85
86
  fillInTheGapsOverImageDragAndDropPage.steps.resetQuestionPreview();
86
87
  groupTitleArray.forEach((groupTitle, groupIndex) => {
87
88
  fillInTheGapsOverImageDragAndDropPage.steps.verifyGroupedOptionsTitlePreviewTab(groupIndex, groupTitle);
@@ -91,7 +92,7 @@ describe('Create Item page - Fill in the gaps over image - drag and drop: Studen
91
92
  }
92
93
  });
93
94
 
94
- it('When the user switches to \'Edit tab\' and modifies any of question properties, then the order of group containers as well as the options inside the group should change', () => {
95
+ it.skip('When the user switches to \'Edit tab\' and modifies any of question properties, then the order of group containers as well as the options inside the group should change', () => {
95
96
  fillInTheGapsOverImageDragAndDropPage.steps.switchToEditTab();
96
97
  fillInTheGapsOverImageDragAndDropPage.steps.allotPoints(5);
97
98
  fillInTheGapsOverImageDragAndDropPage.steps.switchToPreviewTab();
@@ -104,7 +105,7 @@ describe('Create Item page - Fill in the gaps over image - drag and drop: Studen
104
105
  fillInTheGapsOverImageDragAndDropPage.steps.verifyGroupsAreRerandomized(groupTitleArray);
105
106
  });
106
107
 
107
- it('When the user disables the \'Randomize options\' functionality, then the order of group containers as well as the options inside the group should be displayed in the order in which the user has set them in the \'Options for drag & drop\' section', () => {
108
+ it.skip('When the user disables the \'Randomize options\' functionality, then the order of group containers as well as the options inside the group should be displayed in the order in which the user has set them in the \'Options for drag & drop\' section', () => {
108
109
  fillInTheGapsOverImageDragAndDropPage.steps.switchToEditTab();
109
110
  fillInTheGapsOverImageDragAndDropPage.steps.uncheckRandomizeOptionsCheckbox();
110
111
  fillInTheGapsOverImageDragAndDropPage.steps.switchToPreviewTab();
@@ -414,20 +414,21 @@ describe('Create Item page - Fill in the gaps over image with text: Style and la
414
414
  fillInTheGapsOverImageDragAndDropPage.steps.verifyInlineOptionPlacementSpecifyCorrectAnswer();
415
415
  });
416
416
 
417
- it('When the user selects \'Block\' radio button, then the options should be displayed under each other with an expand icon', () => {
417
+ //Fails due to https://weldnorthed.atlassian.net/browse/IEI-5308
418
+ it.skip('When the user selects \'Block\' radio button, then the options should be displayed under each other with an expand icon', () => {
418
419
  fillInTheGapsOverImageDragAndDropPage.steps.checkBlockRadioButton();
419
420
  fillInTheGapsOverImageDragAndDropPage.steps.verifyBlockOptionPlacementSpecifyCorrectAnswer();
420
421
  utilities.verifyElementVisibilityState(fillInTheGapsOverImageDragAndDropPage.expandIconButton(), 'visible');
421
422
  });
422
423
 
423
- it('When the user clicks on the expand button then the entire option text should be displayed and a close button should be displayed', () => {
424
+ it.skip('When the user clicks on the expand button then the entire option text should be displayed and a close button should be displayed', () => {
424
425
  fillInTheGapsOverImageDragAndDropPage.steps.expandOptionInDropzone();
425
426
  utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsOverImageDragAndDropPage.expandPopupDraggableOption(), 0), 'Leaves');
426
427
  utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsOverImageDragAndDropPage.expandPopupDraggableOption(), 1), 'Flower');
427
428
  utilities.verifyInnerText(fillInTheGapsOverImageDragAndDropPage.expandPopupCloseButton(), 'Close');
428
429
  });
429
430
 
430
- it('When the user clicks on the close button the expanded option should be minimized and the expand icon should be displayed again on the dropzone', () => {
431
+ it.skip('When the user clicks on the close button the expanded option should be minimized and the expand icon should be displayed again on the dropzone', () => {
431
432
  fillInTheGapsOverImageDragAndDropPage.steps.closeExpandOptionPopup();
432
433
  utilities.verifyElementVisibilityState(fillInTheGapsOverImageDragAndDropPage.expandIconButton(), 'visible');
433
434
  });
@@ -5,7 +5,7 @@ import utilities from "../../../support/helpers/utilities";
5
5
  const panelPlacement = ['Bottom', 'Top', 'Left', 'Right'];
6
6
  const optionAlignment = ['Left', 'Center', 'Right'];
7
7
 
8
- describe('Drag and drop into categories - Style and layout customization', () => {
8
+ describe('Fill in the gaps over image drag and drop - Style and layout customization', () => {
9
9
  before(() => {
10
10
  cy.loginAs('admin');
11
11
  });
@@ -139,4 +139,84 @@ describe('Create item page - Fill in the gaps with text: Question instructions,
139
139
  utilities.verifyInnerText(fillInTheGapsTextPage.questionContainerPreviewTab(), 'Lorem ipsum dolor sit amet, \n​\n onsectetur adipiscing elit. Ut pellentesque tincidunt ornare. Integer porttitor est quis urna porttitor,eget \n​\n tempus tellus dapibus.Lorem ipsum');
140
140
  });
141
141
  });
142
+
143
+ //https://weldnorthed.atlassian.net/browse/IEI-5098
144
+ describe('Fill in the gaps text: Answer input field - Specify correct answer section', () => {
145
+ abortEarlySetup();
146
+ before(() => {
147
+ cy.log('Navigating to Fill in the gaps text question type');
148
+ fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
149
+ cy.barsPreLoaderWait();
150
+ fillInTheGapsTextPage.steps.selectNoneRadioButton();
151
+ });
152
+
153
+ it('When the input field is empty, then the user should be able to focus in the input field', () => {
154
+ fillInTheGapsTextPage.steps.focusInResponseAnswerInputFieldSpecifyCorrectAnswer(0);
155
+ });
156
+
157
+ it('When the user enters some text, then the user should be able to enter text and focus in and out', () => {
158
+ fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsSpecifyCorrectAnswerSection([{ responseIndex: 0, responseText: 'Lorem Ipsum' }]);
159
+ fillInTheGapsTextPage.steps.focusOutOfResponseAnswerInputFieldSpecifyCorrectAnswer(0);
160
+ });
161
+
162
+ it('When the user enters text that triggers the tooltip, then the user should be able to enter text and focus out', () => {
163
+ fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsSpecifyCorrectAnswerSection([{ responseIndex: 0, responseText: 'Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Ut pellentesque tincidunt ornare. Integer porttitor est quis urna porttitor,eget tempus tellus dapibus.Lorem ipsum' }]);
164
+ fillInTheGapsTextPage.steps.focusOutOfResponseAnswerInputFieldSpecifyCorrectAnswer(0);
165
+ });
166
+
167
+ it('When the user enters text that triggers the tooltip, then the user should be able to enter text and focus in', () => {
168
+ fillInTheGapsTextPage.steps.focusInAndFocusOutOfResponseAnswerInputFieldSpecifyCorrectAnswer(0);
169
+ });
170
+
171
+ //Unable to check tooltip using cypress
172
+ it.skip('When the user enters a long text, then the user should be able to see the tooltip', () => {
173
+ fillInTheGapsTextPage.answerInputFieldSpecifyCorrectAnswerSection()
174
+ .verifyTooltip('Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Ut pellentesque tincidunt ornare. Integer porttitor est quis urna porttitor,eget tempus tellus dapibus.Lorem ipsum');
175
+ });
176
+
177
+ it('When the user removes text, then the user should be able to check focus', () => {
178
+ fillInTheGapsTextPage.steps.clearAnswerInputField();
179
+ fillInTheGapsTextPage.steps.focusInResponseAnswerInputFieldSpecifyCorrectAnswer(0);
180
+ });
181
+ });
182
+
183
+ describe('Fill in the gaps text: Answer input field - Preview tab functionality', () => {
184
+ abortEarlySetup();
185
+ before(() => {
186
+ cy.log('Navigating to Fill in the gaps text question type');
187
+ fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
188
+ cy.barsPreLoaderWait();
189
+ fillInTheGapsTextPage.steps.selectNoneRadioButton();
190
+ fillInTheGapsTextPage.steps.switchToPreviewTab();
191
+ });
192
+
193
+ it('When the input field is empty, then the user should be able to focus in the input field', () => {
194
+ fillInTheGapsTextPage.steps.focusInResponseInputFieldPreviewTab(0);
195
+ });
196
+
197
+ it('When the user enters some text, then the user should be able to enter text and focus in and out', () => {
198
+ fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsPreviewTab([{ responseIndex: 0, responseText: 'Lorem Ipsum' }]);
199
+ fillInTheGapsTextPage.steps.focusOutOfResponseAnswerInputFieldPreviewTab(0);
200
+ });
201
+
202
+ it('When the user enters text that triggers the tooltip, then the user should be able to enter text and focus out', () => {
203
+ fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsPreviewTab([{ responseIndex: 0, responseText: 'Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Ut pellentesque tincidunt ornare. Integer porttitor est quis urna porttitor,eget tempus tellus dapibus.Lorem ipsum' }]);
204
+ fillInTheGapsTextPage.steps.focusOutOfResponseAnswerInputFieldPreviewTab(0);
205
+ });
206
+
207
+ //Unable to check tooltip using cypress
208
+ it.skip('When the character limit is reached, then the tooltip should appear', () => {
209
+ fillInTheGapsTextPage.answerInputFieldPreviewTab()
210
+ .verifyTooltip('Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Ut pellentesque tincidunt ornare. Integer porttitor est quis urna porttitor,eget tempus tellus dapibus.Lorem ipsum')
211
+ });
212
+
213
+ it('When the user enters text that triggers the tooltip, then the user should be able to enter text and focus in', () => {
214
+ fillInTheGapsTextPage.steps.focusInResponseInputFieldPreviewTab(0);
215
+ });
216
+
217
+ it('When the user removes text, then the user should be able to check focus', () => {
218
+ fillInTheGapsTextPage.steps.clearAnswerInputFieldPreviewTab();
219
+ fillInTheGapsTextPage.steps.focusInResponseInputFieldPreviewTab(0);
220
+ });
221
+ });
142
222
  });
@@ -77,7 +77,7 @@ describe('Create item page - List ordering - Preview contents in all views', ()
77
77
  }
78
78
  });
79
79
 
80
- it('Question instructions should be visible', () => {
80
+ it('Horizontal Question instructions should be visible', () => {
81
81
  utilities.verifyInnerText(listOrderingPage.questionInstructionsText(), 'Arrange options in correct order.');
82
82
  utilities.verifyElementVisibilityState(listOrderingPage.questionInstructionsText(), 'visible');
83
83
  });
@@ -109,6 +109,7 @@ describe('Create item page - List ordering: All or nothing ', () => {
109
109
  itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
110
110
  });
111
111
  };
112
+
112
113
  if (view === 'Question preview' || view === 'Item preview') {
113
114
  it('When the user selects \'Grading\' view without attempting the question, then correct/incorrect icons and correct incorrect status message should not be displayed and correct answer section with all correct answers should be displayed', () => {
114
115
  listOrderingPage.steps.verifyPreviewScore(0, 20);
@@ -169,7 +170,7 @@ describe('Create item page - List ordering: All or nothing ', () => {
169
170
  listOrderingPage.steps.verifyOptionsInCorrectAnswerSection(correctAnswerArray);
170
171
  });
171
172
 
172
- 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', () => {
173
+ it('When the 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', () => {
173
174
  if (view === 'Grading view') {
174
175
  studentViewPage.steps.clearResponses();
175
176
  };
@@ -104,7 +104,7 @@ describe('Create item page - List ordering - Preview contents in all views', ()
104
104
  listOrderingPage.steps.verifyTextContentOfOptionInDropzonePreviewTabSeperateList('alpha', 3);
105
105
  });
106
106
  } else if (view === 'Grading view') {
107
- it(`The order of the responses should be as per the submitted response`, () => {
107
+ it('The order of the responses should be as per the submitted response', () => {
108
108
  listOrderingPage.steps.verifyOptionWithBoldTextInDropzonePreviewTabSeperateList(0);
109
109
  listOrderingPage.steps.verifyOptionWithImageInDropzonePreviewTabSeperateList(1);
110
110
  listOrderingPage.steps.verifyOptionWithEquationTextInDropzonePreviewTabSeperateList(2);
@@ -224,4 +224,33 @@ describe('Create Item page - Matching: Draggable options section', () => {
224
224
 
225
225
  matchingPage.tests.verifyDraggableOptionsForGroupedLayoutInPreviewTab();
226
226
  });
227
+
228
+ describe('Grouped options layout - Scoring', () => {
229
+ abortEarlySetup();
230
+ before(() => {
231
+ matchingPage.steps.navigateToCreateQuestion('matching');
232
+ cy.barsPreLoaderWait();
233
+ matchingPage.steps.expandDraggableOptionsLayoutDropdown();
234
+ matchingPage.steps.selectOptionFromDraggableOptionsLayoutDropdown('Grouped');
235
+ matchingPage.steps.enterTextInOptionInputField(['Petals', 'Leaves', 'Roots']);
236
+ matchingPage.steps.addGroupTitle('Group title A');
237
+ matchingPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection([{ optionText: 'Petals', dropzoneIndex: 0 }, { optionText: 'Leaves', dropzoneIndex: 0 }, { optionText: 'Roots', dropzoneIndex: 1 }])
238
+ matchingPage.steps.expandMaxCapacityPerDropzoneDropdown();
239
+ matchingPage.steps.selectOptionFromMaxCapacityPerDropzoneDropdown('2');
240
+ matchingPage.steps.allotPoints(5);
241
+ matchingPage.steps.switchToPreviewTab();
242
+ });
243
+
244
+ it('When the user moves two options from the first dropzone to the second dropzone, one option should not disappear, and all options should remain visible, indicating correct dropzone functionality', () => {
245
+ matchingPage.steps.resetQuestionPreview();
246
+ matchingPage.steps.clickAndDropOptionInDropzonePreviewTab([{ optionText: 'Petals', dropzoneIndex: 0 }, { optionText: 'Leaves', dropzoneIndex: 0 }, { optionText: 'Roots', dropzoneIndex: 1 }]);
247
+ matchingPage.steps.clickOnDraggableOptionInDropzoneOfPreviewTab('Petals', 0);
248
+ matchingPage.steps.clickOnDropzoneOfPreviewTab(1);
249
+ matchingPage.steps.clickOnDraggableOptionInDropzoneOfPreviewTab('Leaves', 0);
250
+ matchingPage.steps.clickOnDropzoneOfPreviewTab(1);
251
+ matchingPage.steps.verifyOptionFieldContentsInOptionsSectionQuestionPreviewTab(['Roots']);
252
+ matchingPage.steps.verifyDropzoneContainsTextPreviewTab(1, 'Petals');
253
+ matchingPage.steps.verifyDropzoneContainsTextPreviewTab(1, 'Leaves');
254
+ });
255
+ });
227
256
  });
@@ -3,66 +3,71 @@ import abortEarlySetup from "../../../support/helpers/abortEarly";
3
3
  import utilities from "../../../support/helpers/utilities";
4
4
  const connectorStyles = ["simpleLink", "mingleLink", "leftArrow", "rightArrow", "doubleArrow", "line", "dashed"];
5
5
 
6
-
7
- describe('Dropzone connector style contents', () => {
8
- abortEarlySetup();
6
+ describe('Matching : Style and layout customization - Dropzone connector style', () => {
9
7
  before(() => {
10
- matchingPage.steps.navigateToCreateQuestion('matching');
11
- cy.barsPreLoaderWait();
12
- matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
8
+ cy.loginAs('admin');
13
9
  });
14
10
 
15
- it('"Dropzone connector style" label should be displayed', () => {
16
- utilities.verifyInnerText(matchingPage.dropzoneConnectorStyleLabel(), 'Dropzone connector style');
17
- });
11
+ describe('Dropzone connector style contents', () => {
12
+ abortEarlySetup();
13
+ before(() => {
14
+ matchingPage.steps.navigateToCreateQuestion('matching');
15
+ cy.barsPreLoaderWait();
16
+ matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
17
+ });
18
18
 
19
- it('"Set connector line type" label along with seven icon buttons should be displayed. By default, "SimpleLink" option should be in selected state', () => {
20
- utilities.verifyInnerText(matchingPage.connectorLineTypeLabel(), 'Set connector line type');
21
- connectorStyles.forEach((option) => {
22
- utilities.verifyElementVisibilityState(matchingPage.connectorEndPointShapeOptions(option), 'exist');
19
+ it('"Dropzone connector style" label should be displayed', () => {
20
+ utilities.verifyInnerText(matchingPage.dropzoneConnectorStyleLabel(), 'Dropzone connector style');
23
21
  });
24
- matchingPage.steps.verifyConnectorStyleOptionSelected('simpleLink')
25
- });
26
- });
27
22
 
28
- describe('Dropzone connector style - Edit tab', () => {
29
- abortEarlySetup();
30
- before(() => {
31
- matchingPage.steps.navigateToCreateQuestion('matching');
32
- cy.barsPreLoaderWait();
33
- matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
23
+ it('"Set connector line type" label along with seven icon buttons should be displayed. By default, "SimpleLink" option should be in selected state', () => {
24
+ utilities.verifyInnerText(matchingPage.connectorLineTypeLabel(), 'Set connector line type');
25
+ connectorStyles.forEach((option) => {
26
+ utilities.verifyElementVisibilityState(matchingPage.connectorEndPointShapeOptions(option), 'exist');
27
+ });
28
+ matchingPage.steps.verifyConnectorStyleOptionSelected('simpleLink')
29
+ });
34
30
  });
35
31
 
36
- it('When the "SimpleLink" connector style is in selected state, then the connector style of the text containers should be "SimpleLink"', () => {
37
- matchingPage.steps.verifyConnectorStyles('simpleLink');
38
- });
32
+ describe('Dropzone connector style - Edit tab', () => {
33
+ abortEarlySetup();
34
+ before(() => {
35
+ matchingPage.steps.navigateToCreateQuestion('matching');
36
+ cy.barsPreLoaderWait();
37
+ matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
38
+ });
39
39
 
40
- connectorStyles.forEach((button) => {
41
- it(`When the user selects ${button}, then the connector style of the text containers should update to ${button}`, () => {
42
- matchingPage.steps.selectConnectorLineType(button);
43
- matchingPage.steps.verifyConnectorStyles(button);
40
+ it('When the "SimpleLink" connector style is in selected state, then the connector style of the text containers should be "SimpleLink"', () => {
41
+ matchingPage.steps.verifyConnectorStyles('simpleLink');
44
42
  });
45
- })
46
- });
47
43
 
48
- describe('Dropzone connector style - Preview tab', () => {
49
- abortEarlySetup();
50
- before(() => {
51
- matchingPage.steps.navigateToCreateQuestion('matching');
52
- cy.barsPreLoaderWait();
53
- matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
44
+ connectorStyles.forEach((button) => {
45
+ it(`When the user selects ${button}, then the connector style of the text containers should update to ${button}`, () => {
46
+ matchingPage.steps.selectConnectorLineType(button);
47
+ matchingPage.steps.verifyConnectorStyles(button);
48
+ });
49
+ })
54
50
  });
55
51
 
56
- it('When the "SimpleLink" connector style is in selected state, then the connector style of the text containers should be "SimpleLink"', () => {
57
- matchingPage.steps.verifyConnectorStyles('simpleLink');
58
- });
52
+ describe('Dropzone connector style - Preview tab', () => {
53
+ abortEarlySetup();
54
+ before(() => {
55
+ matchingPage.steps.navigateToCreateQuestion('matching');
56
+ cy.barsPreLoaderWait();
57
+ matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
58
+ });
59
59
 
60
- connectorStyles.forEach((button) => {
61
- it(`When the user selects ${button}, then the connector style of the text containers should update to ${button}`, () => {
62
- matchingPage.steps.switchToEditTab();
63
- matchingPage.steps.selectConnectorLineType(button);
64
- matchingPage.steps.switchToPreviewTab();
65
- matchingPage.steps.verifyConnectorStyles(button);
60
+ it('When the "SimpleLink" connector style is in selected state, then the connector style of the text containers should be "SimpleLink"', () => {
61
+ matchingPage.steps.verifyConnectorStyles('simpleLink');
66
62
  });
67
- })
63
+
64
+ connectorStyles.forEach((button) => {
65
+ it(`When the user selects ${button}, then the connector style of the text containers should update to ${button}`, () => {
66
+ matchingPage.steps.switchToEditTab();
67
+ matchingPage.steps.selectConnectorLineType(button);
68
+ matchingPage.steps.switchToPreviewTab();
69
+ matchingPage.steps.verifyConnectorStyles(button);
70
+ });
71
+ })
72
+ });
68
73
  });
@@ -16,7 +16,8 @@ describe('Matching - Style and layout customization accordion', () => {
16
16
  matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
17
17
  matchingPage.steps.expandMaxCapacityPerDropzoneDropdown();
18
18
  matchingPage.steps.selectOptionFromMaxCapacityPerDropzoneDropdown('2');
19
- matchingPage.steps.enterTextInOptionInputField(['Leaves', 'Flower']);
19
+ matchingPage.steps.enterTextInOptionInputField(['Leaves', 'Flower', 'Tree']);
20
+ matchingPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection([{ optionText: 'Leaves', dropzoneIndex: 0 }, { optionText: 'Flower', dropzoneIndex: 1 }, { optionText: 'Tree', dropzoneIndex: 2 }]);
20
21
  });
21
22
 
22
23
  it('Option alignment in dropzone label should be displayed', () => {
@@ -49,12 +50,13 @@ describe('Matching - Style and layout customization accordion', () => {
49
50
  cy.barsPreLoaderWait();
50
51
  matchingPage.steps.expandStyleAndLayoutCustomizationAccordion();
51
52
  matchingPage.steps.expandMaxCapacityPerDropzoneDropdown();
52
- matchingPage.steps.selectOptionFromMaxCapacityPerDropzoneDropdown('2');
53
- matchingPage.steps.enterTextInOptionInputField(['Leaves', 'Flower']);
53
+ matchingPage.steps.enterTextInOptionInputField(['Leaves', 'Flower', 'Tree']);
54
+ matchingPage.steps.clickAndDropOptionInDropzoneSpecifyCorrectAnswerSection([{ optionText: 'Leaves', dropzoneIndex: 0 }, { optionText: 'Flower', dropzoneIndex: 1 }, { optionText: 'Tree', dropzoneIndex: 2 }]);
54
55
  matchingPage.steps.switchToPreviewTab();
55
56
  });
56
57
 
57
- it('By default, the options in the dropzone should be left aligned', () => {
58
+ it('By default, the options in the dropzone should be left aligned when the user drops it into dropzone', () => {
59
+ matchingPage.steps.clickAndDropOptionInDropzonePreviewTab([{ optionText: 'Flower', dropzoneIndex: 0 }]);
58
60
  matchingPage.steps.verifyOptionAlignmentInDropzoneInPreviewTab('Left');
59
61
  });
60
62