feat(chemistry7): Phase 1 Волна 4 — Глава 1 завершена (§§10–12 + ЛО1 + финал)

§10 Физические и химические явления (детектор признаков реакции),
ЛО1 Признаки реакций (опыты с признаками), §11 Закон сохранения массы
(весы сохранения массы), §12 Составление уравнений (балансировщик через
Chem8.equationBalancer), финал главы (6 интегрированных боссов + шпаргалка).

Глава 1 «Первоначальные химические понятия» наполнена полностью (12§).
Тесты: 10/10 chem7 pass; полный прогон 156/159 (3 — известный baseline Auth).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 18:33:55 +03:00
parent bc50a0d9f1
commit 13cbbacc1f
3 changed files with 209 additions and 6 deletions
+16 -1
View File
@@ -108,7 +108,22 @@ test('ch1 Волна 3: интерактивы §7–§9 монтируются
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
});
test('ch1: переход к §9 и финалу строит заглушку без ошибок', async () => {
test('ch1 Волна 4: §10–§12 + ЛО1 + финал главы монтируются', async () => {
const { doc, errors } = await loadDom('chemistry_7_ch1.html');
doc.defaultView.goTo('p10'); await wait(100);
assert.ok(doc.querySelector('#p10-signs #p10-signs-go'), 'детектор признаков §10');
doc.defaultView.goTo('lo1'); await wait(100);
assert.ok(doc.querySelector('#lo1-signs #lo1-signs-go'), 'детектор признаков ЛО1');
doc.defaultView.goTo('p11'); await wait(100);
assert.ok(doc.querySelector('#p11-bal svg'), 'весы сохранения массы §11');
doc.defaultView.goTo('p12'); await wait(120);
assert.ok(doc.querySelector('#p12-mount').childElementCount > 0, 'балансировщик §12');
doc.defaultView.goTo('final1'); await wait(120);
assert.ok(doc.querySelectorAll('#navDotsfinal1 .nav-dot').length >= 6, 'боссы финала главы');
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
});
test('ch1: переход к §9 и финалу строит без ошибок', async () => {
const { doc, errors } = await loadDom('chemistry_7_ch1.html');
doc.defaultView.goTo('p9'); await wait(80);
assert.ok(doc.querySelector('#p9-body .para-hero'), 'para-hero §9');