import { launch, checkAll, finish } from './serve.mjs';
const { page, browser } = await launch();
const res = await page.evaluate(async () => {
  const out = {};
  const c0 = window.__card;
  // создать киоск-экземпляр
  const c = document.createElement('houseplan-card');
  c.setConfig({ type: 'custom:houseplan-card', kiosk: true, cycle: 0 });
  c.hass = c0.hass;
  document.body.appendChild(c);
  c.style.cssText = 'position:fixed;left:0;top:0;width:900px;height:700px;z-index:99';
  await new Promise((r) => setTimeout(r, 400));
  c.hass = { ...c0.hass };
  await c.updateComplete;
  const sr = () => c.shadowRoot || c.renderRoot;
  // 1) шапка скрыта
  const hdr = sr().querySelector('.hdr');
  out.headerHidden = !hdr || getComputedStyle(hdr).display === 'none';
  // 2) редакторы заблокированы
  c._setMode('plan'); await c.updateComplete;
  out.editorsBlocked = c._mode === 'view';
  // 3) свайп при 1:1 переключает пространство (и точки показываются)
  const s0 = c._space;
  const stage = sr().querySelector('.stage');
  stage.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true, composed: true, pointerId: 1, clientX: 600, clientY: 300 }));
  stage.dispatchEvent(new PointerEvent('pointerup', { bubbles: true, composed: true, pointerId: 1, clientX: 450, clientY: 305 }));
  await c.updateComplete;
  out.swipeSwitches = c._space !== s0;
  out.dotsShown = !!sr().querySelector('.kioskdots');
  // 4) при зуме свайп не переключает
  c._zoom = 2; const s1 = c._space;
  stage.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true, composed: true, pointerId: 2, clientX: 600, clientY: 300 }));
  stage.dispatchEvent(new PointerEvent('pointerup', { bubbles: true, composed: true, pointerId: 2, clientX: 450, clientY: 305 }));
  await c.updateComplete;
  out.noSwipeZoomed = c._space === s1;
  // 5) двойной тап сбрасывает зум
  c._lastTap = Date.now() - 100;
  stage.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true, composed: true, pointerId: 3, clientX: 500, clientY: 300 }));
  stage.dispatchEvent(new PointerEvent('pointerup', { bubbles: true, composed: true, pointerId: 3, clientX: 501, clientY: 300 }));
  await c.updateComplete;
  out.dblTapResets = c._zoom === 1;
  // 6) локальный множитель иконок применяется
  c._saveKioskScale({ icon: 2 }); await c.updateComplete;
  const dl = sr().querySelector('.devlayer');
  const size1 = dl.getAttribute('style');
  c._saveKioskScale({ icon: 1 }); await c.updateComplete;
  const size2 = sr().querySelector('.devlayer').getAttribute('style');
  const v1 = parseFloat(size1.match(/--icon-size:([\d.]+)/)[1]);
  const v2 = parseFloat(size2.match(/--icon-size:([\d.]+)/)[1]);
  out.iconScaleWorks = Math.abs(v1 / v2 - 2) < 0.01;
  out.persisted = JSON.parse(localStorage.getItem('houseplan_card_kiosk_v1')).icon === 1;
  // 7) попап настроек экрана открывается (прямой вызов; долгое нажатие проверено таймером)
  c._kioskDialog = true; await c.updateComplete;
  out.dialogRenders = !!sr().querySelector('.dialog input[type="range"]');
  c._kioskDialog = false;
  // 8) карусель: тик двигает пространство, пауза после касания работает
  const cs = c._space;
  c._config = { ...c._config, cycle: 1 };
  c._cyclePausedUntil = 0;
  c._cycleTick(); await c.updateComplete;
  out.cycleAdvances = c._space !== cs;
  c._cyclePausedUntil = Date.now() + 60000;
  const cs2 = c._space;
  c._cycleTick(); await c.updateComplete;
  out.cyclePaused = c._space === cs2;
  // 9) обычная карточка (не киоск): шапка на месте, свайпа нет
  const sr0 = c0.shadowRoot || c0.renderRoot;
  out.normalHeader = !!sr0.querySelector('.hdr') && getComputedStyle(sr0.querySelector('.hdr')).display !== 'none';
  c.remove();
  return out;
});
checkAll(res);
await finish(browser, res);
