mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
fix(web-test): числовое поле с калькулятором (iCalcB) заполнять paste, не selectValue
fillFields классифицировал поля по кнопкам: _DLB → ссылка, _CB → pick (если класс iCalendB → дата). Числовое поле формы (напр. «Цена») имеет _CB с классом iCalcB (калькулятор) и isDate=false, поэтому уходило в ветку selectValue, которая ждёт форму выбора → детерминированный фейл "DLB click did not open a popup or selection form". Калькулятор формой выбора не является. - dom/forms.mjs: распознаём iCalcB → флаг isCalc (по аналогии с isDate/iCalendB), пробрасываем его в resolveFieldsScript. - engine/forms/fill.mjs: ветку paste расширяем на hasPick && (isDate || isCalc) — калькулятор заполняем через Ctrl+A + paste + Tab, как календарь. Ссылочный fallback (hasPick без даты/калькулятора) не тронут. Пробел покрытия: «Цена» в наборе заполнялась только через fillTableRow (Tab-путь), а fillFields-ветка калькулятора не гонялась. Добавлен 'Цена' в 03-fillfields.test с assert method=paste и значением 777,00. E2E: тест 03 зелёный. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,8 @@ export default async function({ navigateSection, openCommand, clickElement, fill
|
||||
const result = await fillFields({
|
||||
'Артикул': 'TEST-001',
|
||||
'Активен': false, // Boolean → CheckBoxField, toggle
|
||||
'ДатаПоступления': '15.05.2026', // date
|
||||
'ДатаПоступления': '15.05.2026', // date → CB iCalendB calendar, paste
|
||||
'Цена': '777', // Number → CB iCalcB calculator, paste
|
||||
'ВидНоменклатуры': 'Услуга', // EnumRef dropdown
|
||||
});
|
||||
|
||||
@@ -23,11 +24,14 @@ export default async function({ navigateSection, openCommand, clickElement, fill
|
||||
for (const f of result.filled) {
|
||||
assert.ok(f.ok, `fillField "${f.field}" должен вернуть ok=true`);
|
||||
}
|
||||
assert.equal(result.filled.find(f => f.field === 'Цена')?.method, 'paste',
|
||||
'Цена через paste (калькулятор ≠ форма выбора)');
|
||||
|
||||
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, '777,00', 'Цена записалась (1С форматирует → 777,00)');
|
||||
assert.equal(findField(state, 'ВидНоменклатуры')?.value, 'Услуга', 'ВидНоменклатуры dropdown');
|
||||
|
||||
await closeForm({ save: false });
|
||||
|
||||
Reference in New Issue
Block a user