Files
houseplan-card/demo/smoke_room_temperature_thresholds.mjs
T
2026-09-08 10:44:13 +03:00

58 lines
2.6 KiB
JavaScript

import { launch, checkAll, finish } from './serve.mjs';
const { page, browser } = await launch({ width: 390, height: 820 });
const result = await page.evaluate(async () => {
const card = window.__card;
const root = () => card.renderRoot;
const current = card._space;
const roomId = card._curSpaceCfg.rooms[0].id;
card._serverCfg = {
...card._serverCfg,
spaces: card._serverCfg.spaces.map((space) => space.id !== current ? space : ({
...space,
settings: { ...(space.settings || {}), fill_mode: 'temp', temp_min: 20, temp_max: 25 },
rooms: space.rooms.map((room) => room.id !== roomId ? room : ({
...room, settings: { ...(room.settings || {}), temp_min: 18 },
})),
})),
};
card._setMode('plan');
await card.updateComplete;
await new Promise((resolve) => setTimeout(resolve, 300));
card._openRoomEdit(card._curSpaceCfg.rooms.find((room) => room.id === roomId));
await card.updateComplete;
const dialog = root().querySelector('hp-dialog.roomdialog');
let fields = [...dialog.querySelectorAll('.roomtemprange-fields input')];
const out = {
visibleForInheritedTemp: fields.length === 2,
partialDraftRestored: fields[0]?.value === '18' && fields[1]?.value === '',
placeholdersFollowSpace: fields[0]?.placeholder === '20' && fields[1]?.placeholder === '25',
narrowHasNoHorizontalScroll: dialog.scrollWidth <= dialog.clientWidth + 1,
};
card._roomTempMin = '0'; card._roomTempMax = '';
card.requestUpdate(); await card.updateComplete;
out.zeroIsValid = !root().querySelector('hp-dialog.roomdialog .btn.on')?.disabled;
card._roomTempMin = 'broken'; card.requestUpdate(); await card.updateComplete;
out.invalidBlocksSave = root().querySelector('hp-dialog.roomdialog .btn.on')?.disabled === true;
card._roomTempMin = '19'; card._roomTempMax = '23'; card._roomFill = 'none';
card.requestUpdate(); await card.updateComplete;
out.hiddenOutsideTemp = !root().querySelector('.roomtemprange');
out.hiddenDraftRetained = card._roomTempMin === '19' && card._roomTempMax === '23'
&& card._roomSettingsFromDialog().temp_min === 19
&& card._roomSettingsFromDialog().temp_max === 23;
card._roomFill = 'temp'; card.requestUpdate(); await card.updateComplete;
root().querySelector('.roomtemprange-fields .btn')?.click();
await card.updateComplete;
fields = [...root().querySelectorAll('.roomtemprange-fields input')];
out.resetRestoresInheritance = card._roomTempMin === '' && card._roomTempMax === ''
&& fields.every((input) => input.value === '');
return out;
});
checkAll(result);
await finish(browser, result);