feat(math6): полировка Гл.2 — pieGrow, balanceScale, constAreaRect

Math6Anim.pieGrow (растущие сектора, §7 — заменил статичный Math6.pie,
цвета синхронны легенде), balanceScale (весы a·d ? b·c, §3, кнопка «другой
пример»), constAreaRect (обратная проп. = постоянная площадь, §4, ползунок x).
Headless-safe. Тесты math6: 20/20 (поправлен ассерт §7 svg→canvas).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-02 22:07:56 +03:00
parent 302b062649
commit 51db000545
3 changed files with 96 additions and 5 deletions
+7 -1
View File
@@ -86,7 +86,7 @@ test('ch2: проценты и пропорции — интерактивы +
win.goTo('p3'); await wait(80);
assert.ok(doc.querySelector('#p3-q') && doc.querySelectorAll('#p3-iv2 [data-v]').length === 2, 'пропорция §3');
win.goTo('p7'); await wait(80);
assert.ok(doc.querySelector('#p7-fig svg') && doc.querySelector('#p7-pick [data-k]'), 'круговая диаграмма §7');
assert.ok(doc.querySelector('#p7-fig canvas') && doc.querySelector('#p7-pick [data-k]'), 'круговая диаграмма §7');
win.goTo('final'); await wait(80);
assert.ok(doc.querySelector('#fin-go'), 'арена боссов §2');
win.bumpProgress('final', 100); await wait(20);
@@ -207,6 +207,12 @@ test('анимации: canvas-демо монтируются (headless-safe)',
const r2 = await loadDom('math_6_ch2.html');
r2.doc.defaultView.goTo('p1'); await wait(100);
assert.ok(r2.doc.querySelector('#p1-bar canvas'), 'canvas «полоса процента» §2.1');
r2.doc.defaultView.goTo('p3'); await wait(100);
assert.ok(r2.doc.querySelector('#p3-balfig canvas'), 'canvas «весы пропорции» §2.3');
r2.doc.defaultView.goTo('p4'); await wait(100);
assert.ok(r2.doc.querySelector('#p4-carfig canvas'), 'canvas «постоянная площадь» §2.4');
r2.doc.defaultView.goTo('p7'); await wait(100);
assert.ok(r2.doc.querySelector('#p7-fig canvas'), 'canvas «растущая диаграмма» §2.7');
assert.deepEqual(r2.errors, [], 'ch2 без ошибок: ' + r2.errors.join(' | '));
// Глава 3 §1 — фильтр множества
const r3 = await loadDom('math_6_ch3.html');