mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
fix(web-test): deleteTableRow выходит из cell edit-mode перед Delete
Delete-клавиша в режиме редактирования ячейки очищает буфер ввода, а не удаляет строку. Это становилось проблемой когда: 1. предыдущий fillTableRow закончил Tab-навигацией в input (например в Number-ячейку соседней колонки), и фокус остался там; 2. сам click на Number/Date ячейку в deleteTableRow автоматически входит в edit-mode (поведение 1С). Фикс: в deleteTableRow проверяем isInputFocusedInGrid дважды — до и после click — и шлём Escape если активен INPUT в целевом гриде. Строка остаётся выделенной после Escape, Delete срабатывает. Дополнительно: isInputFocusedInGridScript / isInputFocusedInGrid теперь принимают опциональный gridSelector — чтобы можно было прицельно проверять конкретный грид на многогрид-формах (а не любой `.grid` на странице). Покрытие: новый шаг в 05-table проверяет сценарий «фокус снаружи грида (Комментарий), потом delete» — гарантирует что post-click Escape ловит автоматический вход в edit-mode при клике на Number-ячейку. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,20 @@ export default async function({ navigateSection, openCommand, clickElement, fill
|
||||
log(`rows after delete: ${t.rows?.length}, [0]=${t.rows[0]?.['Номенклатура']}`);
|
||||
assert.equal(t.rows?.length, 1, 'Должна остаться 1 строка');
|
||||
assert.equal(t.rows[0]['Номенклатура'], 'Товар 02', 'Осталась строка Товар 02');
|
||||
});
|
||||
|
||||
await step('delete: фокус вне грида (Комментарий) — delete всё равно должен работать', async () => {
|
||||
// Воспроизводит сценарий, когда последнее действие было НЕ в табчасти.
|
||||
// deleteTableRow должен корректно перехватить фокус и удалить строку
|
||||
// несмотря на то, что click на Number-ячейку входит в edit-mode (post-click Escape).
|
||||
await fillTableRow({ 'Номенклатура': 'Товар 03', 'Количество': '8' }, { table: 'Товары', add: true });
|
||||
// Перевести фокус на Комментарий (вне грида).
|
||||
await fillFields({ 'Комментарий': 'focus-outside-grid' });
|
||||
await deleteTableRow(0, { table: 'Товары' });
|
||||
const t = await readTable({ table: 'Товары' });
|
||||
log(`rows after delete: ${t.rows?.length}, names=${t.rows.map(r => r['Номенклатура']).join(',')}`);
|
||||
assert.equal(t.rows?.length, 1, 'Должна остаться 1 строка');
|
||||
assert.equal(t.rows[0]['Номенклатура'], 'Товар 03', 'Удалена первая (Товар 02), осталась Товар 03');
|
||||
await closeForm({ save: false });
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user