mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-24 13:41:01 +03:00
test(web-test): покрыть Tumbler через clickElement в radio-шаге
Tumbler-представление RadioButtonField не парсится fillFields, но варианты
видны в state.buttons[] и кликаются через clickElement. Уточнили шаг radio:
- RadioButtons (КатегорияЦены) → fillFields с method=radio
- Tumbler (СпособУчёта) → проверка наличия в buttons[] + clickElement('ФИФО')
Семантика Tumbler через fillFields остаётся как баг web-test/browser.mjs
(см. upload/web-test-bugs.md пункт 5), но рабочий путь интеракции есть.
10/10 smoke зелёные после рестарта Apache.
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
2849087fd9
commit
7561faf736
@@ -52,24 +52,33 @@ export default async function({ navigateSection, openCommand, clickElement, fill
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
|
||||
await step('radio: КатегорияЦены (RadioButtonField, представление RadioButtons)', async () => {
|
||||
// Tumbler-представление (СпособУчёта) пока не покрыто — getFormState не
|
||||
// возвращает Tumbler в fields[]. См. upload/web-test-bugs.md пункт «radio
|
||||
// Tumbler не распознаётся».
|
||||
await step('radio: КатегорияЦены (RadioButtons) через fillFields, СпособУчёта (Tumbler) через clickElement', async () => {
|
||||
// Tumbler-представление не парсится fillFields как radio-поле (см.
|
||||
// upload/web-test-bugs.md пункт 5). Но варианты тумблера видны в
|
||||
// state.buttons и кликаются через clickElement — покрываем через него.
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Номенклатура');
|
||||
await filterList('Товар 02');
|
||||
await clickElement('Товар 02', { dblclick: true });
|
||||
|
||||
// RadioButtons — fillFields с method=radio
|
||||
const result = await fillFields({ 'Категория цены': 'Оптовая' });
|
||||
log('method: ' + result.filled[0]?.method + ', value: ' + result.filled[0]?.value);
|
||||
log('RadioButtons 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 || '', 'Оптовая', 'КатегорияЦены = Оптовая');
|
||||
|
||||
// Tumbler — варианты «По среднему» / «ФИФО» доступны как buttons
|
||||
const before = await getFormState();
|
||||
const tumblerButtons = (before.buttons || [])
|
||||
.map(b => b.name || b)
|
||||
.filter(n => n === 'По среднему' || n === 'ФИФО');
|
||||
log('Tumbler buttons: ' + tumblerButtons.join(', '));
|
||||
assert.equal(tumblerButtons.length, 2, 'Tumbler должен показывать оба варианта в buttons[]');
|
||||
|
||||
await clickElement('ФИФО');
|
||||
log('Tumbler clicked: ФИФО');
|
||||
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user