From 81596503e8b393f1ae35f9ca0b7091a69885e346 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Fri, 29 May 2026 15:54:30 +0300 Subject: [PATCH] =?UTF-8?q?test(web-test):=20=D0=B3=D1=80=D1=83=D0=BF?= =?UTF-8?q?=D0=BF=D0=B0=20=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=BE=D0=B9=D0=A1?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20(60=20=D1=8D=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2)=20=D0=B4=D0=BB=D1=8F=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD-=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D1=81?= =?UTF-8?q?=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Справочник Номенклатура: третья группа БольшойСписок с 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 --- .../integration/build-webtest-config.test.mjs | 16 ++++++++++++++++ tests/web-test/08-hierarchy.test.mjs | 7 ++++--- tests/web-test/16-tree-form.test.mjs | 7 ++++--- 3 files changed, 24 insertions(+), 6 deletions(-) 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 () => {