feat(math6): Глава 2 — Проценты и пропорции (§1–§9 + финал)
§1 процент наглядно (сетка 100) + конвертер %↔дробь↔десятичная; §2 три типа задач (классификатор + тренажёр % от числа); §3 пропорция (найди член крест-накрест + проверка свойства); §4 прямая/обратная зависимость (классификатор + таблица); §5 решение пропорцией (прямые и обратные задачи); §6 масштаб (карта↔местность); §7 круговые диаграммы (Math6.pie + %↔градусы); §9 прикладной; финал — 5 боссов. Тесты math6: 15/15. 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('ch2: проценты и пропорции — интерактивы + финал', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_ch2.html');
|
||||
const win = doc.defaultView;
|
||||
assert.ok(doc.querySelector('#p1-fig svg rect') && doc.querySelector('#p1-q'), 'сетка 100 и конвертер §1');
|
||||
win.goTo('p2'); await wait(80);
|
||||
assert.ok(doc.querySelectorAll('#p2-iv1 [data-t]').length === 3 && doc.querySelector('#p2-cq'), 'типы задач §2');
|
||||
win.goTo('p3'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p3-q') && doc.querySelectorAll('#p3-iv2 [data-v]').length === 2, 'пропорция §3');
|
||||
win.goTo('p7'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p7-fig svg') && doc.querySelector('#p7-pick [data-k]'), 'круговая диаграмма §7');
|
||||
win.goTo('final'); await wait(80);
|
||||
assert.ok(doc.querySelector('#fin-go'), 'арена боссов §2');
|
||||
win.bumpProgress('final', 100); await wait(20);
|
||||
assert.ok(win.M6STATE.achievements.has('ch2_done'), 'достижение «Глава 2 пройдена»');
|
||||
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||
});
|
||||
|
||||
test('ch5: координатная плоскость — интерактивы §1–§3 + финал', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_ch5.html');
|
||||
const win = doc.defaultView;
|
||||
|
||||
Reference in New Issue
Block a user