itemengine-cypress-automation 1.0.193-packageUpdated-b3f3d0b.0 → 1.0.193

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/cypress/e2e/ILC/AudioPlayerNew/allSupportedFileTypes.js +3 -3
  2. package/cypress/e2e/ILC/AudioPlayerNew/audioOverviewAndTranscript.js +568 -0
  3. package/cypress/e2e/ILC/AudioPlayerNew/barAudioPlayerStyle.js +4 -4
  4. package/cypress/e2e/ILC/AudioPlayerNew/compactAudioPlayerStyle.js +5 -5
  5. package/cypress/e2e/ILC/AudioPlayerNew/customizePlayerLayoutSettings.js +2 -2
  6. package/cypress/e2e/ILC/AudioPlayerNew/headerSection.js +125 -0
  7. package/cypress/e2e/ILC/AudioPlayerNew/previewContents.smoke.js +5 -5
  8. package/cypress/e2e/ILC/AudioPlayerNew/standardAudioPlayerStyle.js +4 -4
  9. package/cypress/e2e/ILC/AudioPlayerNew/studentViewSettings.js +3 -3
  10. package/cypress/e2e/ILC/AudioPlayerNew/uploadAndAddAudioFile.js +19 -17
  11. package/cypress/e2e/ILC/ChartsBar/previewContentsForAllViews.smoke.js +7 -4
  12. package/cypress/e2e/ILC/ChartsLine/allOrNothingScoringForAllViews.smoke.js +366 -0
  13. package/cypress/e2e/ILC/ChartsLine/checkAnswerFunctionalityForAllViews.smoke.js +183 -0
  14. package/cypress/e2e/ILC/ChartsLine/gradingViewAndCorrectAnswerView.smoke.js +281 -0
  15. package/cypress/e2e/ILC/ChartsLine/previewContentsForAllViews.smoke.js +595 -0
  16. package/cypress/e2e/ILC/GridFill/allOrNothingBasicForAllViews.smoke.js +8 -8
  17. package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithAlternativePointsGreaterThanCorrectPoints.js +241 -0
  18. package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithCorrectPointsEqualToAlternativePoints.js +241 -0
  19. package/cypress/e2e/ILC/ImageHighlight/Scoring/allOrNothingWithCorrectPointsGreaterThanAlternatePoints.js +285 -0
  20. package/cypress/e2e/ILC/ImageHighlight/Scoring/manuallyAndNonScored.js +164 -0
  21. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsAlternativePointsGreaterThanCorrectPoints.js +281 -0
  22. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsScoring.js +467 -0
  23. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeightsWithCorrectPointsEqualToAlternativePoints.js +250 -0
  24. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialDifferentWeigtsCorrectPointsGreaterThanAlternativePoints.js +281 -0
  25. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsAlternativePointsGreaterThanCorrectPoints.js +260 -0
  26. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsScoring.js +184 -0
  27. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsWithCorrectPointsEqualToAlternativePoints.js +229 -0
  28. package/cypress/e2e/ILC/ImageHighlight/Scoring/partialEqualWeightsWithCorrectPointsGreaterThanAlternativePoints.js +261 -0
  29. package/cypress/e2e/ILC/chartsDotsPlot/allOrNothingForAllViews.smoke.js +409 -0
  30. package/cypress/e2e/ILC/chartsDotsPlot/checkAnswerFunctionalityForAllViews.smoke.js +199 -0
  31. package/cypress/e2e/ILC/chartsDotsPlot/gradingViewAndCorrectAnswerView.smoke.js +223 -0
  32. package/cypress/e2e/ILC/chartsDotsPlot/previewContentsForAllViews.smoke.js +402 -0
  33. package/cypress/pages/audioPlayerPage.js +229 -9
  34. package/cypress/pages/chartsBarPage.js +2 -70
  35. package/cypress/pages/chartsDotPlotPage.js +986 -3
  36. package/cypress/pages/chartsLinePage.js +368 -9
  37. package/cypress/pages/components/autoScoredScoringSectionMultiResponseType.js +0 -1
  38. package/cypress/pages/components/autoScoredSpecifyCorrectAnswerSection.js +3 -0
  39. package/cypress/pages/components/backgroundImageUploadComponent.js +1 -1
  40. package/cypress/pages/components/barAndLineChartComponent.js +27 -1
  41. package/cypress/pages/components/chartsCommonComponent.js +31 -2
  42. package/cypress/pages/components/createQuestionBasePage.js +1 -0
  43. package/cypress/pages/components/layoutSectionComponent.js +2 -2
  44. package/cypress/pages/components/singleMultipleSelectionModeComponent.js +5 -0
  45. package/cypress/pages/components/toolSettingsComponent.js +2 -2
  46. package/cypress/pages/feedbackScalePage.js +1 -1
  47. package/cypress/pages/gridFillPage.js +13 -6
  48. package/cypress/pages/imageHighlightPage.js +308 -2
  49. package/cypress/pages/numberLinePage.js +40 -16
  50. package/cypress/pages/videoResponsePage.js +350 -6
  51. package/package.json +1 -1
