mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-31 08:47:45 +03:00
feat(web-test): smoke-тест 03-fillfields (text, dropdown, date, reference)
2 шага, 5 типов полей зелёные на синтетике webtest: - text (paste): Артикул на форме Номенклатура - dropdown (Да/Нет): Активен — Boolean рендерится как Да/Нет селектор - dropdown (EnumRef): ВидНоменклатуры - date (paste): ДатаПоступления - reference (dropdown CatalogRef): Контрагент в новой ПриходнаяНакладная NB: 1C рендерит Boolean-атрибут не как чекбокс, а как dropdown «Да/Нет» (actions: ["select"]) — fillFields правильно определяет это. 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
99c77e1dde
commit
66e37fb8cc
@@ -0,0 +1,54 @@
|
|||||||
|
export const name = 'fillFields: text, checkbox, date, dropdown, reference';
|
||||||
|
export const tags = ['fillfields', 'smoke'];
|
||||||
|
export const timeout = 60000;
|
||||||
|
|
||||||
|
const findField = (state, name) => state.fields?.find(f => f.name === name || f.label === name);
|
||||||
|
|
||||||
|
export default async function({ navigateSection, openCommand, clickElement, fillFields, closeForm, getFormState, assert, step, log }) {
|
||||||
|
|
||||||
|
await step('text+checkbox+date+dropdown: fillFields на Номенклатура', async () => {
|
||||||
|
await navigateSection('Склад');
|
||||||
|
await openCommand('Номенклатура');
|
||||||
|
await clickElement('Товары', { dblclick: true }); // войти в папку
|
||||||
|
await clickElement('Товар 01', { dblclick: true });
|
||||||
|
|
||||||
|
const result = await fillFields({
|
||||||
|
'Артикул': 'TEST-001',
|
||||||
|
'Активен': 'Нет', // Boolean → "Да/Нет" dropdown в 1С
|
||||||
|
'ДатаПоступления': '15.05.2026', // date
|
||||||
|
'ВидНоменклатуры': 'Услуга', // EnumRef dropdown
|
||||||
|
});
|
||||||
|
|
||||||
|
log('methods: ' + result.filled.map(f => `${f.field}=${f.method}`).join(', '));
|
||||||
|
for (const f of result.filled) {
|
||||||
|
assert.ok(f.ok, `fillField "${f.field}" должен вернуть ok=true`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const state = await getFormState();
|
||||||
|
assert.equal(findField(state, 'Артикул')?.value, 'TEST-001', 'Артикул text');
|
||||||
|
assert.equal(findField(state, 'Активен')?.value, 'Нет', 'Активен dropdown=Нет');
|
||||||
|
assert.equal(findField(state, 'ДатаПоступления')?.value, '15.05.2026', 'ДатаПоступления');
|
||||||
|
assert.equal(findField(state, 'ВидНоменклатуры')?.value, 'Услуга', 'ВидНоменклатуры dropdown');
|
||||||
|
|
||||||
|
await closeForm();
|
||||||
|
});
|
||||||
|
|
||||||
|
await step('reference-dropdown: Контрагент → CatalogRef.Контрагенты в новой накладной', async () => {
|
||||||
|
await navigateSection('Склад');
|
||||||
|
await openCommand('Приходная накладная');
|
||||||
|
await clickElement('Создать');
|
||||||
|
|
||||||
|
const fillRes = await fillFields({
|
||||||
|
'Контрагент': 'ООО Север',
|
||||||
|
});
|
||||||
|
log('reference method: ' + fillRes.filled[0]?.method);
|
||||||
|
assert.ok(fillRes.filled[0]?.ok, 'Контрагент fillField должен сработать');
|
||||||
|
|
||||||
|
const state = await getFormState();
|
||||||
|
const contractor = findField(state, 'Контрагент');
|
||||||
|
log(`Контрагент value='${contractor?.value}'`);
|
||||||
|
assert.includes(contractor?.value || '', 'Север', 'Контрагент должен показать выбранное значение');
|
||||||
|
|
||||||
|
await closeForm(); // close without save
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user