mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-29 08:01:02 +03:00
test(web-test): M3 P1 batch 1 — confirm-save-no/pending, more-menu, clear/ref-form, table checkbox/clear
02-crud: confirm-save-no (rollback при save:false), confirm-pending (closeForm() без решения возвращает confirmation), more-menu (clickElement 'Ещё' возвращает submenu). 03-fillfields: clear (Shift+F4 через пустое значение), reference-non-quickchoice (fillFields на quickChoice=false поле — method=dropdown через DLB; чистый form-path требует hasPick && !hasSelect, такого поля в синтетике нет). 04-selectvalue: clear (selectValue '' → Shift+F4). show-all-form отложен — требует quickChoice=true каталога с количеством > порога dropdown (в синтетике нет). 05-table: checkbox (fillTableRow с Boolean), clear (Shift+F4 на ref-ячейке + восстановление для последующего delete). Live на webtest: все шаги проходят. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
1af318325d
commit
71e3691cf1
@@ -2,7 +2,7 @@ export const name = 'CRUD: открытие, чтение, закрытие с
|
||||
export const tags = ['crud', 'smoke'];
|
||||
export const timeout = 60000;
|
||||
|
||||
export default async function({ navigateSection, openCommand, clickElement, closeForm, readTable, fillField, getFormState, assert, step, log }) {
|
||||
export default async function({ navigateSection, openCommand, clickElement, closeForm, readTable, fillField, getFormState, getPage, assert, step, log }) {
|
||||
|
||||
await step('read: список Контрагентов отдаёт колонки/строки/total', async () => {
|
||||
await navigateSection('Склад');
|
||||
@@ -57,4 +57,52 @@ export default async function({ navigateSection, openCommand, clickElement, clos
|
||||
assert.equal(phoneField?.value, newPhone, 'Телефон должен сохраниться');
|
||||
await closeForm();
|
||||
});
|
||||
|
||||
await step('confirm-save-no: closeForm({save:false}) → изменения откатываются', async () => {
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Контрагенты');
|
||||
await clickElement('ООО Восток', { dblclick: true });
|
||||
const before = await getFormState();
|
||||
const origPhone = before.fields?.find(f => f.name === 'Телефон')?.value;
|
||||
log(`origPhone='${origPhone}'`);
|
||||
await fillField('Телефон', '+7 (000) 000-00-00');
|
||||
const closed = await closeForm({ save: false });
|
||||
assert.ok(closed.closed, 'Форма должна закрыться через "Нет"');
|
||||
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Контрагенты');
|
||||
await clickElement('ООО Восток', { dblclick: true });
|
||||
const state = await getFormState();
|
||||
const phone = state.fields?.find(f => f.name === 'Телефон')?.value;
|
||||
log(`Re-opened phone after save:false='${phone}'`);
|
||||
assert.equal(phone, origPhone, 'Телефон не должен измениться (save:false откатил)');
|
||||
await closeForm();
|
||||
});
|
||||
|
||||
await step('confirm-pending: closeForm() без решения → confirmation в state', async () => {
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Контрагенты');
|
||||
await clickElement('ООО Север', { dblclick: true });
|
||||
await fillField('Телефон', '+7 (123) 456-78-90');
|
||||
const pending = await closeForm();
|
||||
log(`pending: closed=${pending.closed} confirmation=${JSON.stringify(pending.confirmation)}`);
|
||||
assert.ok(!pending.closed, 'Форма НЕ должна закрыться без решения');
|
||||
assert.ok(pending.confirmation, 'state.confirmation должен присутствовать');
|
||||
// Закрыть через явный отказ от сохранения
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
|
||||
await step('more-menu: clickElement("Ещё") возвращает submenu[]', async () => {
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Контрагенты');
|
||||
const r = await clickElement('Ещё');
|
||||
const items = r.submenu || [];
|
||||
log(`submenu items: ${items.length} sample=${items.slice(0, 5).join(', ')}`);
|
||||
assert.ok(Array.isArray(r.submenu), 'clickElement("Ещё") должен вернуть submenu[]');
|
||||
assert.ok(items.length >= 1, 'submenu не должен быть пустым');
|
||||
// Закрыть submenu
|
||||
const page = await getPage();
|
||||
await page.keyboard.press('Escape');
|
||||
await closeForm();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user