itemengine-cypress-automation 1.0.211 → 1.0.212

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 (37) hide show
  1. package/cypress/e2e/ILC/ChartsBar/allOrNothingScoringForAllViews.smoke.js +5 -5
  2. package/cypress/e2e/ILC/ChartsLine/allOrNothingScoringForAllViews.smoke.js +6 -6
  3. package/cypress/e2e/ILC/DragAndDropIntoCategoriesNew/allOrNothingBasicForAllViews.smoke.js +3 -1
  4. package/cypress/e2e/ILC/EssayResponse/studentViewSettings.js +146 -0
  5. package/cypress/e2e/ILC/FillInTheGapsDragAndDropNew/allOrNothingForAllViews.smoke.js +2 -1
  6. package/cypress/e2e/ILC/FillInTheGapsDropdownNew/allOrNothingForAllView.smoke.js +2 -1
  7. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/allOrNothingForAllViews.smoke.js +2 -1
  8. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/styleAndLayoutCustomization.js +700 -0
  9. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/styleAndLayoutCustomizationDraggableOptionsPanel.js +127 -0
  10. package/cypress/e2e/ILC/FillInTheGapsOverImageDragAndDrop/styleAndLayoutCutomizationDraggableOptionProperties.js +253 -0
  11. package/cypress/e2e/ILC/FillInTheGapsOverImageDropdownNew/allOrNothingForAllView.smoke.js +2 -1
  12. package/cypress/e2e/ILC/FillInTheGapsOverImageTextNew/allOrNothingForAllViews.smoke.js +2 -1
  13. package/cypress/e2e/ILC/FillInTheGapsTextNew/allOrNothingForAllViews.smoke.js +2 -1
  14. package/cypress/e2e/ILC/Graphing/allOrNothingForAllViews.smoke.js +2 -1
  15. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +2 -2
  16. package/cypress/e2e/ILC/ImageHighlight/allOrNothingForAllViews.smoke.js +2 -2
  17. package/cypress/e2e/ILC/ListOrderingNew/allOrNothingForAllViews.smoke.js +3 -6
  18. package/cypress/e2e/ILC/Matching/allOrNothingScoringForAllViews.smoke.js +3 -1
  19. package/cypress/e2e/ILC/MatchingDropdown/allOrNothingScoringForAllViews.smoke.js +261 -0
  20. package/cypress/e2e/ILC/MatchingDropdown/previewContentsForAllViews.smoke.js +124 -0
  21. package/cypress/e2e/ILC/MultipleSelectionGridNew/allOrNothingBasicForAllViews.smoke.js +3 -1
  22. package/cypress/e2e/ILC/NumberLine/allOrNothingScoringForAllViews.smoke.js +3 -1
  23. package/cypress/e2e/ILC/NumberLineLabel/allOrNothingForAllViews.smoke.js +3 -2
  24. package/cypress/e2e/ILC/ReadingRuler/readingrulerPreviewContents.smoke.js +2 -2
  25. package/cypress/e2e/ILC/ShortTextResponseNew/allOrNothingBasicForAllViews.smoke.js +2 -2
  26. package/cypress/e2e/ILC/SingleSelectionGridNew/allOrNothingBasicForAllViews.smoke.js +2 -1
  27. package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +1 -1
  28. package/cypress/e2e/ILC/TextEntryMathWithImage/allOrNothingScoringForAllViews.smoke.js +1 -1
  29. package/cypress/e2e/ILC/TextSelection/allOrNothingScoringForAllViews.smoke.js +1 -0
  30. package/cypress/e2e/ILC/chartsDotsPlot/allOrNothingForAllViews.smoke.js +7 -7
  31. package/cypress/pages/chartsDotPlotPage.js +22 -0
  32. package/cypress/pages/chartsLinePage.js +1 -0
  33. package/cypress/pages/essayResponsePage.js +73 -1
  34. package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +550 -3
  35. package/cypress/pages/graphingPage.js +4 -0
  36. package/cypress/pages/matchingPage.js +189 -1
  37. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import constants from "../fixtures/constants";
2
2
  import utilities from "../support/helpers/utilities";
