@digabi/exam-engine-core 23.13.8-alpha.1 → 23.14.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__/playwright/exam/AudioAnswer.test.js +10 -9
- package/dist/__tests__/playwright/exam/AudioAnswer.test.js.map +1 -1
- package/dist/__tests__/playwright/exam/AudioPlayer.test.d.ts +2 -0
- package/dist/__tests__/playwright/exam/AudioPlayer.test.d.ts.map +1 -0
- package/dist/__tests__/playwright/exam/AudioPlayer.test.js +70 -0
- package/dist/__tests__/playwright/exam/AudioPlayer.test.js.map +1 -0
- package/dist/__tests__/playwright/pages/AudioPlayer.page.d.ts +12 -0
- package/dist/__tests__/playwright/pages/AudioPlayer.page.d.ts.map +1 -0
- package/dist/__tests__/playwright/pages/AudioPlayer.page.js +15 -0
- package/dist/__tests__/playwright/pages/AudioPlayer.page.js.map +1 -0
- package/dist/__tests__/results/ResultsContext.test.js +1 -1
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/components/context/AudioRecorderContext.d.ts +8 -0
- package/dist/components/context/AudioRecorderContext.d.ts.map +1 -0
- package/dist/components/context/AudioRecorderContext.js +7 -0
- package/dist/components/context/AudioRecorderContext.js.map +1 -0
- package/dist/components/exam/AudioAnswer.d.ts +4 -1
- package/dist/components/exam/AudioAnswer.d.ts.map +1 -1
- package/dist/components/exam/AudioAnswer.js +13 -19
- package/dist/components/exam/AudioAnswer.js.map +1 -1
- package/dist/components/exam/Exam.d.ts.map +1 -1
- package/dist/components/exam/Exam.js +2 -1
- package/dist/components/exam/Exam.js.map +1 -1
- package/dist/components/exam/internal/AudioRecorder.d.ts +2 -2
- package/dist/components/exam/internal/AudioRecorder.d.ts.map +1 -1
- package/dist/components/exam/internal/AudioRecorder.js +65 -31
- package/dist/components/exam/internal/AudioRecorder.js.map +1 -1
- package/dist/components/grading/GradingAnswer.d.ts.map +1 -1
- package/dist/components/grading/GradingAnswer.js +2 -1
- package/dist/components/grading/GradingAnswer.js.map +1 -1
- package/dist/components/results/AudioAnswer.d.ts.map +1 -1
- package/dist/components/results/AudioAnswer.js +2 -1
- package/dist/components/results/AudioAnswer.js.map +1 -1
- package/dist/components/shared/Audio.d.ts.map +1 -1
- package/dist/components/shared/Audio.js +2 -2
- package/dist/components/shared/Audio.js.map +1 -1
- package/dist/components/shared/internal/AudioPlayer.d.ts +9 -0
- package/dist/components/shared/internal/AudioPlayer.d.ts.map +1 -0
- package/dist/components/shared/internal/AudioPlayer.js +77 -0
- package/dist/components/shared/internal/AudioPlayer.js.map +1 -0
- package/dist/components/shared/internal/RestrictedAudioPlayer.d.ts.map +1 -1
- package/dist/components/shared/internal/RestrictedAudioPlayer.js +1 -1
- package/dist/components/shared/internal/RestrictedAudioPlayer.js.map +1 -1
- package/dist/i18n/fi-FI.d.ts +13 -3
- package/dist/i18n/fi-FI.d.ts.map +1 -1
- package/dist/i18n/fi-FI.js +13 -3
- 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 +13 -3
- package/dist/i18n/sv-FI.js.map +1 -1
- package/dist/main-bundle.js +1 -1
- package/dist/main.css +1 -1
- package/package.json +2 -2
- package/dist/components/exam/internal/MyAudioRecorder.d.ts +0 -10
- package/dist/components/exam/internal/MyAudioRecorder.d.ts.map +0 -1
- package/dist/components/exam/internal/MyAudioRecorder.js +0 -106
- package/dist/components/exam/internal/MyAudioRecorder.js.map +0 -1
- package/dist/components/exam/internal/MyMediaRecorder.d.ts +0 -10
- package/dist/components/exam/internal/MyMediaRecorder.d.ts.map +0 -1
- package/dist/components/exam/internal/MyMediaRecorder.js +0 -91
- package/dist/components/exam/internal/MyMediaRecorder.js.map +0 -1
- package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts +0 -8
- package/dist/components/shared/internal/AudioErrorRemoveMe.d.ts.map +0 -1
- package/dist/components/shared/internal/AudioErrorRemoveMe.js +0 -17
- package/dist/components/shared/internal/AudioErrorRemoveMe.js.map +0 -1
- package/dist/components/shared/internal/AudioPlaybackError.d.ts +0 -8
- package/dist/components/shared/internal/AudioPlaybackError.d.ts.map +0 -1
- package/dist/components/shared/internal/AudioPlaybackError.js +0 -17
- package/dist/components/shared/internal/AudioPlaybackError.js.map +0 -1
@@ -7,9 +7,10 @@ const react_1 = __importDefault(require("react"));
|
|
7
7
|
const experimental_ct_react_1 = require("@playwright/experimental-ct-react");
|
8
8
|
const AudioAnswer_story_1 = require("../stories/exam/AudioAnswer.story");
|
9
9
|
const exam_engine_mastering_1 = require("@digabi/exam-engine-mastering");
|
10
|
+
const AudioPlayer_page_1 = require("../pages/AudioPlayer.page");
|
10
11
|
const RECORD = 'Äänitä vastaus';
|
11
12
|
const STOP = 'Lopeta äänitys';
|
12
|
-
const DELETE = 'Poista
|
13
|
+
const DELETE = 'Poista äänitteesi';
|
13
14
|
experimental_ct_react_1.test.describe('AudioAnswer', () => {
|
14
15
|
let component;
|
15
16
|
experimental_ct_react_1.test.beforeEach(async ({ mount }) => {
|
@@ -48,11 +49,10 @@ experimental_ct_react_1.test.describe('AudioAnswer', () => {
|
|
48
49
|
(0, experimental_ct_react_1.test)('recording is available for one audio recorder at the time', async () => {
|
49
50
|
await startRecording();
|
50
51
|
await expectTimeElapsed('0:01');
|
51
|
-
await startRecording(1);
|
52
52
|
await expectAlreadyRecordingError(1);
|
53
53
|
});
|
54
54
|
async function expectButtonToBeVisible(name, nth) {
|
55
|
-
await (0, experimental_ct_react_1.expect)(component.
|
55
|
+
await (0, experimental_ct_react_1.expect)(component.getByTestId('audio-answer').nth(nth).getByRole('button', { name })).toBeVisible();
|
56
56
|
}
|
57
57
|
async function expectStartRecordingButtonToBeVisible(nth = 0) {
|
58
58
|
await expectButtonToBeVisible(RECORD, nth);
|
@@ -64,16 +64,17 @@ experimental_ct_react_1.test.describe('AudioAnswer', () => {
|
|
64
64
|
await expectButtonToBeVisible(DELETE, nth);
|
65
65
|
}
|
66
66
|
async function expectAudioPlayerToBeVisible(nth = 0) {
|
67
|
-
|
67
|
+
const audioPlayer = new AudioPlayer_page_1.AudioPlayerPage(component, nth);
|
68
|
+
await (0, experimental_ct_react_1.expect)(audioPlayer.baseLocator).toBeVisible();
|
68
69
|
}
|
69
70
|
async function expectAlreadyRecordingError(nth = 0) {
|
70
|
-
await (0, experimental_ct_react_1.expect)(component.
|
71
|
+
await (0, experimental_ct_react_1.expect)(component.getByTestId('audio-answer').nth(nth)).toContainText('Äänitys on käynnissä toisessa tehtävässä');
|
71
72
|
}
|
72
73
|
async function expectTimeElapsed(text, nth = 0) {
|
73
|
-
await (0, experimental_ct_react_1.expect)(component.
|
74
|
+
await (0, experimental_ct_react_1.expect)(component.getByTestId('audio-answer-time-elapsed').nth(nth)).toHaveText(text);
|
74
75
|
}
|
75
76
|
async function pushButton(name, nth) {
|
76
|
-
await component.
|
77
|
+
await component.getByTestId('audio-answer').nth(nth).getByRole('button', { name }).click();
|
77
78
|
}
|
78
79
|
async function startRecording(nth = 0) {
|
79
80
|
await expectButtonToBeVisible(RECORD, nth);
|
@@ -102,8 +103,8 @@ const audioXml = `<e:exam xmlns:e="http://ylioppilastutkinto.fi/exam.xsd" xmlns=
|
|
102
103
|
<e:question>
|
103
104
|
<e:question-title>Audiotehtävä</e:question-title>
|
104
105
|
<e:question-instruction />
|
105
|
-
<e:audio-answer max-score="5"
|
106
|
-
<e:audio-answer max-score="5"
|
106
|
+
<e:audio-answer max-score="5" />
|
107
|
+
<e:audio-answer max-score="5" />
|
107
108
|
</e:question>
|
108
109
|
</e:section>
|
109
110
|
</e:exam>`;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AudioAnswer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioAnswer.test.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,6EAA6E;AAC7E,yEAAoE;AACpE,yEAA4E;
|
1
|
+
{"version":3,"file":"AudioAnswer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioAnswer.test.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioPlayer.test.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioPlayer.test.tsx"],"names":[],"mappings":""}
|
@@ -0,0 +1,70 @@
|
|
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 react_1 = __importDefault(require("react"));
|
7
|
+
const experimental_ct_react_1 = require("@playwright/experimental-ct-react");
|
8
|
+
const exam_engine_mastering_1 = require("@digabi/exam-engine-mastering");
|
9
|
+
const Exam_story_1 = require("../stories/exam/Exam.story");
|
10
|
+
const AudioPlayer_page_1 = require("../pages/AudioPlayer.page"); // Import the Page Object
|
11
|
+
const path_1 = __importDefault(require("path"));
|
12
|
+
const AUDIO_FILE_NAME = 'audio-5s.mp3';
|
13
|
+
// Renamed for clarity
|
14
|
+
const AUDIO_PLAYER_EXAM_XML = `<e:exam xmlns:e="http://ylioppilastutkinto.fi/exam.xsd" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ylioppilastutkinto.fi/exam.xsd https://abitti.dev/schema/exam.xsd" exam-schema-version="0.5">
|
15
|
+
<e:exam-versions>
|
16
|
+
<e:exam-version lang="fi-FI"/>
|
17
|
+
</e:exam-versions>
|
18
|
+
<e:exam-title>Uusi koe</e:exam-title>
|
19
|
+
<e:exam-instruction/>
|
20
|
+
<e:table-of-contents/>
|
21
|
+
<e:section>
|
22
|
+
<e:section-title/>
|
23
|
+
<e:section-instruction/>
|
24
|
+
<e:question>
|
25
|
+
<e:question-title/>
|
26
|
+
<e:question-instruction/>
|
27
|
+
<e:audio src="${AUDIO_FILE_NAME}"/>
|
28
|
+
</e:question>
|
29
|
+
</e:section>
|
30
|
+
</e:exam>`;
|
31
|
+
const test = experimental_ct_react_1.test.extend({
|
32
|
+
audioPlayerPage: async ({ page, mount }, use) => {
|
33
|
+
const resolveAttachment = (filename) => path_1.default.resolve(__dirname, '../data', filename);
|
34
|
+
const results = await (0, exam_engine_mastering_1.masterExam)(AUDIO_PLAYER_EXAM_XML, () => '', (0, exam_engine_mastering_1.getMediaMetadataFromLocalFile)(resolveAttachment));
|
35
|
+
const masteredExamXml = results[0];
|
36
|
+
await page.route(`**/attachments/${AUDIO_FILE_NAME}`, async (route) => {
|
37
|
+
await route.fulfill({
|
38
|
+
status: 200,
|
39
|
+
contentType: 'audio/mpeg',
|
40
|
+
path: path_1.default.resolve(__dirname, `../data/${AUDIO_FILE_NAME}`)
|
41
|
+
});
|
42
|
+
});
|
43
|
+
const mountResult = await mount(react_1.default.createElement(Exam_story_1.ExamStory, { masteredExam: masteredExamXml }));
|
44
|
+
const audioPlayerPageInstance = new AudioPlayer_page_1.AudioPlayerPage(mountResult);
|
45
|
+
await use(audioPlayerPageInstance);
|
46
|
+
}
|
47
|
+
});
|
48
|
+
test('all UI elements are visible and in correct state', async ({ audioPlayerPage }) => {
|
49
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.playPauseButton).toBeVisible();
|
50
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.playPauseButton).toHaveAttribute('aria-label', 'Toista äänite');
|
51
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toBeVisible();
|
52
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('aria-label', 'Aikajana');
|
53
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('aria-valuetext', '00:00/00:05');
|
54
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('style', /--range-progress: 0%/);
|
55
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.currentTimeDisplay).toHaveText('00:00');
|
56
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.durationDisplay).toHaveText('00:05');
|
57
|
+
});
|
58
|
+
test('player is in correct state after playing whole audio', async ({ page, audioPlayerPage }) => {
|
59
|
+
await audioPlayerPage.playPauseButton.click();
|
60
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.playPauseButton).toHaveAttribute('aria-label', 'Keskeytä äänite');
|
61
|
+
await page.waitForTimeout(6000);
|
62
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.currentTimeDisplay).toHaveText('00:05');
|
63
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.durationDisplay).toHaveText('00:05');
|
64
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.playPauseButton).toHaveAttribute('aria-label', 'Toista äänite');
|
65
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveValue(/5\.\d*/);
|
66
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('aria-label', 'Aikajana');
|
67
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('aria-valuetext', '00:05/00:05');
|
68
|
+
await (0, experimental_ct_react_1.expect)(audioPlayerPage.progressBar).toHaveAttribute('style', /--range-progress: 100%/);
|
69
|
+
});
|
70
|
+
//# sourceMappingURL=AudioPlayer.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioPlayer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/AudioPlayer.test.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Locator } from '@playwright/test';
|
2
|
+
import type { MountResult } from '@playwright/experimental-ct-react';
|
3
|
+
export declare class AudioPlayerPage {
|
4
|
+
readonly mountResult: MountResult;
|
5
|
+
readonly baseLocator: Locator;
|
6
|
+
readonly playPauseButton: Locator;
|
7
|
+
readonly progressBar: Locator;
|
8
|
+
readonly currentTimeDisplay: Locator;
|
9
|
+
readonly durationDisplay: Locator;
|
10
|
+
constructor(mountResult: MountResult, nth?: number);
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=AudioPlayer.page.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioPlayer.page.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/pages/AudioPlayer.page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAEpE,qBAAa,eAAe;IAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,SAAgB,eAAe,EAAE,OAAO,CAAA;IACxC,SAAgB,WAAW,EAAE,OAAO,CAAA;IACpC,SAAgB,kBAAkB,EAAE,OAAO,CAAA;IAC3C,SAAgB,eAAe,EAAE,OAAO,CAAA;gBAE5B,WAAW,EAAE,WAAW,EAAE,GAAG,GAAE,MAAU;CAQtD"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.AudioPlayerPage = void 0;
|
4
|
+
class AudioPlayerPage {
|
5
|
+
constructor(mountResult, nth = 0) {
|
6
|
+
this.mountResult = mountResult;
|
7
|
+
this.baseLocator = this.mountResult.getByTestId('audio-player-container').nth(nth);
|
8
|
+
this.playPauseButton = this.baseLocator.getByTestId('audio-player-play-pause-button');
|
9
|
+
this.progressBar = this.baseLocator.getByTestId('audio-player-progress-bar');
|
10
|
+
this.currentTimeDisplay = this.baseLocator.getByTestId('audio-player-current-time');
|
11
|
+
this.durationDisplay = this.baseLocator.getByTestId('audio-player-duration');
|
12
|
+
}
|
13
|
+
}
|
14
|
+
exports.AudioPlayerPage = AudioPlayerPage;
|
15
|
+
//# sourceMappingURL=AudioPlayer.page.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AudioPlayer.page.js","sourceRoot":"","sources":["../../../../__tests__/playwright/pages/AudioPlayer.page.tsx"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IAQ1B,YAAY,WAAwB,EAAE,MAAc,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAA;QACrF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;QAC5E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;QACnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAC9E,CAAC;CACF;AAhBD,0CAgBC"}
|
@@ -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: '105',
|
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);
|