@digabi/exam-engine-core 23.13.2 → 23.13.3-alpha.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/dist/__tests__/examServerApi.d.ts.map +1 -1
- package/dist/__tests__/examServerApi.js +2 -0
- package/dist/__tests__/examServerApi.js.map +1 -1
- package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts +2 -0
- package/dist/__tests__/playwright/exam/AudioAnswer.test.d.ts.map +1 -0
- package/dist/__tests__/playwright/exam/AudioAnswer.test.js +30 -0
- package/dist/__tests__/playwright/exam/AudioAnswer.test.js.map +1 -0
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts +8 -0
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.d.ts.map +1 -0
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js +34 -0
- package/dist/__tests__/playwright/stories/exam/AudioAnswer.story.js.map +1 -0
- package/dist/__tests__/results/ResultsContext.test.js +1 -1
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/components/context/AudioContext.d.ts +9 -0
- package/dist/components/context/AudioContext.d.ts.map +1 -0
- package/dist/components/context/AudioContext.js +9 -0
- package/dist/components/context/AudioContext.js.map +1 -0
- package/dist/components/context/QuestionContext.d.ts.map +1 -1
- package/dist/components/context/QuestionContext.js +1 -1
- package/dist/components/context/QuestionContext.js.map +1 -1
- package/dist/components/exam/AudioAnswer.d.ts +4 -0
- package/dist/components/exam/AudioAnswer.d.ts.map +1 -0
- package/dist/components/exam/AudioAnswer.js +39 -0
- package/dist/components/exam/AudioAnswer.js.map +1 -0
- package/dist/components/exam/Exam.d.ts.map +1 -1
- package/dist/components/exam/Exam.js +3 -1
- package/dist/components/exam/Exam.js.map +1 -1
- package/dist/components/exam/internal/AudioRecorder.d.ts +14 -0
- package/dist/components/exam/internal/AudioRecorder.d.ts.map +1 -0
- package/dist/components/exam/internal/AudioRecorder.js +126 -0
- package/dist/components/exam/internal/AudioRecorder.js.map +1 -0
- package/dist/components/exam/internal/MyAudioRecorder.d.ts +10 -0
- package/dist/components/exam/internal/MyAudioRecorder.d.ts.map +1 -0
- package/dist/components/exam/internal/MyAudioRecorder.js +106 -0
- package/dist/components/exam/internal/MyAudioRecorder.js.map +1 -0
- package/dist/components/exam/internal/MyMediaRecorder.d.ts +10 -0
- package/dist/components/exam/internal/MyMediaRecorder.d.ts.map +1 -0
- package/dist/components/exam/internal/MyMediaRecorder.js +91 -0
- package/dist/components/exam/internal/MyMediaRecorder.js.map +1 -0
- package/dist/components/grading/GradingAnswer.d.ts +2 -6
- package/dist/components/grading/GradingAnswer.d.ts.map +1 -1
- package/dist/components/grading/GradingAnswer.js +4 -3
- package/dist/components/grading/GradingAnswer.js.map +1 -1
- package/dist/components/results/AudioAnswer.d.ts +6 -0
- package/dist/components/results/AudioAnswer.d.ts.map +1 -0
- package/dist/components/results/AudioAnswer.js +33 -0
- package/dist/components/results/AudioAnswer.js.map +1 -0
- package/dist/components/results/Results.d.ts.map +1 -1
- package/dist/components/results/Results.js +3 -1
- package/dist/components/results/Results.js.map +1 -1
- package/dist/components/shared/Audio.js +2 -2
- package/dist/components/shared/Audio.js.map +1 -1
- package/dist/components/shared/AudioTest.js +2 -2
- package/dist/components/shared/AudioTest.js.map +1 -1
- package/dist/components/shared/internal/AudioError.d.ts +8 -0
- package/dist/components/shared/internal/AudioError.d.ts.map +1 -0
- package/dist/components/shared/internal/AudioError.js +17 -0
- package/dist/components/shared/internal/AudioError.js.map +1 -0
- package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts +8 -0
- package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts.map +1 -0
- package/dist/components/shared/internal/AudioErrorRemoveMe.js +17 -0
- package/dist/components/shared/internal/AudioErrorRemoveMe.js.map +1 -0
- package/dist/dom-utils.js +1 -1
- package/dist/dom-utils.js.map +1 -1
- package/dist/i18n/fi-FI.d.ts +5 -0
- package/dist/i18n/fi-FI.d.ts.map +1 -1
- package/dist/i18n/fi-FI.js +5 -0
- package/dist/i18n/fi-FI.js.map +1 -1
- package/dist/i18n/sv-FI.d.ts.map +1 -1
- package/dist/i18n/sv-FI.js +5 -0
- package/dist/i18n/sv-FI.js.map +1 -1
- package/dist/main-bundle.js +366 -5049
- package/dist/main.css +1 -1
- package/dist/parser/parseExamStructure.d.ts +8 -1
- package/dist/parser/parseExamStructure.d.ts.map +1 -1
- package/dist/parser/parseExamStructure.js +1 -1
- package/dist/parser/parseExamStructure.js.map +1 -1
- package/dist/store/audio/actions.d.ts +3 -3
- package/dist/store/audio/actions.d.ts.map +1 -1
- package/dist/store/audio/actions.js.map +1 -1
- package/dist/store/audio/reducer.d.ts +2 -2
- package/dist/store/audio/reducer.d.ts.map +1 -1
- package/dist/store/index.d.ts +1 -1
- package/dist/store/selectors.d.ts +2 -2
- package/dist/store/selectors.d.ts.map +1 -1
- package/dist/store/selectors.js.map +1 -1
- package/dist/types/ExamAnswer.d.ts +5 -1
- package/dist/types/ExamAnswer.d.ts.map +1 -1
- package/dist/types/ExamServerAPI.d.ts +11 -3
- package/dist/types/ExamServerAPI.d.ts.map +1 -1
- package/dist/types/GradingStructure.d.ts +7 -1
- package/dist/types/GradingStructure.d.ts.map +1 -1
- package/dist/validateAnswers.d.ts.map +1 -1
- package/dist/validateAnswers.js +1 -0
- package/dist/validateAnswers.js.map +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"examServerApi.d.ts","sourceRoot":"","sources":["../../__tests__/examServerApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEtC,eAAO,MAAM,aAAa,EAAE,
|
1
|
+
{"version":3,"file":"examServerApi.d.ts","sourceRoot":"","sources":["../../__tests__/examServerApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEtC,eAAO,MAAM,aAAa,EAAE,aAW3B,CAAA"}
|
@@ -6,6 +6,8 @@ exports.examServerApi = {
|
|
6
6
|
setCasStatus: casStatus => Promise.resolve(casStatus),
|
7
7
|
saveAnswer: () => Promise.resolve(),
|
8
8
|
saveScreenshot: () => Promise.resolve('ok'),
|
9
|
+
saveAudio: () => Promise.resolve('ok'),
|
10
|
+
deleteAudio: () => Promise.resolve(),
|
9
11
|
playAudio: () => Promise.resolve('ok'),
|
10
12
|
playRestrictedAudio: () => Promise.resolve('ok'),
|
11
13
|
getRestrictedAudio: () => Promise.resolve(new Blob()),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"examServerApi.js","sourceRoot":"","sources":["../../__tests__/examServerApi.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAkB;IAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACnC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACrD,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;CAC7B,CAAA"}
|
1
|
+
{"version":3,"file":"examServerApi.js","sourceRoot":"","sources":["../../__tests__/examServerApi.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAkB;IAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACnC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACpC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACrD,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;CAC7B,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioAnswer.test.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioAnswer.test.tsx"],"names":[],"mappings":""}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const experimental_ct_react_1 = require("@playwright/experimental-ct-react");
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const AudioAnswer_story_1 = require("../stories/exam/AudioAnswer.story");
|
9
|
+
const utils_1 = require("../utils/utils");
|
10
|
+
experimental_ct_react_1.test.describe.configure({ mode: 'serial' });
|
11
|
+
experimental_ct_react_1.test.describe('Audio answer', () => {
|
12
|
+
let masteredExam_SC;
|
13
|
+
experimental_ct_react_1.test.beforeAll(async () => {
|
14
|
+
masteredExam_SC = await (0, utils_1.setupMasteredExam)('test/audio-answer.xml');
|
15
|
+
});
|
16
|
+
(0, experimental_ct_react_1.test)('audio answer is visible with only one recording button', async ({ mount }) => {
|
17
|
+
const component = await mount(react_1.default.createElement(AudioAnswer_story_1.AudioAnswerStory, { masteredExam: masteredExam_SC }));
|
18
|
+
await (0, experimental_ct_react_1.expect)(component.locator('.audio-answer .e-button')).toHaveText('Äänitä vastaus');
|
19
|
+
});
|
20
|
+
(0, experimental_ct_react_1.test)('audio can be recorded', async ({ context, mount }) => {
|
21
|
+
const component = await mount(react_1.default.createElement(AudioAnswer_story_1.AudioAnswerStory, { masteredExam: masteredExam_SC }));
|
22
|
+
await context.grantPermissions(['microphone']);
|
23
|
+
await component.getByText('Äänitä vastaus').click();
|
24
|
+
await (0, experimental_ct_react_1.expect)(component.locator('.audio-answer .e-button')).toHaveText('Lopeta äänitys');
|
25
|
+
//await page.waitForTimeout(3000)
|
26
|
+
//await component.getByText('Lopeta äänitys').click()
|
27
|
+
//await expect(component.locator('.audio-answer .e-button')).toHaveText('Äänitä vastaus')
|
28
|
+
});
|
29
|
+
});
|
30
|
+
//# sourceMappingURL=AudioAnswer.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioAnswer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioAnswer.test.tsx"],"names":[],"mappings":";;;;;AAAA,6EAAgE;AAChE,kDAAyB;AACzB,yEAAoE;AACpE,0CAAkD;AAElD,4BAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAE3C,4BAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IACjC,IAAI,eAA8D,CAAA;IAElE,4BAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,eAAe,GAAG,MAAM,IAAA,yBAAiB,EAAC,uBAAuB,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,IAAA,4BAAI,EAAC,wDAAwD,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACjF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,8BAAC,oCAAgB,IAAC,YAAY,EAAE,eAAe,GAAI,CAAC,CAAA;QAClF,MAAM,IAAA,8BAAM,EAAC,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;IAEF,IAAA,4BAAI,EAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACzD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,8BAAC,oCAAgB,IAAC,YAAY,EAAE,eAAe,GAAI,CAAC,CAAA;QAClF,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;QAC9C,MAAM,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAA;QACnD,MAAM,IAAA,8BAAM,EAAC,SAAS,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QACvF,iCAAiC;QACjC,qDAAqD;QACrD,yFAAyF;IAC3F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { MasteringResult } from '@digabi/exam-engine-mastering';
|
2
|
+
import React from 'react';
|
3
|
+
interface ExamStoryProps {
|
4
|
+
masteredExam: MasteringResult;
|
5
|
+
}
|
6
|
+
export declare const AudioAnswerStory: React.FC<ExamStoryProps>;
|
7
|
+
export {};
|
8
|
+
//# sourceMappingURL=AudioAnswer.story.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioAnswer.story.d.ts","sourceRoot":"","sources":["../../../../../__tests__/playwright/stories/exam/AudioAnswer.story.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,UAAU,cAAc;IACtB,YAAY,EAAE,eAAe,CAAA;CAC9B;AAqBD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAYrD,CAAA"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.AudioAnswerStory = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const src_1 = require("../../../../src");
|
9
|
+
const audios = {};
|
10
|
+
const examServerApi = {
|
11
|
+
getAnswers: () => Promise.resolve([]),
|
12
|
+
setCasStatus: casStatus => Promise.resolve(casStatus),
|
13
|
+
saveAnswer: () => Promise.resolve(),
|
14
|
+
saveScreenshot: () => Promise.resolve('ok'),
|
15
|
+
saveAudio: (questionId, audio) => {
|
16
|
+
console.info('save', questionId);
|
17
|
+
audios[questionId] = audio;
|
18
|
+
return Promise.resolve(`audio_${questionId}`);
|
19
|
+
},
|
20
|
+
deleteAudio: _audioId => Promise.resolve(),
|
21
|
+
playAudio: () => Promise.resolve('ok'),
|
22
|
+
playRestrictedAudio: () => Promise.resolve('ok'),
|
23
|
+
getRestrictedAudio: () => Promise.resolve(new Blob()),
|
24
|
+
examineExam: () => undefined
|
25
|
+
};
|
26
|
+
const AudioAnswerStory = ({ masteredExam }) => {
|
27
|
+
const doc = new DOMParser().parseFromString(masteredExam.xml, 'application/xml');
|
28
|
+
return (react_1.default.createElement(src_1.Exam, { attachmentsURL: '/attachments',
|
29
|
+
resolveAttachment: (filename) => `/${masteredExam.examCode}/attachments/${filename}`,
|
30
|
+
doc,
|
31
|
+
examServerApi }));
|
32
|
+
};
|
33
|
+
exports.AudioAnswerStory = AudioAnswerStory;
|
34
|
+
//# sourceMappingURL=AudioAnswer.story.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioAnswer.story.js","sourceRoot":"","sources":["../../../../../__tests__/playwright/stories/exam/AudioAnswer.story.tsx"],"names":[],"mappings":";;;;;;AACA,kDAAyB;AACzB,yCAAqD;AAMrD,MAAM,MAAM,GAAG,EAA6B,CAAA;AAE5C,MAAM,aAAa,GAAkB;IACnC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACnC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,SAAS,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAA;QAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IAC1C,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,mBAAmB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACrD,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;CAC7B,CAAA;AAEM,MAAM,gBAAgB,GAA6B,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IAC7E,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;IAChF,OAAO,CACL,8BAAC,UAAI,IAED,cAAc,EAAE,cAAc;QAC9B,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,gBAAgB,QAAQ,EAAE;QAC5F,GAAG;QACH,aAAa,GAEf,CACH,CAAA;AACH,CAAC,CAAA;AAZY,QAAA,gBAAgB,oBAY5B"}
|
@@ -145,7 +145,7 @@ describe(`Total score calculation for ${testExam}`, () => {
|
|
145
145
|
const choiceAnswer = {
|
146
146
|
type: 'choice',
|
147
147
|
questionId: 1,
|
148
|
-
value: '
|
148
|
+
value: '106',
|
149
149
|
displayNumber: '1.1'
|
150
150
|
};
|
151
151
|
expect((0, ResultsContext_1.calculateQuestionSumScore)(topLevelQuestions[0], result.gradingStructure, [], (0, lodash_es_1.keyBy)([choiceAnswer], 'questionId'))).toBe(3);
|