feat(math6): Глава 5 — Координатная плоскость (§1–§5, на Math6.plane)
§1 чтение координат + определение четверти (плоскость с точкой); §2 чтение графиков реальных процессов + изменение величины (polyline); §3 слайдер y=kx + классификатор прямая/обратная пропорциональность; §5 прикладной (путь–время); финал — 5 боссов (координаты, четверти, график, k для y=kx и y=k/x). Math6.plane получил поддержку polyline. Тесты math6: 13/13. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -68,6 +68,23 @@ for (const ch of CHAPTERS) {
|
||||
});
|
||||
}
|
||||
|
||||
test('ch5: координатная плоскость — интерактивы §1–§3 + финал', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_ch5.html');
|
||||
const win = doc.defaultView;
|
||||
assert.ok(doc.querySelector('#p1-fig svg'), 'плоскость с точкой §1');
|
||||
assert.ok(doc.querySelectorAll('#p1-iv2 [data-q]').length === 4, 'кнопки четвертей §1');
|
||||
win.goTo('p2'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p2-fig svg polyline'), 'график процесса §2');
|
||||
win.goTo('p3'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p3-k'), 'слайдер k §3');
|
||||
assert.ok(doc.querySelector('#p3-fig svg path'), 'график y=kx §3');
|
||||
win.goTo('final'); await wait(80);
|
||||
assert.ok(doc.querySelector('#fin-go'), 'арена боссов §5');
|
||||
win.bumpProgress('final', 100); await wait(20);
|
||||
assert.ok(win.M6STATE.achievements.has('ch5_done'), 'достижение «Глава 5 пройдена»');
|
||||
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||
});
|
||||
|
||||
test('hub: 6 карточек глав', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_hub.html');
|
||||
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||
|
||||
Reference in New Issue
Block a user