import { launch, checkAll, finish } from './serve.mjs';
const { page, browser } = await launch();
const res = await page.evaluate(async () => {
  const out = {};
  const c = window.__card;
  const sr = () => c.shadowRoot || c.renderRoot;
  c._setMode('devices'); await c.updateComplete;
  // новый маркер: радио «Виртуальное» по умолчанию, списка нет
  c._openMarkerDialog(); await c.updateComplete;
  const radios = () => [...sr().querySelectorAll('.bindsel input[type="radio"]')];
  out.twoRadios = radios().length === 2;
  out.virtDefault = radios()[0].checked && !radios()[1].checked;
  out.noDropWhenVirtual = !sr().querySelector('.dropbtn');
  // переключить на «Из списка HA» → появляется дропдаун, открыт (нет выбора), сейв заблокирован
  radios()[1].click(); await c.updateComplete;
  out.dropShown = !!sr().querySelector('.dropbtn');
  out.panelOpen = !!sr().querySelector('.droppanel');
  const saveBtn = [...sr().querySelectorAll('.dialog .btn.on')].pop();
  out.saveDisabled = saveBtn?.disabled === true;
  // без чекбокса в списке нет individual-сущностей устройств
  const subs = () => [...sr().querySelectorAll('.cand .cs')].map((e) => e.textContent);
  const entLabel = c._t('marker.sub_entity');
  out.noDeviceEntities = !subs().some((s) => s.includes(entLabel));
  // (группы/хелперы в демо все уже размещены и потому скрыты как занятые —
  // их «всегда в списке» проверяется кодом: блок вне чекбокса)
  // включить чекбокс → сущности появились
  const cb = sr().querySelector('.entcheck input');
  cb.click(); await c.updateComplete;
  out.entitiesShown = [...sr().querySelectorAll('.cand .cs')].some((s) => s.textContent.includes(entLabel));
  out.tooltip = sr().querySelector('.entcheck').getAttribute('title') === c._t('marker.show_entities_tip');
  // выбрать первый кандидат → панель закрылась, сейв разблокирован
  sr().querySelector('.cand').click(); await c.updateComplete;
  out.picked = c._markerDialog.binding !== '' && c._markerDialog.binding !== 'virtual';
  out.panelClosed = !sr().querySelector('.droppanel');
  out.saveEnabled = [...sr().querySelectorAll('.dialog .btn.on')].pop()?.disabled === false;
  // радио назад на «Виртуальное» → binding=virtual
  radios()[0].click(); await c.updateComplete;
  out.backToVirtual = c._markerDialog.binding === 'virtual' && c._markerDialog.bindingMode === 'virtual';
  c._markerDialog = null; await c.updateComplete;
  // редактирование существующего устройства: радио «Из списка», выбранная привязка в кнопке
  const dev = c._devices.find((d) => !d.virtual && d.bindingKind === 'device');
  c._openMarkerDialog(dev); await c.updateComplete;
  out.editHaMode = c._markerDialog.bindingMode === 'ha';
  out.editShowsCur = sr().querySelector('.dropbtn b') !== null;
  out.editPanelClosed = !sr().querySelector('.droppanel');
  c._markerDialog = null;
  return out;
});
checkAll(res);
await finish(browser, res);
