test(web-test): группа БольшойСписок (60 элементов) для дин-список сценариев

Справочник Номенклатура: третья группа БольшойСписок с 60 элементами
(Позиция 001..060) — заведомо больше окна виртуализации (~22-30 строк).
Нужна для тестов reveal-loop и hasMore.above/below на ДИНАМИЧЕСКОМ списке
(до этого длинный список был только в табчасти LongDoc).

Группы Товары (15) и Услуги (10) оставлены как есть — существующие тесты
(05/06/12) полагаются на то, что обе помещаются в DOM-окно.

08-hierarchy и 16-tree-form обновлены под 3 группы верхнего уровня
(было жёстко зашито 2): проверяют наличие всех трёх + БольшойСписок.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-05-29 15:54:30 +03:00
parent e36544c1c7
commit 81596503e8
3 changed files with 24 additions and 6 deletions
+4 -3
View File
@@ -20,11 +20,12 @@ export default async function({ navigateSection, openCommand, clickElement, clos
await step('read-groups: иерархический список возвращает группы верхнего уровня', async () => {
const t = await readTable();
log(`total=${t.total} rows=${t.rows?.length} viewMode=${t.viewMode}`);
assert.equal(t.total, 2, 'видны только две группы верхнего уровня');
assert.equal(t.total, 3, 'три группы верхнего уровня (Товары, Услуги, БольшойСписок)');
assert.ok(t.rows.every(r => r._kind === 'group'), 'все строки — группы (_kind=group)');
const names = t.rows.map(r => r['Наименование']);
assert.includes(names, 'Товары', 'есть группа Товары');
assert.includes(names, 'Услуги', 'есть группа Услуги');
assert.includes(names, 'БольшойСписок', 'есть группа БольшойСписок');
});
await step('group-expand: clickElement({expand}) раскрывает группу и показывает элементы', async () => {
@@ -55,8 +56,8 @@ export default async function({ navigateSection, openCommand, clickElement, clos
await step('read-tree: readTable в режиме Дерево возвращает _tree состояния', async () => {
const t = await readTable();
log(`tree rows: ${t.rows?.map(r => `${r['Наименование']}:${r._tree}`).join(' | ')}`);
const groupRows = t.rows.filter(r => /^(Товары|Услуги)$/.test(r['Наименование'] || ''));
assert.equal(groupRows.length, 2, 'обе группы видны в дереве');
const groupRows = t.rows.filter(r => /^(Товары|Услуги|БольшойСписок)$/.test(r['Наименование'] || ''));
assert.equal(groupRows.length, 3, 'все три группы видны в дереве');
assert.ok(groupRows.every(r => r._tree === 'collapsed' || r._tree === 'expanded'),
'_tree присутствует у каждой группы (collapsed или expanded)');
});
+4 -3
View File
@@ -17,15 +17,16 @@ export default async function({ navigateLink, clickElement, closeForm, readTable
assert.ok(r.tables?.some(t => t.name === 'Дерево'), 'таблица Дерево присутствует');
});
await step('read-roots: на верхнем уровне видны 2 группы (Товары, Услуги)', async () => {
await step('read-roots: на верхнем уровне видны группы (Товары, Услуги, БольшойСписок)', async () => {
const t = await readTable('Дерево');
log(`columns=${t.columns?.join(',')} rows=${t.rows?.length}`);
assert.deepEqual(t.columns, ['Номенклатура', 'Цена'], 'колонки: Номенклатура + Цена');
assert.equal(t.rows.length, 2, '2 корневые строки');
assert.equal(t.rows.length, 3, '3 корневые строки');
const names = t.rows.map(r => r['Номенклатура']);
assert.includes(names, 'Товары', 'есть Товары');
assert.includes(names, 'Услуги', 'есть Услуги');
assert.ok(t.rows.every(r => r._kind === 'group'), 'обе корневые — group (есть expand-стрелка)');
assert.includes(names, 'БольшойСписок', 'есть БольшойСписок');
assert.ok(t.rows.every(r => r._kind === 'group'), 'все корневые — group (есть expand-стрелка)');
});
await step('expand: clickElement({expand}) раскрывает Товары — 15 элементов', async () => {