feat(chemistry7): визуал V1 — анимация §10 (признаки реакции) и §11 (осадок)

chem7_anim.js: CSS-хелперы (jsdom-safe, без canvas) — bubbleField (пузырьки
газа), precipField (падающий осадок + слой), flameBox (мерцающее пламя+искры),
colorBlock (плавная смена цвета вещества).
§10/ЛО1: «Провести опыт» проигрывает анимацию по типу опыта (малахит
зеленеет→чернеет, голубой осадок CuSO4+NaOH, синее пламя серы, пузырьки CO2).
§11: при «Смешать» формируется осадок Cu(OH)2, весы остаются ровными.

Тесты chem7: 16/16 pass; полный прогон 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:42:33 +03:00
parent f620562124
commit 41985a93eb
3 changed files with 93 additions and 6 deletions
+8
View File
@@ -111,6 +111,14 @@ test('ch1 V-пилот: 3D-молекулы §5/§6 + анимация разд
assert.ok(btn, 'кнопка верного метода §2 найдена');
btn.dispatchEvent(new doc.defaultView.Event('click', { bubbles: true })); await wait(50);
assert.ok(doc.querySelector('#p2-sep-anim canvas'), 'сцена разделения §2 (canvas)');
// §10: анимация признаков реакции после «Провести опыт»
doc.defaultView.goTo('p10'); await wait(120);
doc.getElementById('p10-signs-go').dispatchEvent(new doc.defaultView.Event('click', { bubbles: true })); await wait(40);
assert.ok(doc.querySelector('#p10-signs-stage div'), 'анимация признаков реакции §10');
// §11: осадок появляется при «Смешать»
doc.defaultView.goTo('p11'); await wait(120);
doc.getElementById('p11-mix').dispatchEvent(new doc.defaultView.Event('click', { bubbles: true })); await wait(40);
assert.ok(doc.querySelector('#p11-stage div'), 'анимация осадка §11');
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
});