feat(chemistry7): визуал V4 (Глава 4) — электролиз 2:1, индикаторы, титрование

Подключён chem7_anim.js в Главу 4.
- §23 (звёздный): электролиз воды — два потока пузырьков H₂ (18) и O₂ (9),
  наглядно 2:1;
- §24/ЛО5 индикаторы щёлочи: блок плавно меняет цвет (фенолфталеин → малиновый);
- §25/ПР4 нейтрализация (звёздный): раствор плавно обесцвечивается
  малиновый → бесцветный (colorBlock).

Все 4 главы анимированы. Тесты chem7: 16/16; полный прогон 162/165 (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 19:54:50 +03:00
parent 33f968bff9
commit 639f985e6f
3 changed files with 29 additions and 11 deletions
+3
View File
@@ -225,13 +225,16 @@ test('ch3 Волна 2: §21 + ЛО4 + §22 + ПР3 + финал главы мо
test('ch4: вся глава 4 (§23–§26 + ЛО5 + ПР4 + финал) монтируется', async () => {
const { doc, errors } = await loadDom('chemistry_7_ch4.html');
assert.ok(doc.querySelector('#p23-water #p23-pick'), 'разложение/реакции воды §23');
assert.ok(doc.querySelector('#p23-bub-h div'), 'пузырьки электролиза 2:1 §23');
doc.defaultView.goTo('p24'); await wait(100);
assert.ok(doc.querySelector('#p24-bld #p24-m'), 'конструктор оснований §24');
assert.ok(doc.querySelector('#p24-ind #p24-ind-sel'), 'индикаторы щёлочи §24');
assert.ok(doc.querySelector('#p24-ind-drop div'), 'анимация индикатора §24');
doc.defaultView.goTo('lo5'); await wait(100);
assert.ok(doc.querySelector('#lo5-ind #lo5-ind-sel'), 'индикаторы ЛО5');
doc.defaultView.goTo('p25'); await wait(100);
assert.ok(doc.querySelector('#p25-neu #p25-neu-go'), 'нейтрализация §25');
assert.ok(doc.querySelector('#p25-neu-cup div'), 'анимация раствора §25');
doc.defaultView.goTo('pr4'); await wait(100);
assert.ok(doc.querySelector('#pr4-neu #pr4-neu-go'), 'нейтрализация ПР4');
doc.defaultView.goTo('p26'); await wait(100);