mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-30 00:16:56 +03:00
fix(web-test): детектировать форму-декорацию без полей ввода
Страницы настроек (напр. «Администрирование → Интернет-поддержка и
сервисы») собраны из гиперссылок, frameButton и сворачиваемых групп —
без единого input.editInput / textarea / a.press. detectForm/detectForms
считали такую форму отсутствующей → getFormState = {form:null,
formCount:0}, навык её не видел.
Расширен союзный селектор детекции (.staticTextHyper/.frameButton/
.checkbox/.radio/.tumblerItem/.grid). detectForm двухуровневый: обычные
формы выбираются по редактируемым контролам (поведение не меняется), по
расширенному счёту — только когда у формы нет ни одного поля ввода.
form0 (рабочий стол) по-прежнему исключён фильтром n>0.
Регресс: обработка-фикстура СтраницаНастроек (форма без командной панели:
гиперссылка + сворачиваемая группа) в подсистеме Администрирование +
тест 25-decoration-form. Полный набор 29 passed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
37f39a5022
commit
9856fd5180
@@ -0,0 +1,36 @@
|
||||
export const name = 'decoration-form: форма без полей ввода (гиперссылки/группы) детектируется';
|
||||
export const tags = ['formstate', 'smoke'];
|
||||
export const timeout = 90000;
|
||||
|
||||
// Обработка СтраницаНастроек — форма-«страница настроек» БЕЗ единого input.editInput /
|
||||
// textarea / a.press (commandBarLocation:None): только гиперссылка-декорация + сворачиваемая
|
||||
// группа. Воспроизводит реальный кейс «Администрирование → Интернет-поддержка и сервисы».
|
||||
// Регресс на расширенный селектор детекции формы (dom/_shared.mjs, DETECT_FORM_FN /
|
||||
// DETECT_FORMS_FN): до фикса detectForm возвращал null → getFormState = «No form detected»
|
||||
// (form:null, formCount:0), навык такую форму НЕ видел.
|
||||
|
||||
export default async function({ navigateSection, openCommand, navigateLink, getFormState, closeForm, assert, step, log }) {
|
||||
|
||||
await step('раздел: открыть «Страница настроек» командой из «Администрирование»', async () => {
|
||||
await navigateSection('Администрирование');
|
||||
const r = await openCommand('Страница настроек');
|
||||
log(`form=${r.form} formCount=${r.formCount} activeTab=${r.activeTab}`);
|
||||
assert.ok(r.form != null, 'форма распознана (form != null) — до фикса тут был null');
|
||||
assert.ok(r.formCount >= 1, 'formCount >= 1');
|
||||
const hy = (r.hyperlinks || []).map(h => h.name);
|
||||
assert.includes(hy, 'Техническая информация', 'гиперссылка-декорация видна в состоянии');
|
||||
assert.equal((r.fields || []).length, 0, 'полей ввода на форме нет (декорации-only)');
|
||||
await closeForm();
|
||||
});
|
||||
|
||||
await step('navigateLink: та же форма через «Обработка.СтраницаНастроек»', async () => {
|
||||
const r = await navigateLink('Обработка.СтраницаНастроек');
|
||||
log(`form=${r.form} formCount=${r.formCount} activeTab=${r.activeTab}`);
|
||||
assert.ok(r.form != null, 'форма распознана через navigateLink');
|
||||
assert.ok(r.formCount >= 1, 'formCount >= 1');
|
||||
const state = await getFormState();
|
||||
const hy = (state.hyperlinks || []).map(h => h.name);
|
||||
assert.includes(hy, 'Техническая информация', 'гиперссылка видна и в getFormState');
|
||||
await closeForm();
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user