feat(math5): Глава 1 ЗАВЕРШЕНА — §15–§17 (вокруг нас, движение, история чисел)

§15 Математика вокруг нас (задачи из жизни + прикидка в уме). §16 Движение/
взвешивание/переливание (s=v·t тренажёр + логические задачи). §17 Исторические
сведения (системы счисления; тренажёр римских цифр + квиз по истории чисел).
Глава 1 целиком: §1–17 + финал, все § наполнены (тест «нет заглушек»). Эталон
для Sonnet по Гл.2–3. Тесты math5: 9/9.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-03 09:41:17 +03:00
parent 6e64339e8a
commit 12a08e7d42
2 changed files with 266 additions and 1 deletions
+15
View File
@@ -116,6 +116,12 @@ test('ch1: §1 «как решать задачу», §2 «разрядная т
assert.ok(doc.querySelector('#p13-out'), '§13: чекер делимости');
win.goTo('p14'); await wait(80);
assert.equal(doc.querySelectorAll('#p14-grid [data-n]').length, 29, '§14: решето 2..30');
win.goTo('p15'); await wait(80);
assert.ok(doc.querySelector('#p15-iv1 #p15-a'), '§15: задачи из жизни');
win.goTo('p16'); await wait(80);
assert.ok(doc.querySelector('#p16-iv1 #p16-a'), '§16: задачи на движение');
win.goTo('p17'); await wait(80);
assert.ok(doc.querySelector('#p17-q') && doc.querySelectorAll('#p17-hopt [data-oi]').length === 3, '§17: римские цифры + квиз');
win.goTo('final'); await wait(80);
assert.ok(doc.querySelector('#fin-go'), 'финал: арена боссов');
win.bumpProgress('final', 100); await wait(20);
@@ -123,6 +129,15 @@ test('ch1: §1 «как решать задачу», §2 «разрядная т
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
});
test('ch1: все § §1–§17 наполнены (нет заглушек движка)', async () => {
const { doc } = await loadDom('math_5_ch1.html');
const win = doc.defaultView;
for (let n = 1; n <= 17; n++) {
win.goTo('p' + n); await wait(20);
assert.ok(!doc.querySelector('#p' + n + '-body .m6-placeholder'), '§' + n + ' наполнен (не заглушка)');
}
});
test('хаб math-5: 3 главы, курсовой финал, ачивка-полоса', async () => {
const { doc, errors } = await loadDom('math_5_hub.html');
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));