itemengine-cypress-automation 1.0.256-updatingToOTKV2-5b0ef53.0 → 1.0.257

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 (39) hide show
  1. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTab.js +21 -21
  2. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabSupportedFileTypes.js +6 -6
  3. package/cypress/e2e/ILC/CkEditorAudioPlayer/audioPlayerPreviewTabTranscript.js +4 -4
  4. package/cypress/e2e/ILC/CkEditorEquationEditor/equationEditorBasicFile.js +86 -5
  5. package/cypress/e2e/ILC/CkEditorEquationEditor/selectModeEditorBasic.js +114 -0
  6. package/cypress/e2e/ILC/CkEditorInsertImage/imageInfo.js +160 -0
  7. package/cypress/e2e/ILC/CkEditorInsertImage/insertImageBasicFile.js +83 -0
  8. package/cypress/e2e/ILC/CkEditorInsertImage/upload.js +53 -0
  9. package/cypress/e2e/ILC/CkEditorLink/linkBasic.js +85 -0
  10. package/cypress/e2e/ILC/CkEditorLink/linkInfoSection.js +94 -0
  11. package/cypress/e2e/ILC/CkEditorLink/linkPreview.js +38 -0
  12. package/cypress/e2e/ILC/CkEditorLink/uploadSection.js +59 -0
  13. package/cypress/e2e/ILC/EssayResponse/equationEditor.smoke.js +14 -279
  14. package/cypress/e2e/ILC/EssayResponse/equationEditorCategories1.js +78 -0
  15. package/cypress/e2e/ILC/FillInTheGapsTextNew/additionalSettingsForAnswerInputFields.js +2 -2
  16. package/cypress/e2e/ILC/Graphing/acceptRepeatedPoints.js +75 -0
  17. package/cypress/e2e/ILC/TextEntryMath/additionalSettingsBasic.js +84 -0
  18. package/cypress/e2e/ILC/TextEntryMath/additionalSettingsForAnswerInputFields.js +286 -0
  19. package/cypress/e2e/ILC/TextEntryMath/customSettingsSeparators.ts +107 -0
  20. package/cypress/e2e/ILC/TextEntryMath/equationEditor.smoke.js +99 -0
  21. package/cypress/fixtures/equationEditorCategoriesAndSymbols .js +336 -0
  22. package/cypress/pages/components/ariaLabelSectionComponent.js +1 -1
  23. package/cypress/pages/components/ckEditorAudioPlayerComponent.js +0 -11
  24. package/cypress/pages/components/ckEditorEquationEditorComponent.js +175 -7
  25. package/cypress/pages/components/ckEditorInsertImageComponent.js +272 -0
  26. package/cypress/pages/components/ckEditorLinkComponent.js +142 -0
  27. package/cypress/pages/components/customSettingsSeparatorsComponent.ts +97 -0
  28. package/cypress/pages/components/equationEditorSectionCommonComponent.js +528 -0
  29. package/cypress/pages/components/gradingViewEnumerationComponent.js +11 -6
  30. package/cypress/pages/components/index.js +2 -1
  31. package/cypress/pages/components/questionInstructionsComponent.js +10 -0
  32. package/cypress/pages/essayResponsePage.js +4 -121
  33. package/cypress/pages/graphingPage.js +24 -2
  34. package/cypress/pages/multipleSelectionPage.js +8 -0
  35. package/cypress/pages/textEntryMathPage.js +125 -18
  36. package/cypress/support/index.d.ts +7 -0
  37. package/cypress/tsconfig.json +11 -0
  38. package/package.json +1 -1
  39. package/scripts/sorry-cypress.mjs +6 -6
