feat(web-test): всплывающие (popup) группы — behavior, состояние, клик

Popup-группа надёжно отличается от сворачиваемой по DOM-маркеру панели
<base>#panel_div (+ #CloseBtn). В getFormState().groups она помечается
behavior:'popup', а её collapsed берётся из display панели (закрыта =
collapsed:true), не из инлайн-сиблинга (у popup содержимое в отдельном
слое, а не под mainGroup).

clickElement по заголовку popup и открывает, и закрывает — тот же
словарь {expand}/{toggle}, что и у сворачиваемых. После открытия
содержимое панели становится читаемым в getFormState (fields/
hyperlinks/texts). Тест 25-decoration-form покрывает popup; SKILL
дополнен. Полный регресс 29 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-18 13:18:18 +03:00
parent bd86ece90e
commit fc2323f321
4 changed files with 50 additions and 25 deletions
@@ -70,4 +70,22 @@ export default async function({ navigateSection, openCommand, navigateLink, getF
assert.equal(collapsedOf(r, 'ГруппаКартинкой'), false, 'B раскрыта тоглом');
await closeForm();
});
await step('popup: всплывающая группа — behavior, открытие показывает содержимое', async () => {
const s = await navigateLink('Обработка.СтраницаНастроек');
const pg = (s.groups || []).find(g => g.name === 'ГруппаВсплывающая');
assert.ok(pg, 'всплывающая группа в groups[]');
assert.equal(pg.behavior, 'popup', 'помечена behavior:popup (отличима от collapsible)');
assert.equal(pg.collapsed, true, 'закрыта — collapsed:true');
assert.ok(!(s.texts || []).some(t => /всплывающей/.test(t.value)), 'содержимое скрыто, пока закрыта');
// Открыть → содержимое панели становится видно в состоянии формы.
let r = await clickElement('Всплывающая группа', { expand: true });
assert.equal((r.groups || []).find(g => g.name === 'ГруппаВсплывающая')?.collapsed, false, 'открыта');
assert.ok((r.texts || []).some(t => /всплывающей/.test(t.value)), 'после открытия содержимое видно');
r = await clickElement('Всплывающая группа', { expand: true });
assert.equal(r.clicked.toggled, false, 'expand идемпотентен для popup');
r = await clickElement('Всплывающая группа', { expand: false });
assert.equal((r.groups || []).find(g => g.name === 'ГруппаВсплывающая')?.collapsed, true, 'закрыта обратно');
await closeForm();
});
}