3
- import { createQuestionBasePage, questionInstructionsComponent, uploadImageSectionComponent, scoringSectionBaseEditTab, optionsWrapperComponent, equationEditorFlyout, ckEditorToolbar, commonComponents, autoScoredScoringPreviewTab, autoScoredStudentViewSettings, maximumCapacityPerDropzoneComponent, autoScoredSpecifyCorrectAnswerSection, autoScoredScoringSectionMultiResponseType, imageCanvasComponent, backgroundImageUploadComponent, correctIncorrectAnswerLabelComponent, draggableOptionsSectionComponent, draggableOptionContainer, studentViewSettingsLabelComponent, randomizeOptionsComponent, enableOuterBorderComponent, allowMultipleInstancesOfSameDraggableOptionComponent, additionalSettingsPanel, opacityComponent, imageActionsComponent, colorPopupComponent, fillInTheGapsDragAndDropCommonComponents, additionalSettingsAccessibilitySectionComponent } from "./components";
3
+ import { createQuestionBasePage, questionInstructionsComponent, uploadImageSectionComponent, scoringSectionBaseEditTab, optionsWrapperComponent, equationEditorFlyout, ckEditorToolbar, commonComponents, autoScoredScoringPreviewTab, autoScoredStudentViewSettings, maximumCapacityPerDropzoneComponent, autoScoredSpecifyCorrectAnswerSection, autoScoredScoringSectionMultiResponseType, imageCanvasComponent, backgroundImageUploadComponent, correctIncorrectAnswerLabelComponent, draggableOptionsSectionComponent, draggableOptionContainer, studentViewSettingsLabelComponent, randomizeOptionsComponent, enableOuterBorderComponent, allowMultipleInstancesOfSameDraggableOptionComponent, additionalSettingsPanel, opacityComponent, imageActionsComponent, colorPopupComponent, fillInTheGapsDragAndDropCommonComponents, additionalSettingsAccessibilitySectionComponent, styleAndLayoutCustomizationAccordionComponent, figCommonStyleAndLayoutComponent, connectorStyleStyleAndLayoutCustomizationComponent } from "./components";
4
4
  import { dialogBoxBase } from "./dialogBoxBase";
5
5
  const css = Cypress.env('css');
6
6
 