@@ -0,0 +1,272 @@
1
+ import { dialogBoxBase } from "../dialogBoxBase";
2
+ import { createQuestionBasePage } from "../components/createQuestionBasePage.js";
3
+ import utilities from "../../support/helpers/utilities";
4
+ const css = Cypress.env('css');
5
+
6
+ const selectors = {
7
+ ...createQuestionBasePage,
8
+ ...dialogBoxBase,
9
+ //Basic
10
+ imageInsertIcon: () => cy.get('.cke_button__image_icon'),
11
+ imagePropertiesLabel: () => cy.get('.dialog-header-label'),
12
+ imagePropertyWrapper: () => cy.get('.custom-link-wrapper'),
13
+ imageInQuestionInstruction: () => cy.get('[data-cke-saved-src*="https"]'),
14
+ foxImageLinkUrlValueCheck: () => cy.get('[data-cke-saved-src*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
15
+ imageInfoButton: () => cy.get('[title="Image Info"]'),
16
+ uploadButton: () => cy.get('[title="Upload"]'),
17
+ //Image Info
18
+ urlLabel: () => cy.get('.dialog-input-label').eq(0),
19
+ urlInputField: () => cy.get('.cke_dialog_ui_input_text').eq(1),
20
+ alternateTextLabel: () => cy.get('.dialog-input-label').eq(1),
21
+ alternateTextInputField: () => cy.get('.cke_dialog_ui_input_text').eq(3),
22
+ widthLabel: () => cy.get('.dialog-input-label').eq(2),
23
+ widthInputField: () => cy.get('.cke_dialog_ui_input_text').eq(5),
24
+ heightLabel: () => cy.get('.dialog-input-label').eq(3),
25
+ heightInputField: () => cy.get('.cke_dialog_ui_input_text').eq(7),
26
+ borderLabel: () => cy.get('.dialog-input-label').eq(4),
27
+ borderInputField: () => cy.get('.cke_dialog_ui_input_text').eq(9),
28
+ hSpaceLabel: () => cy.get('.dialog-input-label').eq(5),
29
+ hSpaceInputField: () => cy.get('.cke_dialog_ui_input_text').eq(11),
30
+ vSpaceLabel: () => cy.get('.dialog-input-label').eq(6),
31
+ vSpaceInputField: () => cy.get('.cke_dialog_ui_input_text').eq(13),
32
+ //Image Responsive
33
+ imageResponsivenessLabel: () => cy.get('.dialog-input-label').eq(8),
34
+ responsiveRadioButton: () => cy.get('[class*="image-responsiveness-radio-wrapper"]').eq(1),
35
+ responsiveRadioLabel: () => cy.get('[class*="image-responsiveness-radio-wrapper"]').eq(2),
36
+ fixedRadioButton: () => cy.get('[class*="image-responsiveness-radio-wrapper"]').eq(3),
37
+ fixedRadioLabel: () => cy.get('[class*="image-responsiveness-radio-wrapper"]').eq(4),
38
+ //Alignment
39
+ alignmentLabel: () => cy.get('.dialog-input-label').eq(7),
40
+ alignmentDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(1),
41
+ alignmentOptions: (alignment = null) => {
42
+ if (alignment) {
43
+ return cy.get(`[class*="cke_dialog_ui_input_select"] option[value="${alignment}"]`)
44
+ } else {
45
+ return cy.get('[class*="cke_dialog_ui_input_select"] option[value]').eq(3)
46
+ }
47
+ },
48
+ //Special Button
49
+ lockRatioButton: () => cy.get('[title="Lock Ratio"]'),
50
+ resetSizeButton: () => cy.get('[title="Reset Size"]'),
51
+ //Preview box
52
+ imageInPreviewBox: () => cy.get('[src*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
53
+ //Upload
54
+ sendItToTheServerLabel: () => cy.get('.dialog-input-label').eq(9),
55
+ chooseFileButton: () => cy.get('.dialog-input-area').eq(9),
56
+ sendItToTheServerButton: () => cy.get('[title="Send it to the Server"] .cke_dialog_ui_button'),
57
+ }
58
+
59
+ const steps = {
60
+ clickChooseFileButton: () => {
61
+ ckEditorInsertImageComponent.chooseFileButton()
62
+ .click();
63
+ },
64
+
65
+ selectImageInsertOptionFromCKEditorToolbar: () => {
66
+ ckEditorInsertImageComponent.imageInsertIcon()
67
+ .eq(0)
68
+ .click();
69
+ },
70
+
71
+ selectLockRatioButton: () => {
72
+ ckEditorInsertImageComponent.lockRatioButton()
73
+ .click();
74
+ },
75
+
76
+ selectResetSizeButton: () => {
77
+ ckEditorInsertImageComponent.resetSizeButton()
78
+ .click();
79
+ },
80
+
81
+ /**
82
+ * This function adds URL in the image popup
83
+ * @param {string} text to be added in the url input field
84
+ */
85
+ addURLInImagePopUp: (text) => {
86
+ ckEditorInsertImageComponent.urlInputField()
87
+ .type(text, { delay: 0 })
88
+ .blur();
89
+ },
90
+
91
+ /**
92
+ * This function adds text in the alternate text
93
+ * @param {string} text to be added in the alternate text input field
94
+ */
95
+ addTextInAlternateText: (text) => {
96
+ ckEditorInsertImageComponent.alternateTextInputField()
97
+ .type(text, { delay: 0 })
98
+ .blur();
99
+ },
100
+
101
+ /**
102
+ * This function adds text in the width input field
103
+ * @param {string} text to be added in the width input field
104
+ */
105
+ insertWidth: (text) => {
106
+ ckEditorInsertImageComponent.widthInputField()
107
+ .clear()
108
+ .type(text, { delay: 0 })
109
+ .blur();
110
+ },
111
+
112
+ /**
113
+ * This function adds text in the height input field
114
+ * @param {string} text to be added in the height input field
115
+ */
116
+ insertHeight: (text) => {
117
+ ckEditorInsertImageComponent.heightInputField()
118
+ .clear()
119
+ .type(text, { delay: 0 })
120
+ .blur();
121
+ },
122
+
123
+ /**
124
+ * This function adds text in the border input field
125
+ * @param {string} text to be added in the border input field
126
+ */
127
+ insertBorder: (text) => {
128
+ ckEditorInsertImageComponent.borderInputField()
129
+ .clear()
130
+ .type(text, { delay: 0 })
131
+ .blur();
132
+ },
133
+
134
+ /**
135
+ * This function adds text in the vSpace input field
136
+ * @param {string} text to be added in the vSpace input field
137
+ */
138
+ insertVSpace: (text) => {
139
+ ckEditorInsertImageComponent.vSpaceInputField()
140
+ .clear()
141
+ .type(text, { delay: 0 })
142
+ .blur();
143
+ },
144
+
145
+ /**
146
+ * This function adds text in the hSpace input field
147
+ * @param {string} text to be added in the hSpace input field
148
+ */
149
+ insertHSpace: (text) => {
150
+ ckEditorInsertImageComponent.hSpaceInputField()
151
+ .clear()
152
+ .type(text, { delay: 0 })
153
+ .blur();
154
+ },
155
+
156
+ verifyImageInfoButtonSelected: () => {
157
+ ckEditorInsertImageComponent.imageInfoButton()
158
+ .should('have.attr', 'aria-selected', 'true');
159
+ },
160
+
161
+ selectUploadButton: () => {
162
+ ckEditorInsertImageComponent.uploadButton()
163
+ .click();
164
+ },
165
+
166
+ verifyUploadButtonSelected: () => {
167
+ ckEditorInsertImageComponent.uploadButton()
168
+ .should('have.attr', 'aria-selected', 'true');
169
+ },
170
+
171
+ verifyResponsiveRadioButtonChecked: () => {
172
+ ckEditorInsertImageComponent.responsiveRadioButton()
173
+ .should('be.checked');
174
+ },
175
+
176
+ verifyFixedRadioButtonChecked: () => {
177
+ ckEditorInsertImageComponent.fixedRadioButton()
178
+ .should('be.checked');
179
+ },
180
+
181
+ verifyLockRatioButtonChecked: () => {
182
+ ckEditorInsertImageComponent.lockRatioButton()
183
+ .should('have.attr', 'aria-checked', 'true');
184
+ },
185
+
186
+ /**
187
+ * This function verifies the width and height of the input field
188
+ * @param {number} width expected width of the input field
189
+ * @param {number} height expected height of the input field
190
+ */
191
+ verifyWidthAndHeightInInputField: (width, height) => {
192
+ ckEditorInsertImageComponent.widthInputField()
193
+ .should('have.value', width);
194
+ ckEditorInsertImageComponent.heightInputField()
195
+ .should('have.value', height);
196
+ },
197
+
198
+ /**
199
+ * This function verifies the border of the input field
200
+ * @param {number} width
201
+ * @param {number} height
202
+ * @param {number} border
203
+ * @param {number} hSpace
204
+ * @param {number} vSpace
205
+ * @param {number} view
206
+ */
207
+ verifyCssOfImageInDifferentViews: (width, height, border, hSpace, vSpace, view) => {
208
+ switch (view) {
209
+ case 'Preview Box':
210
+ utilities.verifyCSS(ckEditorInsertImageComponent.imageInPreviewBox(), {
211
+ 'width': `${width}px`,
212
+ 'height': `${height}px`,
213
+ 'border': `${border}px solid rgb(0, 0, 0)`,
214
+ //It not working cause of a bug https://redmine.zeuslearning.com/issues/586076
215
+ //HSpace
216
+ // 'margin-left': `${hSpace}px`,
217
+ // 'margin-right': `${hSpace}px`,
218
+ //VSpace
219
+ 'margin-top': `${vSpace}px`,
220
+ 'margin-bottom': `${vSpace}px`,
221
+ });
222
+ break;
223
+ case 'Question Instruction':
224
+ utilities.verifyCSS(ckEditorInsertImageComponent.foxImageLinkUrlValueCheck(), {
225
+ 'width': `${width}px`,
226
+ 'height': `${height}px`,
227
+ 'border': `${border}px solid rgb(0, 0, 46)`,
228
+ //It not working cause of a bug https://redmine.zeuslearning.com/issues/586076
229
+ //HSpace
230
+ // 'margin-left': `${hSpace}px`,
231
+ // 'margin-right': `${hSpace}px`,
232
+ //VSpace
233
+ 'margin-top': `${vSpace}px`,
234
+ 'margin-bottom': `${vSpace}px`,
235
+ });
236
+ break;
237
+ case 'Preview Tab':
238
+ utilities.verifyCSS(ckEditorInsertImageComponent.imageInPreviewBox(), {
239
+ 'width': `${width}px`,
240
+ // It is not Working cause of a bug https://redmine.zeuslearning.com/issues/586086
241
+ // 'height': `${height}px`,
242
+ 'border': `${border}px solid rgb(0, 0, 46)`,
243
+ //It not working cause of a bug https://redmine.zeuslearning.com/issues/586076
244
+ //HSpace
245
+ // 'margin-left': `${hSpace}px`,
246
+ // 'margin-right': `${hSpace}px`,
247
+ //VSpace
248
+ 'margin-top': `${vSpace}px`,
249
+ 'margin-bottom': `${vSpace}px`,
250
+ });
251
+ break;
252
+ default:
253
+ throw new Error(`Unsupported page identifier: ${view}`);
254
+ }
255
+ },
256
+
257
+ /**
258
+ * This function selects the alignment option from the dropdown
259
+ * @param {string} alignment option from the dropdown
260
+ */
261
+ selectAlignmentOptionDropdown: (alignment) => {
262
+ ckEditorInsertImageComponent.alignmentDropDown()
263
+ .click();
264
+ ckEditorInsertImageComponent.alignmentOptions(alignment)
265
+ .click();
266
+ }
267
+ }
268
+
269
+ export const ckEditorInsertImageComponent = {
270
+ ...selectors,
271
+ steps
272
+ }
@@ -0,0 +1,142 @@
1
+ import { dialogBoxBase } from "../dialogBoxBase";
2
+ import { createQuestionBasePage } from "../components/createQuestionBasePage.js";
3
+ import utilities from "../../support/helpers/utilities";
4
+ import constants from "../../fixtures/constants.js";
5
+ const css = Cypress.env('css');
6
+
7
+ const selectors = {
8
+ ...createQuestionBasePage,
9
+ ...dialogBoxBase,
10
+ //Basic
11
+ buttonLinkIcon: () => cy.get('.cke_button__link_icon'),
12
+ linkLabel: () => cy.get('.dialog-header-label'),
13
+ linkPopUpWrapper: () => cy.get('.custom-link-wrapper'),
14
+ urlInQuestionInstruction: () => cy.get('[data-cke-saved-href*="https"]'),
15
+ foxImageLinkUrlValueCheck: () => cy.get('[data-cke-saved-href*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
16
+ urlInputField: () => cy.get('input[class*="cke_dialog_ui_input_text"]').eq(1),
17
+ OkButton: () => cy.get('[title="OK"]'),
18
+ //Link Info
19
+ displayTextInputField: () => cy.get('input[class*="cke_dialog_ui_input_text"]').eq(0),
20
+ linkInfo: () => cy.get('[title="Link Info"]'),
21
+ displayTextLabel: () => cy.get('.dialog-input-label').eq(0),
22
+ displayTextInputField: () => cy.get('.cke_dialog_ui_input_text').eq(1),
23
+ linkTypeLabel: () => cy.get('.dialog-input-label').eq(1),
24
+ linkTypeDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(0),
25
+ protocolLabel: () => cy.get('.dialog-input-label').eq(2),
26
+ protocolDropDown: () => cy.get('.cke_dialog_ui_input_select').eq(1),
27
+ urlLabel: () => cy.get('.dialog-input-label').eq(3),
28
+ urlInputField: () => cy.get('.cke_dialog_ui_input_text').eq(3),
29
+ //Protocol
30
+ protocolDropDown: () => cy.get('.dialog-input-area').eq(2),
31
+ selectProtocolOptionDropdown: (protocolType = null) => {
32
+ if (protocolType) {
33
+ return cy.get(`[class*="cke_dialog_ui_input_select"] option[value="${protocolType}"]`)
34
+ } else {
35
+ return cy.get('[class*="cke_dialog_ui_input_select"] option[value]').eq(8)
36
+ }
37
+ },
38
+ //Upload
39
+ uploadSectionTitle: () => cy.get('[title="Upload"]').eq(0),
40
+ uploadTitle: () => cy.get('.dialog-input-label').eq(12),
41
+ chooseFileButton: () => cy.get('.cke_dialog_ui_input_file').eq(0),
42
+ chooseFileButtonClick: () => cy.get('.cke_dialog_ui_input_file').eq(1),
43
+ sendItToServerButton: () => cy.get('[title="Send it to the Server"]'),
44
+ //Preview Tab
45
+ urlInQuestionInstructionPreviewTab: () => cy.get('[data-testid="question-instruction-element"] [href*="https"]'),
46
+ foxImageLinkUrlValueCheckPreviewTab: () => cy.get('[data-testid="question-instruction-element"] [href*="https://cdn.pixabay.com/photo/2016/11/29/03/28/fox-1867062_960_720.jpg"]'),
47
+ }
48
+
49
+ const steps = {
50
+ selectLinkButtonOptionFromCKEditorToolbar: () => {
51
+ ckEditorLinkComponent.buttonLinkIcon()
52
+ .eq(0)
53
+ .click();
54
+ },
55
+
56
+ addURLInLinkPopUp: (text) => {
57
+ ckEditorLinkComponent.urlInputField()
58
+ .type(text, { delay: 0 })
59
+ .blur();
60
+ },
61
+
62
+ addTextInDisplayText: (text) => {
63
+ ckEditorLinkComponent.displayTextInputField()
64
+ .type(text, { delay: 0 })
65
+ .blur();
66
+ },
67
+
68
+ selectOkButtonFromCKEditorToolbarForLinkPopUp: () => {
69
+ ckEditorLinkComponent.OkButton()
70
+ .click();
71
+ },
72
+
73
+ expandProtocolDropDown: () => {
74
+ ckEditorLinkComponent.protocolDropDown()
75
+ .click({force: true});
76
+ },
77
+
78
+ selectProtocolType: (protocolType) => {
79
+ switch (protocolType) {
80
+ case 'http://':
81
+ ckEditorLinkComponent.steps.expandProtocolDropDown();
82
+ ckEditorLinkComponent.selectProtocolOptionDropdown('http://')
83
+ .click();
84
+ break;
85
+ case 'https://':
86
+ ckEditorLinkComponent.steps.expandProtocolDropDown();
87
+ ckEditorLinkComponent.selectProtocolOptionDropdown('https://')
88
+ .click();
89
+ break;
90
+ case 'ftp://':
91
+ ckEditorLinkComponent.steps.expandProtocolDropDown();
92
+ ckEditorLinkComponent.selectProtocolOptionDropdown('ftp://')
93
+ .click();
94
+ break;
95
+ case 'news://':
96
+ ckEditorLinkComponent.steps.expandProtocolDropDown();
97
+ ckEditorLinkComponent.selectProtocolOptionDropdown('news://')
98
+ .click();
99
+ break;
100
+ default:
101
+ throw new Error(`Unknown protocol: ${protocolType}`);
102
+ }
103
+ },
104
+
105
+ clickUploadButton: () => {
106
+ ckEditorLinkComponent.uploadSectionTitle()
107
+ .click();
108
+ },
109
+
110
+ clickOnChooseFileButton: () => {
111
+ ckEditorLinkComponent.chooseFileButton()
112
+ .click();
113
+ },
114
+
115
+ clickingOnTheLinkPreviewTab: () => {
116
+ ckEditorLinkComponent.urlInQuestionInstructionPreviewTab()
117
+ .click();
118
+ },
119
+
120
+ verifyWindowOpenMethodAfterClickingOnLink: (fileName) => {
121
+ cy.window().document().then(function (doc) {
122
+ doc.addEventListener('click', () => {
123
+ setTimeout(function () { doc.location.reload() }, 5000);
124
+ });
125
+ ckEditorLinkComponent.foxImageLinkUrlValueCheckPreviewTab()
126
+ .click();
127
+ cy.verifyDownload(fileName);
128
+ });
129
+ },
130
+
131
+
132
+ clickSendItToServerButton: () => {
133
+ ckEditorLinkComponent.sendItToServerButton()
134
+ .click();
135
+ cy.wait(1000);
136
+ }
137
+ }
138
+
139
+ export const ckEditorLinkComponent = {
140
+ ...selectors,
141
+ steps
142
+ }
@@ -0,0 +1,97 @@
1
+ const selectors = {
2
+ decimalSeparatorLabel: () => cy.get('.single-select-toggle-group-title').eq(0),
3
+ thousandSeparatorLabel: () => cy.get('.single-select-toggle-group-title').eq(1),
4
+ decimalSeparatorToggleOptions: (ariaLabel: string | null = null) => {
5
+ if (ariaLabel) {
6
+ return cy.get(`.single-select-toggle-group button[aria-label*="${ariaLabel}"]`);
7
+ } else {
8
+ return cy.get('.single-select-toggle-group button');
9
+ }
10
+ },
11
+ thousandSeparatorToggleOptions: (ariaLabel: string | null = null) => {
12
+ if (ariaLabel) {
13
+ return cy.get(`.single-select-toggle-group-double button[aria-label*="${ariaLabel}"]`);
14
+ } else {
15
+ return cy.get('.single-select-toggle-group-double button');
16
+ }
17
+ },
18
+ decimalPlacesToBeComparedLabel: () => cy.get('[for*="dec-places-label"]'),
19
+ decimalPlacesToBeComparedInputField: () => cy.get('input[id*="dec-places-label"]'),
20
+ toleranceLabel: () => cy.get('[for*="tolerance-label"]'),
21
+ toleranceInputField: () => cy.get('input[id*="tolerance-label"]'),
22
+ decimalAndThousandSeparatorWrapper: () => cy.get('[class*="CustomSettingsstyles__ToggleWrapper"]'),
23
+ decimalPlacesAndToleranceWrapper: () => cy.get('.custom-settings-text-box-wrapper')
24
+ }
25
+
26
+ const steps = {
27
+ /**
28
+ * This function selects decimal separator options
29
+ * @param option aria-label of the option to be selected
30
+ */
31
+ selectDecimalSeparatorOption: (option: string) => {
32
+ selectors.decimalSeparatorToggleOptions(option)
33
+ .click();
34
+ },
35
+
36
+ /**
37
+ * This function verifies the label of decimal separator
38
+ * @param label of the decimal separator
39
+ */
40
+ verifyLabelDecimalSeparatorLabel: (label: string) => {
41
+ customSettingsSeparatorComponent.decimalSeparatorLabel()
42
+ .should('have.text', label);
43
+ },
44
+
45
+ /**
46
+ * Verifies the existence of the decimal separator toggle options.
47
+ * @param {string} option - The aria-label of the option to be verified.
48
+ */
49
+ verifyDecimalSeparatorOptions: (option: string) => {
50
+ customSettingsSeparatorComponent.decimalSeparatorToggleOptions(option)
51
+ .should('exist');
52
+ },
53
+
54
+ verifyDecimalAndThousandSeparatorDoesNotExist: () => {
55
+ customSettingsSeparatorComponent.decimalPlacesAndToleranceWrapper()
56
+ .should('not.exist');
57
+ customSettingsSeparatorComponent.decimalAndThousandSeparatorWrapper()
58
+ .should('not.exist');
59
+ },
60
+
61
+ /**
62
+ * This function verifies the label of thousand separator
63
+ * @param label of the thousand separator
64
+ */
65
+ verifyLabelThousandSeparatorLabel: (label: string) => {
66
+ customSettingsSeparatorComponent.thousandSeparatorLabel()
67
+ .should('have.text', label);
68
+ },
69
+
70
+ /**
71
+ * Verifies the existence of the thousand separator toggle options.
72
+ * @param {string} option - The aria-label of the option to be verified.
73
+ */
74
+ verifyThousandSeparatorOptions: (option: string) => {
75
+ customSettingsSeparatorComponent.thousandSeparatorToggleOptions(option)
76
+ .should('exist');
77
+ },
78
+
79
+ verifyVisibilityOfDecimalPlacesToBeComparedSection: () => {
80
+ customSettingsSeparatorComponent.decimalPlacesToBeComparedLabel()
81
+ .should('have.text', 'Decimal places to be compared');
82
+ customSettingsSeparatorComponent.decimalPlacesToBeComparedInputField()
83
+ .should('be.visible');
84
+ },
85
+
86
+ verifyVisibilityOfToleranceSection: () => {
87
+ customSettingsSeparatorComponent.toleranceLabel()
88
+ .should('have.text', 'Tolerance');
89
+ customSettingsSeparatorComponent.toleranceInputField()
90
+ .should('be.visible');
91
+ }
92
+ }
93
+
94
+ export const customSettingsSeparatorComponent = {
95
+ ...selectors,
96
+ steps
97
+ }