mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-18 16:49:41 +03:00
fix(web-test): клик в видимую ячейку строки формы выбора + пер-колоночный/exact матчинг
scanGridRowsScript целился в центр всей .gridLine; на широкой форме выбора (колонок
больше, чем влезает в окно) центр-X уезжает за вьюпорт в оверлей → клик мимо строки →
Enter не выбирает → форма не закрывается → ложное not_selectable «group/folder row».
- dom/grid v1.10: матч по ячейкам (строка: exact→startsWith→includes; объект {col:val}:
пер-колоночно, AND, предпочтение exact-all), точка клика — первая видимая текстовая
ячейка строки (не центр); возврат visibleSample/isGroup. scrollIntoView не нужен
(динсписок держит в DOM только видимые строки).
- forms/select-value v1.25: структурированный search в скан (без склейки значений
объекта), различение still_open vs реальная группа (isGroup), actionable not_found
со списком видимых кандидатов.
- tests: широкая (14 колонок, choiceMode) форма выбора Контрагентов + контрагент «Север»
рядом с «ООО Север» → детерминированный регресс центр-X + exact-preference;
selectValue (04-selectvalue) и fillTableRow составной ячейки (05-table).
Проверено: живой E2E на реальной форме выбора составного типа, red-green на синтетике,
полный регресс web-test.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -120,4 +120,30 @@ export default async function({ navigateSection, openCommand, clickElement, fill
|
||||
assert.equal(t.rows[0]['Номенклатура'], 'Товар 03', 'Удалена первая (Товар 02), осталась Товар 03');
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
|
||||
await step('composite-wide-form: ИсточникТЧ {value,type} через ШИРОКУЮ форму выбора', async () => {
|
||||
// Прямой регресс исходного симптома: fillTableRow в составную ячейку → диалог
|
||||
// типа → широкая форма выбора Контрагентов (14 колонок, строка шире окна).
|
||||
// Старый scanGridRows целился в центр строки → клик в оверлей → not_selectable.
|
||||
// Детерминированность: «ООО Север» сортируется раньше точного «Север»; багованный
|
||||
// путь выбрал бы «ООО Север», фикс (exact-preference + клик в видимую ячейку) — «Север».
|
||||
await navigateSection('Склад');
|
||||
await openCommand('Приходная накладная');
|
||||
await clickElement('Создать');
|
||||
|
||||
const r = await fillTableRow(
|
||||
{ 'Источник': { value: 'Север', type: 'Контрагент' } },
|
||||
{ table: 'Товары', add: true }
|
||||
);
|
||||
log(`composite fill: ${JSON.stringify(r.filled)}`);
|
||||
const item = (r.filled || []).find(f => /сточник/.test(f.field || ''));
|
||||
assert.ok(item?.ok, `ячейка Источник заполнена без ошибки: ${item?.error || ''} ${item?.message || ''}`);
|
||||
|
||||
const t = await readTable({ table: 'Товары' });
|
||||
log(`Источник cell='${t.rows[0]?.['Источник']}'`);
|
||||
assert.equal(t.rows[0]?.['Источник'], 'Север',
|
||||
'exact-preference + клик в видимую ячейку: выбран точный «Север», не «ООО Север»');
|
||||
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user