mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
test(12-formstate): M3 P1 — modal + tabs
modal: F4 на ref-поле открывает модальную форму выбора Контрагентов, state.modal=true, formCount=2. tabs: форма элемента Номенклатуры с двумя табами (Основное/Дополнительно) возвращает state.tabs[]. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@ export const name = 'getFormState: базовая структура — fields,
|
||||
export const tags = ['formstate', 'smoke'];
|
||||
export const timeout = 60000;
|
||||
|
||||
export default async function({ navigateSection, openCommand, clickElement, closeForm, getFormState, assert, step, log }) {
|
||||
export default async function({ navigateSection, openCommand, clickElement, closeForm, getFormState, getPage, assert, step, log }) {
|
||||
|
||||
await step('basic: getFormState на форме списка возвращает таблицу и команды', async () => {
|
||||
await navigateSection('Склад');
|
||||
@@ -31,4 +31,41 @@ export default async function({ navigateSection, openCommand, clickElement, clos
|
||||
assert.ok(named.label, 'У поля есть label');
|
||||
await closeForm();
|
||||
});
|
||||
|
||||
await step('modal: форма выбора Контрагентов открыта как модальная', async () => {
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Приходная накладная');
|
||||
await clickElement('Создать');
|
||||
const page = await getPage();
|
||||
// Найти input Контрагент и фокус, затем F4 → откроется модальная форма выбора
|
||||
const focused = await page.evaluate(`(() => {
|
||||
const inputs = [...document.querySelectorAll('input')];
|
||||
const target = inputs.find(i => /Контрагент/i.test(i.id || '') && i.offsetWidth > 0);
|
||||
if (target) { target.focus(); return target.id; }
|
||||
return null;
|
||||
})()`);
|
||||
log(`focused input id=${focused}`);
|
||||
await page.keyboard.press('F4');
|
||||
await page.waitForTimeout(1500);
|
||||
|
||||
const s = await getFormState();
|
||||
log(`after F4: form=${s.form} formCount=${s.formCount} modal=${s.modal}`);
|
||||
assert.equal(s.modal, true, 'state.modal=true для модальной формы выбора');
|
||||
assert.ok(s.formCount >= 2, 'formCount >= 2 (родитель + модальная)');
|
||||
|
||||
await closeForm();
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
|
||||
await step('tabs: на форме элемента Номенклатуры присутствует tabs[]', async () => {
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Номенклатура');
|
||||
await clickElement('Товары', { dblclick: true });
|
||||
await clickElement('Товар 01', { dblclick: true });
|
||||
const s = await getFormState();
|
||||
log(`tabs: ${JSON.stringify(s.tabs)}`);
|
||||
assert.ok(Array.isArray(s.tabs), 'state.tabs должен быть массивом');
|
||||
assert.ok(s.tabs.length >= 2, `На форме Номенклатуры >= 2 табов (got ${s.tabs.length})`);
|
||||
await closeForm();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user