@@ -31,12 +31,18 @@ const selectors = {
31
31
  ...colorPopupComponent,
32
32
  ...fillInTheGapsDragAndDropCommonComponents,
33
33
  ...additionalSettingsPanel,
34
+ ...styleAndLayoutCustomizationAccordionComponent,
35
+ ...figCommonStyleAndLayoutComponent,
36
+ ...connectorStyleStyleAndLayoutCustomizationComponent,
37
+
34
38
  dropzonePreviewTab: () => cy.get('.drag-and-drop-canvas [class*="__DraggableWrapper"]'),
35
39
  dropzoneContainerPreviewTab: () => cy.get('[class*="Canvasstyle__DropzoneWrapper"]'),
40
+ dropzoneBorderWrapperPreviewTab: () => cy.get('.drag-and-drop-canvas [class*="ResponseDropZonestyles__CellContainer"]'),
36
41
  optionContainerOptionsPreviewTab: () => cy.get('.item-list .draggable-options-item:visible'),
37
- dropzoneWrapperPreviewTab: () => cy.get('.label-image-with-dnd-canvas-wrapper .cell'),
38
42
  optionContainerOptionsSpecifyCorrectAnswerSection: () => cy.get('.option-drag-and-drop .item-list .draggable-options-item:visible'),
39
43
  dropzoneSpecifyCorrectAnswerSection: () => cy.get('.dropzone-and-label-wrapper [class*="__DraggableWrapper"]:visible'),
44
+ dropzoneOptionSpecifyCorrectAnswerSection: () => cy.get('[class*="__DraggableWrapper"] [data-testid="question-instruction-element"]:visible'),
45
+ dropzoneBorderWrapperSpecifyCorrectAnswerSection: () => cy.get('[class*="ResponseDropZonestyles__CellContainer"]'),
40
46
  optionPreviewTab: () => cy.get('.draggable-options-item'),
41
47
  dropzoneWrapperSpecifyCorrectAnswerSection: () => cy.get('.cell'),
42
48
  correctIncorrectAnswerBlock: () => cy.get('[class*="-answer-block"]'),
@@ -50,7 +56,39 @@ const selectors = {
50
56
  dropzoneWrapperPreviewTab: () => cy.get('.preview-content-wrapper [class*="Canvasstyle__ResponseDiv"]'),
51
57
  dropzonePointerInPreviewTab: () => cy.get('[class*="PointerWrapper"]'),
52
58
  canvasInPreviewTab: () => cy.get('[class*="PreviewTabstyles__ContentWrapper"] [class*="Canvasstyle__DragAndDropCanvas"]'),
53
- tickIconWrapper: () => cy.get('.tick-icon-wrapper g[id*="Rectangle"]')
59
+ tickIconWrapper: () => cy.get('.tick-icon-wrapper g[id*="Rectangle"]'),
60
+ dropzoneConnectorStyleLabel: () => cy.get('.dropzone-connector-style-label'),
61
+ connectorEndPointShapeLabel: () => cy.get('[class*="__SubSectionLabel"]').eq(3),
62
+ optionPlacementInDropzoneLabel: () => cy.get('.option-placement-label'),
63
+ wordWrapLabel: () => cy.get('[data-ngie-testid="word-wrap-checkbox"] .MuiFormControlLabel-label'),
64
+ wordWrapCheckbox: () => cy.get('[data-ngie-testid="word-wrap-checkbox"] input'),
65
+ inlineLabel: () => cy.get('[data-value="inline"] .ngie-radio-label'),
66
+ blockLabel: () => cy.get('[data-value="block"] .ngie-radio-label'),
67
+ inlineRadioButton: () => cy.get('[type="radio"][value="inline"]'),
68
+ blockRadioButton: () => cy.get('[type="radio"][value="block"]'),
69
+ expandIconButton: () => cy.get('.expand-dropzone-icon-button:visible'),
70
+ expandPopupDraggableOption: () => cy.get('.expand-dropzone-popup-overlay .draggable-item-wrapper'),
71
+ expandPopupCloseButton: () => cy.get('[class*="CancelButtonWrapper"] button'),
72
+ optionAlignmentInDropzoneLabel: () => cy.get('.option-alignment .options-label'),
73
+ optionAlignmentInDropzoneOptions: (alignmentOption) => cy.get(`.option-alignment button[aria-label*="option alignment in dropzone ${alignmentOption}"]`),
74
+ setHeightAndWidthForAllDropzoneCheckboxLabel: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-dropzones-checkbox"] .MuiFormControlLabel-label'),
75
+ setHeightAndWidthForAllDropzoneCheckbox: () => cy.get('[data-ngie-testid="set-height-and-width-for-all-dropzones-checkbox"] input'),
76
+ dropzoneHeightInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Height (px)"]'),
77
+ dropzoneHeightInputField: () => cy.get('.dropzone-text-container-dimension [id="Height (px)"]'),
78
+ dropzoneWidthInputFieldLabel: () => cy.get('.dropzone-text-container-dimension [aria-labelledby="Width (px)"]'),
79
+ dropzoneWidthInputField: () => cy.get('.dropzone-text-container-dimension [id="Width (px)"]'),
80
+ draggableOptionPanelPlacementLabel: () => cy.get('.draggable-option-panel-label'),
81
+ panelPlacementLabel: () => cy.get('.panel-placement-style .options-label'),
82
+ optionAlignmentInPanelLabel: () => cy.get('.option-alignment .options-label').eq(1),
83
+ panelPlacementOptions: (placementOption) => cy.get(`.panel-placement-style button[aria-label*="panel placement ${placementOption}"]`),
84
+ optionAlignmentInPanelOptions: (alignmentOption) => cy.get(`.option-alignment button[aria-label*="option alignment in panel ${alignmentOption}"]`),
85
+ optionsWrapper: () => cy.get('[class*="StandardDropZonestyles__DraggableItemsGrid"]'),
86
+ optionsWrapperPreviewTab: () => cy.get('.edit-question-preview-wrapper [class*="StandardDropZonestyles__DraggableItemsGrid"]'),
87
+ optionPanelWrapper: () => cy.get('.option-drag-and-drop'),
88
+ dragHandleIconLabel: () => cy.get('[class*="__SubSectionLabel"]').eq(4),
89
+ dragHandle: () => cy.get('.draggable-item-wrapper svg'),
90
+ dragHandleOptions: () => cy.get('.drag-handle-icon-block'),
91
+ draggableOptionsFillColorLabel: () => cy.get('.sub-section-label').eq(2),
54
92
  }
55
93
 
56
94
  const steps = {
@@ -82,6 +120,9 @@ const steps = {
82
120
  ...imageActionsComponent.steps,
83
121
  ...colorPopupComponent.steps,
84
122
  ...fillInTheGapsDragAndDropCommonComponents.steps,
123
+ ...styleAndLayoutCustomizationAccordionComponent.steps,
124
+ ...figCommonStyleAndLayoutComponent.steps,
125
+ ...connectorStyleStyleAndLayoutCustomizationComponent.steps,
85
126
 
86
127
  /**
87
128
  * @description Verifies the text content of a specific preview tab dropzone element.
@@ -559,6 +600,509 @@ const steps = {
559
600
  imageCanvasComponent.canvasImageInPreviewTab()
560
601
  .should('have.attr', 'alt', 'highlightImage.jpg');
561
602
  },
603
+
604
+ /**
605
+ * Verifies the border color of the answer input field at the specified index.
606
+ * @param {number} responseAreaIndex - The index of the response area to verify.
607
+ * @param {string} borderValue - The expected border color value in CSS format.
608
+ */
609
+ verifyDropzoneBorderColor: (responseAreaIndex, borderValue) => {
610
+ utilities.verifyCSS(utilities.getNthElement(fillInTheGapsOverImageDragAndDropPage.dropzoneBorderWrapperPreviewTab(), responseAreaIndex), {
611
+ 'border': borderValue
612
+ });
613
+ },
614
+
615
+ verifyWordWrapCheckboxIsUnchecked: () => {
616
+ fillInTheGapsOverImageDragAndDropPage.wordWrapCheckbox()
617
+ .should('not.be.checked');
618
+ },
619
+
620
+ checkWordWrapCheckbox: () => {
621
+ fillInTheGapsOverImageDragAndDropPage.wordWrapCheckbox()
622
+ .click()
623
+ .should('be.checked');
624
+ },
625
+
626
+ verifyOptionInDropzoneNotWrapped: () => {
627
+ fillInTheGapsOverImageDragAndDropPage.dropzoneOptionSpecifyCorrectAnswerSection()
628
+ .eq(0)
629
+ .should('have.css', 'height', '24px');
630
+ },
631
+
632
+ verifyOptionInDropzoneWrapped: () => {
633
+ fillInTheGapsOverImageDragAndDropPage.dropzoneOptionSpecifyCorrectAnswerSection()
634
+ .eq(0)
635
+ .should('have.css', 'height', '72px');
636
+ },
637
+
638
+ expandOptionInDropzone: () => {
639
+ fillInTheGapsOverImageDragAndDropPage.expandIconButton()
640
+ .click();
641
+ },
642
+
643
+ closeExpandOptionPopup: () => {
644
+ fillInTheGapsOverImageDragAndDropPage.expandPopupCloseButton()
645
+ .click();
646
+ },
647
+
648
+ verifyInlineRadioButtonChecked: () => {
649
+ fillInTheGapsOverImageDragAndDropPage.inlineRadioButton()
650
+ .should('be.checked');
651
+ },
652
+
653
+ checkBlockRadioButton: () => {
654
+ fillInTheGapsOverImageDragAndDropPage.blockRadioButton()
655
+ .click()
656
+ .should('be.checked');
657
+ },
658
+
659
+ verifyInlineOptionPlacementSpecifyCorrectAnswer: () => {
660
+ fillInTheGapsOverImageDragAndDropPage.dropzoneSpecifyCorrectAnswerSection()
661
+ .find('.draggable-items-grid')
662
+ .should('have.css', 'flex-direction', 'row')
663
+ .and('have.css', 'flex-wrap', 'wrap');
664
+ },
665
+
666
+ verifyBlockOptionPlacementSpecifyCorrectAnswer: () => {
667
+ fillInTheGapsOverImageDragAndDropPage.dropzoneSpecifyCorrectAnswerSection()
668
+ .find('.draggable-items-grid')
669
+ .should('have.css', 'flex-direction', 'column')
670
+ .and('have.css', 'flex-wrap', 'nowrap');
671
+ },
672
+
673
+ verifyInlineOptionPlacementPreviewTab: () => {
674
+ fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
675
+ .find('.draggable-items-grid')
676
+ .should('have.css', 'flex-direction', 'row')
677
+ .and('have.css', 'flex-wrap', 'wrap');
678
+ },
679
+
680
+ verifyBlockOptionPlacementPreviewTab: () => {
681
+ fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
682
+ .find('.draggable-items-grid')
683
+ .should('have.css', 'flex-direction', 'column')
684
+ .and('have.css', 'flex-wrap', 'nowrap');
685
+ },
686
+
687
+ /**
688
+ * Verifies if the specified option alignment in panel is selected.
689
+ * @param {string} alignmentOption - The alignment option to verify.
690
+ */
691
+ verifyOptionAlignmentInDropzoneOptionSelected: (alignmentOption) => {
692
+ fillInTheGapsOverImageDragAndDropPage.optionAlignmentInDropzoneOptions(alignmentOption)
693
+ .should('have.attr', 'aria-pressed', 'true');
694
+ },
695
+
696
+ /**
697
+ * Selects the specified option alignment in panel.
698
+ * @param {string} alignmentOption - The alignment option to select.
699
+ */
700
+ selectOptionAlignmentInDropzoneOption: (alignmentOption) => {
701
+ fillInTheGapsOverImageDragAndDropPage.optionAlignmentInDropzoneOptions(alignmentOption.toLowerCase())
702
+ .click();
703
+ },
704
+
705
+ /**
706
+ * Verifies the option alignment in panel in the specify correct answer section.
707
+ * @param {string} optionAlignment - The option alignment to verify ('Left', 'Center', 'Right').
708
+ */
709
+ verifyOptionAlignmentInDropzoneInSpecifyCorrectAnswer: (optionAlignment) => {
710
+ switch (optionAlignment) {
711
+ case 'Left':
712
+ fillInTheGapsOverImageDragAndDropPage.dropzoneSpecifyCorrectAnswerSection()
713
+ .find('.draggable-items-grid')
714
+ .should('have.css', 'justify-content', 'flex-start');
715
+ break;
716
+ case 'Center':
717
+ fillInTheGapsOverImageDragAndDropPage.dropzoneSpecifyCorrectAnswerSection()
718
+ .find('.draggable-items-grid')
719
+ .should('have.css', 'justify-content', 'center');
720
+ break;
721
+ case 'Right':
722
+ fillInTheGapsOverImageDragAndDropPage.dropzoneSpecifyCorrectAnswerSection()
723
+ .find('.draggable-items-grid')
724
+ .should('have.css', 'justify-content', 'flex-end');
725
+ break;
726
+ default:
727
+ throw new Error('Invalid option alignment');
728
+ }
729
+ },
730
+
731
+ /**
732
+ * Verifies the option alignment in panel in the specify correct answer section.
733
+ * @param {string} optionAlignment - The option alignment to verify ('Left', 'Center', 'Right').
734
+ */
735
+ verifyOptionAlignmentInDropzoneInPreviewTab: (optionAlignment) => {
736
+ switch (optionAlignment) {
737
+ case 'Left':
738
+ fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
739
+ .find('.draggable-items-grid')
740
+ .should('have.css', 'justify-content', 'flex-start');
741
+ break;
742
+ case 'Center':
743
+ fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
744
+ .find('.draggable-items-grid')
745
+ .should('have.css', 'justify-content', 'center');
746
+ break;
747
+ case 'Right':
748
+ fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
749
+ .find('.draggable-items-grid')
750
+ .should('have.css', 'justify-content', 'flex-end');
751
+ break;
752
+ default:
753
+ throw new Error('Invalid option alignment');
754
+ }
755
+ },
756
+
757
+ /**
758
+ * Sets the height of the text container.
759
+ * @param {string} height - The height to set for the text container.
760
+ */
761
+ setDropzoneHeight: (height) => {
762
+ fillInTheGapsOverImageDragAndDropPage.dropzoneHeightInputField()
763
+ .type(height)
764
+ .blur();
765
+ },
766
+
767
+ /**
768
+ * Sets the width of the text container.
769
+ * @param {string} width - The width to set for the text container.
770
+ */
771
+ setDropzoneWidth: (width) => {
772
+ fillInTheGapsOverImageDragAndDropPage.dropzoneWidthInputField()
773
+ .type(width)
774
+ .blur();
775
+ },
776
+
777
+ verifySetHeightAndWidthForAllDropzoneCheckboxUncheckedState: () => {
778
+ fillInTheGapsOverImageDragAndDropPage.setHeightAndWidthForAllDropzoneCheckbox()
779
+ .should('not.be.checked');
780
+ },
781
+
782
+ checkSetHeightAndWidthForAllDropzoneCheckbox: () => {
783
+ fillInTheGapsOverImageDragAndDropPage.setHeightAndWidthForAllDropzoneCheckbox()
784
+ .click()
785
+ .should('be.checked');
786
+ },
787
+
788
+ /**
789
+ * Verifies the value of the text container height input field.
790
+ * @param {string} value - The expected value of the height input field.
791
+ */
792
+ verifyDropzoneHeightInputFieldValue: (value) => {
793
+ utilities.verifyInputFieldValue(fillInTheGapsOverImageDragAndDropPage.dropzoneHeightInputField(), value);
794
+ },
795
+
796
+ /**
797
+ * Verifies the value of the text container width input field.
798
+ * @param {string} value - The expected value of the width input field.
799
+ */
800
+ verifyDropzoneWidthInputFieldValue: (value) => {
801
+ utilities.verifyInputFieldValue(fillInTheGapsOverImageDragAndDropPage.dropzoneWidthInputField(), value);
802
+ },
803
+
804
+ /**
805
+ * This function verified height and width of dropzone
806
+ * @param {number} height of dropzone
807
+ * @param {number} width of zropzone
808
+ */
809
+ verifyDropzoneDimensionsSpecifyCorrectAnswer: (height, width) => {
810
+ fillInTheGapsOverImageDragAndDropPage.dropzoneBorderWrapperSpecifyCorrectAnswerSection()
811
+ .should('have.attr', 'height', height)
812
+ .and('have.attr', 'width', width)
813
+ },
814
+
815
+ /**
816
+ * This function verified height and width of dropzone
817
+ * @param {number} height of dropzone
818
+ * @param {number} width of zropzone
819
+ */
820
+ verifyDropzoneDimensionsPreviewTab: (height, width) => {
821
+ fillInTheGapsOverImageDragAndDropPage.dropzoneBorderWrapperPreviewTab()
822
+ .should('have.attr', 'height', height)
823
+ .and('have.attr', 'width', width)
824
+ },
825
+
826
+ /**
827
+ * Verifies if the specified panel placement option is selected.
828
+ * @param {string} placementOption - The panel placement option to verify.
829
+ */
830
+ verifyPanelPlacementOptionSelected: (placementOption) => {
831
+ fillInTheGapsOverImageDragAndDropPage.panelPlacementOptions(placementOption)
832
+ .should('have.attr', 'aria-pressed', 'true');
833
+ },
834
+
835
+ /**
836
+ * Selects the specified panel placement option.
837
+ * @param {string} placementOption - The panel placement option to select.
838
+ */
839
+ selectPanelPlacementOption: (placementOption) => {
840
+ fillInTheGapsOverImageDragAndDropPage.panelPlacementOptions(placementOption)
841
+ .click();
842
+ },
843
+
844
+ /**
845
+ * Verifies if the specified option alignment in panel is selected.
846
+ * @param {string} alignmentOption - The alignment option to verify.
847
+ */
848
+ verifyOptionAlignmentInPanelOptionSelected: (alignmentOption) => {
849
+ fillInTheGapsOverImageDragAndDropPage.optionAlignmentInPanelOptions(alignmentOption)
850
+ .should('have.attr', 'aria-pressed', 'true');
851
+ },
852
+
853
+ /**
854
+ * Selects the specified option alignment in panel.
855
+ * @param {string} alignmentOption - The alignment option to select.
856
+ */
857
+ selectOptionAlignmentInPanelOption: (alignmentOption) => {
858
+ fillInTheGapsOverImageDragAndDropPage.optionAlignmentInPanelOptions(alignmentOption)
859
+ .click();
860
+ },
861
+
862
+ /**
863
+ * Verifies the panel placement in the specify correct answer section.
864
+ * @param {string} placementOption - The panel placement option to verify.
865
+ */
866
+ verifyPanelPlacementSpecifyCorrectAnswerSection: (placementOption) => {
867
+ switch (placementOption) {
868
+ case 'Bottom':
869
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
870
+ .should('have.css', 'width', '844px')
871
+ .and('have.css', 'padding-top', '32px')
872
+ .and('have.css', 'padding-bottom', '16px')
873
+ break;
874
+ case 'Top':
875
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
876
+ .should('have.css', 'width', '844px')
877
+ .and('have.css', 'padding-top', '16px')
878
+ .and('have.css', 'padding-bottom', '32px')
879
+ break;
880
+ case 'Left':
881
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
882
+ .should('have.css', 'width', '200px')
883
+ .and('have.css', 'padding-right', '24px')
884
+ .and('have.css', 'padding-left', '8px')
885
+ break;
886
+ case 'Right':
887
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
888
+ .should('have.css', 'width', '200px')
889
+ .and('have.css', 'padding-right', '8px')
890
+ .and('have.css', 'padding-left', '24px')
891
+ break;
892
+ default:
893
+ throw new Error('Invalid placement option');
894
+ }
895
+ },
896
+
897
+ /**
898
+ * Verifies the panel placement in the preview tab.
899
+ * @param {string} placementOption - The panel placement option to verify.
900
+ */
901
+ verifyPanelPlacementPreviewTab: (placementOption) => {
902
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
903
+ .within(() => {
904
+ switch (placementOption) {
905
+ case 'Bottom':
906
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
907
+ .should('have.css', 'width', '768px')
908
+ .and('have.css', 'padding-top', '32px')
909
+ .and('have.css', 'padding-bottom', '16px')
910
+ break;
911
+ case 'Top':
912
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
913
+ .should('have.css', 'width', '768px')
914
+ .and('have.css', 'padding-top', '16px')
915
+ .and('have.css', 'padding-bottom', '32px')
916
+ break;
917
+ case 'Left':
918
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
919
+ .should('have.css', 'width', '142.84375px')
920
+ .and('have.css', 'padding-right', '24px')
921
+ .and('have.css', 'padding-left', '8px')
922
+ break;
923
+ case 'Right':
924
+ fillInTheGapsOverImageDragAndDropPage.optionPanelWrapper()
925
+ .should('have.css', 'width', '142.84375px')
926
+ .and('have.css', 'padding-right', '8px')
927
+ .and('have.css', 'padding-left', '24px')
928
+ break;
929
+ default:
930
+ throw new Error('Invalid panel placement option');
931
+ }
932
+ });
933
+ },
934
+
935
+ /**
936
+ * Verifies the option alignment in panel in the specify correct answer section.
937
+ * @param {string} optionAlignment - The option alignment to verify ('Left', 'Center', 'Right').
938
+ */
939
+ verifyOptionAlignmentInPanelInSpecifyCorrectAnswer: (optionAlignment) => {
940
+ switch (optionAlignment) {
941
+ case 'Left':
942
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapper()
943
+ .should('have.css', 'justify-content', 'flex-start');
944
+ break;
945
+ case 'Center':
946
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapper()
947
+ .should('have.css', 'justify-content', 'center');
948
+ break;
949
+ case 'Right':
950
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapper()
951
+ .should('have.css', 'justify-content', 'flex-end');
952
+ break;
953
+ default:
954
+ throw new Error('Invalid option alignment');
955
+ }
956
+ },
957
+
958
+ /**
959
+ * Verifies the option alignment in panel in the preview tab.
960
+ * @param {string} optionAlignment - The option alignment to verify ('Left', 'Center', 'Right').
961
+ */
962
+ verifyOptionAlignmentInPanelInPreviewTab: (optionAlignment) => {
963
+ switch (optionAlignment) {
964
+ case 'Left':
965
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapperPreviewTab()
966
+ .should('have.css', 'justify-content', 'flex-start');
967
+ break;
968
+ case 'Center':
969
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapperPreviewTab()
970
+ .should('have.css', 'justify-content', 'center');
971
+ break;
972
+ case 'Right':
973
+ fillInTheGapsOverImageDragAndDropPage.optionsWrapperPreviewTab()
974
+ .should('have.css', 'justify-content', 'flex-end');
975
+ break;
976
+ default:
977
+ throw new Error('Invalid placement option');
978
+ }
979
+ },
980
+
981
+ /**
982
+ * Verifies that the specified drag handle option is selected.
983
+ * @param {number} index - The index of the drag handle option to verify.
984
+ */
985
+ verifyDragHandleOptionSelected: (index) => {
986
+ fillInTheGapsOverImageDragAndDropPage.dragHandleOptions()
987
+ .eq(index)
988
+ .should('have.attr', 'aria-pressed', 'true')
989
+ .within(() => {
990
+ fillInTheGapsOverImageDragAndDropPage.colorBlockSelectedIcon()
991
+ .should('exist');
992
+ });
993
+ },
994
+
995
+ /**
996
+ * Selects a drag handle option.
997
+ * @param {number} index - The index of the drag handle option to select.
998
+ */
999
+ selectDragHandleOption: (index) => {
1000
+ fillInTheGapsOverImageDragAndDropPage.dragHandleOptions()
1001
+ .eq(index)
1002
+ .click();
1003
+ },
1004
+
1005
+
1006
+ /**
1007
+ * Verifies the drag handle icon in the "Specify Correct Answer" section.
1008
+ * @param {string} dragHandleOption - The drag handle option to verify.
1009
+ */
1010
+ verifyDragHandleIconSpecifyCorrectAnswer: (dragHandleOption) => {
1011
+ switch (dragHandleOption) {
1012
+ case 'drag icon':
1013
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1014
+ .should('have.class', 'drag-icon-button');
1015
+ break;
1016
+ case 'arrow icon':
1017
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1018
+ .should('have.class', 'drag-arrows-icon');
1019
+ break;
1020
+ case 'none':
1021
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1022
+ .should('not.exist');
1023
+ break;
1024
+ default:
1025
+ throw new Error('Invalid drag option');
1026
+ }
1027
+ },
1028
+
1029
+ /**
1030
+ * Verifies the drag handle icon in the preview tab.
1031
+ * @param {string} dragHandleOption - The drag handle option to verify.
1032
+ */
1033
+ verifyDragHandleIconPreviewTab: (dragHandleOption) => {
1034
+ switch (dragHandleOption) {
1035
+ case 'drag icon':
1036
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
1037
+ .within(() => {
1038
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1039
+ .should('have.class', 'drag-icon-button');
1040
+ });
1041
+ break;
1042
+ case 'arrow icon':
1043
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
1044
+ .within(() => {
1045
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1046
+ .should('have.class', 'drag-arrows-icon');
1047
+ });
1048
+ break;
1049
+ case 'none':
1050
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
1051
+ .within(() => {
1052
+ fillInTheGapsOverImageDragAndDropPage.dragHandle()
1053
+ .should('not.exist');
1054
+ });
1055
+ break;
1056
+ default:
1057
+ throw new Error('Invalid drag option');
1058
+ }
1059
+ },
1060
+
1061
+ /**
1062
+ * Verifies the background color of grid
1063
+ * @param {string} colorValue - The expected background color value.
1064
+ */
1065
+ verifyDraggableOptionsFillColorSpecifyCorrectAnswerSection: (colorValue) => {
1066
+ utilities.verifyCSS(draggableOptionContainer.draggableOption(), {
1067
+ 'background-color': colorValue
1068
+ });
1069
+ },
1070
+
1071
+ /**
1072
+ * Verifies the background color of grid
1073
+ * @param {string} colorValue - The expected background color value.
1074
+ */
1075
+ verifyDraggableOptionsFillColorPreviewTab: (colorValue) => {
1076
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
1077
+ .within(() => {
1078
+ utilities.verifyCSS(fillInTheGapsOverImageDragAndDropPage.draggableOption(), {
1079
+ 'background-color': colorValue
1080
+ });
1081
+ });
1082
+ },
1083
+
1084
+ /**
1085
+ * Verifies the border color of grid
1086
+ * @param {string} colorValue - The expected border color value.
1087
+ */
1088
+ verifyDraggableOptionsBorderColorSpecifyCorrectAnswer: (colorValue) => {
1089
+ utilities.verifyCSS(fillInTheGapsOverImageDragAndDropPage.draggableOption(), {
1090
+ 'border': `1px solid ${colorValue}`
1091
+ });
1092
+ },
1093
+
1094
+ /**
1095
+ * Verifies the border color of grid
1096
+ * @param {string} colorValue - The expected border color value.
1097
+ */
1098
+ verifyDraggableOptionsBorderColorPreviewTab: (colorValue) => {
1099
+ fillInTheGapsOverImageDragAndDropPage.previewTabQuestionWrapper()
1100
+ .within(() => {
1101
+ utilities.verifyCSS(fillInTheGapsOverImageDragAndDropPage.draggableOption(), {
1102
+ 'border': `1px solid ${colorValue}`
1103
+ });
1104
+ });
1105
+ },
562
1106
  }
563
1107
 
564
1108
  const tests = {
@@ -583,6 +1127,9 @@ const tests = {
583
1127
  ...backgroundImageUploadComponent.tests,
584
1128
  ...imageCanvasComponent.tests,
585
1129
  ...additionalSettingsAccessibilitySectionComponent.tests,
1130
+ ...styleAndLayoutCustomizationAccordionComponent.tests,
1131
+ ...figCommonStyleAndLayoutComponent.tests,
1132
+ ...connectorStyleStyleAndLayoutCustomizationComponent.tests,
586
1133
 
587
1134
  verifyContentsOfSpecifyCorrectAnswerSection: () => {
588
1135
  it('When user selects a scoring type then in the \'Correct\' accordion, all the contents should be displayed', () => {
@@ -1665,6 +1665,10 @@ const steps = {
1665
1665
  });
1666
1666
  },
1667
1667
 
1668
+ verifyCorrectIncorrectStatusMessageNotExists: () => {
1669
+ utilities.verifyElementVisibilityState(graphingPage.correctIncorrectStatusMessageText(), 'notExist');
1670
+ },
1671
+
1668
1672
  verifyCorrectAnswerSectionNotExist: () => {
1669
1673
  utilities.verifyElementVisibilityState(utilities.getNthElement(graphingPage.graphCorrectAnswerSection(), 1), 'notExist');
1670
1674
  },