mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
2849087fd9
03-fillfields: - reference-dropdown: переведён с Контрагент на Организация (после смены quickChoice Контрагенты идут через форму выбора) - новый шаг radio: КатегорияЦены через method=radio (RadioButtons) 04-selectvalue: - dropdown: переведён на Организация (quickChoice=true) - новый шаг direct-form: Контрагент (quickChoice=false), method=form Закрывает selectValue#3 dropdown (P0), selectValue#6 direct-form (P1), fillFields#3 radio (P1) из coverage matrix. Tumbler-представление радио (СпособУчёта) пока не покрыто — getFormState не возвращает Tumbler в fields[]. Зафиксировано в upload/web-test-bugs.md пункт 5. 10/10 smoke зелёные на webtest базе. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
76 lines
4.0 KiB
JavaScript
76 lines
4.0 KiB
JavaScript
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, filterList, 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',
|
|
'Активен': false, // Boolean → CheckBoxField, toggle
|
|
'ДатаПоступления': '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, false, 'Активен checkbox=false');
|
|
assert.equal(findField(state, 'ДатаПоступления')?.value, '15.05.2026', 'ДатаПоступления');
|
|
assert.equal(findField(state, 'ВидНоменклатуры')?.value, 'Услуга', 'ВидНоменклатуры dropdown');
|
|
|
|
await closeForm({ save: false });
|
|
});
|
|
|
|
await step('reference-dropdown: Организация → CatalogRef.Организации (quickChoice=true)', 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 org = findField(state, 'Организация');
|
|
log(`Организация value='${org?.value}'`);
|
|
assert.includes(org?.value || '', 'Альфа', 'Организация должна показать выбранное значение');
|
|
|
|
await closeForm({ save: false });
|
|
});
|
|
|
|
await step('radio: КатегорияЦены (RadioButtonField, представление RadioButtons)', async () => {
|
|
// Tumbler-представление (СпособУчёта) пока не покрыто — getFormState не
|
|
// возвращает Tumbler в fields[]. См. upload/web-test-bugs.md пункт «radio
|
|
// Tumbler не распознаётся».
|
|
await navigateSection('Склад');
|
|
await openCommand('Номенклатура');
|
|
await filterList('Товар 02');
|
|
await clickElement('Товар 02', { dblclick: true });
|
|
|
|
const result = await fillFields({ 'Категория цены': 'Оптовая' });
|
|
log('method: ' + result.filled[0]?.method + ', value: ' + result.filled[0]?.value);
|
|
assert.ok(result.filled[0]?.ok, 'КатегорияЦены fillField должна сработать');
|
|
assert.equal(result.filled[0]?.method, 'radio', 'КатегорияЦены должна использовать method=radio');
|
|
|
|
// Note: getFormState().fields для RadioButtonField возвращает value='' —
|
|
// выбранный вариант проще проверить через result.filled[].value.
|
|
assert.includes(result.filled[0]?.value || '', 'Оптовая', 'КатегорияЦены = Оптовая');
|
|
|
|
await closeForm({ save: false });
|
|
});
|
|
}
|