feat(math6): Глава 1, волна 2 — §4–§6 (сложение/вычитание, сдвиг запятой, умножение)
§4 столбик «запятая под запятой» + ловушка выравнивания; §5 демонстратор сдвига запятой ×/÷10,100,1000 + тренажёр; §6 подсчёт знаков после запятой (ползунки) + тренажёр умножения. Целочисленные мантиссы вместо float. Шпаргалки/типсы/глоссарий. Тесты 10/10. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -89,6 +89,21 @@ test('ch1 Волна 1: интерактивы §1–§3 монтируются
|
||||
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||
});
|
||||
|
||||
test('ch1 Волна 2: интерактивы §4–§6 монтируются без ошибок', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_ch1.html');
|
||||
const win = doc.defaultView;
|
||||
win.goTo('p4'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p4-fig'), 'столбик §4');
|
||||
assert.ok(doc.querySelectorAll('#p4-eopts').length === 1, 'варианты §4');
|
||||
win.goTo('p5'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p5-iv1 [data-op]'), 'кнопки сдвига запятой §5');
|
||||
assert.ok(doc.querySelector('#p5-out').textContent.length > 0 || doc.querySelector('#p5-out'), 'демонстратор §5');
|
||||
win.goTo('p6'); await wait(80);
|
||||
assert.ok(doc.querySelector('#p6-asl') && doc.querySelector('#p6-bsl'), 'ползунки множителей §6');
|
||||
assert.ok(doc.querySelector('#p6-q'), 'тренажёр умножения §6');
|
||||
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||
});
|
||||
|
||||
test('навигация и прогресс: переход на § и отметка прочтения', async () => {
|
||||
const { doc, errors } = await loadDom('math_6_ch1.html');
|
||||
const win = doc.defaultView;
|
||||
|
||||
Reference in New Issue
Block a user