diff --git a/tests/skills/integration/build-webtest-config.test.mjs b/tests/skills/integration/build-webtest-config.test.mjs index 46c7c573..3ecf0828 100644 --- a/tests/skills/integration/build-webtest-config.test.mjs +++ b/tests/skills/integration/build-webtest-config.test.mjs @@ -322,6 +322,8 @@ export const steps = [ Процедура ЗаполнитьНоменклатуру() \tГруппаТовары = СоздатьГруппуНоменклатуры("Товары"); \tГруппаУслуги = СоздатьГруппуНоменклатуры("Услуги"); +\t// 15 товаров — для существующих тестов (05/06/08/12), которые предполагают +\t// что обе группы помещаются в DOM-окно с развёрнутыми элементами. \tДля Сч = 1 По 15 Цикл \t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); \t\tЭлемент.Родитель = ГруппаТовары; @@ -342,6 +344,20 @@ export const steps = [ \t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга; \t\tЭлемент.Записать(); \tКонецЦикла; +\t// Третья группа БольшойСписок с 60 элементами — заведомо больше окна +\t// виртуализации (~22-30 строк), для тестов reveal-loop и hasMore.above +\t// на динамическом списке. Существующие тесты её не трогают. +\tГруппаБольшойСписок = СоздатьГруппуНоменклатуры("БольшойСписок"); +\tДля Сч = 1 По 60 Цикл +\t\tЭлемент = Справочники.Номенклатура.СоздатьЭлемент(); +\t\tЭлемент.Родитель = ГруппаБольшойСписок; +\t\tЭлемент.Наименование = "Позиция " + Формат(Сч, "ЧЦ=3; ЧВН="); +\t\tЭлемент.Артикул = "P" + Формат(Сч, "ЧЦ=5; ЧВН="); +\t\tЭлемент.Цена = 10 * Сч; +\t\tЭлемент.Активен = Истина; +\t\tЭлемент.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар; +\t\tЭлемент.Записать(); +\tКонецЦикла; КонецПроцедуры Функция СоздатьГруппуНоменклатуры(Имя) diff --git a/tests/web-test/08-hierarchy.test.mjs b/tests/web-test/08-hierarchy.test.mjs index 6b3171c8..e6bf820e 100644 --- a/tests/web-test/08-hierarchy.test.mjs +++ b/tests/web-test/08-hierarchy.test.mjs @@ -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)'); }); diff --git a/tests/web-test/16-tree-form.test.mjs b/tests/web-test/16-tree-form.test.mjs index 5866eeaf..4df3ec19 100644 --- a/tests/web-test/16-tree-form.test.mjs +++ b/tests/web-test/16-tree-form.test.mjs @@ -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 () => {