itemengine-cypress-automation 1.0.550-task-IEI-6999-a623bd8.0 → 1.0.551-IEI-6981-b0785e0.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.
- package/cypress/e2e/ILC/FillInTheGapsTextNew/additionalSettingsBasic.js +0 -27
- package/cypress/e2e/ILC/FillInTheGapsTextNew/additionalSettingsForAnswerInputFields.js +0 -8
- package/cypress/e2e/ILC/FillInTheGapsTextNew/setLimitSection.js +2 -58
- package/cypress/e2e/ILC/FillInTheGapsTextNew/specialCharactersSection.js +1 -115
- package/cypress/e2e/ILC/FillInTheGapsTextNew/studentViewSettings.js +6 -86
- package/cypress/e2e/ILC/FillInTheGapsTextNew/styleAndLayoutCustomization.js +3 -58
- package/cypress/pages/audioPlayerPage.js +4 -16
- package/cypress/pages/components/fillInTheGapsTextCommonComponent.js +1 -49
- package/cypress/pages/components/gridQuestionCommonComponent.js +2 -4
- package/cypress/pages/components/optionsWrapperComponent.js +2 -5
- package/cypress/pages/dragAndDropIntoCategoriesPage.js +2 -5
- package/cypress/pages/fillInTheGapsDragAndDropPage.js +4 -10
- package/cypress/pages/fillInTheGapsOverImageDragAndDropPage.js +4 -10
- package/cypress/pages/fillInTheGapsTextPage.js +2 -2
- package/cypress/pages/listOrderingPage.js +18 -44
- package/cypress/pages/matchingPage.js +6 -15
- package/cypress/pages/multipleSelectionPage.js +4 -10
- package/cypress/pages/numberLineLabelPage.js +6 -15
- package/cypress/pages/singleSelectionPage.js +4 -10
- package/cypress/pages/textSelectionPage.js +8 -16
- package/cypress/support/helpers/utilities.js +28 -1
- package/package.json +1 -1
|
@@ -36,7 +36,6 @@ describe('Fill In the gaps with text - Additional settings', () => {
|
|
|
36
36
|
cy.barsPreLoaderWait();
|
|
37
37
|
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps');
|
|
38
38
|
fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsSpecifyCorrectAnswerSection([{ responseIndex: 0, responseText: 'Flower' }, { responseIndex: 1, responseText: 'Leaf' }]);
|
|
39
|
-
fillInTheGapsTextPage.steps.allotPoints(5);
|
|
40
39
|
fillInTheGapsTextPage.steps.expandAdditionalSettings();
|
|
41
40
|
});
|
|
42
41
|
|
|
@@ -66,33 +65,7 @@ describe('Fill In the gaps with text - Additional settings', () => {
|
|
|
66
65
|
'font-size': fontSizes[option]
|
|
67
66
|
});
|
|
68
67
|
fillInTheGapsTextPage.steps.switchToStudentView();
|
|
69
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
70
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
71
|
-
// fillInTheGapsTextPage.steps.switchToGradingView();
|
|
72
|
-
// fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
73
|
-
fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsPreviewTab([{ responseIndex: 0, responseText: 'Flower' }]);
|
|
74
|
-
utilities.verifyCSS(fillInTheGapsTextPage.questionInstructionsText(), {
|
|
75
|
-
'font-size': fontSizes[option]
|
|
76
|
-
});
|
|
77
|
-
utilities.verifyCSS(fillInTheGapsTextPage.answerInputFieldPreviewTab(), {
|
|
78
|
-
'font-size': fontSizes[option]
|
|
79
|
-
});
|
|
80
|
-
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
81
|
-
utilities.verifyCSS(fillInTheGapsTextPage.correctAnswersLabel(), {
|
|
82
|
-
'font-size': fontSizes[option]
|
|
83
|
-
});
|
|
84
|
-
utilities.verifyCSS(fillInTheGapsTextPage.correctAnswerResponseNumeration().find('.response-input-adornment'), {
|
|
85
|
-
'font-size': fontSizes[option]
|
|
86
|
-
});
|
|
87
|
-
utilities.verifyCSS(fillInTheGapsTextPage.correctAnswerResponse(), {
|
|
88
|
-
'font-size': fontSizes[option]
|
|
89
|
-
});
|
|
90
|
-
utilities.verifyCSS(fillInTheGapsTextPage.correctIncorrectStatusMessageText(), {
|
|
91
|
-
'font-size': fontSizes[option]
|
|
92
|
-
});
|
|
93
68
|
fillInTheGapsTextPage.steps.switchToEditTab();
|
|
94
|
-
fillInTheGapsTextPage.steps.clickOnEditQuestionButton();
|
|
95
|
-
fillInTheGapsTextPage.steps.expandAdditionalSettings();
|
|
96
69
|
});
|
|
97
70
|
});
|
|
98
71
|
});
|
|
@@ -90,7 +90,6 @@ describe('Fill In the gaps with text - Additional settings : Placeholder text, G
|
|
|
90
90
|
cy.barsPreLoaderWait();
|
|
91
91
|
fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsSpecifyCorrectAnswerSection([{ responseIndex: 0, responseText: 'Flower' }, { responseIndex: 1, responseText: 'Leaf' }]);
|
|
92
92
|
//fillInTheGapsTextPage.steps.checkAllowStudentToCheckAnswerCheckbox();
|
|
93
|
-
fillInTheGapsTextPage.steps.allotPoints(5);
|
|
94
93
|
fillInTheGapsTextPage.steps.expandAdditionalSettings();
|
|
95
94
|
});
|
|
96
95
|
|
|
@@ -107,18 +106,11 @@ describe('Fill In the gaps with text - Additional settings : Placeholder text, G
|
|
|
107
106
|
});*/
|
|
108
107
|
|
|
109
108
|
it(`When the user switches to the "Grading view", then the "${option}" numeration should be displayed in the answer input fields as well as correct answer options in the correct answer section`, () => {
|
|
110
|
-
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
111
|
-
fillInTheGapsTextPage.steps.verifyAnswerInputFieldEnumeration(enumerationOptions[option]);
|
|
112
|
-
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesEnumeration(enumerationOptions[option]);
|
|
113
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
114
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
115
109
|
fillInTheGapsTextPage.steps.switchToGradingView();
|
|
116
110
|
fillInTheGapsTextPage.steps.verifyAnswerInputFieldEnumeration(enumerationOptions[option]);
|
|
117
111
|
fillInTheGapsTextPage.steps.verifyCorrectAnswerResponsesEnumeration(enumerationOptions[option]);
|
|
118
112
|
cy.log('Post step: Switch to Edit tab')
|
|
119
113
|
fillInTheGapsTextPage.steps.switchToEditTab();
|
|
120
|
-
fillInTheGapsTextPage.steps.clickOnEditQuestionButton();
|
|
121
|
-
fillInTheGapsTextPage.steps.expandAdditionalSettings();
|
|
122
114
|
});
|
|
123
115
|
});
|
|
124
116
|
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { fillInTheGapsTextPage
|
|
1
|
+
import { fillInTheGapsTextPage } from "../../../pages";
|
|
2
2
|
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
|
3
|
-
import utilities from "../../../support/helpers/utilities";
|
|
4
3
|
const css = Cypress.env('css');
|
|
5
|
-
let correctAnswerViews = ['Question preview', 'Item preview', 'Student view'];
|
|
6
|
-
const views = utilities.getViews(correctAnswerViews);
|
|
7
|
-
var itemReferenceID = "";
|
|
8
4
|
|
|
9
5
|
describe('Create item page - Fill in the gaps with text: Set limit section', () => {
|
|
10
6
|
before(() => {
|
|
@@ -45,7 +41,7 @@ describe('Create item page - Fill in the gaps with text: Set limit section', ()
|
|
|
45
41
|
it('User should able to enter characters in the answer input field', () => {
|
|
46
42
|
fillInTheGapsTextPage.steps.enterTextInAnswerInputFieldsSpecifyCorrectAnswerSection([{ responseIndex: 0, responseText: 'Flower' }]);
|
|
47
43
|
});
|
|
48
|
-
|
|
44
|
+
|
|
49
45
|
//Uncomment below code once https://redmine.zeuslearning.com/issues/571588 is resolved
|
|
50
46
|
// fillInTheGapsTextPage.tests.verifyMaximumCharacterLimitWarningConditionsSpecifyCorrectAnswerSection();
|
|
51
47
|
|
|
@@ -80,56 +76,4 @@ describe('Create item page - Fill in the gaps with text: Set limit section', ()
|
|
|
80
76
|
|
|
81
77
|
// fillInTheGapsTextPage.tests.verifyMinimumCharacterLimitWarningConditionsPreviewTab();
|
|
82
78
|
});
|
|
83
|
-
|
|
84
|
-
views.forEach((view) => {
|
|
85
|
-
describe(`${view}: Maximum character limit functionality`, () => {
|
|
86
|
-
abortEarlySetup();
|
|
87
|
-
before(() => {
|
|
88
|
-
switch (view) {
|
|
89
|
-
case 'Question preview':
|
|
90
|
-
fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
|
|
91
|
-
cy.barsPreLoaderWait();
|
|
92
|
-
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps');
|
|
93
|
-
fillInTheGapsTextPage.steps.setMaximumLimit(15);
|
|
94
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
95
|
-
break;
|
|
96
|
-
case 'Item preview':
|
|
97
|
-
cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
|
|
98
|
-
itemPreviewPage.steps.switchToPreviewTab();
|
|
99
|
-
break;
|
|
100
|
-
case 'Grading view':
|
|
101
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
102
|
-
break;
|
|
103
|
-
};
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
beforeEach(() => {
|
|
107
|
-
switch (view) {
|
|
108
|
-
case 'Question preview':
|
|
109
|
-
break;
|
|
110
|
-
case 'Item preview':
|
|
111
|
-
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
112
|
-
itemPreviewPage.steps.resetQuestionPreview();
|
|
113
|
-
break;
|
|
114
|
-
case 'Student view':
|
|
115
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
if (view === 'Question preview') {
|
|
121
|
-
after(() => {
|
|
122
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
123
|
-
fillInTheGapsTextPage.steps.clickOnConfirmButton();
|
|
124
|
-
utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
|
|
125
|
-
itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
|
|
126
|
-
});
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
it('When the user reaches the character limit, then the warning message \'Maximum 15 characters have been entered\' should be displayed', () => {
|
|
130
|
-
fillInTheGapsTextPage.steps.addTextInAnswerInputFieldsAllView(0, 'NewFlowerpotsingarden');
|
|
131
|
-
fillInTheGapsTextPage.steps.verifyLimitReachedWarningMessageExist('Maximum 15 characters have been entered.');
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
79
|
});
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { specialCharacters } from "../../../fixtures/drawingToolbarOptionsAdditionalOptionsAndSpecialAndMathCharacters";
|
|
2
|
-
import { dialogBoxBase, fillInTheGapsTextPage
|
|
2
|
+
import { dialogBoxBase, fillInTheGapsTextPage } from "../../../pages";
|
|
3
3
|
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
|
4
4
|
import utilities from "../../../support/helpers/utilities";
|
|
5
5
|
const css = Cypress.env('css');
|
|
6
6
|
|
|
7
7
|
const specialCharactersCategories = Object.values(specialCharacters.map((icon) => icon.categoryName));
|
|
8
8
|
const customSpecialCharacters = ['A', '1', '#'];
|
|
9
|
-
const specialCharactersLanguageLabel = ['French', 'Portuguese', 'Italian'];
|
|
10
|
-
let correctAnswerViews = ['Question preview', 'Item preview', 'Student view'];
|
|
11
|
-
const views = utilities.getViews(correctAnswerViews);
|
|
12
|
-
var itemReferenceID = "";
|
|
13
9
|
|
|
14
10
|
describe('Create item page - Fill in the gaps with text - Special characters section', () => {
|
|
15
11
|
before(() => {
|
|
@@ -239,114 +235,4 @@ describe('Create item page - Fill in the gaps with text - Special characters sec
|
|
|
239
235
|
});
|
|
240
236
|
});
|
|
241
237
|
});
|
|
242
|
-
|
|
243
|
-
views.forEach((view) => {
|
|
244
|
-
describe(`${view}: Special characters section `, () => {
|
|
245
|
-
abortEarlySetup();
|
|
246
|
-
before(() => {
|
|
247
|
-
switch (view) {
|
|
248
|
-
case 'Question preview':
|
|
249
|
-
fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
|
|
250
|
-
cy.barsPreLoaderWait();
|
|
251
|
-
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps');
|
|
252
|
-
fillInTheGapsTextPage.steps.checkEnableSpecialCharactersCheckbox();
|
|
253
|
-
fillInTheGapsTextPage.steps.clickOnSpecialCharactersCategoryTile(specialCharacters[0].categoryName);
|
|
254
|
-
fillInTheGapsTextPage.steps.clickOnSpecialCharactersCategoryTile(specialCharacters[2].categoryName);
|
|
255
|
-
fillInTheGapsTextPage.steps.clickOnSpecialCharactersCategoryTile(specialCharacters[4].categoryName);
|
|
256
|
-
fillInTheGapsTextPage.steps.clickOnSpecialCharactersCategoryTile(specialCharacters[6].categoryName);
|
|
257
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
258
|
-
break;
|
|
259
|
-
case 'Item preview':
|
|
260
|
-
cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
|
|
261
|
-
itemPreviewPage.steps.switchToPreviewTab();
|
|
262
|
-
break;
|
|
263
|
-
case 'Grading view':
|
|
264
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
265
|
-
break;
|
|
266
|
-
};
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
beforeEach(() => {
|
|
270
|
-
switch (view) {
|
|
271
|
-
case 'Question preview':
|
|
272
|
-
break;
|
|
273
|
-
case 'Item preview':
|
|
274
|
-
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
275
|
-
break;
|
|
276
|
-
case 'Student view':
|
|
277
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
if (view === 'Question preview') {
|
|
283
|
-
after(() => {
|
|
284
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
285
|
-
fillInTheGapsTextPage.steps.clickOnConfirmButton();
|
|
286
|
-
utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
|
|
287
|
-
itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
|
|
288
|
-
});
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
it(`should display the ${specialCharactersLanguageLabel} special characters language labels in the popup`, () => {
|
|
292
|
-
fillInTheGapsTextPage.steps.focusInResponseInputFieldPreviewTab(0);
|
|
293
|
-
fillInTheGapsTextPage.steps.openSpecialCharactersPopupPreviewTab();
|
|
294
|
-
fillInTheGapsTextPage.steps.verifySpecialCharactersLanguageLabelsInSpecialCharactersPopupPreviewTab(specialCharactersLanguageLabel);
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
views.forEach((view) => {
|
|
300
|
-
describe(`${view}: Custom special characters section`, () => {
|
|
301
|
-
abortEarlySetup();
|
|
302
|
-
before(() => {
|
|
303
|
-
switch (view) {
|
|
304
|
-
case 'Question preview':
|
|
305
|
-
fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
|
|
306
|
-
cy.barsPreLoaderWait();
|
|
307
|
-
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps');
|
|
308
|
-
fillInTheGapsTextPage.steps.checkEnableSpecialCharactersCheckbox();
|
|
309
|
-
fillInTheGapsTextPage.steps.selectShowOnlyCustomSpecialCharactersRadioButton();
|
|
310
|
-
fillInTheGapsTextPage.steps.addInputToCustomSpecialCharactersInputField(`${customSpecialCharacters.join('')}`);
|
|
311
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
312
|
-
break;
|
|
313
|
-
case 'Item preview':
|
|
314
|
-
cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
|
|
315
|
-
itemPreviewPage.steps.switchToPreviewTab();
|
|
316
|
-
break;
|
|
317
|
-
case 'Grading view':
|
|
318
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
319
|
-
break;
|
|
320
|
-
};
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
beforeEach(() => {
|
|
324
|
-
switch (view) {
|
|
325
|
-
case 'Question preview':
|
|
326
|
-
break;
|
|
327
|
-
case 'Item preview':
|
|
328
|
-
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
329
|
-
break;
|
|
330
|
-
case 'Student view':
|
|
331
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
332
|
-
break;
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
if (view === 'Question preview') {
|
|
337
|
-
after(() => {
|
|
338
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
339
|
-
fillInTheGapsTextPage.steps.clickOnConfirmButton();
|
|
340
|
-
utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
|
|
341
|
-
itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
|
|
342
|
-
});
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
it(`should display the ${customSpecialCharacters} custom special characters in the popup`, () => {
|
|
346
|
-
fillInTheGapsTextPage.steps.focusInResponseInputFieldPreviewTab(0);
|
|
347
|
-
fillInTheGapsTextPage.steps.openSpecialCharactersPopupPreviewTab();
|
|
348
|
-
fillInTheGapsTextPage.steps.verifyCustomSpecialCharactersInSpecialCharactersPopupPreviewTab(customSpecialCharacters);
|
|
349
|
-
});
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
238
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { fillInTheGapsTextPage, gradingViewPage, itemPreviewPage, studentViewPage
|
|
1
|
+
import { fillInTheGapsTextPage, gradingViewPage, itemPreviewPage, studentViewPage } from "../../../pages";
|
|
2
2
|
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
|
3
3
|
import utilities from "../../../support/helpers/utilities";
|
|
4
4
|
const css = Cypress.env('css');
|
|
5
|
-
let correctAnswerViews = ['Question preview', 'Item preview', 'Student view'
|
|
5
|
+
let correctAnswerViews = ['Question preview', 'Item preview', 'Student view'];
|
|
6
6
|
const views = utilities.getViews(correctAnswerViews);
|
|
7
7
|
var itemReferenceID = "";
|
|
8
8
|
|
|
@@ -59,7 +59,7 @@ describe('Create Item page - Fill in the gaps with text: Student view settings',
|
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
views.forEach((view) => {
|
|
62
|
-
describe(`${view}: student view settings
|
|
62
|
+
describe(`${view}: student view settings`, () => {
|
|
63
63
|
abortEarlySetup();
|
|
64
64
|
before(() => {
|
|
65
65
|
switch (view) {
|
|
@@ -101,93 +101,13 @@ describe('Create Item page - Fill in the gaps with text: Student view settings',
|
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
-
it(`
|
|
104
|
+
it(` 'Auto-resize response field' functionality in ${view}`, () => {
|
|
105
105
|
if (view === 'Student view') {
|
|
106
|
-
fillInTheGapsTextPage.
|
|
107
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldPreviewTabDisabled(0);
|
|
108
|
-
studentViewPage.steps.submitResponse();
|
|
109
|
-
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
|
|
110
|
-
studentViewPage.steps.clickOnGoToGradingViewButton();
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
if (view === 'Grading view') {
|
|
114
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldPreviewTabDisabled(0);
|
|
115
|
-
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabDisabled(0);
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
if (view === 'Question preview' || view === 'Item preview') {
|
|
119
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
120
|
-
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabDisabled(0);
|
|
121
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldPreviewTabDisabled(0);
|
|
122
|
-
};
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
views.forEach((view) => {
|
|
129
|
-
describe(`${view}: student view settings: Spell check and auto-resize checked`, () => {
|
|
130
|
-
abortEarlySetup();
|
|
131
|
-
before(() => {
|
|
132
|
-
switch (view) {
|
|
133
|
-
case 'Question preview':
|
|
134
|
-
fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
|
|
135
|
-
cy.barsPreLoaderWait();
|
|
136
|
-
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('fill in the gaps');
|
|
137
|
-
fillInTheGapsTextPage.steps.addResponseAreaInQuestionField();
|
|
138
|
-
fillInTheGapsTextPage.steps.checkSpellCheckCheckbox();
|
|
139
|
-
fillInTheGapsTextPage.steps.checkAutoResizeCheckbox();
|
|
140
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
141
|
-
break;
|
|
142
|
-
case 'Item preview':
|
|
143
|
-
cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
|
|
144
|
-
itemPreviewPage.steps.switchToPreviewTab();
|
|
145
|
-
break;
|
|
146
|
-
case 'Student view':
|
|
147
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
148
|
-
break;
|
|
149
|
-
};
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
beforeEach(() => {
|
|
153
|
-
switch (view) {
|
|
154
|
-
case 'Question preview':
|
|
155
|
-
break;
|
|
156
|
-
case 'Item preview':
|
|
157
|
-
break;
|
|
158
|
-
case 'Student view':
|
|
159
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
if (view === 'Question preview') {
|
|
165
|
-
after(() => {
|
|
166
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
167
|
-
fillInTheGapsTextPage.steps.clickOnConfirmButton();
|
|
168
|
-
utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
|
|
169
|
-
itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
|
|
170
|
-
});
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
it(`When the \'Spell check\' and \'Auto-resize response field\' functionality is enabled, the response field should have \'resizetype\' attribute set as \'vertical\' and \'spellcheck\' attribute set as \'true\' in the ${view}`, () => {
|
|
174
|
-
if (view === 'Student view') {
|
|
175
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldAllViewEnabled(0);
|
|
176
|
-
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabEnabled(0);
|
|
177
|
-
studentViewPage.steps.submitResponse();
|
|
178
|
-
utilities.verifyElementVisibilityState(dialogBoxBase.dialogBox(), 'visible');
|
|
179
|
-
studentViewPage.steps.clickOnGoToGradingViewButton();
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
if (view === 'Grading view') {
|
|
183
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldAllViewEnabled(0);
|
|
184
|
-
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabEnabled(0);
|
|
106
|
+
fillInTheGapsTextPage.tests.verifyAutoResizeResponseFieldFunctionalityPreviewTab();
|
|
185
107
|
};
|
|
186
108
|
|
|
187
109
|
if (view === 'Question preview' || view === 'Item preview') {
|
|
188
|
-
fillInTheGapsTextPage.
|
|
189
|
-
fillInTheGapsTextPage.steps.verifySpellCheckOfResponseFieldAllViewEnabled(0);
|
|
190
|
-
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabEnabled(0);
|
|
110
|
+
fillInTheGapsTextPage.tests.verifyAutoResizeResponseFieldFunctionalityPreviewTab();
|
|
191
111
|
};
|
|
192
112
|
});
|
|
193
113
|
});
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { dialogBoxBase, fillInTheGapsTextPage
|
|
1
|
+
import { dialogBoxBase, fillInTheGapsTextPage } from "../../../pages";
|
|
2
2
|
import { colorPopupComponent } from "../../../pages/components";
|
|
3
3
|
import abortEarlySetup from "../../../support/helpers/abortEarly";
|
|
4
4
|
import utilities from "../../../support/helpers/utilities";
|
|
5
5
|
const css = Cypress.env('css');
|
|
6
|
-
const borderStyles = ["Dashed", "Dotted", "Solid", "None"]
|
|
7
|
-
let correctAnswerViews = ['Question preview', 'Item preview', 'Student view'];
|
|
8
|
-
const views = utilities.getViews(correctAnswerViews);
|
|
9
|
-
var itemReferenceID = "";
|
|
10
|
-
|
|
6
|
+
const borderStyles = ["Dashed", "Dotted", "Solid", "None"]
|
|
11
7
|
describe('Create Item page - Fill in the gaps with text: Style and layout customization', () => {
|
|
12
8
|
before(() => {
|
|
13
9
|
cy.loginAs('admin');
|
|
@@ -44,7 +40,7 @@ describe('Create Item page - Fill in the gaps with text: Style and layout custom
|
|
|
44
40
|
fillInTheGapsTextPage.tests.verifyFillColorTooltips();
|
|
45
41
|
|
|
46
42
|
fillInTheGapsTextPage.tests.verifyBorderColorTooltips();
|
|
47
|
-
|
|
43
|
+
|
|
48
44
|
fillInTheGapsTextPage.tests.verifyStyleAndLayoutCustomizationAccordionContentsCSSAndA11y('Solid');
|
|
49
45
|
});
|
|
50
46
|
|
|
@@ -337,55 +333,4 @@ describe('Create Item page - Fill in the gaps with text: Style and layout custom
|
|
|
337
333
|
});
|
|
338
334
|
})
|
|
339
335
|
});
|
|
340
|
-
|
|
341
|
-
views.forEach((view) => {
|
|
342
|
-
describe(`${view}: Default border style and default border color`, () => {
|
|
343
|
-
abortEarlySetup();
|
|
344
|
-
before(() => {
|
|
345
|
-
switch (view) {
|
|
346
|
-
case 'Question preview':
|
|
347
|
-
fillInTheGapsTextPage.steps.navigateToCreateQuestion('fill in the gaps with text');
|
|
348
|
-
cy.barsPreLoaderWait();
|
|
349
|
-
fillInTheGapsTextPage.steps.addTextInQuestionInstructionsInputField('Fill in the gaps');
|
|
350
|
-
fillInTheGapsTextPage.steps.expandStyleAndLayoutCustomizationAccordion();
|
|
351
|
-
fillInTheGapsTextPage.steps.allotPoints(5);
|
|
352
|
-
fillInTheGapsTextPage.steps.switchToPreviewTab();
|
|
353
|
-
break;
|
|
354
|
-
case 'Item preview':
|
|
355
|
-
cy.visit(`/item-engine/demo/edit-item/${utilities.base64Encoding(itemReferenceID)}`);
|
|
356
|
-
itemPreviewPage.steps.switchToPreviewTab();
|
|
357
|
-
break;
|
|
358
|
-
case 'Grading view':
|
|
359
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
360
|
-
break;
|
|
361
|
-
};
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
beforeEach(() => {
|
|
365
|
-
switch (view) {
|
|
366
|
-
case 'Question preview':
|
|
367
|
-
break;
|
|
368
|
-
case 'Item preview':
|
|
369
|
-
fillInTheGapsTextPage.steps.verifyQuestionPreviewStateWhenSwitchingBackToStudentView();
|
|
370
|
-
break;
|
|
371
|
-
case 'Student view':
|
|
372
|
-
cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
|
|
373
|
-
break;
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
if (view === 'Question preview') {
|
|
378
|
-
after(() => {
|
|
379
|
-
fillInTheGapsTextPage.steps.clickOnSaveQuestionButton();
|
|
380
|
-
utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
|
|
381
|
-
itemReferenceID = itemPreviewPage.steps.getItemReferenceID();
|
|
382
|
-
});
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
it(`when the user switches to ${view} default border style and color should be displayed`, () => {
|
|
386
|
-
fillInTheGapsTextPage.steps.verifyAnswerInputFieldBorderColor(0, `1px solid ${css.color.activeComponentBorder}`);
|
|
387
|
-
fillInTheGapsTextPage.steps.verifyAnswerInputFieldFillColor(0, css.color.optionsBg);
|
|
388
|
-
});
|
|
389
|
-
});
|
|
390
|
-
});
|
|
391
336
|
});
|
|
@@ -796,17 +796,11 @@ const steps = {
|
|
|
796
796
|
},
|
|
797
797
|
|
|
798
798
|
verifyImageAndAltTextInAudioOverviewInputField: () => {
|
|
799
|
-
audioPlayerPage.audioOverviewInputField()
|
|
800
|
-
.find('img')
|
|
801
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
802
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
799
|
+
utilities.verifyImage(audioPlayerPage.audioOverviewInputField(), constants.foxImageLink, constants.foxImageAltText);
|
|
803
800
|
},
|
|
804
801
|
|
|
805
802
|
verifyImageAndAltTextInAudioOverviewPreviewTab: () => {
|
|
806
|
-
audioPlayerPage.audioOverviewPreviewTab()
|
|
807
|
-
.find('img')
|
|
808
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
809
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
803
|
+
utilities.verifyImage(audioPlayerPage.audioOverviewPreviewTab(), constants.foxImageLink, constants.foxImageAltText);
|
|
810
804
|
},
|
|
811
805
|
|
|
812
806
|
verifyEquationInAudioOverviewInputField: () => {
|
|
@@ -904,17 +898,11 @@ const steps = {
|
|
|
904
898
|
},
|
|
905
899
|
|
|
906
900
|
verifyImageAndAltTextInTranscriptInputField: () => {
|
|
907
|
-
audioPlayerPage.transcriptInputField()
|
|
908
|
-
.find('img')
|
|
909
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
910
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
901
|
+
utilities.verifyImage(audioPlayerPage.transcriptInputField(), constants.foxImageLink, constants.foxImageAltText);
|
|
911
902
|
},
|
|
912
903
|
|
|
913
904
|
verifyImageAndAltTextInTranscriptPreviewTab: () => {
|
|
914
|
-
audioPlayerPage.transcriptContentPreviewTab()
|
|
915
|
-
.find('img')
|
|
916
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
917
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
905
|
+
utilities.verifyImage(audioPlayerPage.transcriptContentPreviewTab(), constants.foxImageLink, constants.foxImageAltText);
|
|
918
906
|
},
|
|
919
907
|
|
|
920
908
|
verifyEquationInTranscriptInputField: () => {
|
|
@@ -90,8 +90,6 @@ const selectors = {
|
|
|
90
90
|
spellCheckCheckbox: () => cy.get('[data-ngie-testid="spell-check-checkbox"] input[type="checkbox"]'),
|
|
91
91
|
correctAnswerResponseForCorrectResponse: () => cy.get('[class*="ClozeWithTextResponsestyles__AnswerWrapperForLabelImg"]').eq(0),
|
|
92
92
|
correctIncorrectAnswerLabelNew: () => cy.get('[class*="ClozeWithTextPreviewstyle__AnswerStatusWrapper"]'),
|
|
93
|
-
answerInputFieldAllView: () => cy.get('[class*="question-preview-wrapper"] [aria-label*="Add answer for response"]'),
|
|
94
|
-
customSpecialCharactersButtonPreviewTab: () => cy.get('.special-character-popup-container .MuiButton-text'),
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
const steps = {
|
|
@@ -696,16 +694,6 @@ const steps = {
|
|
|
696
694
|
.should('have.attr', 'spellcheck', 'true');
|
|
697
695
|
},
|
|
698
696
|
|
|
699
|
-
/**
|
|
700
|
-
* Verify that the spell check for a response field in the Preview Tab is enabled.
|
|
701
|
-
* @param {number} responseFieldIndex - The index of the response field to verify.
|
|
702
|
-
*/
|
|
703
|
-
verifySpellCheckOfResponseFieldAllViewEnabled: (responseFieldIndex) => {
|
|
704
|
-
fillInTheGapsTextCommonComponent.answerInputFieldAllView()
|
|
705
|
-
.eq(responseFieldIndex)
|
|
706
|
-
.should('have.attr', 'spellcheck', 'true');
|
|
707
|
-
},
|
|
708
|
-
|
|
709
697
|
/**
|
|
710
698
|
*@description Verify numeration text for the answer input fields of the specify correct answer section.
|
|
711
699
|
* @param responseAccordionIndex denotes response accordion index
|
|
@@ -918,38 +906,7 @@ const steps = {
|
|
|
918
906
|
utilities.verifyCSS(utilities.getNthElement(fillInTheGapsTextCommonComponent.answerInputFieldPreviewTab().parent('.response-input-field'), responseAreaIndex), {
|
|
919
907
|
'border-style': styleName
|
|
920
908
|
});
|
|
921
|
-
}
|
|
922
|
-
|
|
923
|
-
/**
|
|
924
|
-
* @param {number} responseIndex index number of text container
|
|
925
|
-
* @param {string} responseText text to be added in text container
|
|
926
|
-
* @description function enters text in the answer input fields of the preview tab
|
|
927
|
-
*/
|
|
928
|
-
addTextInAnswerInputFieldsAllView: (responseIndex, responseText) => {
|
|
929
|
-
utilities.getNthElement(fillInTheGapsTextCommonComponent.answerInputFieldPreviewTab(), responseIndex)
|
|
930
|
-
.type(responseText)
|
|
931
|
-
},
|
|
932
|
-
|
|
933
|
-
/**
|
|
934
|
-
* @description Verify special characters language labels in the special characters popup
|
|
935
|
-
* @param {string[]} specialCharactersLanguageLabel Array of the language labels for the category
|
|
936
|
-
*/
|
|
937
|
-
verifySpecialCharactersLanguageLabelsInSpecialCharactersPopupPreviewTab: (specialCharactersLanguageLabel) => {
|
|
938
|
-
specialCharactersLanguageLabel.forEach((label, index) => {
|
|
939
|
-
utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsTextCommonComponent.specialCharactersPopupCategoryAccordionLabelPreviewTab(), index), label);
|
|
940
|
-
});
|
|
941
|
-
},
|
|
942
|
-
|
|
943
|
-
/**
|
|
944
|
-
* @description Verify =custom special characters displayed in special characters popup in preview tab
|
|
945
|
-
* @param {string[]} customSpecialCharacters Array of the custom special characters
|
|
946
|
-
*/
|
|
947
|
-
verifyCustomSpecialCharactersInSpecialCharactersPopupPreviewTab: (customSpecialCharacters) => {
|
|
948
|
-
customSpecialCharacters.forEach((character, index) => {
|
|
949
|
-
utilities.verifyElementVisibilityState(utilities.getNthElement(fillInTheGapsTextCommonComponent.customSpecialCharactersButtonPreviewTab(), index), 'visible');
|
|
950
|
-
utilities.verifyInnerText(utilities.getNthElement(fillInTheGapsTextCommonComponent.customSpecialCharactersButtonPreviewTab(), index), character);
|
|
951
|
-
});
|
|
952
|
-
},
|
|
909
|
+
}
|
|
953
910
|
}
|
|
954
911
|
|
|
955
912
|
const tests = {
|
|
@@ -1099,11 +1056,6 @@ const tests = {
|
|
|
1099
1056
|
fillInTheGapsTextCommonComponent.steps.setMinimumLimit(10);
|
|
1100
1057
|
fillInTheGapsTextCommonComponent.steps.setMaximumLimit(40);
|
|
1101
1058
|
});
|
|
1102
|
-
|
|
1103
|
-
it('When the user insert 100002 in maximum character limit input field, then the value should be reset to 100000', () => {
|
|
1104
|
-
fillInTheGapsTextCommonComponent.steps.setMaximumLimit(100002);
|
|
1105
|
-
fillInTheGapsTextCommonComponent.steps.verifyMaximumCharacterLimitInputField(100000);
|
|
1106
|
-
});
|
|
1107
1059
|
},
|
|
1108
1060
|
|
|
1109
1061
|
verifySetLimitSectionForNoneOption: () => {
|
|
@@ -496,10 +496,8 @@ const steps = {
|
|
|
496
496
|
gridQuestionCommonComponent.gridPreviewTab()
|
|
497
497
|
.within(() => {
|
|
498
498
|
utilities.getNthElement(gridQuestionCommonComponent.tableRow(), row).within(() => {
|
|
499
|
-
utilities.getNthElement(gridQuestionCommonComponent.tableCell(), column)
|
|
500
|
-
|
|
501
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
502
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
499
|
+
const tableCell = utilities.getNthElement(gridQuestionCommonComponent.tableCell(), column);
|
|
500
|
+
utilities.verifyImage(tableCell, constants.foxImageLink, constants.foxImageAltText);
|
|
503
501
|
})
|
|
504
502
|
});
|
|
505
503
|
},
|
|
@@ -167,11 +167,8 @@ const steps = {
|
|
|
167
167
|
* @description this function verifies image in options input fields
|
|
168
168
|
*/
|
|
169
169
|
verifyImageAndAltTextInOptionsInputField: (index) => {
|
|
170
|
-
optionsWrapperComponent.optionsInputField()
|
|
171
|
-
|
|
172
|
-
.find('img')
|
|
173
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
174
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
170
|
+
const optionsInputField = optionsWrapperComponent.optionsInputField().eq(index);
|
|
171
|
+
utilities.verifyImage(optionsInputField, constants.foxImageLink, constants.foxImageAltText);
|
|
175
172
|
},
|
|
176
173
|
|
|
177
174
|
/**
|
|
@@ -677,11 +677,8 @@ const steps = {
|
|
|
677
677
|
verifyDraggableOptionWithImageInPreviewTab: (optionIndex) => {
|
|
678
678
|
dragAndDropIntoCategoriesPage.optionsContainerPreviewTab()
|
|
679
679
|
.within(() => {
|
|
680
|
-
draggableOptionContainer.draggableOption()
|
|
681
|
-
|
|
682
|
-
.find('img')
|
|
683
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
684
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
680
|
+
const draggableOption = draggableOptionContainer.draggableOption().eq(optionIndex);
|
|
681
|
+
utilities.verifyImage(draggableOption, constants.foxImageLink, constants.foxImageAltText);
|
|
685
682
|
utilities.verifyElementVisibilityState(utilities.getNthElement(draggableOptionContainer.draggableOptionDragIcon(), optionIndex), 'exist');
|
|
686
683
|
});
|
|
687
684
|
},
|
|
@@ -224,11 +224,8 @@ const steps = {
|
|
|
224
224
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
225
225
|
*/
|
|
226
226
|
verifyDraggableOptionWithImageInPreviewTab: (optionIndex) => {
|
|
227
|
-
fillInTheGapsDragAndDropPage.optionContainerOptionsPreviewTab()
|
|
228
|
-
|
|
229
|
-
.find('img')
|
|
230
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
231
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
227
|
+
const optionElement = fillInTheGapsDragAndDropPage.optionContainerOptionsPreviewTab().eq(optionIndex);
|
|
228
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
232
229
|
utilities.verifyElementVisibilityState(utilities.getNthElement(draggableOptionContainer.draggableOptionDragIcon(), optionIndex), 'exist');
|
|
233
230
|
},
|
|
234
231
|
|
|
@@ -261,11 +258,8 @@ const steps = {
|
|
|
261
258
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
262
259
|
*/
|
|
263
260
|
verifyDropzoneWithImageInPreviewTab: (optionIndex) => {
|
|
264
|
-
fillInTheGapsDragAndDropPage.dropzonePreviewTab()
|
|
265
|
-
|
|
266
|
-
.find('img')
|
|
267
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
268
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
261
|
+
const dropzoneElement = fillInTheGapsDragAndDropPage.dropzonePreviewTab().eq(optionIndex);
|
|
262
|
+
utilities.verifyImage(dropzoneElement, constants.foxImageLink, constants.foxImageAltText);
|
|
269
263
|
},
|
|
270
264
|
|
|
271
265
|
/**
|
|
@@ -339,11 +339,8 @@ const steps = {
|
|
|
339
339
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
340
340
|
*/
|
|
341
341
|
verifyDraggableOptionWithImageInPreviewTab: (optionIndex) => {
|
|
342
|
-
fillInTheGapsOverImageDragAndDropPage.optionContainerOptionsPreviewTab()
|
|
343
|
-
|
|
344
|
-
.find('img')
|
|
345
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
346
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
342
|
+
const optionElement = fillInTheGapsOverImageDragAndDropPage.optionContainerOptionsPreviewTab().eq(optionIndex);
|
|
343
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
347
344
|
utilities.verifyElementVisibilityState(utilities.getNthElement(draggableOptionContainer.draggableOptionDragIcon(), optionIndex), 'exist');
|
|
348
345
|
},
|
|
349
346
|
|
|
@@ -376,11 +373,8 @@ const steps = {
|
|
|
376
373
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
377
374
|
*/
|
|
378
375
|
verifyDropzoneWithImageInPreviewTab: (optionIndex) => {
|
|
379
|
-
fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab()
|
|
380
|
-
|
|
381
|
-
.find('img')
|
|
382
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
383
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
376
|
+
const dropzoneElement = fillInTheGapsOverImageDragAndDropPage.dropzonePreviewTab().eq(optionIndex);
|
|
377
|
+
utilities.verifyImage(dropzoneElement, constants.foxImageLink, constants.foxImageAltText);
|
|
384
378
|
},
|
|
385
379
|
|
|
386
380
|
/**
|
|
@@ -300,11 +300,11 @@ const tests = {
|
|
|
300
300
|
},
|
|
301
301
|
|
|
302
302
|
verifyAutoResizeResponseFieldFunctionalityPreviewTab: () => {
|
|
303
|
-
it('When the \'Auto-resize response field\' functionality is disabled, the response field should have \'
|
|
303
|
+
it('When the \'Auto-resize response field\' functionality is disabled, the response field should have \'auto-resize\' attribute set as \'false\' in preview tab', () => {
|
|
304
304
|
fillInTheGapsTextPage.steps.verifyAutoResizeOfResponseFieldPreviewTabDisabled(0);
|
|
305
305
|
});
|
|
306
306
|
|
|
307
|
-
it('When the \'Auto-resize response field\' functionality is enabled, the response field should have \'
|
|
307
|
+
it('When the \'Auto-resize response field\' functionality is enabled, the response field should have \'auto-resize\' attribute set as \'true\' in the preview tab', () => {
|
|
308
308
|
createQuestionBasePage.steps.switchToEditTab();
|
|
309
309
|
fillInTheGapsTextPage.steps.checkAutoResizeCheckbox();
|
|
310
310
|
createQuestionBasePage.steps.switchToPreviewTab();
|
|
@@ -414,11 +414,8 @@ const steps = {
|
|
|
414
414
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
415
415
|
*/
|
|
416
416
|
verifyOptionWithImageInPreviewTab: (optionIndex) => {
|
|
417
|
-
listOrderingPage.optionWrapperPreviewTab()
|
|
418
|
-
|
|
419
|
-
.find('img')
|
|
420
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
421
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
417
|
+
const optionElement = listOrderingPage.optionWrapperPreviewTab().eq(optionIndex);
|
|
418
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
422
419
|
},
|
|
423
420
|
|
|
424
421
|
/**
|
|
@@ -520,11 +517,8 @@ const steps = {
|
|
|
520
517
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
521
518
|
*/
|
|
522
519
|
verifyOptionWithImageInGradingView: (optionIndex) => {
|
|
523
|
-
listOrderingPage.optionGradingView()
|
|
524
|
-
|
|
525
|
-
.find('img')
|
|
526
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
527
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
520
|
+
const optionElement = listOrderingPage.optionGradingView().eq(optionIndex);
|
|
521
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
528
522
|
},
|
|
529
523
|
|
|
530
524
|
/**
|
|
@@ -709,10 +703,8 @@ const steps = {
|
|
|
709
703
|
* @param {number} index - The index of the option in the Specify Correct Answer section.
|
|
710
704
|
*/
|
|
711
705
|
verifyImageInSpecifyCorrectAnswerSection: (index) => {
|
|
712
|
-
utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index)
|
|
713
|
-
|
|
714
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
715
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
706
|
+
const optionElement = utilities.getNthElement(listOrderingPage.optionSpecifyCorrectAnswerSection(), index);
|
|
707
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
716
708
|
},
|
|
717
709
|
|
|
718
710
|
/**
|
|
@@ -896,11 +888,8 @@ const steps = {
|
|
|
896
888
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
897
889
|
*/
|
|
898
890
|
verifyOptionWithImageDropdownLayoutInGradingView: (optionIndex) => {
|
|
899
|
-
listOrderingPage.dropdownOptionWrapperGradingView()
|
|
900
|
-
|
|
901
|
-
.find('img')
|
|
902
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
903
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
891
|
+
const optionElement = listOrderingPage.dropdownOptionWrapperGradingView().eq(optionIndex);
|
|
892
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
904
893
|
},
|
|
905
894
|
|
|
906
895
|
/**
|
|
@@ -1253,11 +1242,8 @@ const steps = {
|
|
|
1253
1242
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
1254
1243
|
*/
|
|
1255
1244
|
verifyImageOptionInSetPointsPopup: (optionIndex) => {
|
|
1256
|
-
listOrderingPage.optionWrapperSetPointsPopup()
|
|
1257
|
-
|
|
1258
|
-
.find('img')
|
|
1259
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
1260
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
1245
|
+
const optionElement = listOrderingPage.optionWrapperSetPointsPopup().eq(optionIndex);
|
|
1246
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
1261
1247
|
},
|
|
1262
1248
|
|
|
1263
1249
|
/**
|
|
@@ -1297,11 +1283,8 @@ const steps = {
|
|
|
1297
1283
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
1298
1284
|
*/
|
|
1299
1285
|
verifyHorizontalOptionWithImageInPreviewTab: (optionIndex) => {
|
|
1300
|
-
listOrderingPage.horizontalOptionPreviewTab()
|
|
1301
|
-
|
|
1302
|
-
.find('img')
|
|
1303
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
1304
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
1286
|
+
const optionElement = listOrderingPage.horizontalOptionPreviewTab().eq(optionIndex);
|
|
1287
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
1305
1288
|
},
|
|
1306
1289
|
|
|
1307
1290
|
/**
|
|
@@ -1727,11 +1710,8 @@ const steps = {
|
|
|
1727
1710
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
1728
1711
|
*/
|
|
1729
1712
|
verifyOptionWithImageInDropzonePreviewTabSeperateList: (optionIndex) => {
|
|
1730
|
-
listOrderingPage.droppedOptionSeperateList()
|
|
1731
|
-
|
|
1732
|
-
.find('img')
|
|
1733
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
1734
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
1713
|
+
const optionElement = listOrderingPage.droppedOptionSeperateList().eq(optionIndex);
|
|
1714
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
1735
1715
|
},
|
|
1736
1716
|
|
|
1737
1717
|
/**
|
|
@@ -1739,11 +1719,8 @@ const steps = {
|
|
|
1739
1719
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
1740
1720
|
*/
|
|
1741
1721
|
verifyOptionWithImageInDropzoneCorrectAnswerSectionTabSeperateList: (optionIndex) => {
|
|
1742
|
-
listOrderingPage.correctAnswerSectionIconWrapper()
|
|
1743
|
-
|
|
1744
|
-
.find('img')
|
|
1745
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
1746
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
1722
|
+
const optionElement = listOrderingPage.correctAnswerSectionIconWrapper().eq(optionIndex);
|
|
1723
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
1747
1724
|
},
|
|
1748
1725
|
|
|
1749
1726
|
/**
|
|
@@ -1751,11 +1728,8 @@ const steps = {
|
|
|
1751
1728
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
1752
1729
|
*/
|
|
1753
1730
|
verifyOptionWithImageInOptionsContainerPreviewTabSeperateList: (optionIndex) => {
|
|
1754
|
-
listOrderingPage.optionsSeperateList()
|
|
1755
|
-
|
|
1756
|
-
.find('img')
|
|
1757
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
1758
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
1731
|
+
const optionElement = listOrderingPage.optionsSeperateList().eq(optionIndex);
|
|
1732
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
1759
1733
|
},
|
|
1760
1734
|
|
|
1761
1735
|
/**
|
|
@@ -760,11 +760,8 @@ const steps = {
|
|
|
760
760
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
761
761
|
*/
|
|
762
762
|
verifyDropzoneWithImageInPreviewTab: (optionIndex) => {
|
|
763
|
-
matchingPage.dropzonePreviewTab()
|
|
764
|
-
|
|
765
|
-
.find('img')
|
|
766
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
767
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
763
|
+
const dropzoneElement = matchingPage.dropzonePreviewTab().eq(optionIndex);
|
|
764
|
+
utilities.verifyImage(dropzoneElement, constants.foxImageLink, constants.foxImageAltText);
|
|
768
765
|
},
|
|
769
766
|
|
|
770
767
|
/**
|
|
@@ -784,11 +781,8 @@ const steps = {
|
|
|
784
781
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
785
782
|
*/
|
|
786
783
|
verifyDraggableOptionWithImageInPreviewTab: (optionIndex) => {
|
|
787
|
-
matchingPage.correctAnswersOptionContainer()
|
|
788
|
-
|
|
789
|
-
.find('img')
|
|
790
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
791
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
784
|
+
const optionElement = matchingPage.correctAnswersOptionContainer().eq(optionIndex);
|
|
785
|
+
utilities.verifyImage(optionElement, constants.foxImageLink, constants.foxImageAltText);
|
|
792
786
|
utilities.verifyElementVisibilityState(utilities.getNthElement(draggableOptionContainer.draggableOptionDragIcon(), optionIndex), 'exist');
|
|
793
787
|
},
|
|
794
788
|
|
|
@@ -822,11 +816,8 @@ const steps = {
|
|
|
822
816
|
* @param {number} optionIndex - The index of the option in the Preview tab.
|
|
823
817
|
*/
|
|
824
818
|
verifyPromptWithImageInPreviewTab: (optionIndex) => {
|
|
825
|
-
matchingPage.promptContainerPreviewTab()
|
|
826
|
-
|
|
827
|
-
.find('img')
|
|
828
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
829
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
819
|
+
const promptElement = matchingPage.promptContainerPreviewTab().eq(optionIndex);
|
|
820
|
+
utilities.verifyImage(promptElement, constants.foxImageLink, constants.foxImageAltText);
|
|
830
821
|
},
|
|
831
822
|
|
|
832
823
|
/**
|
|
@@ -347,11 +347,8 @@ const steps = {
|
|
|
347
347
|
* @param {number} index - The index of the option in the Specify Correct Answer section.
|
|
348
348
|
*/
|
|
349
349
|
verifyImageInSpecifyCorrectAnswerSection: (index) => {
|
|
350
|
-
multipleSelectionPage.optionWrapperSpecifyCorrectAnswerSection()
|
|
351
|
-
|
|
352
|
-
.find('img')
|
|
353
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
354
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
350
|
+
const optionWrapper = multipleSelectionPage.optionWrapperSpecifyCorrectAnswerSection().eq(index);
|
|
351
|
+
utilities.verifyImage(optionWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
355
352
|
},
|
|
356
353
|
|
|
357
354
|
/**
|
|
@@ -394,11 +391,8 @@ const steps = {
|
|
|
394
391
|
* @param {number} index - The index of the option in the Preview tab.
|
|
395
392
|
*/
|
|
396
393
|
verifyImageInPreviewTab: (index) => {
|
|
397
|
-
multipleSelectionPage.optionWrapperPreviewTab()
|
|
398
|
-
|
|
399
|
-
.find('img')
|
|
400
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
401
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
394
|
+
const optionWrapper = multipleSelectionPage.optionWrapperPreviewTab().eq(index);
|
|
395
|
+
utilities.verifyImage(optionWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
402
396
|
},
|
|
403
397
|
|
|
404
398
|
/**
|
|
@@ -182,11 +182,8 @@ const steps = {
|
|
|
182
182
|
* @param {number} index - The index of the option in the Preview tab.
|
|
183
183
|
*/
|
|
184
184
|
verifyImageInLabelInputField: (index) => {
|
|
185
|
-
numberLineLabelPage.labelInputField()
|
|
186
|
-
|
|
187
|
-
.find('img')
|
|
188
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
189
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
185
|
+
const labelInputField = numberLineLabelPage.labelInputField().eq(index);
|
|
186
|
+
utilities.verifyImage(labelInputField, constants.foxImageLink, constants.foxImageAltText);
|
|
190
187
|
},
|
|
191
188
|
|
|
192
189
|
/**
|
|
@@ -351,11 +348,8 @@ const steps = {
|
|
|
351
348
|
* @param {number} index - The index of the option in the Preview tab.
|
|
352
349
|
*/
|
|
353
350
|
verifyImageInPreviewTab: (index) => {
|
|
354
|
-
numberLineLabelPage.draggableLabelsPreviewTab()
|
|
355
|
-
|
|
356
|
-
.find('img')
|
|
357
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
358
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
351
|
+
const draggableLabel = numberLineLabelPage.draggableLabelsPreviewTab().eq(index);
|
|
352
|
+
utilities.verifyImage(draggableLabel, constants.foxImageLink, constants.foxImageAltText);
|
|
359
353
|
},
|
|
360
354
|
|
|
361
355
|
/**
|
|
@@ -406,11 +400,8 @@ const steps = {
|
|
|
406
400
|
* @param {number} index - The index of the option in the Preview tab.
|
|
407
401
|
*/
|
|
408
402
|
verifyImageInLabelSpecifyCorrectAnswerSection: (index) => {
|
|
409
|
-
numberLineLabelPage.draggableLabelsSpecifyCorrectAnswer()
|
|
410
|
-
|
|
411
|
-
.find('img')
|
|
412
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
413
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
403
|
+
const labelElement = numberLineLabelPage.draggableLabelsSpecifyCorrectAnswer().eq(index);
|
|
404
|
+
utilities.verifyImage(labelElement, constants.foxImageLink, constants.foxImageAltText);
|
|
414
405
|
},
|
|
415
406
|
|
|
416
407
|
/**
|
|
@@ -325,11 +325,8 @@ const steps = {
|
|
|
325
325
|
* @param {number} index - The index of the option in the Specify Correct Answer section.
|
|
326
326
|
*/
|
|
327
327
|
verifyImageInSpecifyCorrectAnswerSection: (index) => {
|
|
328
|
-
singleSelectionPage.optionWrapperSpecifyCorrectAnswerSection()
|
|
329
|
-
|
|
330
|
-
.find('img')
|
|
331
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
332
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
328
|
+
const optionWrapper = singleSelectionPage.optionWrapperSpecifyCorrectAnswerSection().eq(index);
|
|
329
|
+
utilities.verifyImage(optionWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
333
330
|
},
|
|
334
331
|
|
|
335
332
|
/**
|
|
@@ -372,11 +369,8 @@ const steps = {
|
|
|
372
369
|
* @param {number} index - The index of the option in the Preview tab.
|
|
373
370
|
*/
|
|
374
371
|
verifyImageInPreviewTab: (index) => {
|
|
375
|
-
singleSelectionPage.optionWrapperPreviewTab()
|
|
376
|
-
|
|
377
|
-
.find('img')
|
|
378
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
379
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
372
|
+
const optionWrapper = singleSelectionPage.optionWrapperPreviewTab().eq(index);
|
|
373
|
+
utilities.verifyImage(optionWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
380
374
|
},
|
|
381
375
|
|
|
382
376
|
/**
|
|
@@ -162,10 +162,8 @@ const steps = {
|
|
|
162
162
|
},
|
|
163
163
|
|
|
164
164
|
verifyImageAndAltTextInQuestionInputField: () => {
|
|
165
|
-
textSelectionPage.questionInputField()
|
|
166
|
-
|
|
167
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
168
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
165
|
+
const questionInputField = textSelectionPage.questionInputField();
|
|
166
|
+
utilities.verifyImage(questionInputField, constants.foxImageLink, constants.foxImageAltText);
|
|
169
167
|
},
|
|
170
168
|
|
|
171
169
|
verifyEquationInQuestionInputField: () => {
|
|
@@ -232,10 +230,8 @@ const steps = {
|
|
|
232
230
|
},
|
|
233
231
|
|
|
234
232
|
verifyImageAndAltTextInSpecifyPossibleOptionsSection: () => {
|
|
235
|
-
textSelectionPage.specifyPossibleOptionsTextFieldWrapper()
|
|
236
|
-
|
|
237
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
238
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
233
|
+
const specifyPossibleOptionsTextFieldWrapper = textSelectionPage.specifyPossibleOptionsTextFieldWrapper();
|
|
234
|
+
utilities.verifyImage(specifyPossibleOptionsTextFieldWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
239
235
|
},
|
|
240
236
|
|
|
241
237
|
verifyEquationInSpecifyPossibleOptionsSection: () => {
|
|
@@ -281,10 +277,8 @@ const steps = {
|
|
|
281
277
|
},
|
|
282
278
|
|
|
283
279
|
verifyImageAndAltTextInSpecifyCorrectAnswerSection: () => {
|
|
284
|
-
textSelectionPage.specifyCorrectAnswerTextWrapper()
|
|
285
|
-
|
|
286
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
287
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
280
|
+
const specifyCorrectAnswerTextWrapper = textSelectionPage.specifyCorrectAnswerTextWrapper();
|
|
281
|
+
utilities.verifyImage(specifyCorrectAnswerTextWrapper, constants.foxImageLink, constants.foxImageAltText);
|
|
288
282
|
},
|
|
289
283
|
|
|
290
284
|
verifyEquationInSpecifyCorrectAnswerSection: () => {
|
|
@@ -330,10 +324,8 @@ const steps = {
|
|
|
330
324
|
},
|
|
331
325
|
|
|
332
326
|
verifyImageAndAltTextInPreviewTab: () => {
|
|
333
|
-
textSelectionPage.questionTextWrapperPreviewTab()
|
|
334
|
-
|
|
335
|
-
.should('have.attr', 'src', constants.foxImageLink)
|
|
336
|
-
.and('have.attr', 'alt', constants.foxImageAltText);
|
|
327
|
+
const questionTextWrapperPreviewTab = textSelectionPage.questionTextWrapperPreviewTab();
|
|
328
|
+
utilities.verifyImage(questionTextWrapperPreviewTab, constants.foxImageLink, constants.foxImageAltText);
|
|
337
329
|
},
|
|
338
330
|
|
|
339
331
|
verifyEquationInPreviewTab: () => {
|
|
@@ -260,7 +260,7 @@ const utilities = {
|
|
|
260
260
|
cy.get('body')
|
|
261
261
|
.click();
|
|
262
262
|
},
|
|
263
|
-
|
|
263
|
+
|
|
264
264
|
/**
|
|
265
265
|
* Simulates pressing the Escape key.
|
|
266
266
|
* @returns {null} - Returns null after the action is performed.
|
|
@@ -268,6 +268,33 @@ const utilities = {
|
|
|
268
268
|
pressEscapeKey: () => {
|
|
269
269
|
cy.get('body').type('{esc}');
|
|
270
270
|
},
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Verifies that an image source is either a fixed URL or a blob/data URL
|
|
274
|
+
* @param {Cypress.Chainable} element - The element containing the image
|
|
275
|
+
* @param {string} expectedUrl - The expected fixed URL (optional)
|
|
276
|
+
* @param {string} expectedAlt - The expected alt text (optional)
|
|
277
|
+
*/
|
|
278
|
+
verifyImage: (element, expectedUrl = null, expectedAlt = null) => {
|
|
279
|
+
element.find('img').should(($img) => {
|
|
280
|
+
const src = $img.attr('src');
|
|
281
|
+
|
|
282
|
+
// Check if src is either the fixed URL or a blob/data URL
|
|
283
|
+
const isValidSrc = (expectedUrl && src === expectedUrl) ||
|
|
284
|
+
src.startsWith('blob:') ||
|
|
285
|
+
src.startsWith('data:image/');
|
|
286
|
+
|
|
287
|
+
expect(isValidSrc,
|
|
288
|
+
`Image src should be ${expectedUrl ? `either ${expectedUrl} or ` : ''}a blob/data URL, but got: ${src}`
|
|
289
|
+
).to.be.true;
|
|
290
|
+
|
|
291
|
+
// Verify alt text if provided
|
|
292
|
+
if (expectedAlt) {
|
|
293
|
+
const alt = $img.attr('alt');
|
|
294
|
+
expect(alt).to.equal(expectedAlt);
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
},
|
|
271
298
|
}
|
|
272
299
|
|
|
273
300
|
export default utilities
|