@@ -0,0 +1,281 @@
1
+ import { chartsLinePage, correctAnswerViewPage, itemPreviewPage, studentViewPage } from "../../../pages";
2
+ import { gradingViewPage } from "../../../pages";
3
+ import abortEarlySetup from "../../../support/helpers/abortEarly";
4
+ import utilities from "../../../support/helpers/utilities";
5
+ const css = Cypress.env('css');
6
+
7
+ let gradingAndCorrectAnsView = ['Grading view', 'Correct answer view']
8
+ const views = utilities.getViews(gradingAndCorrectAnsView);
9
+ var itemReferenceID = "";
10
+
11
+
12
+ describe('Create item page - Charts - Line: Grading view, Correct answer view contents', () => {
13
+ before(() => {
14
+ cy.loginAs('admin');
15
+ });
16
+
17
+ if (views.includes('Grading view')) {
18
+ describe('Grading view contents', { tags: 'smoke' }, () => {
19
+ abortEarlySetup();
20
+ before(() => {
21
+ chartsLinePage.steps.navigateToCreateQuestion('charts');
22
+ cy.barsPreLoaderWait();
23
+ chartsLinePage.steps.addTextInQuestionInstructionsInputField('Set the points on the chart for the profits of the years');
24
+ chartsLinePage.steps.selectLineButton();
25
+ chartsLinePage.steps.selectAddBarOrPointToolbarOption();
26
+ chartsLinePage.steps.addBarOrPointInChartInSelectChartTypeSection();
27
+ chartsLinePage.steps.setGraphTitle('Graph of profits');
28
+ chartsLinePage.steps.setYAxisLabel('Profit');
29
+ chartsLinePage.steps.setXAxisLabel('Year');
30
+ chartsLinePage.steps.setMaxYValue(20);
31
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 0, value: 1, range: 20 });
32
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 1, value: 2, range: 20 });
33
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 2, value: 3, range: 20 });
34
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 3, value: 4, range: 20 });
35
+ chartsLinePage.steps.lockPoint(1);
36
+ chartsLinePage.steps.allotPoints(10);
37
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 0, value: 2, range: 20 });
38
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 2, value: 5, range: 20 });
39
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 3, value: 1, range: 20 });
40
+ chartsLinePage.steps.addBarOrPointInChartInSpecifyCorrectAnswerSection();
41
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 4, value: 8, range: 20 });
42
+ chartsLinePage.steps.clickOnSaveQuestionButton();
43
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
44
+ //Global variable issue, not working inside before
45
+ itemPreviewPage.referenceID()
46
+ .invoke('text')
47
+ .then(($refID) => {
48
+ itemReferenceID = $refID;
49
+ cy.visit(`/item-engine/demo/render-item/student-view/${utilities.base64Encoding(itemReferenceID)}`);
50
+ chartsLinePage.steps.addBarOrPointInChartInPreviewTab();
51
+ chartsLinePage.steps.setPointValueInPreviewTab({ pointIndex: 2, value: 5, range: 20 });
52
+ chartsLinePage.steps.setPointValueInPreviewTab({ pointIndex: 4, value: 10, range: 20 });
53
+ studentViewPage.steps.submitResponse();
54
+ studentViewPage.steps.clickOnGoToGradingViewButton();
55
+ });
56
+ });
57
+
58
+ it('Question instructions should be visible', () => {
59
+ utilities.verifyInnerText(chartsLinePage.questionInstructionsText(), 'Set the points on the chart for the profits of the years');
60
+ utilities.verifyElementVisibilityState(chartsLinePage.questionInstructionsText(), 'visible');
61
+ });
62
+
63
+ it('Graph title, Y axis label and X axis label should be displayed in the chart', () => {
64
+ utilities.verifyInnerText(chartsLinePage.previewTabGraphTitle(), 'Graph of profits');
65
+ utilities.verifyInnerText(chartsLinePage.previewTabYAxisLabelButton(), 'Profit');
66
+ utilities.verifyInnerText(chartsLinePage.previewTabXAxisLabelButton(), 'Year');
67
+ });
68
+
69
+ it('Toolbar, toolbar options and control actions(Undo, Redo, Reset) should not be displayed', () => {
70
+ utilities.verifyElementVisibilityState(chartsLinePage.previewTabTool(), 'notExist');
71
+ utilities.verifyElementVisibilityState(chartsLinePage.previewTabToolBarWrapper(), 'notExist');
72
+ });
73
+
74
+ it('The response submitted by the student should be displayed in grading view', () => {
75
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 0, value: 1, range: 20 });
76
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 1, value: 2, range: 20 });
77
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 2, value: 5, range: 20 });
78
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 3, value: 4, range: 20 });
79
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 4, value: 10, range: 20 });
80
+ });
81
+
82
+ it('The locked point should have lock icon displayed in it', () => {
83
+ chartsLinePage.steps.verifyPointIsLockedInPreviewTab(1);
84
+ });
85
+
86
+ it('Correct and Incorrect icons should be displayed in each line graph and locked point should not have any correct or incorrect icon', () => {
87
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(0, 'incorrect');
88
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconNotExistsInPreviewTab(1);
89
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(2, 'correct');
90
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(3, 'incorrect');
91
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(4, 'incorrect');
92
+ });
93
+
94
+ it('\'Your answer is incorrect\' label should be displayed', () => {
95
+ chartsLinePage.steps.verifyCorrectIncorrectAnswerLabel('incorrect');
96
+ });
97
+
98
+ it('All the points in grading view should be non-editable', () => {
99
+ chartsLinePage.steps.keyBoardUpPointInPreviewTab(0);
100
+ chartsLinePage.steps.keyBoardUpPointInPreviewTab(1);
101
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 0, value: 1, range: 20 });
102
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 1, value: 2, range: 20 });
103
+ for (let index = 0; index < 5; index++) {
104
+ utilities.triggerMouseover(utilities.getNthElement(chartsLinePage.previewTabPoint(), index));
105
+ utilities.verifyElementVisibilityState(chartsLinePage.barAndPointTooltipWrapper(), 'notExist');
106
+ }
107
+ });
108
+
109
+ it('Correct answer label should be displayed', () => {
110
+ utilities.verifyInnerText(chartsLinePage.correctAnswersLabel(), 'Correct answers');
111
+ utilities.verifyElementVisibilityState(chartsLinePage.correctAnswersLabel(), 'visible');
112
+ });
113
+
114
+ it('Correct answer should be displayed in the correct answer section', () => {
115
+ chartsLinePage.steps.verifyPointValueInCorrectAnswerSection({ pointIndex: 0, value: 2, range: 20 });
116
+ chartsLinePage.steps.verifyPointValueInCorrectAnswerSection({ pointIndex: 1, value: 2, range: 20 });
117
+ chartsLinePage.steps.verifyPointValueInCorrectAnswerSection({ pointIndex: 2, value: 5, range: 20 });
118
+ chartsLinePage.steps.verifyPointValueInCorrectAnswerSection({ pointIndex: 3, value: 1, range: 20 });
119
+ chartsLinePage.steps.verifyPointValueInCorrectAnswerSection({ pointIndex: 4, value: 8, range: 20 });
120
+ chartsLinePage.steps.verifyPointCorrectIconInCorrectAnswerSection(0);
121
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconNotExistsInCorrectAnswerSection(1);
122
+ chartsLinePage.steps.verifyPointCorrectIconInCorrectAnswerSection(2);
123
+ chartsLinePage.steps.verifyPointCorrectIconInCorrectAnswerSection(3);
124
+ chartsLinePage.steps.verifyPointCorrectIconInCorrectAnswerSection(4);
125
+ chartsLinePage.steps.verifyGraphTitleInCorrectAnswerSection('Graph of profits');
126
+ chartsLinePage.steps.verifyYAxisLabelInCorrectAnswerSection('Profit');
127
+ chartsLinePage.steps.verifyXAxisLabelInCorrectAnswerSection('Year');
128
+ });
129
+
130
+ it('Points and the total score should be displayed', () => {
131
+ gradingViewPage.steps.verifyGradingViewScore(0, 10);
132
+ });
133
+
134
+ it('CSS of grading view', { tags: 'css' }, () => {
135
+ utilities.verifyCSS(chartsLinePage.previewTabGraphTitle(), {
136
+ 'color': css.color.text,
137
+ 'font-size': css.fontSize.default,
138
+ 'font-weight': css.fontWeight.bold
139
+ });
140
+ utilities.verifyCSS(chartsLinePage.previewTabYAxisLabelButton(), {
141
+ 'color': css.color.text,
142
+ 'font-size': css.fontSize.default,
143
+ 'font-weight': css.fontWeight.bold
144
+ });
145
+ utilities.verifyCSS(chartsLinePage.previewTabXAxisLabelButton(), {
146
+ 'color': css.color.text,
147
+ 'font-size': css.fontSize.default,
148
+ 'font-weight': css.fontWeight.bold
149
+ });
150
+ utilities.verifyCSS(chartsLinePage.lineChartDragIcon().eq(0), {
151
+ 'background-color': css.color.incorrectAnswer
152
+ });
153
+ utilities.verifyCSS(chartsLinePage.lineChartDragIcon().eq(1), {
154
+ 'background-color': css.color.lineChartDragIcon
155
+ });
156
+ utilities.verifyCSS(chartsLinePage.lineChartDragIcon().last(), {
157
+ 'background-color': css.color.correctAnswer
158
+ });
159
+ utilities.verifyCSS(chartsLinePage.previewTabConnectorLine().eq(0), {
160
+ 'background-color': css.color.lineChartConnectorLine
161
+ });
162
+ utilities.verifyCSS(chartsLinePage.previewTabConnectorLine().last(), {
163
+ 'background-color': css.color.lineChartConnectorLine
164
+ });
165
+ utilities.verifyCSS(chartsLinePage.pointLockIcon(), {
166
+ 'background-color': css.color.defaultBackground,
167
+ });
168
+ });
169
+
170
+ it('Accessibility of grading view', { tags: 'a11y' }, () => {
171
+ cy.checkAccessibility(chartsLinePage.previewTabPoint().parents('[class*="question-preview-wrapper"]'));
172
+ });
173
+ });
174
+ }
175
+
176
+ if (views.includes('Correct answer view')) {
177
+ describe('Correct answer view contents', { tags: 'smoke' }, () => {
178
+ abortEarlySetup();
179
+ before(() => {
180
+ chartsLinePage.steps.navigateToCreateQuestion('charts');
181
+ cy.barsPreLoaderWait();
182
+ chartsLinePage.steps.addTextInQuestionInstructionsInputField('Set the points on the chart for the profits of the years');
183
+ chartsLinePage.steps.selectLineButton();
184
+ chartsLinePage.steps.selectAddBarOrPointToolbarOption();
185
+ chartsLinePage.steps.addBarOrPointInChartInSelectChartTypeSection();
186
+ chartsLinePage.steps.setGraphTitle('Graph of profits');
187
+ chartsLinePage.steps.setYAxisLabel('Profit');
188
+ chartsLinePage.steps.setXAxisLabel('Year');
189
+ chartsLinePage.steps.setMaxYValue(20);
190
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 0, value: 1, range: 20 });
191
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 1, value: 2, range: 20 });
192
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 2, value: 3, range: 20 });
193
+ chartsLinePage.steps.setPointValueInSelectChartTypeSection({ pointIndex: 3, value: 4, range: 20 });
194
+ chartsLinePage.steps.lockPoint(1);
195
+ chartsLinePage.steps.allotPoints(10);
196
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 0, value: 2, range: 20 });
197
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 2, value: 5, range: 20 });
198
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 3, value: 1, range: 20 });
199
+ chartsLinePage.steps.addBarOrPointInChartInSpecifyCorrectAnswerSection();
200
+ chartsLinePage.steps.setPointValueInSpecifyCorrectAnswerSection({ pointIndex: 4, value: 8, range: 20 });
201
+ chartsLinePage.steps.clickOnSaveQuestionButton();
202
+ utilities.verifyElementVisibilityState(itemPreviewPage.referenceID(), 'visible');
203
+ //Global variable issue, not working inside before
204
+ itemPreviewPage.referenceID()
205
+ .invoke('text')
206
+ .then(($refID) => {
207
+ itemReferenceID = $refID
208
+ cy.visit(`/item-engine/demo/render-item/correct-answer-view/${utilities.base64Encoding(itemReferenceID)}`);
209
+ });
210
+ });
211
+
212
+ it('Question instructions should be visible', () => {
213
+ utilities.verifyInnerText(chartsLinePage.questionInstructionsText(), 'Set the points on the chart for the profits of the years');
214
+ utilities.verifyElementVisibilityState(chartsLinePage.questionInstructionsText(), 'visible');
215
+ });
216
+
217
+ it('Graph title, Y axis label and X axis label should be displayed in the chart', () => {
218
+ utilities.verifyInnerText(chartsLinePage.previewTabGraphTitle(), 'Graph of profits');
219
+ utilities.verifyInnerText(chartsLinePage.previewTabYAxisLabelButton(), 'Profit');
220
+ utilities.verifyInnerText(chartsLinePage.previewTabXAxisLabelButton(), 'Year');
221
+ });
222
+
223
+ it('Toolbar, toolbar options and control actions(Undo, Redo, Reset) should not be displayed', () => {
224
+ utilities.verifyElementVisibilityState(chartsLinePage.previewTabTool(), 'notExist');
225
+ utilities.verifyElementVisibilityState(chartsLinePage.previewTabToolBarWrapper(), 'notExist');
226
+ });
227
+
228
+ it('The correct answer set by user should be displayed in the correct answer view', () => {
229
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 0, value: 2, range: 20 });
230
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 1, value: 2, range: 20 });
231
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 2, value: 5, range: 20 });
232
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 3, value: 1, range: 20 });
233
+ chartsLinePage.steps.verifyPointValueInPreviewTab({ pointIndex: 4, value: 8, range: 20 });
234
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(0, 'correct');
235
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconNotExistsInPreviewTab(1);
236
+ chartsLinePage.steps.verifyPointIsLockedInPreviewTab(1);
237
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(2, 'correct');
238
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(3, 'correct');
239
+ chartsLinePage.steps.verifyPointCorrectIncorrectIconInPreviewTab(4, 'correct');
240
+ });
241
+
242
+ it('The points alloted to the question should be displayed', () => {
243
+ correctAnswerViewPage.steps.verifyAvailablePoints(10);
244
+ });
245
+
246
+ it('CSS of correct answer section', { tags: 'css' }, () => {
247
+ utilities.verifyCSS(chartsLinePage.previewTabGraphTitle(), {
248
+ 'color': css.color.text,
249
+ 'font-size': css.fontSize.default,
250
+ 'font-weight': css.fontWeight.bold
251
+ });
252
+ utilities.verifyCSS(chartsLinePage.previewTabYAxisLabelButton(), {
253
+ 'color': css.color.text,
254
+ 'font-size': css.fontSize.default,
255
+ 'font-weight': css.fontWeight.bold
256
+ });
257
+ utilities.verifyCSS(chartsLinePage.previewTabXAxisLabelButton(), {
258
+ 'color': css.color.text,
259
+ 'font-size': css.fontSize.default,
260
+ 'font-weight': css.fontWeight.bold
261
+ });
262
+ utilities.verifyCSS(chartsLinePage.lineChartDragIcon().eq(0), {
263
+ 'background-color': css.color.correctAnswer
264
+ });
265
+ utilities.verifyCSS(chartsLinePage.lineChartDragIcon().eq(1), {
266
+ 'background-color': css.color.lineChartDragIcon
267
+ });
268
+ utilities.verifyCSS(chartsLinePage.previewTabConnectorLine().eq(0), {
269
+ 'background-color': css.color.lineChartConnectorLine
270
+ });
271
+ utilities.verifyCSS(chartsLinePage.pointLockIcon(), {
272
+ 'background-color': css.color.defaultBackground,
273
+ });
274
+ });
275
+
276
+ it('Accessibility of correct answer section', { tags: 'a11y' }, () => {
277
+ cy.checkAccessibility(chartsLinePage.previewTabPoint().parents('[class*="question-preview-wrapper"]'));
278
+ });
279
+ });
280
+ }
281
+ });