itemengine-cypress-automation 1.0.246 → 1.0.247
Sign up to get free protection for your applications and to get access to all the features.
- package/cypress/e2e/ILC/ChartsBar/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +1 -1
- package/cypress/e2e/ILC/ChartsBar/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +1 -1
- package/cypress/e2e/ILC/ChartsLine/Scoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +349 -0
- package/cypress/e2e/ILC/ChartsLine/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +348 -0
- package/cypress/e2e/ILC/ChartsLine/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +415 -0
- package/cypress/e2e/ILC/ChartsLine/Scoring/allOrNothingPenaltyScoring.js +54 -0
- package/cypress/e2e/ILC/ChartsLine/Scoring/partialDifferentWeightBasic.js +254 -0
- package/cypress/e2e/ILC/ChartsLine/Scoring/partialEqualWeightBasic.js +255 -0
- package/cypress/e2e/ILC/DrawingResponse/drawingResponsePreviewTabContents.smoke.js +4 -0
- package/cypress/e2e/ILC/EssayResponse/createCustomCategory.smoke.js +2 -0
- package/cypress/e2e/ILC/EssayResponse/editCategoryFlyout.js +3 -0
- package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +4 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseCustomizeFormattingOptions1.smoke.js +2 -0
- package/cypress/e2e/ILC/EssayResponse/essayResponseSpecialCharacters.js +2 -0
- package/cypress/e2e/ILC/EssayResponseBasic/essayResponseBasicCustomizeFormattingOptions.js +2 -0
- package/cypress/e2e/ILC/ImageHighlight/toolsFunctionalityEditTab.js +2 -2
- package/cypress/e2e/ILC/ListOrderingNew/styleAndLayoutCustomizationSameList.js +270 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/partialDifferentWeightsBasic.js +95 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +236 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/partialEqualWeightsBasic.js +150 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/setPointsPopup.js +88 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/specifyCorrectAnswerSection.js +97 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/HorizontalOrientation/studentViewSettings.js +134 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/additionalSettings.js +131 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/editTabBasicSection.js +167 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/editTabScoring.js +202 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/headerSection.js +76 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/manuallyAndNonScoredEditTab.js +72 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/minimumScoringPenaltyPointsAndRoundingDropdown.js +197 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/optionsOrientationSection.js +180 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/specifyCorrectAnswerSection.js +95 -0
- package/cypress/e2e/ILC/ListOrderingReorderAsASeperateList/studentViewSettings.js +130 -0
- package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDraggableOptionProperties.js +223 -0
- package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDraggableOptionsPanel.js +121 -0
- package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationDropzoneConnectorStyle.js +68 -0
- package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionAlignment.js +71 -0
- package/cypress/e2e/ILC/Matching/styleAndLayoutCustomizationOptionPlacement.js +64 -0
- package/cypress/e2e/ILC/MatchingDropdown/styleAndLayoutCustomization.js +270 -0
- package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingAlternatePointsGreaterThanCorrectPoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsEqualToAlternatePoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/allOrNothingCorrectPointsGreaterThanAlternatePoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsEqualToAlternativePoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsCorrectPointsGreaterThanAlternativePoints.js +8 -8
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialDifferentWeightsScoringBasic.js +4 -4
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsEqualToAlternativePoints.js +7 -7
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsCorrectPointsGreaterThanAlternativePoints.js +8 -8
- package/cypress/e2e/ILC/TextEntryMath/Scoring/partialEqualWeightsScoringBasic.js +4 -4
- package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViews.smoke.js +4 -4
- package/cypress/e2e/ILC/TextEntryMath/allOrNothingBasicForAllViewsFormulaTemplate.smoke.js +272 -0
- package/cypress/e2e/ILC/TextEntryMath/evaluationMethodsWithoutSetResponse.js +6 -6
- package/cypress/fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters.js +2 -2
- package/cypress/pages/audioPlayerPage.js +4 -4
- package/cypress/pages/audioResponsePage.js +9 -1
- package/cypress/pages/chartsBarPage.js +3 -3
- package/cypress/pages/components/connectorStyleStyleAndLayoutCustomizationComponent.js +51 -0
- package/cypress/pages/components/gridQuestionCommonComponent.js +1 -1
- package/cypress/pages/components/index.js +1 -10
- package/cypress/pages/components/listOrderingCommonStyleAndLayoutComponent.js +604 -0
- package/cypress/pages/components/optionsWrapperComponent.js +1 -1
- package/cypress/pages/components/setPointsPopupBase.js +6 -6
- package/cypress/pages/dragAndDropIntoCategoriesPage.js +1 -1
- package/cypress/pages/essayResponseBasicPage.js +4 -4
- package/cypress/pages/essayResponseMathPage.js +4 -4
- package/cypress/pages/fillInTheGapsDragAndDropPage.js +2 -2
- package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +2 -2
- package/cypress/pages/index.js +0 -1
- package/cypress/pages/itemPreviewPage.js +1 -2
- package/cypress/pages/itemPreviewSettingsPage.js +3 -3
- package/cypress/pages/listOrderingPage.js +384 -10
- package/cypress/pages/matchingPage.js +512 -13
- package/cypress/pages/multipleSelectionPage.js +2 -2
- package/cypress/pages/numberLineLabelPage.js +3 -3
- package/cypress/pages/shortTextResponsePage.js +0 -37
- package/cypress/pages/singleSelectionPage.js +2 -2
- package/cypress/pages/textEntryMathPage.js +41 -9
- package/cypress/pages/textSelectionPage.js +2 -2
- package/cypress/pages/uploadResponsePage.js +2 -3
- package/cypress/pages/videoResponsePage.js +9 -2
- package/package.json +1 -1
- package/cypress/fixtures/specialAndMathCharacters.js +0 -120
- package/cypress/pages/components/autoScoredAdditionalSettings.js +0 -183
- package/cypress/pages/components/autoScoredPreviewBase.js +0 -92
- package/cypress/pages/components/autoScoredScoringSection.js +0 -199
- package/cypress/pages/components/autoScoredScoringSectionMultipleResponsesType.js +0 -377
- package/cypress/pages/components/autoScoredSetCorrectAnswerSection.js +0 -297
- package/cypress/pages/components/autoScoredStudentViewSettingsForPredefinedOptions.js +0 -84
- package/cypress/pages/components/listSortingAndOrderingBase.js +0 -401
- package/cypress/pages/components/previewScoringAndShowCorrectAnswerComponent.js +0 -91
- package/cypress/pages/components/scoringSectionBase.js +0 -354
- package/cypress/pages/components/specialAndCustomSpecialCharactersComponent.js +0 -80
- package/cypress/pages/components/specialCharactersFlyoutComponent.js +0 -59
- package/cypress/pages/listSortingPage.js +0 -1198
@@ -897,23 +897,6 @@ const tests = {
|
|
897
897
|
...autoScoredSpecifyCorrectAnswerSection.tests,
|
898
898
|
...studentResponseAndLayoutComponent.tests,
|
899
899
|
|
900
|
-
verifyAnswerInputScoreAndCorrectIncorrectAnswerLabel: (answerInput, score, isCorrect) => {
|
901
|
-
shortTextResponsePage.previewTabResponseField()
|
902
|
-
.clear()
|
903
|
-
.type(answerInput);
|
904
|
-
autoScoredScoringPreviewTab.previewScoreText()
|
905
|
-
.verifyInnerText(score);
|
906
|
-
autoScoredPreviewBase.checkAnswerButton()
|
907
|
-
.click();
|
908
|
-
if (isCorrect) {
|
909
|
-
autoScoredPreviewBase.correctIcon()
|
910
|
-
.should('be.visible');
|
911
|
-
} else {
|
912
|
-
autoScoredPreviewBase.incorrectIcon()
|
913
|
-
.should('be.visible');
|
914
|
-
};
|
915
|
-
},
|
916
|
-
|
917
900
|
/**
|
918
901
|
* Verifies the contents and functionality of the 'Specify correct answer' accordion for multiple selection questions.
|
919
902
|
* @param {{'Correct' | 'Alternative'}} accordionName - The name of the accordion to be used in the validation.
|
@@ -952,26 +935,6 @@ const tests = {
|
|
952
935
|
});
|
953
936
|
},
|
954
937
|
|
955
|
-
verifyMinimumScoreAwardedForIncorrectAnswer: (totalPoints) => {
|
956
|
-
it('When user has provided minimum score awarded (if attempted) points, then in Preview tab on entering incorrect answer, minimum score should be provided for the question', () => {
|
957
|
-
cy.log('Switch to edit tab and set minimum score if attempted points')
|
958
|
-
createQuestionBasePage.steps.switchToEditTab();
|
959
|
-
scoringSectionBase.steps.expandMinimumScoringDropdown();
|
960
|
-
scoringSectionBase.steps.selectMinimumScoringTypeListOption('Award minimum score only if attempted');
|
961
|
-
scoringSectionBase.minimumScoreIfAttemptedInputField()
|
962
|
-
.type('1')
|
963
|
-
.should('have.value', '1');
|
964
|
-
createQuestionBasePage.steps.switchToPreviewTab()
|
965
|
-
shortTextResponsePage.previewTabResponseField()
|
966
|
-
.type('Incorrect answer')
|
967
|
-
.blur();
|
968
|
-
autoScoredScoringPreviewTab.previewScoreText()
|
969
|
-
.then(($points) => {
|
970
|
-
expect($points.text()).to.equal(`1/${totalPoints}`);
|
971
|
-
});
|
972
|
-
});
|
973
|
-
},
|
974
|
-
|
975
938
|
verifyContentsOfSpecifyCorrectAnswerSection: () => {
|
976
939
|
it('In the \'Correct\' accordion, one answer input field should be visible', () => {
|
977
940
|
utilities.verifyElementVisibilityState(shortTextResponsePage.answerInputFieldSpecifyCorrectAnswerSection(), 'visible');
|
@@ -353,7 +353,7 @@ const steps = {
|
|
353
353
|
.eq(index)
|
354
354
|
.find('[role="math"]')
|
355
355
|
.should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
|
356
|
-
.contains(constants.CKEditorInputFieldEnteredEquationText);
|
356
|
+
// .contains(constants.CKEditorInputFieldEnteredEquationText); ;
|
357
357
|
},
|
358
358
|
|
359
359
|
/**
|
@@ -400,7 +400,7 @@ const steps = {
|
|
400
400
|
.eq(index)
|
401
401
|
.find('[role="math"]')
|
402
402
|
.should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
|
403
|
-
.contains(constants.CKEditorInputFieldEnteredEquationText);
|
403
|
+
// .contains(constants.CKEditorInputFieldEnteredEquationText); ;
|
404
404
|
},
|
405
405
|
|
406
406
|
/**
|
@@ -110,7 +110,14 @@ const selectors = {
|
|
110
110
|
correctAnswersContainerResponseNumeration: () => cy.get('.cloze-math-correct-answer-wrapper .answer-numeration-number-box'),
|
111
111
|
correctAnswersLabel: () => cy.get('.cloze-with-text-correct-answer-label'),
|
112
112
|
correctIncorrectStatusMessageText: () => cy.get('[class*="AnswerLabelText"]'),
|
113
|
-
correctAnswersContainer: () => cy.get('[class*="__AnswerLabelWrapper"]')
|
113
|
+
correctAnswersContainer: () => cy.get('[class*="__AnswerLabelWrapper"]'),
|
114
|
+
|
115
|
+
//Formula Template
|
116
|
+
layoutAccordion: () => cy.get('.custom-settings-option-wrapper .ngie-accordion-summary:visible').eq(0),
|
117
|
+
inputFieldLayoutAccordion: () => cy.get('.equation-input-component[aria-label*="Math template"]:visible'),
|
118
|
+
addResponseContainerButton: () => cy.get('[type="button"][class*="ResponseContainerButton"]'),
|
119
|
+
responseFieldFormulaTemplatePreviewTab: () => cy.get('.add_response_element .mq-root-block'),
|
120
|
+
|
114
121
|
}
|
115
122
|
|
116
123
|
const steps = {
|
@@ -128,13 +135,6 @@ const steps = {
|
|
128
135
|
...ckEditorToolbar.steps,
|
129
136
|
...colorPopupComponent.steps,
|
130
137
|
|
131
|
-
switchToGradingView: () => {
|
132
|
-
autoScoredScoringPreviewTab.gradingViewRadioButton()
|
133
|
-
.click()
|
134
|
-
.should('be.checked');
|
135
|
-
cy.wait(1000);
|
136
|
-
},
|
137
|
-
|
138
138
|
verifyAddStructureTabIsSelected: () => {
|
139
139
|
textEntryMathPage.addStructureTab()
|
140
140
|
.should('have.attr', 'aria-selected', 'true');
|
@@ -721,7 +721,13 @@ const steps = {
|
|
721
721
|
utilities.verifyElementCount(textEntryMathPage.correctAnswersContainerResponse(), correctAnswerArray.length);
|
722
722
|
correctAnswerArray.forEach((correctAnswer, index) => {
|
723
723
|
utilities.verifyTextContent(utilities.getNthElement(textEntryMathPage.correctAnswersContainerResponseNumeration(), index), index + 1);
|
724
|
-
|
724
|
+
textEntryMathPage.correctAnswersContainerResponse()
|
725
|
+
.eq(index)
|
726
|
+
.then(($element) => {
|
727
|
+
let actualText = $element[0].innerText;
|
728
|
+
const actualAnswer = actualText.replace(/\u200B/g, '').replace(/\n/g, '').trim();
|
729
|
+
expect(actualAnswer).to.equal(correctAnswer);
|
730
|
+
});
|
725
731
|
});
|
726
732
|
},
|
727
733
|
|
@@ -754,6 +760,16 @@ const steps = {
|
|
754
760
|
.click();
|
755
761
|
},
|
756
762
|
|
763
|
+
/**
|
764
|
+
* Focus in the answer input fields of the preview tab
|
765
|
+
* @param {number} responseIndex indx of the response to add input
|
766
|
+
*/
|
767
|
+
focusInResponseAnswerInputFieldFormulaTemplatePreviewTab: (responseIndex) => {
|
768
|
+
textEntryMathPage.responseFieldFormulaTemplatePreviewTab()
|
769
|
+
.eq(responseIndex)
|
770
|
+
.click();
|
771
|
+
},
|
772
|
+
|
757
773
|
/**
|
758
774
|
* Focus in the answer input fields of the preview tab
|
759
775
|
* @param {number} responseIndex indx of the response to add input
|
@@ -881,6 +897,22 @@ const steps = {
|
|
881
897
|
selectModalVisibilityTypeButton: () => {
|
882
898
|
textEntryMathPage.modalVisibilityTypeButton()
|
883
899
|
.click();
|
900
|
+
},
|
901
|
+
|
902
|
+
expandLayoutAccordion: () => {
|
903
|
+
textEntryMathPage.layoutAccordion()
|
904
|
+
.click()
|
905
|
+
.should('have.attr', 'aria-expanded', 'true');
|
906
|
+
},
|
907
|
+
|
908
|
+
focusInLayoutInputField: () => {
|
909
|
+
textEntryMathPage.inputFieldLayoutAccordion()
|
910
|
+
.click();
|
911
|
+
},
|
912
|
+
|
913
|
+
addResponseContainer: () => {
|
914
|
+
textEntryMathPage.addResponseContainerButton()
|
915
|
+
.click();
|
884
916
|
}
|
885
917
|
}
|
886
918
|
|
@@ -245,7 +245,7 @@ const steps = {
|
|
245
245
|
textSelectionPage.questionTextWrapperPreviewTab()
|
246
246
|
.find('span[role="math"]')
|
247
247
|
.should('have.attr', 'aria-label', constants.CKEditorInputFieldEnteredEquationAriaLabel)
|
248
|
-
.contains(constants.CKEditorInputFieldEnteredEquationText);
|
248
|
+
// .contains(constants.CKEditorInputFieldEnteredEquationText); ;
|
249
249
|
},
|
250
250
|
|
251
251
|
verifyLinkInPreviewTab: () => {
|
@@ -519,7 +519,7 @@ const steps = {
|
|
519
519
|
clickOnOptionInPreviewTab: (optionText) => {
|
520
520
|
textSelectionPage.optionPreviewTab()
|
521
521
|
.contains(optionText)
|
522
|
-
.
|
522
|
+
.click();
|
523
523
|
utilities.hoverAwayFromElement();
|
524
524
|
cy.wait(2000);
|
525
525
|
},
|
@@ -78,7 +78,7 @@ const selectors = {
|
|
78
78
|
addFileDescriptionIcon: () => cy.get('.icon-File-description'),
|
79
79
|
scanningForVirusPreLoader: () => cy.get('[alt="loader"]'),
|
80
80
|
virusErrorMessageWrapper: () => cy.get('.FileUploadStatementLarge'),
|
81
|
-
uploadedFileLink: () => cy.get('
|
81
|
+
uploadedFileLink: () => cy.get('img[src*="/files/document?key=freeResponse/"]'),
|
82
82
|
editDisplayTextPopupInputField: () => cy.get('.inline-text-question-prefix-wrapper .update-display-text-input'),
|
83
83
|
deleteButton: () => cy.get('.icon-Delete.upload-response-state'),
|
84
84
|
deletePopupContent: () => cy.get('.delete-document-popup-message-wrapper'),
|
@@ -147,8 +147,7 @@ const steps = {
|
|
147
147
|
uploadResponsePage.virusErrorMessageWrapper()
|
148
148
|
.should('not.be.visible', { delay: 500 });
|
149
149
|
uploadResponsePage.uploadedFileLink()
|
150
|
-
.
|
151
|
-
.should('have.text', files[index]);
|
150
|
+
.should('have.attr', 'alt', files[index]);
|
152
151
|
return uploadSequentially(files, index + 1);
|
153
152
|
});
|
154
153
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import utilities from "../support/helpers/utilities"
|
2
2
|
import { dialogBoxBase } from "./dialogBoxBase";
|
3
|
-
import { additionalSettingsPanel, commonComponents, createQuestionBasePage, questionInstructionsComponent,
|
3
|
+
import { additionalSettingsPanel, commonComponents, createQuestionBasePage, questionInstructionsComponent, playbackControlsBaseComponent, scoringSectionBaseEditTab, autoScoredScoringPreviewTab, limitNumberOfRetakeComponent, studentViewSettingsLabelComponent, allowTeachersToDownloadStudentResponseComponent, additionalSettingsAccessibilitySectionComponent } from "./components"
|
4
4
|
import { selectQuestionResourceToolPage } from "./selectQuestionResourceToolPage";
|
5
5
|
const css = Cypress.env('css');
|
6
6
|
|
@@ -103,7 +103,6 @@ const selectors = {
|
|
103
103
|
|
104
104
|
const steps = {
|
105
105
|
...createQuestionBasePage.steps,
|
106
|
-
...scoringSectionBase.steps,
|
107
106
|
...questionInstructionsComponent.steps,
|
108
107
|
...additionalSettingsPanel.steps,
|
109
108
|
...playbackControlsBaseComponent.steps,
|
@@ -973,6 +972,14 @@ const steps = {
|
|
973
972
|
|
974
973
|
verifyResponseIsRecordedHelpText: () => {
|
975
974
|
utilities.verifyInnerText(videoResponsePage.savedResponseText(), 'Your response has been recorded.');
|
975
|
+
},
|
976
|
+
|
977
|
+
//Need to remove this once https://redmine.zeuslearning.com/issues/577356 is resolved
|
978
|
+
switchToEditTab: () => {
|
979
|
+
createQuestionBasePage.editTab()
|
980
|
+
.click()
|
981
|
+
.should('have.attr', 'aria-selected', 'true');
|
982
|
+
videoResponsePage.steps.expandCustomizePlaybackControlsAccordion();
|
976
983
|
}
|
977
984
|
}
|
978
985
|
|
package/package.json
CHANGED
@@ -1,120 +0,0 @@
|
|
1
|
-
//This file is deprecated
|
2
|
-
|
3
|
-
export const specialOrMathCharacters = {
|
4
|
-
specialCharacters: {
|
5
|
-
popupTitle: 'Special characters',
|
6
|
-
characters: [
|
7
|
-
{ symbol: '¡', title: 'Inverted exclamation mark' },
|
8
|
-
{ symbol: '¿', title: 'Inverted question mark' },
|
9
|
-
{ symbol: 'Ç', title: 'Latin capital letter C with cedilla' },
|
10
|
-
{ symbol: 'Ñ', title: 'Latin capital letter N with tilde' },
|
11
|
-
{ symbol: 'ç', title: 'Latin small letter c with cedilla' },
|
12
|
-
{ symbol: 'ñ', title: 'Latin small letter n with tilde' },
|
13
|
-
{ symbol: 'ý', title: 'Latin small letter y with acute accent' },
|
14
|
-
{ symbol: 'ÿ', title: 'Latin small letter y with diaeresis' },
|
15
|
-
{ symbol: 'à', title: 'Latin small letter a with grave accent' },
|
16
|
-
{ symbol: 'á', title: 'Latin small letter a with acute accent' },
|
17
|
-
{ symbol: 'â', title: 'Latin small letter a with circumflex' },
|
18
|
-
{ symbol: 'ã', title: 'Latin small letter a with tilde' },
|
19
|
-
{ symbol: 'ä', title: 'Latin small letter a with diaeresis' },
|
20
|
-
{ symbol: 'å', title: 'Latin small letter a with ring above' },
|
21
|
-
{ symbol: 'æ', title: 'Latin small letter æ' },
|
22
|
-
{ symbol: 'À', title: 'Latin capital letter A with grave accent' },
|
23
|
-
{ symbol: 'Á', title: 'Latin capital letter A with acute accent' },
|
24
|
-
{ symbol: 'Â', title: 'Latin capital letter A with circumflex' },
|
25
|
-
{ symbol: 'Ã', title: 'Latin capital letter A with tilde' },
|
26
|
-
{ symbol: 'Ä', title: 'Latin capital letter A with diaeresis' },
|
27
|
-
{ symbol: 'Å', title: 'Latin capital letter A with ring above' },
|
28
|
-
{ symbol: 'Æ', title: 'Latin capital letter Æ' },
|
29
|
-
{ symbol: 'è', title: 'Latin small letter e with grave accent' },
|
30
|
-
{ symbol: 'é', title: 'Latin small letter e with acute accent' },
|
31
|
-
{ symbol: 'ê', title: 'Latin small letter e with circumflex' },
|
32
|
-
{ symbol: 'ë', title: 'Latin small letter e with diaeresis' },
|
33
|
-
{ symbol: 'È', title: 'Latin capital letter E with grave accent' },
|
34
|
-
{ symbol: 'É', title: 'Latin capital letter E with acute accent' },
|
35
|
-
{ symbol: 'Ê', title: 'Latin capital letter E with circumflex' },
|
36
|
-
{ symbol: 'Ë', title: 'Latin capital letter E with diaeresis' },
|
37
|
-
{ symbol: 'ì', title: 'Latin small letter i with grave accent' },
|
38
|
-
{ symbol: 'í', title: 'Latin small letter i with acute accent' },
|
39
|
-
{ symbol: 'î', title: 'Latin small letter i with circumflex' },
|
40
|
-
{ symbol: 'ï', title: 'Latin small letter i with diaeresis' },
|
41
|
-
{ symbol: 'Ì', title: 'Latin capital letter I with grave accent' },
|
42
|
-
{ symbol: 'Í', title: 'Latin capital letter I with acute accent' },
|
43
|
-
{ symbol: 'Î', title: 'Latin capital letter I with circumflex' },
|
44
|
-
{ symbol: 'Ï', title: 'Latin capital letter I with diaeresis' },
|
45
|
-
{ symbol: 'ò', title: 'Latin small letter o with grave accent' },
|
46
|
-
{ symbol: 'ó', title: 'Latin small letter o with acute accent' },
|
47
|
-
{ symbol: 'ô', title: 'Latin small letter o with circumflex' },
|
48
|
-
{ symbol: 'õ', title: 'Latin small letter o with tilde' },
|
49
|
-
{ symbol: 'ö', title: 'Latin small letter o with diaeresis' },
|
50
|
-
{ symbol: 'Ò', title: 'Latin capital letter O with grave accent' },
|
51
|
-
{ symbol: 'Ó', title: 'Latin capital letter O with acute accent' },
|
52
|
-
{ symbol: 'Ô', title: 'Latin capital letter O with circumflex' },
|
53
|
-
{ symbol: 'Õ', title: 'Latin capital letter O with tilde' },
|
54
|
-
{ symbol: 'Ö', title: 'Latin capital letter O with diaeresis' },
|
55
|
-
{ symbol: 'Ø', title: 'Latin capital letter O with stroke' },
|
56
|
-
{ symbol: 'ù', title: 'Latin small letter u with grave accent' },
|
57
|
-
{ symbol: 'ú', title: 'Latin small letter u with acute accent' },
|
58
|
-
{ symbol: 'û', title: 'Latin small letter u with circumflex' },
|
59
|
-
{ symbol: 'ü', title: 'Latin small letter u with diaeresis' },
|
60
|
-
{ symbol: 'Ù', title: 'Latin capital letter U with grave accent' },
|
61
|
-
{ symbol: 'Ú', title: 'Latin capital letter U with acute accent' },
|
62
|
-
{ symbol: 'Û', title: 'Latin capital letter U with circumflex' },
|
63
|
-
{ symbol: 'Ü', title: 'Latin capital letter U with diaeresis' }
|
64
|
-
]
|
65
|
-
},
|
66
|
-
mathCharacters: {
|
67
|
-
popupTitle: 'Math characters',
|
68
|
-
characters: [
|
69
|
-
{ symbol: '√', title: 'Square root' },
|
70
|
-
{ symbol: '∞', title: 'Infinity' },
|
71
|
-
{ symbol: '±', title: 'Plus or minus' },
|
72
|
-
{ symbol: 'µ', title: 'Micro' },
|
73
|
-
{ symbol: 'σ', title: 'Sigma' },
|
74
|
-
{ symbol: '∫', title: 'Integral' },
|
75
|
-
{ symbol: 'Δ', title: 'Delta' },
|
76
|
-
{ symbol: '≤', title: 'Less than or equal to' },
|
77
|
-
{ symbol: '≥', title: 'Greater than or equal to' },
|
78
|
-
{ symbol: '∪', title: 'Union' },
|
79
|
-
{ symbol: '∩', title: 'Intersection' },
|
80
|
-
{ symbol: '≡', title: 'Equivalent to' },
|
81
|
-
{ symbol: 'Σ', title: 'Capital sigma' },
|
82
|
-
{ symbol: '°', title: 'Degree' },
|
83
|
-
{ symbol: '½', title: 'One half' },
|
84
|
-
{ symbol: '⅓', title: 'One third' },
|
85
|
-
{ symbol: '⅔', title: 'Two third' },
|
86
|
-
{ symbol: '¼', title: 'One quarter' },
|
87
|
-
{ symbol: '¾', title: 'Three quarters' },
|
88
|
-
{ symbol: '⅕', title: 'One fifth' },
|
89
|
-
{ symbol: '⅖', title: 'Two fifth' },
|
90
|
-
{ symbol: '⅗', title: 'Three fifth' },
|
91
|
-
{ symbol: '⅘', title: 'Four fifth' },
|
92
|
-
{ symbol: '⅙', title: 'One sixth' },
|
93
|
-
{ symbol: '⅚', title: 'Five sixth' },
|
94
|
-
{ symbol: '⁰', title: 'Superscript zero' },
|
95
|
-
{ symbol: '¹', title: 'Superscript one' },
|
96
|
-
{ symbol: '²', title: 'Superscript two' },
|
97
|
-
{ symbol: '³', title: 'Superscript three' },
|
98
|
-
{ symbol: '⁴', title: 'Superscript four' },
|
99
|
-
{ symbol: '⁵', title: 'Superscript five' },
|
100
|
-
{ symbol: '⁶', title: 'Superscript six' },
|
101
|
-
{ symbol: '⁷', title: 'Superscript seven' },
|
102
|
-
{ symbol: '⁸', title: 'Superscript eight' },
|
103
|
-
{ symbol: '⁹', title: 'Superscript nine' },
|
104
|
-
{ symbol: '⁺', title: 'Superscript plus' },
|
105
|
-
{ symbol: '⁻', title: 'Superscript minus' },
|
106
|
-
{ symbol: '₀', title: 'Subscript zero' },
|
107
|
-
{ symbol: '₁', title: 'Subscript one' },
|
108
|
-
{ symbol: '₂', title: 'Subscript two' },
|
109
|
-
{ symbol: '₃', title: 'Subscript three' },
|
110
|
-
{ symbol: '₄', title: 'Subscript four' },
|
111
|
-
{ symbol: '₅', title: 'Subscript five' },
|
112
|
-
{ symbol: '₆', title: 'Subscript six' },
|
113
|
-
{ symbol: '₇', title: 'Subscript seven' },
|
114
|
-
{ symbol: '₈', title: 'Subscript eight' },
|
115
|
-
{ symbol: '₉', title: 'Subscript nine' },
|
116
|
-
{ symbol: '₊', title: 'Subscript plus' },
|
117
|
-
{ symbol: '₋', title: 'Subscript minus' }
|
118
|
-
]
|
119
|
-
}
|
120
|
-
}
|
@@ -1,183 +0,0 @@
|
|
1
|
-
import { autoScoredPreviewBase } from "./autoScoredPreviewBase";
|
2
|
-
import { createQuestionBasePage } from "./createQuestionBasePage";
|
3
|
-
|
4
|
-
const css = Cypress.env('css');
|
5
|
-
//This file is deprecated all functions related to check answer are present in autoScoredStudentViewSettings.js
|
6
|
-
const selectors = {
|
7
|
-
allowStudentsToCheckAnswerLabel: () => cy.get('.allow-student-check-answer-checkbox-wrapper .MuiFormControlLabel-label'),
|
8
|
-
allowStudentsToCheckAnswerCheckbox: () => cy.get('.ngie-checkbox [aria-label="Allow student to check answer"]'),
|
9
|
-
checkAnswerLabel: () => cy.get('.edit-check-answer-label'),
|
10
|
-
maximumCheckAnswerAttemptsLabel: () => cy.get('[class*="CheckAnswerstyles__OptionWrapper"] label[class*="MuiFormLabel-root MuiInputLabel-root"]'),
|
11
|
-
maximumCheckAnswerAttemptsInputField: () => cy.get('[class*="CheckAnswerstyles__OptionWrapper"] input[type="text"]'),
|
12
|
-
}
|
13
|
-
|
14
|
-
const steps = {
|
15
|
-
//V3 - This function should be updated in all files
|
16
|
-
clearMaximumCheckAnswerAttemptsInputField: () => {
|
17
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
18
|
-
.clear()
|
19
|
-
.should('have.value', '');
|
20
|
-
},
|
21
|
-
|
22
|
-
//V3 - This function should be updated in all files
|
23
|
-
addInputToMaximumCheckAnswerAttemptsInputField: (maxCheckAnswerAttempts) => {
|
24
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
25
|
-
.type(maxCheckAnswerAttempts)
|
26
|
-
.should('have.value', maxCheckAnswerAttempts);
|
27
|
-
},
|
28
|
-
|
29
|
-
setMaximumCheckAnswerAttempts: (maxCheckAnswerAttempts) => {
|
30
|
-
autoScoredAdditionalSettings.steps.checkAllowStudentsToCheckAnswerCheckbox()
|
31
|
-
autoScoredAdditionalSettings.steps.addInputToMaximumCheckAnswerAttemptsInputField(maxCheckAnswerAttempts)
|
32
|
-
},
|
33
|
-
|
34
|
-
//V3 - This function should be updated in all files
|
35
|
-
checkAllowStudentsToCheckAnswerCheckbox: () => {
|
36
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerCheckbox()
|
37
|
-
.click()
|
38
|
-
.should('be.checked');
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
const tests = {
|
43
|
-
verifyCheckAnswerSectionAndPreviewTabCheckAnswerButton: (questionType) => {
|
44
|
-
it('CSS of \'Check Answer\' section', { tags: 'css' }, () => {
|
45
|
-
autoScoredAdditionalSettings.checkAnswerLabel()
|
46
|
-
.verifyCSS(css.color.labels, css.fontSize.default, css.fontWeight.semibold);
|
47
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerLabel()
|
48
|
-
.verifyCSS(css.color.labelText, css.fontSize.normal, css.fontWeight.regular);
|
49
|
-
});
|
50
|
-
|
51
|
-
it('\'Check Answer\' label, \'Allow student to check answer\' checkbox label and checkbox should be displayed and by default it should be unchecked', () => {
|
52
|
-
autoScoredAdditionalSettings.checkAnswerLabel()
|
53
|
-
.verifyInnerText('Check answer');
|
54
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerLabel()
|
55
|
-
.verifyInnerText('Allow student to check answer');
|
56
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerCheckbox()
|
57
|
-
.should('not.be.checked');
|
58
|
-
if (questionType === 'multiple selection' || questionType === 'single selection') {
|
59
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
60
|
-
.should('not.exist');
|
61
|
-
} else {
|
62
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
63
|
-
.should('be.disabled');
|
64
|
-
}
|
65
|
-
});
|
66
|
-
|
67
|
-
it('When the user checks the \'Allow student to check answer\' checkbox, \'Maximum check answer attempts\' label and input field should be displayed', () => {
|
68
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerCheckbox()
|
69
|
-
.click()
|
70
|
-
.should('be.checked');
|
71
|
-
if (questionType === 'multipleSelection') {
|
72
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
73
|
-
.should('be.visible');
|
74
|
-
} else {
|
75
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
76
|
-
.should('be.enabled');
|
77
|
-
}
|
78
|
-
|
79
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsLabel()
|
80
|
-
.verifyInnerText('Maximum check answer attempts');
|
81
|
-
});
|
82
|
-
|
83
|
-
it('CSS of \'Maximum check answer attempts\' input field', { tags: 'css' }, () => {
|
84
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsLabel()
|
85
|
-
.verifyCSS(css.color.labels, css.fontSize.normal, css.fontWeight.semibold);
|
86
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
87
|
-
.should('have.css', 'background-color', css.color.transparent)
|
88
|
-
});
|
89
|
-
|
90
|
-
it('When the \'Maximum check answer attempts\' input field is empty and user switches to Preview tab, then the \'Check Answer\' button should be displayed and it should be enabled', () => {
|
91
|
-
//TODO: Need to discuss if we need add script to verify maximum input upto 999 and no decimal can be added
|
92
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
93
|
-
.should('have.value', '');
|
94
|
-
cy.log('Switching to Preview tab')
|
95
|
-
createQuestionBasePage.steps.switchToPreviewTab();
|
96
|
-
autoScoredPreviewBase.checkAnswerButton()
|
97
|
-
.should('be.enabled')
|
98
|
-
.and('be.visible');
|
99
|
-
});
|
100
|
-
|
101
|
-
it('CSS of Check Answer button', { tags: 'css' }, () => {
|
102
|
-
autoScoredPreviewBase.checkAnswerButton()
|
103
|
-
.verifyCSS(css.color.primaryBtn, css.fontSize.default, css.fontWeight.semibold)
|
104
|
-
.should('have.css', 'background-color', css.color.primaryBtnBg);
|
105
|
-
});
|
106
|
-
|
107
|
-
it('Accessibility of enabled Check Answer button', { tags: 'a11y' }, () => {
|
108
|
-
cy.checkAccessibility(autoScoredPreviewBase.checkAnswerButton());
|
109
|
-
});
|
110
|
-
|
111
|
-
it('When the user adds some value more than 0 in the \'Maximum check answer attempts\' input field, then the \'Check Answer\' button should become enabled in the Preview tab', () => {
|
112
|
-
cy.log('Pre step: Switching to Edit tab')
|
113
|
-
createQuestionBasePage.steps.switchToEditTab();
|
114
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
115
|
-
.clear()
|
116
|
-
.type('2')
|
117
|
-
.should('have.value', '2');
|
118
|
-
cy.log('Switching to Preview tab')
|
119
|
-
createQuestionBasePage.steps.switchToPreviewTab();
|
120
|
-
autoScoredPreviewBase.checkAnswerButton()
|
121
|
-
.should('not.have.class', 'Mui-disabled');
|
122
|
-
});
|
123
|
-
|
124
|
-
it('When the user unchecks the \'Allow student to check answer\' checkbox, then the \'Maximum check answer attempts\' input field should not be displayed and in Preview tab the \'Check Answer\' button should not be displayed', () => {
|
125
|
-
cy.log('Pre step: Switching to Edit tab')
|
126
|
-
createQuestionBasePage.steps.switchToEditTab();
|
127
|
-
autoScoredAdditionalSettings.allowStudentsToCheckAnswerCheckbox()
|
128
|
-
.click()
|
129
|
-
.should('not.be.checked');
|
130
|
-
if (questionType === 'multiple selection' || questionType === 'single selection') {
|
131
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
132
|
-
.should('not.exist');
|
133
|
-
} else {
|
134
|
-
autoScoredAdditionalSettings.maximumCheckAnswerAttemptsInputField()
|
135
|
-
.should('be.disabled');
|
136
|
-
}
|
137
|
-
cy.log('Switching to Preview tab')
|
138
|
-
createQuestionBasePage.steps.switchToPreviewTab();
|
139
|
-
autoScoredPreviewBase.checkAnswerButton()
|
140
|
-
.should('not.exist');
|
141
|
-
});
|
142
|
-
},
|
143
|
-
|
144
|
-
verifyDisabledCheckAnswerButtonWithCSSAnda11y: () => {
|
145
|
-
it('When the user reaches maximum check answer attempts, then the \'Check Answer\' button should become disabled', () => {
|
146
|
-
autoScoredPreviewBase.checkAnswerButton()
|
147
|
-
.should('be.disabled');
|
148
|
-
});
|
149
|
-
|
150
|
-
it('CSS of disabled \'Check Answer\' button', { tags: 'css' }, () => {
|
151
|
-
autoScoredPreviewBase.checkAnswerButton()
|
152
|
-
.verifyCSS(css.color.primaryBtnDisabled, css.fontSize.default, css.fontWeight.semibold);
|
153
|
-
});
|
154
|
-
|
155
|
-
it('Accessibility of disabled Check Answer button', { tags: 'a11y' }, () => {
|
156
|
-
cy.checkAccessibility(autoScoredPreviewBase.checkAnswerButton());
|
157
|
-
});
|
158
|
-
},
|
159
|
-
|
160
|
-
verifyCheckAnswerButtonFunctionalityWhenQuestionIsUnattempted: () => {
|
161
|
-
it('When the user has not attempted the question and clicks on the \'Check Answer\' button, then no changes should be displayed and the \'Check answer\' button should not get disabled', () => {
|
162
|
-
//comment: clicking on check answer button twice to verify if it stays in enabled state
|
163
|
-
autoScoredPreviewBase.checkAnswerButton()
|
164
|
-
.click();
|
165
|
-
autoScoredPreviewBase.checkAnswerButton()
|
166
|
-
.click();
|
167
|
-
autoScoredPreviewBase.correctIncorrectAnswerLabel()
|
168
|
-
.should('not.exist');
|
169
|
-
autoScoredPreviewBase.correctIcon()
|
170
|
-
.should('not.exist');
|
171
|
-
autoScoredPreviewBase.incorrectIcon()
|
172
|
-
.should('not.exist');
|
173
|
-
autoScoredPreviewBase.checkAnswerButton()
|
174
|
-
.should('be.enabled');
|
175
|
-
});
|
176
|
-
}
|
177
|
-
}
|
178
|
-
|
179
|
-
export const autoScoredAdditionalSettings = {
|
180
|
-
...selectors,
|
181
|
-
steps,
|
182
|
-
tests
|
183
|
-
}
|
@@ -1,92 +0,0 @@
|
|
1
|
-
import { previewScoringAndShowCorrectAnswerComponent } from "./previewScoringAndShowCorrectAnswerComponent";
|
2
|
-
//Note: deprecated file
|
3
|
-
const css = Cypress.env('css');
|
4
|
-
const selectors = {
|
5
|
-
correctIcon: () => cy.get('.icon-correct'),
|
6
|
-
incorrectIcon: () => cy.get('.icon-incorrect'),
|
7
|
-
correctIncorrectAnswerLabel: () => cy.get('.answer-label-text'),
|
8
|
-
checkAnswerButton: () => cy.get('.check-answer-and-status-wrapper button'),
|
9
|
-
correctIncorrectAnswerBorder: () => cy.get('[class*="question-preview-wrapper"] [class*="correct-answer-border"]')
|
10
|
-
}
|
11
|
-
|
12
|
-
const steps = {
|
13
|
-
//V3 - This function should be updated in all files
|
14
|
-
checkAnswer: () => {
|
15
|
-
autoScoredPreviewBase.checkAnswerButton()
|
16
|
-
.click();
|
17
|
-
},
|
18
|
-
|
19
|
-
//V3 - This function should be updated in all files
|
20
|
-
verifyCheckAnswerButtonEnabled: () => {
|
21
|
-
autoScoredPreviewBase.checkAnswerButton()
|
22
|
-
.should('be.enabled');
|
23
|
-
},
|
24
|
-
|
25
|
-
//V3 - This function should be updated in all files
|
26
|
-
verifyCheckAnswerButtonDisabled: () => {
|
27
|
-
autoScoredPreviewBase.checkAnswerButton()
|
28
|
-
.should('be.disabled');
|
29
|
-
},
|
30
|
-
|
31
|
-
verifyCorrectIncorrectAnswerLabel: (labelText) => {
|
32
|
-
autoScoredPreviewBase.correctIncorrectAnswerLabel()
|
33
|
-
.should('be.visible')
|
34
|
-
.verifyInnerText(`${labelText} answer`)
|
35
|
-
.parents('[class*="CorrectIncorrectAnswerstyles__AnswerLabelWrapper"]')
|
36
|
-
.find('.answer-label-icon')
|
37
|
-
.should('be.visible')
|
38
|
-
.should('have.text', `${labelText}-Icon`)
|
39
|
-
},
|
40
|
-
|
41
|
-
verifyCorrectAttemptBorder: () => {
|
42
|
-
autoScoredPreviewBase.correctIncorrectAnswerBorder()
|
43
|
-
.should('have.css', 'border', `1px solid ${css.color.correctAnswer}`);
|
44
|
-
},
|
45
|
-
|
46
|
-
verifyIncorrectAttemptBorder: () => {
|
47
|
-
autoScoredPreviewBase.correctIncorrectAnswerBorder()
|
48
|
-
.should('have.css', 'border', `1px solid ${css.color.incorrectAnswer}`);
|
49
|
-
},
|
50
|
-
|
51
|
-
verifyCorrectIncorrectBorderNotVisible: () => {
|
52
|
-
autoScoredPreviewBase.correctIncorrectAnswerBorder()
|
53
|
-
.should('have.css', 'border')
|
54
|
-
.and('match', /0px none/);
|
55
|
-
},
|
56
|
-
|
57
|
-
verifyCorrectIncorrectBorderNotExists: () => {
|
58
|
-
autoScoredPreviewBase.correctIncorrectAnswerBorder()
|
59
|
-
.should('not.exist');
|
60
|
-
},
|
61
|
-
|
62
|
-
verifyCorrectIncorrectAnswerLabelNotExists: () => {
|
63
|
-
autoScoredPreviewBase.correctIncorrectAnswerLabel()
|
64
|
-
.should('not.exist');
|
65
|
-
},
|
66
|
-
|
67
|
-
verifyQuestionPreviewStateWhenShowCorrectAnswerIsUnchecked: () => {
|
68
|
-
cy.log('After selecting student view radio button, the question preview should return to the previous state');
|
69
|
-
previewScoringAndShowCorrectAnswerComponent.steps.uncheckShowCorrectAnswerCheckbox();
|
70
|
-
autoScoredPreviewBase.correctIcon()
|
71
|
-
.should('not.exist');
|
72
|
-
autoScoredPreviewBase.incorrectIcon()
|
73
|
-
.should('not.exist');
|
74
|
-
autoScoredPreviewBase.correctIncorrectAnswerLabel()
|
75
|
-
.should('not.exist');
|
76
|
-
autoScoredPreviewBase.correctIncorrectAnswerBorder()
|
77
|
-
.should('not.exist');
|
78
|
-
},
|
79
|
-
|
80
|
-
//V3 - This function should be updated in all files
|
81
|
-
verifyCorrectIncorrectIconsDoesNotExist: () => {
|
82
|
-
autoScoredPreviewBase.correctIcon()
|
83
|
-
.should('not.exist');
|
84
|
-
autoScoredPreviewBase.incorrectIcon()
|
85
|
-
.should('not.exist');
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
export const autoScoredPreviewBase = {
|
90
|
-
...selectors,
|
91
|
-
steps
|
92
|
-
}
|