itemengine-cypress-automation 1.0.109 → 1.0.111

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.
@@ -2,7 +2,7 @@ import { autoScoredScoringPreviewTab } from "../../pages/components";
2
2
  import utilities from "../../support/helpers/utilities";
3
3
  import { extractLrnQuestionData, lrnPage } from "../../support/migrationHelpers/extractLrnQuestionData";
4
4
  import lrnQuestionTypesENUM from "../../support/migrationHelpers/lrnQestionTypesENUM";
5
- import { verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
5
+ import { iePage, verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
6
6
 
7
7
  Cypress.Commands.add('learnosityLoaderWait', () => {
8
8
  // cy.get('.lrn-spinner')
@@ -15,13 +15,13 @@ Cypress.Commands.add('learnosityLoaderWait', () => {
15
15
  });
16
16
 
17
17
  Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
18
- cy.get('.question-instruction')
18
+ iePage.questionWrapper()
19
19
  .then((elements) => {
20
20
  if (retries <= 0) {
21
21
  throw new Error('Element did not load in time')
22
22
  };
23
23
  if (elements.length < count) {
24
- cy.get('.question-instruction')
24
+ iePage.questionWrapper()
25
25
  .last()
26
26
  .scrollIntoView()
27
27
  .wait(1000);
@@ -29,14 +29,14 @@ Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
29
29
  };
30
30
  cy.log('All question parts loaded')
31
31
  });
32
- //cy.barsPreLoaderWait();
33
- cy.get('[id="question-item-instruction-loader"]')
32
+ iePage.barsPreloader()
34
33
  .should('not.exist');
35
34
  cy.learnosityLoaderWait();
36
35
  })
37
36
 
38
- const migrationQuestionTypes = Cypress.env('migrationQuestionTypes'); /* ['singleSelection', 'essayResponseMath']; */
37
+ const migrationQuestionTypes = Cypress.env('migrationQuestionTypes');
39
38
  const migrationQuestionTypesLrn = migrationQuestionTypes.map((questionType) => lrnQuestionTypesENUM[questionType]);
39
+ let lrnMcqTypesRegex = /Multiple choice – standard|Multiple choice – multiple response|True or false|Multiple choice – block layout/;
40
40
 
41
41
  let lrnQuestionDataArr = [];
42
42
  let lrnGradingDataArr = [];
@@ -64,6 +64,7 @@ if (referenceIds.length > 0) {
64
64
 
65
65
  after(() => {
66
66
  console.log(lrnQuestionDataArr)
67
+ console.log(lrnGradingDataArr)
67
68
  lrnQuestionDataArr = [];
68
69
  lrnGradingDataArr = [];
69
70
  });
@@ -72,10 +73,12 @@ if (referenceIds.length > 0) {
72
73
  lrnPage.questionTypeDiv()
73
74
  .each(($el, index) => {
74
75
  let currQuestionType = $el[0].innerText
76
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
77
+ currQuestionType = lrnQuestionTypesENUM.mcq
78
+ }
75
79
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
76
80
  switch (currQuestionType) {
77
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelection(lrnQuestionDataArr, index);
78
- case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
81
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcq(lrnQuestionDataArr, index);
79
82
  default: throw new Error('Invalid lrn question type');
80
83
  }
81
84
  }
@@ -89,8 +92,7 @@ if (referenceIds.length > 0) {
89
92
  currQuestionTypeArr.forEach((questionData, index) => {
90
93
  cy.log(`Verifying data for ${questionType} ${index}`);
91
94
  switch (questionType) {
92
- case 'singleSelection': return verifyIeQuestionData.singleSelection(questionData, index);
93
- case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
95
+ case 'mcq': return verifyIeQuestionData.mcq(questionData, index);
94
96
  default: throw new Error('Invalid ngie question type');
95
97
  }
96
98
  });
@@ -102,10 +104,12 @@ if (referenceIds.length > 0) {
102
104
  lrnPage.questionTypeDiv()
103
105
  .each(($el, index) => {
104
106
  let currQuestionType = $el[0].innerText
107
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
108
+ currQuestionType = lrnQuestionTypesENUM.mcq
109
+ }
105
110
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
106
111
  switch (currQuestionType) {
107
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelectionGrading(lrnGradingDataArr, index);
108
- // case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
112
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcqGrading(lrnGradingDataArr, index);
109
113
  default: throw new Error('Invalid lrn question type');
110
114
  }
111
115
  }
@@ -114,14 +118,14 @@ if (referenceIds.length > 0) {
114
118
 
115
119
  it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
116
120
  autoScoredScoringPreviewTab.steps.switchToGradingView();
121
+ cy.wait(500);
117
122
  migrationQuestionTypes.forEach((questionType) => {
118
123
  cy.log(`Verifying grading data for all ${questionType} question type`);
119
124
  let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
120
125
  currQuestionTypeArr.forEach((questionData, index) => {
121
126
  cy.log(`Verifying grading data for ${questionType} ${index}`);
122
127
  switch (questionType) {
123
- case 'singleSelection': return verifyIeQuestionData.singleSelectionGrading(questionData, index);
124
- // case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
128
+ case 'mcq': return verifyIeQuestionData.mcqGrading(questionData, index);
125
129
  default: throw new Error('Invalid ngie question type');
126
130
  }
127
131
  });
@@ -2,7 +2,7 @@ import { autoScoredScoringPreviewTab } from "../../pages/components";
2
2
  import utilities from "../../support/helpers/utilities";
3
3
  import { extractLrnQuestionData, lrnPage } from "../../support/migrationHelpers/extractLrnQuestionData";
4
4
  import lrnQuestionTypesENUM from "../../support/migrationHelpers/lrnQestionTypesENUM";
5
- import { verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
5
+ import { iePage, verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
6
6
 
7
7
  Cypress.Commands.add('learnosityLoaderWait', () => {
8
8
  // cy.get('.lrn-spinner')
@@ -15,13 +15,13 @@ Cypress.Commands.add('learnosityLoaderWait', () => {
15
15
  });
16
16
 
17
17
  Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
18
- cy.get('.question-instruction')
18
+ iePage.questionWrapper()
19
19
  .then((elements) => {
20
20
  if (retries <= 0) {
21
21
  throw new Error('Element did not load in time')
22
22
  };
23
23
  if (elements.length < count) {
24
- cy.get('.question-instruction')
24
+ iePage.questionWrapper()
25
25
  .last()
26
26
  .scrollIntoView()
27
27
  .wait(1000);
@@ -29,17 +29,14 @@ Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
29
29
  };
30
30
  cy.log('All question parts loaded')
31
31
  });
32
- //cy.barsPreLoaderWait();
33
- cy.get('[id="question-item-instruction-loader"]')
32
+ iePage.barsPreloader()
34
33
  .should('not.exist');
35
34
  cy.learnosityLoaderWait();
36
35
  })
37
36
 
38
- const migrationQuestionTypes = Cypress.env('migrationQuestionTypes'); /* ['singleSelection', 'essayResponseMath']; */
37
+ const migrationQuestionTypes = Cypress.env('migrationQuestionTypes');
39
38
  const migrationQuestionTypesLrn = migrationQuestionTypes.map((questionType) => lrnQuestionTypesENUM[questionType]);
40
-
41
- console.log('migrationQuestionTypes', Cypress.env('migrationQuestionTypes'))
42
- console.log('referenceIds', Cypress.env('referenceIds'))
39
+ let lrnMcqTypesRegex = /Multiple choice – standard|Multiple choice – multiple response|True or false|Multiple choice – block layout/;
43
40
 
44
41
  let lrnQuestionDataArr = [];
45
42
  let lrnGradingDataArr = [];
@@ -67,6 +64,7 @@ if (referenceIds.length > 0) {
67
64
 
68
65
  after(() => {
69
66
  console.log(lrnQuestionDataArr)
67
+ console.log(lrnGradingDataArr)
70
68
  lrnQuestionDataArr = [];
71
69
  lrnGradingDataArr = [];
72
70
  });
@@ -75,10 +73,12 @@ if (referenceIds.length > 0) {
75
73
  lrnPage.questionTypeDiv()
76
74
  .each(($el, index) => {
77
75
  let currQuestionType = $el[0].innerText
76
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
77
+ currQuestionType = lrnQuestionTypesENUM.mcq
78
+ }
78
79
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
79
80
  switch (currQuestionType) {
80
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelection(lrnQuestionDataArr, index);
81
- case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
81
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcq(lrnQuestionDataArr, index);
82
82
  default: throw new Error('Invalid lrn question type');
83
83
  }
84
84
  }
@@ -92,8 +92,7 @@ if (referenceIds.length > 0) {
92
92
  currQuestionTypeArr.forEach((questionData, index) => {
93
93
  cy.log(`Verifying data for ${questionType} ${index}`);
94
94
  switch (questionType) {
95
- case 'singleSelection': return verifyIeQuestionData.singleSelection(questionData, index);
96
- case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
95
+ case 'mcq': return verifyIeQuestionData.mcq(questionData, index);
97
96
  default: throw new Error('Invalid ngie question type');
98
97
  }
99
98
  });
@@ -105,10 +104,12 @@ if (referenceIds.length > 0) {
105
104
  lrnPage.questionTypeDiv()
106
105
  .each(($el, index) => {
107
106
  let currQuestionType = $el[0].innerText
107
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
108
+ currQuestionType = lrnQuestionTypesENUM.mcq
109
+ }
108
110
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
109
111
  switch (currQuestionType) {
110
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelectionGrading(lrnGradingDataArr, index);
111
- // case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
112
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcqGrading(lrnGradingDataArr, index);
112
113
  default: throw new Error('Invalid lrn question type');
113
114
  }
114
115
  }
@@ -117,14 +118,14 @@ if (referenceIds.length > 0) {
117
118
 
118
119
  it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
119
120
  autoScoredScoringPreviewTab.steps.switchToGradingView();
121
+ cy.wait(500);
120
122
  migrationQuestionTypes.forEach((questionType) => {
121
123
  cy.log(`Verifying grading data for all ${questionType} question type`);
122
124
  let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
123
125
  currQuestionTypeArr.forEach((questionData, index) => {
124
126
  cy.log(`Verifying grading data for ${questionType} ${index}`);
125
127
  switch (questionType) {
126
- case 'singleSelection': return verifyIeQuestionData.singleSelectionGrading(questionData, index);
127
- // case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
128
+ case 'mcq': return verifyIeQuestionData.mcqGrading(questionData, index);
128
129
  default: throw new Error('Invalid ngie question type');
129
130
  }
130
131
  });
@@ -2,7 +2,7 @@ import { autoScoredScoringPreviewTab } from "../../pages/components";
2
2
  import utilities from "../../support/helpers/utilities";
3
3
  import { extractLrnQuestionData, lrnPage } from "../../support/migrationHelpers/extractLrnQuestionData";
4
4
  import lrnQuestionTypesENUM from "../../support/migrationHelpers/lrnQestionTypesENUM";
5
- import { verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
5
+ import { iePage, verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
6
6
 
7
7
  Cypress.Commands.add('learnosityLoaderWait', () => {
8
8
  // cy.get('.lrn-spinner')
@@ -15,13 +15,13 @@ Cypress.Commands.add('learnosityLoaderWait', () => {
15
15
  });
16
16
 
17
17
  Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
18
- cy.get('.question-instruction')
18
+ iePage.questionWrapper()
19
19
  .then((elements) => {
20
20
  if (retries <= 0) {
21
21
  throw new Error('Element did not load in time')
22
22
  };
23
23
  if (elements.length < count) {
24
- cy.get('.question-instruction')
24
+ iePage.questionWrapper()
25
25
  .last()
26
26
  .scrollIntoView()
27
27
  .wait(1000);
@@ -29,14 +29,14 @@ Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
29
29
  };
30
30
  cy.log('All question parts loaded')
31
31
  });
32
- //cy.barsPreLoaderWait();
33
- cy.get('[id="question-item-instruction-loader"]')
32
+ iePage.barsPreloader()
34
33
  .should('not.exist');
35
34
  cy.learnosityLoaderWait();
36
35
  })
37
36
 
38
- const migrationQuestionTypes = /* ['singleSelection', 'essayResponseMath']; */ Cypress.env('migrationQuestionTypes');
37
+ const migrationQuestionTypes = Cypress.env('migrationQuestionTypes');
39
38
  const migrationQuestionTypesLrn = migrationQuestionTypes.map((questionType) => lrnQuestionTypesENUM[questionType]);
39
+ let lrnMcqTypesRegex = /Multiple choice – standard|Multiple choice – multiple response|True or false|Multiple choice – block layout/;
40
40
 
41
41
  let lrnQuestionDataArr = [];
42
42
  let lrnGradingDataArr = [];
@@ -64,6 +64,7 @@ if (referenceIds.length > 0) {
64
64
 
65
65
  after(() => {
66
66
  console.log(lrnQuestionDataArr)
67
+ console.log(lrnGradingDataArr)
67
68
  lrnQuestionDataArr = [];
68
69
  lrnGradingDataArr = [];
69
70
  });
@@ -72,10 +73,12 @@ if (referenceIds.length > 0) {
72
73
  lrnPage.questionTypeDiv()
73
74
  .each(($el, index) => {
74
75
  let currQuestionType = $el[0].innerText
76
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
77
+ currQuestionType = lrnQuestionTypesENUM.mcq
78
+ }
75
79
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
76
80
  switch (currQuestionType) {
77
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelection(lrnQuestionDataArr, index);
78
- case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
81
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcq(lrnQuestionDataArr, index);
79
82
  default: throw new Error('Invalid lrn question type');
80
83
  }
81
84
  }
@@ -89,8 +92,7 @@ if (referenceIds.length > 0) {
89
92
  currQuestionTypeArr.forEach((questionData, index) => {
90
93
  cy.log(`Verifying data for ${questionType} ${index}`);
91
94
  switch (questionType) {
92
- case 'singleSelection': return verifyIeQuestionData.singleSelection(questionData, index);
93
- case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
95
+ case 'mcq': return verifyIeQuestionData.mcq(questionData, index);
94
96
  default: throw new Error('Invalid ngie question type');
95
97
  }
96
98
  });
@@ -102,10 +104,12 @@ if (referenceIds.length > 0) {
102
104
  lrnPage.questionTypeDiv()
103
105
  .each(($el, index) => {
104
106
  let currQuestionType = $el[0].innerText
107
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
108
+ currQuestionType = lrnQuestionTypesENUM.mcq
109
+ }
105
110
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
106
111
  switch (currQuestionType) {
107
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelectionGrading(lrnGradingDataArr, index);
108
- // case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
112
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcqGrading(lrnGradingDataArr, index);
109
113
  default: throw new Error('Invalid lrn question type');
110
114
  }
111
115
  }
@@ -114,14 +118,14 @@ if (referenceIds.length > 0) {
114
118
 
115
119
  it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
116
120
  autoScoredScoringPreviewTab.steps.switchToGradingView();
121
+ cy.wait(500);
117
122
  migrationQuestionTypes.forEach((questionType) => {
118
123
  cy.log(`Verifying grading data for all ${questionType} question type`);
119
124
  let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
120
125
  currQuestionTypeArr.forEach((questionData, index) => {
121
126
  cy.log(`Verifying grading data for ${questionType} ${index}`);
122
127
  switch (questionType) {
123
- case 'singleSelection': return verifyIeQuestionData.singleSelectionGrading(questionData, index);
124
- // case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
128
+ case 'mcq': return verifyIeQuestionData.mcqGrading(questionData, index);
125
129
  default: throw new Error('Invalid ngie question type');
126
130
  }
127
131
  });
@@ -2,7 +2,7 @@ import { autoScoredScoringPreviewTab } from "../../pages/components";
2
2
  import utilities from "../../support/helpers/utilities";
3
3
  import { extractLrnQuestionData, lrnPage } from "../../support/migrationHelpers/extractLrnQuestionData";
4
4
  import lrnQuestionTypesENUM from "../../support/migrationHelpers/lrnQestionTypesENUM";
5
- import { verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
5
+ import { iePage, verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
6
6
 
7
7
  Cypress.Commands.add('learnosityLoaderWait', () => {
8
8
  // cy.get('.lrn-spinner')
@@ -15,13 +15,13 @@ Cypress.Commands.add('learnosityLoaderWait', () => {
15
15
  });
16
16
 
17
17
  Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
18
- cy.get('.question-instruction')
18
+ iePage.questionWrapper()
19
19
  .then((elements) => {
20
20
  if (retries <= 0) {
21
21
  throw new Error('Element did not load in time')
22
22
  };
23
23
  if (elements.length < count) {
24
- cy.get('.question-instruction')
24
+ iePage.questionWrapper()
25
25
  .last()
26
26
  .scrollIntoView()
27
27
  .wait(1000);
@@ -29,14 +29,14 @@ Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
29
29
  };
30
30
  cy.log('All question parts loaded')
31
31
  });
32
- //cy.barsPreLoaderWait();
33
- cy.get('[id="question-item-instruction-loader"]')
32
+ iePage.barsPreloader()
34
33
  .should('not.exist');
35
34
  cy.learnosityLoaderWait();
36
35
  })
37
36
 
38
37
  const migrationQuestionTypes = Cypress.env('migrationQuestionTypes');
39
38
  const migrationQuestionTypesLrn = migrationQuestionTypes.map((questionType) => lrnQuestionTypesENUM[questionType]);
39
+ let lrnMcqTypesRegex = /Multiple choice – standard|Multiple choice – multiple response|True or false|Multiple choice – block layout/;
40
40
 
41
41
  let lrnQuestionDataArr = [];
42
42
  let lrnGradingDataArr = [];
@@ -64,6 +64,7 @@ if (referenceIds.length > 0) {
64
64
 
65
65
  after(() => {
66
66
  console.log(lrnQuestionDataArr)
67
+ console.log(lrnGradingDataArr)
67
68
  lrnQuestionDataArr = [];
68
69
  lrnGradingDataArr = [];
69
70
  });
@@ -72,10 +73,12 @@ if (referenceIds.length > 0) {
72
73
  lrnPage.questionTypeDiv()
73
74
  .each(($el, index) => {
74
75
  let currQuestionType = $el[0].innerText
76
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
77
+ currQuestionType = lrnQuestionTypesENUM.mcq
78
+ }
75
79
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
76
80
  switch (currQuestionType) {
77
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelection(lrnQuestionDataArr, index);
78
- case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
81
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcq(lrnQuestionDataArr, index);
79
82
  default: throw new Error('Invalid lrn question type');
80
83
  }
81
84
  }
@@ -89,8 +92,7 @@ if (referenceIds.length > 0) {
89
92
  currQuestionTypeArr.forEach((questionData, index) => {
90
93
  cy.log(`Verifying data for ${questionType} ${index}`);
91
94
  switch (questionType) {
92
- case 'singleSelection': return verifyIeQuestionData.singleSelection(questionData, index);
93
- case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
95
+ case 'mcq': return verifyIeQuestionData.mcq(questionData, index);
94
96
  default: throw new Error('Invalid ngie question type');
95
97
  }
96
98
  });
@@ -102,10 +104,12 @@ if (referenceIds.length > 0) {
102
104
  lrnPage.questionTypeDiv()
103
105
  .each(($el, index) => {
104
106
  let currQuestionType = $el[0].innerText
107
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
108
+ currQuestionType = lrnQuestionTypesENUM.mcq
109
+ }
105
110
  if (migrationQuestionTypesLrn.includes(currQuestionType)) {
106
111
  switch (currQuestionType) {
107
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelectionGrading(lrnGradingDataArr, index);
108
- // case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
112
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcqGrading(lrnGradingDataArr, index);
109
113
  default: throw new Error('Invalid lrn question type');
110
114
  }
111
115
  }
@@ -114,14 +118,14 @@ if (referenceIds.length > 0) {
114
118
 
115
119
  it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
116
120
  autoScoredScoringPreviewTab.steps.switchToGradingView();
121
+ cy.wait(500);
117
122
  migrationQuestionTypes.forEach((questionType) => {
118
123
  cy.log(`Verifying grading data for all ${questionType} question type`);
119
124
  let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
120
125
  currQuestionTypeArr.forEach((questionData, index) => {
121
126
  cy.log(`Verifying grading data for ${questionType} ${index}`);
122
127
  switch (questionType) {
123
- case 'singleSelection': return verifyIeQuestionData.singleSelectionGrading(questionData, index);
124
- // case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
128
+ case 'mcq': return verifyIeQuestionData.mcqGrading(questionData, index);
125
129
  default: throw new Error('Invalid ngie question type');
126
130
  }
127
131
  });
@@ -2,7 +2,7 @@ import { autoScoredScoringPreviewTab } from "../../pages/components";
2
2
  import utilities from "../../support/helpers/utilities";
3
3
  import { extractLrnQuestionData, lrnPage } from "../../support/migrationHelpers/extractLrnQuestionData";
4
4
  import lrnQuestionTypesENUM from "../../support/migrationHelpers/lrnQestionTypesENUM";
5
- import { verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
5
+ import { iePage, verifyIeQuestionData } from "../../support/migrationHelpers/verifyIeQuestionData";
6
6
 
7
7
  Cypress.Commands.add('learnosityLoaderWait', () => {
8
8
  // cy.get('.lrn-spinner')
@@ -15,13 +15,13 @@ Cypress.Commands.add('learnosityLoaderWait', () => {
15
15
  });
16
16
 
17
17
  Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
18
- cy.get('.question-instruction')
18
+ iePage.questionWrapper()
19
19
  .then((elements) => {
20
20
  if (retries <= 0) {
21
21
  throw new Error('Element did not load in time')
22
22
  };
23
23
  if (elements.length < count) {
24
- cy.get('.question-instruction')
24
+ iePage.questionWrapper()
25
25
  .last()
26
26
  .scrollIntoView()
27
27
  .wait(1000);
@@ -29,103 +29,109 @@ Cypress.Commands.add('lazyLoadPreviewQuestions', (count, retries = 5) => {
29
29
  };
30
30
  cy.log('All question parts loaded')
31
31
  });
32
- //cy.barsPreLoaderWait();
33
- cy.get('[id="question-item-instruction-loader"]')
32
+ iePage.barsPreloader()
34
33
  .should('not.exist');
35
34
  cy.learnosityLoaderWait();
36
35
  })
37
36
 
38
37
  const migrationQuestionTypes = Cypress.env('migrationQuestionTypes');
39
38
  const migrationQuestionTypesLrn = migrationQuestionTypes.map((questionType) => lrnQuestionTypesENUM[questionType]);
39
+ let lrnMcqTypesRegex = /Multiple choice – standard|Multiple choice – multiple response|True or false|Multiple choice – block layout/;
40
40
 
41
41
  let lrnQuestionDataArr = [];
42
42
  let lrnGradingDataArr = [];
43
43
 
44
44
  let referenceIds = JSON.parse(Cypress.env('referenceIds')).slice(400, 500);
45
45
 
46
- describe('Migration item check for MCQ questions', () => {
47
- before(() => {
48
- cy.loginAs('technicalTester');
49
- });
46
+ if (referenceIds.length > 0) {
47
+ describe('Migration item check for MCQ questions', () => {
48
+ before(() => {
49
+ cy.loginAs('technicalTester');
50
+ });
50
51
 
51
- referenceIds.forEach((referenceId) => {
52
- describe(`Migration item check for item "${referenceId}"`, () => {
53
- before(() => {
54
- cy.interceptGraphql('getItemPreview');
55
- cy.setGraphqlWait();
56
- cy.visit(`/items-list/item/${utilities.base64Encoding(referenceId)}`);
57
- cy.pageLoadWait('getItemPreview');
58
- cy.get('@getItemPreview').then((req) => {
59
- let questionCount = req.response.body.data.getItemPreview.item.questionParts.length;
60
- cy.lazyLoadPreviewQuestions(questionCount);
52
+ referenceIds.forEach((referenceId) => {
53
+ describe(`Migration item check for item "${referenceId}"`, () => {
54
+ before(() => {
55
+ cy.interceptGraphql('getItemPreview');
56
+ cy.setGraphqlWait();
57
+ cy.visit(`/items-list/item/${utilities.base64Encoding(referenceId)}`);
58
+ cy.pageLoadWait('getItemPreview');
59
+ cy.get('@getItemPreview').then((req) => {
60
+ let questionCount = req.response.body.data.getItemPreview.item.questionParts.length;
61
+ cy.lazyLoadPreviewQuestions(questionCount);
62
+ });
61
63
  });
62
- });
63
64
 
64
- after(() => {
65
- console.log(lrnQuestionDataArr)
66
- lrnQuestionDataArr = [];
67
- lrnGradingDataArr = [];
68
- });
65
+ after(() => {
66
+ console.log(lrnQuestionDataArr)
67
+ console.log(lrnGradingDataArr)
68
+ lrnQuestionDataArr = [];
69
+ lrnGradingDataArr = [];
70
+ });
69
71
 
70
- it(`Extracting learnosity preview data for item "${referenceId}"`, () => {
71
- lrnPage.questionTypeDiv()
72
- .each(($el, index) => {
73
- let currQuestionType = $el[0].innerText
74
- if (migrationQuestionTypesLrn.includes(currQuestionType)) {
75
- switch (currQuestionType) {
76
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelection(lrnQuestionDataArr, index);
77
- case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
78
- default: throw new Error('Invalid lrn question type');
72
+ it(`Extracting learnosity preview data for item "${referenceId}"`, () => {
73
+ lrnPage.questionTypeDiv()
74
+ .each(($el, index) => {
75
+ let currQuestionType = $el[0].innerText
76
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
77
+ currQuestionType = lrnQuestionTypesENUM.mcq
79
78
  }
80
- }
81
- });
82
- });
79
+ if (migrationQuestionTypesLrn.includes(currQuestionType)) {
80
+ switch (currQuestionType) {
81
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcq(lrnQuestionDataArr, index);
82
+ default: throw new Error('Invalid lrn question type');
83
+ }
84
+ }
85
+ });
86
+ });
83
87
 
84
- it(`Verifying itemengine preview data for item "${referenceId}"`, () => {
85
- migrationQuestionTypes.forEach((questionType) => {
86
- cy.log(`Verifying data for all ${questionType} question type`);
87
- let currQuestionTypeArr = lrnQuestionDataArr.filter((question) => question.questionType === questionType);
88
- currQuestionTypeArr.forEach((questionData, index) => {
89
- cy.log(`Verifying data for ${questionType} ${index}`);
90
- switch (questionType) {
91
- case 'singleSelection': return verifyIeQuestionData.singleSelection(questionData, index);
92
- case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
93
- default: throw new Error('Invalid ngie question type');
94
- }
88
+ it(`Verifying itemengine preview data for item "${referenceId}"`, () => {
89
+ migrationQuestionTypes.forEach((questionType) => {
90
+ cy.log(`Verifying data for all ${questionType} question type`);
91
+ let currQuestionTypeArr = lrnQuestionDataArr.filter((question) => question.questionType === questionType);
92
+ currQuestionTypeArr.forEach((questionData, index) => {
93
+ cy.log(`Verifying data for ${questionType} ${index}`);
94
+ switch (questionType) {
95
+ case 'mcq': return verifyIeQuestionData.mcq(questionData, index);
96
+ default: throw new Error('Invalid ngie question type');
97
+ }
98
+ });
95
99
  });
96
100
  });
97
- });
98
101
 
99
- it(`Extracting learnosity grading data for item "${referenceId}"`, () => {
100
- lrnPage.steps.checkShowAnswersToggle();
101
- lrnPage.questionTypeDiv()
102
- .each(($el, index) => {
103
- let currQuestionType = $el[0].innerText
104
- if (migrationQuestionTypesLrn.includes(currQuestionType)) {
105
- switch (currQuestionType) {
106
- case lrnQuestionTypesENUM.singleSelection: return extractLrnQuestionData.singleSelectionGrading(lrnGradingDataArr, index);
107
- // case lrnQuestionTypesENUM.essayResponseMath: return extractLrnQuestionData.essayResponseMath(lrnQuestionDataArr, index);
108
- default: throw new Error('Invalid lrn question type');
102
+ it(`Extracting learnosity grading data for item "${referenceId}"`, () => {
103
+ lrnPage.steps.checkShowAnswersToggle();
104
+ lrnPage.questionTypeDiv()
105
+ .each(($el, index) => {
106
+ let currQuestionType = $el[0].innerText
107
+ if (lrnMcqTypesRegex.test(currQuestionType)) {
108
+ currQuestionType = lrnQuestionTypesENUM.mcq
109
109
  }
110
- }
111
- });
112
- });
110
+ if (migrationQuestionTypesLrn.includes(currQuestionType)) {
111
+ switch (currQuestionType) {
112
+ case lrnQuestionTypesENUM.mcq: return extractLrnQuestionData.mcqGrading(lrnGradingDataArr, index);
113
+ default: throw new Error('Invalid lrn question type');
114
+ }
115
+ }
116
+ });
117
+ });
113
118
 
114
- it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
115
- autoScoredScoringPreviewTab.steps.switchToGradingView();
116
- migrationQuestionTypes.forEach((questionType) => {
117
- cy.log(`Verifying grading data for all ${questionType} question type`);
118
- let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
119
- currQuestionTypeArr.forEach((questionData, index) => {
120
- cy.log(`Verifying grading data for ${questionType} ${index}`);
121
- switch (questionType) {
122
- case 'singleSelection': return verifyIeQuestionData.singleSelectionGrading(questionData, index);
123
- // case 'essayResponseMath': return verifyIeQuestionData.essayResponseMath(questionData, index);
124
- default: throw new Error('Invalid ngie question type');
125
- }
119
+ it(`Verifying itemengine grading data for item "${referenceId}"`, () => {
120
+ autoScoredScoringPreviewTab.steps.switchToGradingView();
121
+ cy.wait(500);
122
+ migrationQuestionTypes.forEach((questionType) => {
123
+ cy.log(`Verifying grading data for all ${questionType} question type`);
124
+ let currQuestionTypeArr = lrnGradingDataArr.filter((question) => question.questionType === questionType);
125
+ currQuestionTypeArr.forEach((questionData, index) => {
126
+ cy.log(`Verifying grading data for ${questionType} ${index}`);
127
+ switch (questionType) {
128
+ case 'mcq': return verifyIeQuestionData.mcqGrading(questionData, index);
129
+ default: throw new Error('Invalid ngie question type');
130
+ }
131
+ });
126
132
  });
127
133
  });
128
134
  });
129
135
  });
130
136
  });
131
- });
137
+ }
@@ -16,11 +16,11 @@ export const lrnPage = {
16
16
  }
17
17
 
18
18
  export const extractLrnQuestionData = {
19
- singleSelection: (lrnQuestionDataArr, index) => {
19
+ mcq: (lrnQuestionDataArr, index) => {
20
20
  let obj = {};
21
21
  cy.log(`Extracting the question instructions and options from question ${index}`);
22
22
  obj.questionIndex = index;
23
- obj.questionType = 'singleSelection'
23
+ obj.questionType = 'mcq'
24
24
  lrnPage.questionWrapper()
25
25
  .eq(index)
26
26
  .within(() => {
@@ -47,15 +47,11 @@ export const extractLrnQuestionData = {
47
47
  lrnQuestionDataArr.push(obj);
48
48
  },
49
49
 
50
- singleSelectionGrading: (lrnGradingDataArr, index) => {
51
- //get the option main div, check for the isvalid class and store the index
52
- //store blank array if there isn't any option that would imply that the question is manual scored
53
- //verify the respective option in the itemengine if blank then no option should have tickmark
54
- //if index then at that index there should be a tick mark but also check in other options for no tickmark
50
+ mcqGrading: (lrnGradingDataArr, index) => {
55
51
  let obj = {};
56
52
  cy.log(`Extracting the question instructions, options and correct answers from question ${index}`);
57
53
  obj.questionIndex = index;
58
- obj.questionType = 'singleSelection'
54
+ obj.questionType = 'mcq'
59
55
  lrnPage.questionWrapper()
60
56
  .eq(index)
61
57
  .within(() => {
@@ -69,7 +65,6 @@ export const extractLrnQuestionData = {
69
65
  let correctAnswersIndex = [];
70
66
  lrnPage.mcqOptionWrapper()
71
67
  .each(($optionWrapper, index) => {
72
- console.log($optionWrapper[0].className)
73
68
  if ($optionWrapper[0].className.includes('lrn_valid')) {
74
69
  correctAnswersIndex.push(index)
75
70
  }
@@ -102,5 +97,203 @@ export const extractLrnQuestionData = {
102
97
  });
103
98
  })
104
99
  lrnQuestionDataArr.push(obj);
105
- }
100
+ },
101
+
102
+ /* singleSelection: (lrnQuestionDataArr, index) => {
103
+ let obj = {};
104
+ cy.log(`Extracting the question instructions and options from question ${index}`);
105
+ obj.questionIndex = index;
106
+ obj.questionType = 'singleSelection'
107
+ lrnPage.questionWrapper()
108
+ .eq(index)
109
+ .within(() => {
110
+ lrnPage.questionInstructions()
111
+ .then(($ins) => {
112
+ let text = $ins[0].innerText;
113
+ obj.previewQuestionInstructions = text;
114
+ });
115
+
116
+ let optionsText = [];
117
+ lrnPage.mcqOptionWrapper()
118
+ .each(($options) => {
119
+ cy.wrap($options)
120
+ .within(() => {
121
+ lrnPage.mcqOptionContent()
122
+ .then(($el) => {
123
+ let text = $el[0].innerText;
124
+ optionsText.push(text);
125
+ });
126
+ });
127
+ });
128
+ obj.previewOptionsText = optionsText;
129
+ })
130
+ lrnQuestionDataArr.push(obj);
131
+ },
132
+
133
+ singleSelectionGrading: (lrnGradingDataArr, index) => {
134
+ let obj = {};
135
+ cy.log(`Extracting the question instructions, options and correct answers from question ${index}`);
136
+ obj.questionIndex = index;
137
+ obj.questionType = 'singleSelection'
138
+ lrnPage.questionWrapper()
139
+ .eq(index)
140
+ .within(() => {
141
+ lrnPage.questionInstructions()
142
+ .then(($ins) => {
143
+ let text = $ins[0].innerText;
144
+ obj.gradingQuestionInstructions = text;
145
+ });
146
+
147
+ let optionsText = [];
148
+ let correctAnswersIndex = [];
149
+ lrnPage.mcqOptionWrapper()
150
+ .each(($optionWrapper, index) => {
151
+ if ($optionWrapper[0].className.includes('lrn_valid')) {
152
+ correctAnswersIndex.push(index)
153
+ }
154
+ cy.wrap($optionWrapper)
155
+ .within(() => {
156
+ lrnPage.mcqOptionContent()
157
+ .then(($el) => {
158
+ optionsText.push($el[0].innerText);
159
+ });
160
+ });
161
+ });
162
+ obj.gradingOptionsText = optionsText;
163
+ obj.correctAnswersIndex = correctAnswersIndex;
164
+ });
165
+ lrnGradingDataArr.push(obj);
166
+ },
167
+
168
+ multipleSelection: (lrnQuestionDataArr, index) => {
169
+ let obj = {};
170
+ cy.log(`Extracting the question instructions and options from question ${index}`);
171
+ obj.questionIndex = index;
172
+ obj.questionType = 'multipleSelection'
173
+ lrnPage.questionWrapper()
174
+ .eq(index)
175
+ .within(() => {
176
+ lrnPage.questionInstructions()
177
+ .then(($ins) => {
178
+ let text = $ins[0].innerText;
179
+ obj.previewQuestionInstructions = text;
180
+ });
181
+
182
+ let optionsText = [];
183
+ lrnPage.mcqOptionWrapper()
184
+ .each(($options) => {
185
+ cy.wrap($options)
186
+ .within(() => {
187
+ lrnPage.mcqOptionContent()
188
+ .then(($el) => {
189
+ let text = $el[0].innerText;
190
+ optionsText.push(text);
191
+ });
192
+ });
193
+ });
194
+ obj.previewOptionsText = optionsText;
195
+ })
196
+ lrnQuestionDataArr.push(obj);
197
+ },
198
+
199
+ multipleSelectionGrading: (lrnGradingDataArr, index) => {
200
+ let obj = {};
201
+ cy.log(`Extracting the question instructions, options and correct answers from question ${index}`);
202
+ obj.questionIndex = index;
203
+ obj.questionType = 'multipleSelection'
204
+ lrnPage.questionWrapper()
205
+ .eq(index)
206
+ .within(() => {
207
+ lrnPage.questionInstructions()
208
+ .then(($ins) => {
209
+ let text = $ins[0].innerText;
210
+ obj.gradingQuestionInstructions = text;
211
+ });
212
+
213
+ let optionsText = [];
214
+ let correctAnswersIndex = [];
215
+ lrnPage.mcqOptionWrapper()
216
+ .each(($optionWrapper, index) => {
217
+ if ($optionWrapper[0].className.includes('lrn_valid')) {
218
+ correctAnswersIndex.push(index)
219
+ }
220
+ cy.wrap($optionWrapper)
221
+ .within(() => {
222
+ lrnPage.mcqOptionContent()
223
+ .then(($el) => {
224
+ optionsText.push($el[0].innerText);
225
+ });
226
+ });
227
+ });
228
+ obj.gradingOptionsText = optionsText;
229
+ obj.correctAnswersIndex = correctAnswersIndex;
230
+ });
231
+ lrnGradingDataArr.push(obj);
232
+ },
233
+
234
+ trueOrFalse: (lrnQuestionDataArr, index) => {
235
+ let obj = {};
236
+ cy.log(`Extracting the question instructions and options from question ${index}`);
237
+ obj.questionIndex = index;
238
+ obj.questionType = 'trueOrFalse';
239
+ lrnPage.questionWrapper()
240
+ .eq(index)
241
+ .within(() => {
242
+ lrnPage.questionInstructions()
243
+ .then(($ins) => {
244
+ let text = $ins[0].innerText;
245
+ obj.previewQuestionInstructions = text;
246
+ });
247
+
248
+ let optionsText = [];
249
+ lrnPage.mcqOptionWrapper()
250
+ .each(($options) => {
251
+ cy.wrap($options)
252
+ .within(() => {
253
+ lrnPage.mcqOptionContent()
254
+ .then(($el) => {
255
+ let text = $el[0].innerText;
256
+ optionsText.push(text);
257
+ });
258
+ });
259
+ });
260
+ obj.previewOptionsText = optionsText;
261
+ })
262
+ lrnQuestionDataArr.push(obj);
263
+ },
264
+
265
+ trueOrFalseGrading: (lrnGradingDataArr, index) => {
266
+ let obj = {};
267
+ cy.log(`Extracting the question instructions, options and correct answers from question ${index}`);
268
+ obj.questionIndex = index;
269
+ obj.questionType = 'trueOrFalse'
270
+ lrnPage.questionWrapper()
271
+ .eq(index)
272
+ .within(() => {
273
+ lrnPage.questionInstructions()
274
+ .then(($ins) => {
275
+ let text = $ins[0].innerText;
276
+ obj.gradingQuestionInstructions = text;
277
+ });
278
+
279
+ let optionsText = [];
280
+ let correctAnswersIndex = [];
281
+ lrnPage.mcqOptionWrapper()
282
+ .each(($optionWrapper, index) => {
283
+ if ($optionWrapper[0].className.includes('lrn_valid')) {
284
+ correctAnswersIndex.push(index)
285
+ }
286
+ cy.wrap($optionWrapper)
287
+ .within(() => {
288
+ lrnPage.mcqOptionContent()
289
+ .then(($el) => {
290
+ optionsText.push($el[0].innerText);
291
+ });
292
+ });
293
+ });
294
+ obj.gradingOptionsText = optionsText;
295
+ obj.correctAnswersIndex = correctAnswersIndex;
296
+ });
297
+ lrnGradingDataArr.push(obj);
298
+ }, */
106
299
  }
@@ -1,5 +1,8 @@
1
1
  const lrnQuestionTypesENUM = {
2
+ mcq: 'mcq',
2
3
  singleSelection: 'Multiple choice – standard',
4
+ multipleSelection: 'Multiple choice – multiple response',
5
+ trueOrFalse: 'True or false',
3
6
  essayResponseMath: 'Math essay with rich text',
4
7
  }
5
8
 
@@ -1,53 +1,72 @@
1
+ import { multipleSelectionPage } from "../../pages";
1
2
  import { singleSelectionPage } from "../../pages/singleSelectionPage"
3
+ import utilities from "../helpers/utilities";
4
+
5
+ export const iePage = {
6
+ mcqOption: () => cy.get('.mcq_Label'),
7
+ mcqOptionWrapper: () => cy.get('div[class*="option-wrapper"]'),
8
+ questionWrapper: () => cy.get('.ngie-question-wrapper'),
9
+ barsPreloader: () => cy.get('[id="question-item-instruction-loader"]'),
10
+ };
2
11
 
3
12
  export const verifyIeQuestionData = {
4
- singleSelection: (expectedQuestionData, index) => {
5
- cy.get('.ngie-single-select')
6
- .eq(index)
7
- .within(() => {
8
- singleSelectionPage.questionInstructionsText()
9
- .verifyInnerText(expectedQuestionData.previewQuestionInstructions);
10
- singleSelectionPage.optionTextPreviewTab()
11
- .then(($elements) => {
12
- expect($elements.length).to.be.eq(expectedQuestionData.previewOptionsText.length);
13
- });
14
- singleSelectionPage.optionTextPreviewTab()
15
- .each((optionElem, optionIndex) => {
16
- cy.wrap(optionElem)
17
- .verifyInnerText(expectedQuestionData.previewOptionsText[optionIndex]);
13
+ mcq: (expectedQuestionData, index) => {
14
+ let ieMcqQuestionWrapperClassRegex = /ngie-single-select|ngie-mcq|ngie-true-or-false|ngie-mcq-block|ngie-single-select-block/i;
15
+ iePage.questionWrapper()
16
+ .then(($questionWrappers) => {
17
+ const $mcqQuestionWrappers = $questionWrappers.filter((index, element) => {
18
+ return ieMcqQuestionWrapperClassRegex.test(element.className);
19
+ });
20
+ cy.wrap($mcqQuestionWrappers)
21
+ .eq(index)
22
+ .within(() => {
23
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.previewQuestionInstructions);
24
+ iePage.mcqOption()
25
+ .then(($elements) => {
26
+ expect($elements.length).to.be.eq(expectedQuestionData.previewOptionsText.length);
27
+ });
28
+ iePage.mcqOption()
29
+ .each((optionElem, optionIndex) => {
30
+ utilities.verifyInnerText(cy.wrap(optionElem), expectedQuestionData.previewOptionsText[optionIndex]);
31
+ });
18
32
  });
19
33
  });
20
34
  },
21
35
 
22
- singleSelectionGrading: (expectedQuestionData, index) => {
23
- console.log('grading data', expectedQuestionData);
24
- cy.get('.ngie-single-select')
25
- .eq(index)
26
- .within(() => {
27
- singleSelectionPage.questionInstructionsText()
28
- .verifyInnerText(expectedQuestionData.gradingQuestionInstructions);
29
- singleSelectionPage.optionsWrapperGradingView()
30
- .then(($elements) => {
31
- expect($elements.length).to.be.eq(expectedQuestionData.gradingOptionsText.length);
32
- });
33
- singleSelectionPage.optionsWrapperGradingView()
34
- .each(($optionWrapper, optionIndex) => {
35
- cy.wrap($optionWrapper)
36
- .within(() => {
37
- if (expectedQuestionData.correctAnswersIndex.includes(optionIndex)) {
38
- cy.get('.tick-icon-wrapper')
39
- .should('exist');
40
- } else {
41
- cy.get('.tick-icon-wrapper')
42
- .should('not.exist');
43
- }
44
- singleSelectionPage.optionTextPreviewTab()
45
- .verifyInnerText(expectedQuestionData.gradingOptionsText[optionIndex])
36
+ mcqGrading: (expectedQuestionData, index) => {
37
+ let ieMcqQuestionWrapperClassRegex = /ngie-single-select|ngie-mcq|ngie-true-or-false|ngie-mcq-block|ngie-single-select-block/i;
38
+ iePage.questionWrapper()
39
+ .then(($questionWrappers) => {
40
+ const $mcqQuestionWrappers = $questionWrappers.filter((index, element) => {
41
+ return ieMcqQuestionWrapperClassRegex.test(element.className);
42
+ });
43
+ cy.wrap($mcqQuestionWrappers)
44
+ .eq(index)
45
+ .within(() => {
46
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.gradingQuestionInstructions);
47
+ iePage.mcqOptionWrapper()
48
+ .then(($elements) => {
49
+ expect($elements.length).to.be.eq(expectedQuestionData.gradingOptionsText.length);
50
+ });
51
+ iePage.mcqOptionWrapper()
52
+ .each(($optionWrapper, optionIndex) => {
53
+ cy.wrap($optionWrapper)
54
+ .within(() => {
55
+ if (expectedQuestionData.correctAnswersIndex.includes(optionIndex)) {
56
+ cy.get('.tick-icon-wrapper')
57
+ .should('exist');
58
+ } else {
59
+ cy.get('.tick-icon-wrapper')
60
+ .should('not.exist');
61
+ }
62
+ utilities.verifyInnerText(iePage.mcqOption(), expectedQuestionData.gradingOptionsText[optionIndex]);
63
+ });
46
64
  });
47
65
  });
48
66
  });
49
67
  },
50
68
 
69
+
51
70
  textEntryMath: (expectedQuestionData, index) => {
52
71
 
53
72
  },
@@ -59,5 +78,135 @@ export const verifyIeQuestionData = {
59
78
  singleSelectionPage.questionInstructionsText()
60
79
  .verifyInnerText(expectedQuestionData.previewQuestionInstructions);
61
80
  });
62
- }
81
+ },
82
+
83
+ /* singleSelection: (expectedQuestionData, index) => {
84
+ cy.get('.ngie-single-select')
85
+ .eq(index)
86
+ .within(() => {
87
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.previewQuestionInstructions);
88
+ singleSelectionPage.optionTextPreviewTab()
89
+ .then(($elements) => {
90
+ expect($elements.length).to.be.eq(expectedQuestionData.previewOptionsText.length);
91
+ });
92
+ singleSelectionPage.optionTextPreviewTab()
93
+ .each((optionElem, optionIndex) => {
94
+ utilities.verifyInnerText(cy.wrap(optionElem), expectedQuestionData.previewOptionsText[optionIndex]);
95
+ });
96
+ });
97
+ },
98
+
99
+ singleSelectionGrading: (expectedQuestionData, index) => {
100
+ cy.get('.ngie-single-select')
101
+ .eq(index)
102
+ .within(() => {
103
+ singleSelectionPage.questionInstructionsText()
104
+ .verifyInnerText(expectedQuestionData.gradingQuestionInstructions);
105
+ singleSelectionPage.optionsWrapperGradingView()
106
+ .then(($elements) => {
107
+ expect($elements.length).to.be.eq(expectedQuestionData.gradingOptionsText.length);
108
+ });
109
+ singleSelectionPage.optionsWrapperGradingView()
110
+ .each(($optionWrapper, optionIndex) => {
111
+ cy.wrap($optionWrapper)
112
+ .within(() => {
113
+ if (expectedQuestionData.correctAnswersIndex.includes(optionIndex)) {
114
+ cy.get('.tick-icon-wrapper')
115
+ .should('exist');
116
+ } else {
117
+ cy.get('.tick-icon-wrapper')
118
+ .should('not.exist');
119
+ }
120
+ singleSelectionPage.optionTextPreviewTab()
121
+ .verifyInnerText(expectedQuestionData.gradingOptionsText[optionIndex])
122
+ });
123
+ });
124
+ });
125
+ },
126
+
127
+ multipleSelection: (expectedQuestionData, index) => {
128
+ cy.get('.ngie-mcq')
129
+ .eq(index)
130
+ .within(() => {
131
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.previewQuestionInstructions);
132
+ singleSelectionPage.optionTextPreviewTab()
133
+ .then(($elements) => {
134
+ expect($elements.length).to.be.eq(expectedQuestionData.previewOptionsText.length);
135
+ });
136
+ singleSelectionPage.optionTextPreviewTab()
137
+ .each((optionElem, optionIndex) => {
138
+ utilities.verifyInnerText(cy.wrap(optionElem), expectedQuestionData.previewOptionsText[optionIndex]);
139
+ });
140
+ });
141
+ },
142
+
143
+ multipleSelectionGrading: (expectedQuestionData, index) => {
144
+ cy.get('.ngie-mcq')
145
+ .eq(index)
146
+ .within(() => {
147
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.gradingQuestionInstructions);
148
+ multipleSelectionPage.optionsWrapperGradingView()
149
+ .then(($elements) => {
150
+ expect($elements.length).to.be.eq(expectedQuestionData.gradingOptionsText.length);
151
+ });
152
+ multipleSelectionPage.optionsWrapperGradingView()
153
+ .each(($optionWrapper, optionIndex) => {
154
+ cy.wrap($optionWrapper)
155
+ .within(() => {
156
+ if (expectedQuestionData.correctAnswersIndex.includes(optionIndex)) {
157
+ cy.get('.tick-icon-wrapper')
158
+ .should('exist');
159
+ } else {
160
+ cy.get('.tick-icon-wrapper')
161
+ .should('not.exist');
162
+ }
163
+ utilities.verifyInnerText(singleSelectionPage.optionTextPreviewTab(), expectedQuestionData.gradingOptionsText[optionIndex]);
164
+ });
165
+ });
166
+ });
167
+ },
168
+
169
+ trueOrFalse: (expectedQuestionData, index) => {
170
+ cy.get('.ngie-true-or-false')
171
+ .eq(index)
172
+ .within(() => {
173
+ utilities.verifyInnerText(singleSelectionPage.questionInstructionsText(), expectedQuestionData.previewQuestionInstructions);
174
+ singleSelectionPage.optionTextPreviewTab()
175
+ .then(($elements) => {
176
+ expect($elements.length).to.be.eq(expectedQuestionData.previewOptionsText.length);
177
+ });
178
+ singleSelectionPage.optionTextPreviewTab()
179
+ .each((optionElem, optionIndex) => {
180
+ utilities.verifyInnerText(cy.wrap(optionElem), expectedQuestionData.previewOptionsText[optionIndex]);
181
+ });
182
+ });
183
+ },
184
+
185
+ trueOrFalseGrading: (expectedQuestionData, index) => {
186
+ cy.get('.ngie-true-or-false')
187
+ .eq(index)
188
+ .within(() => {
189
+ singleSelectionPage.questionInstructionsText()
190
+ .verifyInnerText(expectedQuestionData.gradingQuestionInstructions);
191
+ singleSelectionPage.optionsWrapperGradingView()
192
+ .then(($elements) => {
193
+ expect($elements.length).to.be.eq(expectedQuestionData.gradingOptionsText.length);
194
+ });
195
+ singleSelectionPage.optionsWrapperGradingView()
196
+ .each(($optionWrapper, optionIndex) => {
197
+ cy.wrap($optionWrapper)
198
+ .within(() => {
199
+ if (expectedQuestionData.correctAnswersIndex.includes(optionIndex)) {
200
+ cy.get('.tick-icon-wrapper')
201
+ .should('exist');
202
+ } else {
203
+ cy.get('.tick-icon-wrapper')
204
+ .should('not.exist');
205
+ }
206
+ singleSelectionPage.optionTextPreviewTab()
207
+ .verifyInnerText(expectedQuestionData.gradingOptionsText[optionIndex])
208
+ });
209
+ });
210
+ });
211
+ }, */
63
212
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itemengine-cypress-automation",
3
- "version": "1.0.109",
3
+ "version": "1.0.111",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  import fetch from "node-fetch";
2
2
  export async function getS3Object() {
3
3
  try {
4
- const objectUrl = 'https://namespace-itemengine-qa-integration-tests-artifacts.s3.us-west-2.amazonaws.com/migrationFixtures.json?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMj%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCmFwLXNvdXRoLTEiRzBFAiEAtuZAXUT3rsrAtERHw6tztlrTUlvrbIlYymJxFGr9SZACIBsuBdkiRvFgX7XVgp8%2Fj6debFo4mDNVp%2BE1cHGPBJ3SKv8DCKH%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEQAxoMOTY1MzMxMTExMTY2IgwdeHKgPPydrneU1xQq0wM5fasN%2B9EfDL85HTk5m7JPAZlamBZRk45IVQJMkIvZEjhmalerIMQS9qO31DZBpuIG6fTshbAhdPwviFoiiq2ObfXZ3901uqJ6BPqVu1VoUrO3Qo5mL64xmqkxQNHeUqTlnWhALFQQDyP4qJfBAlIgl3oy191AePzD%2Bez86R6F8n8UIkOZLnTbwfhaJyvoliAiJXvncdE%2FrE8UcjThZ2Un5oDR1bOKL6rrEz5kq1zyWlaNhtNwrSeA8Q9bjKd5t1Je%2Fa6HWJ9Pb7K08KKRlV3IHoc43pMm3vVrIJ42b02WStT9uyrqhDzVq8ypZTJHAfoCtd6ltNyQbwgDdNvl6k7jzuaeArM4UeAKk7ICSawC3XaLEPSIMJKiLAHcgTEgJCxk8Gd2G1bHUvmhOFVvCj53i71xCJGwTVBaJ6Y6cGb%2BzEknf8dxDjCkuP53JSmgWCAiA1hs1NrKs9IqQpRtu1xCZar3qX8tHIXuavgH%2B2RpPwbY4pwUITWcKAjGS6Nk1MuvBM92%2FHPqvgE0dXN1vPZcgzy%2FTGgQ27ah4cnlhK8HxrjLtNy20PIoLPCaOT26%2F%2BCRB3qRHmYDzUmUXMolMXUaHix%2FOsUjWN8KWZ5fumsPQv%2FHgzDfjbeuBjqUApuqGo%2BvrFpnjB6J5GdEYbCX3Ej3CwowF5O5kk8RkmbKhhOCetZm1G%2FRIaCKu4vMMKgqKY2YmHVJT1jEWArp2xBAi57KFN5DWvYAK4O8Jgfzl%2B6%2FDvJ6uQmXkNu73dnGAzbemLjMppRiWlGTiixbVBMgBH1gdPe%2FwSyWl7XkgGG0z%2FObQb5UbifOOcFvO1K81lh1nr%2BEUim5TaV3jXjbCryn1U5qXuDxfwtLZVaOCTDok3Gd0Sta%2Ffsq8eZ6gfS%2BmmVjs1wIcFZPgxftyzobYPCvbmH005EjRvEVAfNkxcnZ2jMn%2B9uASDum2u7o3kA4%2BRVgF4zREU%2B2CuPDWu4Z2js%2Fn0sm%2FGpSQDKVqimAQA%2BJjKc9uA%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240215T094613Z&X-Amz-SignedHeaders=host&X-Amz-Expires=43200&X-Amz-Credential=ASIA6BQRXZT7I7YNCT7N%2F20240215%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=048d6f7294f9c53fb3c973f16ca69a53333106040fa537a494cd9624c4f26d03';
4
+ const objectUrl = 'https://namespace-itemengine-qa-integration-tests-artifacts.s3.us-west-2.amazonaws.com/migrationFixtures.json?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEC4aCmFwLXNvdXRoLTEiRjBEAiAzs3p3Eb38xTURyy%2BzGkMsV1nxANOptrrzd7pZ6iAapwIgHpZVw9VcuNpA87fURgmnZrVWII5dWALIJp4Us2R9wVkq9gMIFxADGgw5NjUzMzExMTExNjYiDGMP8gRDAsGnzcR3NCrTA%2FFUSCHiht9CU6cpIRyJksnWvlGdYzaVxsoBnYC2S1NtWdO8PY4ENIiHWry6LuXFRmKwF6wzYlSog18nbxzni4R5F8uBxlcQv1iTFuu8ROpBrimbsx3tqtnY9nRr%2FbXeOb9tAAAVJY1M6irQnyOwDnUc58Yt%2BiPGWlXrrgn6BVYnsfN8w5mIXiWi7NZQ8PYYKEuH8yytwkQtmF%2F5j5RT%2FQh%2BQvEFucXu1WADo90gW4jZzATOcBDr5%2FIWmggbM0KE1ARBr3plDe3Z3x8j8dLi0VvMbqP9iFR4Y1%2FGaoEEIrM8Bk8JC5UwHbqFz6dtQYotM4GKxFYc21VwcIHv6SC%2FMWla1LLfAaiNFGaSDruK3tLBngwnH0x8R4pqhmd0NI2fig4s9hCOFtXUS%2FtCUUTEVszEwUSyarcPQfGggODAdy84rpZ2UDhU%2FUL5anKGCX8NfeohqCdlQ7eLpfs0K0nv6O9gsebo1Z4Ij5BS%2B1GjiZ1pciLjebMLEr7C%2BUqEZNakqOSmZJn9wveDkEnZxYEr0poMidMvIR9LiCNoJP8faUIGX1qm2yUVpJWsMqbTt70u%2FvwMbtPtWJ2FFKsK5DxA%2FYgPtM6OIYWBtdHul71IllpY4eqVMPu2za4GOpUCGvF12jUa6Tnnu6pQK0tUwWt8Ae7O3TCbalKXGq%2BOppcblsba43WTBVpM6Qzunb68aYGIepwVET6yMp87JwP52lh51ZFOvC8ow%2FIYSZmx9VW2gnVrCr6cQ0VT5F4t1m7ouLwjJxILBhyzKRgW%2FWfYiLjrYBLnVVJkba7j5uOemH%2BogTHyuzlLqEq%2F%2BS%2F5jqc8Lt4e%2BsBmVfl1Glz7iRwWSqYUGabIVm6fmviXjOGuLPnw%2BsztvMDQAxuOOyjgmAgIz1U%2Fzkzxa%2BcrtpZHeMQKS1bsrc7Tl4xTE63mqlMDMjOaZdqNd6xGzj1%2FzZX7gapwTfJXGxBYE6Pp3%2BruHVzNKOy9mtCT07Wnf%2BR1uU5yoM4cxVg5Zw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240219T134827Z&X-Amz-SignedHeaders=host&X-Amz-Expires=43200&X-Amz-Credential=ASIA6BQRXZT7HUVETSNV%2F20240219%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=dc72c12ca4740b4206e02cc3e3ebbac0ea0bc04b030b2015493c371be92b0211';
5
5
  const res = await fetch(objectUrl);
6
6
  if (!res.ok) {
7
7
  throw new Error(`Failed to fetch JSON file (${objectUrl}): ${res.statusText}`);