From 3aad2543998c40943aa5edfc81cbf89c9cf769d1 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 2 May 2026 19:54:34 +0300 Subject: [PATCH] =?UTF-8?q?test(06-document):=20smoke=20workflow=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=BA=D0=BB=D0=B0=D0=B4=D0=BD=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Создание, заполнение шапки и табличной части, Провести и закрыть, проверка появления документа в списке с Проведён=Да. Проверка закрытия формы документа: в синтетике web-test форма списка и форма документа делят один слот (formCount=1 в обоих состояниях), поэтому используем признак отсутствия поля Контрагент в текущем state.fields после Провести и закрыть — если поле есть, мы остались на форме документа. --- tests/web-test/06-document.test.mjs | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/web-test/06-document.test.mjs diff --git a/tests/web-test/06-document.test.mjs b/tests/web-test/06-document.test.mjs new file mode 100644 index 00000000..04237ae1 --- /dev/null +++ b/tests/web-test/06-document.test.mjs @@ -0,0 +1,43 @@ +export const name = 'Документ: создание, проведение, проверка в списке'; +export const tags = ['document', 'smoke']; +export const timeout = 90000; + +export default async function({ navigateSection, openCommand, clickElement, fillFields, fillTableRow, readTable, closeForm, getFormState, assert, step, log }) { + + const docId = `Тест-${Date.now()}`; + + await step('workflow: создать накладную, заполнить, провести и закрыть', async () => { + await navigateSection('Склад'); + await openCommand('Приходная накладная'); + await clickElement('Создать'); + + await fillFields({ + 'Контрагент': 'ООО Север', + 'Комментарий': docId, + }); + await fillTableRow( + { 'Номенклатура': 'Товар 01', 'Количество': '5', 'Цена': '100' }, + { table: 'Товары', add: true } + ); + await fillTableRow( + { 'Номенклатура': 'Товар 02', 'Количество': '3', 'Цена': '200' }, + { table: 'Товары', add: true } + ); + + await clickElement('Провести и закрыть'); + const after = await getFormState(); + const stillOnDoc = !!after.fields?.find(f => f.name === 'Контрагент'); + log(`stillOnDoc=${stillOnDoc} form=${after.form}`); + assert.ok(!stillOnDoc, 'После Провести и закрыть форма документа должна закрыться (Контрагент-поля нет в текущей форме)'); + }); + + await step('verify-list: документ виден в списке с Проведён=Да', async () => { + await navigateSection('Склад'); + await openCommand('Приходная накладная'); + const t = await readTable({ maxRows: 50 }); + const ours = t.rows.find(r => r['Контрагент'] === 'ООО Север' && r['Проведён'] === 'Да'); + log(`found posted: ${JSON.stringify(ours)}`); + assert.ok(ours, 'Должен быть проведённый документ ООО Север'); + await closeForm(); + }); +}