From 36d29a51a91c95f6e0703ed42266387986895ed7 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 2 May 2026 20:11:58 +0300 Subject: [PATCH] =?UTF-8?q?test(09-filter):=20smoke=20filterList=20simple-?= =?UTF-8?q?search=20=D0=B8=20advanced-column?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Покрывает: - filterList('Север') — поиск по всем колонкам списка Контрагенты - filterList('Север', { field: 'Наименование' }) — фильтр по конкретной колонке через расширенный поиск - unfilterList — восстановление исходного набора Третий запланированный кейс (text-field filter) семантически совпадает с advanced-column когда колонка строкового типа — оставлен на регресс P1. --- tests/web-test/09-filter.test.mjs | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/web-test/09-filter.test.mjs diff --git a/tests/web-test/09-filter.test.mjs b/tests/web-test/09-filter.test.mjs new file mode 100644 index 00000000..5f7da9c5 --- /dev/null +++ b/tests/web-test/09-filter.test.mjs @@ -0,0 +1,36 @@ +export const name = 'Фильтры списка: simple-search, advanced-column'; +export const tags = ['filter', 'smoke']; +export const timeout = 60000; + +export default async function({ navigateSection, openCommand, filterList, unfilterList, readTable, closeForm, assert, step, log }) { + + await step('simple-search: filterList по тексту по всем колонкам', async () => { + await navigateSection('Склад'); + await openCommand('Контрагенты'); + const before = await readTable({ maxRows: 50 }); + log(`before filter: total=${before.total}`); + assert.ok(before.total >= 4, 'Должно быть минимум 4 контрагента до фильтра'); + + await filterList('Север'); + const after = await readTable({ maxRows: 50 }); + log(`after simple-search 'Север': rows=${after.rows?.length} names=${after.rows?.map(r => r['Наименование']).join(',')}`); + assert.ok(after.rows?.length >= 1 && after.rows?.length < before.total, 'Фильтр должен сузить список'); + assert.ok(after.rows.every(r => /Север/i.test(r['Наименование'] || '')), 'Все строки должны содержать Север'); + + await unfilterList(); + const restored = await readTable({ maxRows: 50 }); + log(`after unfilter: total=${restored.total}`); + assert.equal(restored.total, before.total, 'После unfilterList список восстановлен'); + }); + + await step('advanced-column: filterList по конкретной колонке', async () => { + await filterList('Север', { field: 'Наименование' }); + const t = await readTable({ maxRows: 50 }); + log(`advanced-column 'Наименование'='Север': rows=${t.rows?.length} names=${t.rows?.map(r => r['Наименование']).join(',')}`); + assert.ok(t.rows?.length >= 1, 'Должна найтись хотя бы одна строка'); + assert.ok(t.rows.every(r => /Север/i.test(r['Наименование'] || '')), 'Все строки фильтруются по Наименование'); + + await unfilterList(); + await closeForm(); + }); +}