feat(chemistry7): Phase 1 Волна 1 — Глава 1, §§1–3 + ПР1
§1 Химия — наука о веществах (классификатор тело/вещество), §2 Чистые вещества и смеси (разделитель смесей: фильтр/выпаривание/ магнит/отстаивание/перегонка), ПР1 разделение смеси соль+песок, §3 Атомы и химические элементы (каталог элементов + тренажёр символов). Теория, тренажёры задач (POOLS), глоссарные шпаргалки. chem7_ch1_widgets.js. Тест: 7/7 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,7 @@ function buildPage(file) {
|
||||
'/js/biochem-core.js': readF('frontend/js/biochem-core.js'),
|
||||
'/js/chem8_svg.js': readF('frontend/js/chem8_svg.js'),
|
||||
'/js/chem7_svg.js': readF('frontend/js/chem7_svg.js'),
|
||||
'/js/chem7_ch1_widgets.js': readF('frontend/js/chem7_ch1_widgets.js'),
|
||||
'/js/chem8_engine.js': readF('frontend/js/chem8_engine.js')
|
||||
};
|
||||
html = html
|
||||
@@ -67,6 +68,21 @@ for (const ch of CHAPTERS) {
|
||||
});
|
||||
}
|
||||
|
||||
test('ch1 Волна 1: интерактивы §1–§3 + ПР1 монтируются без ошибок', async () => {
|
||||
const { doc, errors } = await loadDom('chemistry_7_ch1.html');
|
||||
// §1 строится при загрузке (первый §) — классификатор «тело/вещество»
|
||||
assert.ok(doc.querySelector('#p1-cls .c7-chip'), 'классификатор §1');
|
||||
doc.defaultView.goTo('p2'); await wait(100);
|
||||
assert.ok(doc.querySelector('#p2-sep .c7-m'), 'разделитель смесей §2');
|
||||
doc.defaultView.goTo('pr1'); await wait(100);
|
||||
assert.ok(doc.querySelector('#pr1-sep .c7-m'), 'разделитель смесей ПР1');
|
||||
doc.defaultView.goTo('p3'); await wait(100);
|
||||
assert.ok(doc.querySelectorAll('#p3-el .el-cell').length > 10, 'каталог элементов §3');
|
||||
assert.ok(doc.querySelector('#p3-drill .c7-d'), 'тренажёр символов §3');
|
||||
assert.ok(doc.querySelectorAll('#navDotsp3 .nav-dot').length >= 4, 'тренажёр задач §3');
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user