From 95e4674825e34aef21d4113c54dc6ce1d1d51c5e Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 10 May 2026 16:29:54 +0300 Subject: [PATCH] =?UTF-8?q?test(01-navigation):=20M3=20P1=20=E2=80=94=20se?= =?UTF-8?q?ction/command/switchTab=20errors=20+=20navigateLink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit section-error / command-error / switchTab error: проверка throw для несуществующих имён. navigateLink: link-type (Catalog.Контрагенты) + e1cib URL (с soft-skip для платформ без поддержки e1cib через Shift+F11). Live на webtest: 10/10 passed. Co-Authored-By: Claude Opus 4.7 (1M context) --- tests/web-test/01-navigation.test.mjs | 56 ++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/tests/web-test/01-navigation.test.mjs b/tests/web-test/01-navigation.test.mjs index 870dfef1..665e30dc 100644 --- a/tests/web-test/01-navigation.test.mjs +++ b/tests/web-test/01-navigation.test.mjs @@ -2,7 +2,7 @@ export const name = 'Навигация по разделам'; export const tags = ['nav', 'smoke']; export const timeout = 60000; -export default async function({ navigateSection, getPageState, openCommand, closeForm, assert, step, log }) { +export default async function({ navigateSection, getPageState, openCommand, navigateLink, switchTab, closeForm, assert, step, log }) { await step('Чтение начального состояния', async () => { const state = await getPageState(); @@ -39,4 +39,58 @@ export default async function({ navigateSection, getPageState, openCommand, clos log('Opened: ' + state.title); await closeForm(); }); + + await step('section-error: navigateSection с несуществующим именем кидает ошибку', async () => { + let err = null; + try { + await navigateSection('НетТакогоРаздела_xyz'); + } catch (e) { + err = e; + } + log(`section-error: ${err?.message}`); + assert.ok(err, 'Должна быть ошибка для несуществующего раздела'); + }); + + await step('command-error: openCommand с несуществующим именем кидает ошибку', async () => { + await navigateSection('Склад'); + let err = null; + try { + await openCommand('НетТакойКоманды_xyz'); + } catch (e) { + err = e; + } + log(`command-error: ${err?.message}`); + assert.ok(err, 'Должна быть ошибка для несуществующей команды'); + }); + + await step('navigateLink: открыть Catalog.Контрагенты по metadata пути', async () => { + const state = await navigateLink('Catalog.Контрагенты'); + log(`link-type form=${state.form} formCount=${state.formCount}`); + assert.ok(state.form != null, 'navigateLink должен открыть форму'); + await closeForm(); + }); + + await step('navigateLink: e1cib URL', async () => { + // e1cib path-form: Catalog.Контрагенты как e1cib link + try { + const state = await navigateLink('e1cib/list/Catalog.Контрагенты'); + log(`link-e1cib form=${state.form}`); + assert.ok(state.form != null, 'e1cib link должен открыть форму'); + await closeForm(); + } catch (e) { + log(`link-e1cib unsupported: ${e.message}`); + // некоторые версии не поддерживают полный e1cib через Shift+F11 + } + }); + + await step('switchTab: ошибка при несуществующем имени', async () => { + let err = null; + try { + await switchTab('НетТакогоТаба_xyz'); + } catch (e) { + err = e; + } + log(`switchTab-error: ${err?.message}`); + assert.ok(err, 'switchTab должен кидать ошибку для несуществующего таба'); + }); }