mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-02 12:49:56 +00:00
85 lines
3.3 KiB
JavaScript
85 lines
3.3 KiB
JavaScript
import { launch, checkAll, finish } from './serve.mjs';
|
|
|
|
const { page, browser } = await launch();
|
|
const result = await page.evaluate(async () => {
|
|
const card = window.__card;
|
|
const root = () => card.shadowRoot || card.renderRoot;
|
|
const room = () => root().querySelector('.room');
|
|
const mouse = (type, x, y) => new PointerEvent(type, {
|
|
pointerType: 'mouse', bubbles: true, composed: true, clientX: x, clientY: y,
|
|
});
|
|
const out = {};
|
|
|
|
card._openSettingsDialog();
|
|
await card.updateComplete;
|
|
const settingRow = [...root().querySelectorAll('hp-dialog label.srcrow')]
|
|
.find((label) => label.textContent.trim() === 'Show the room information window on hover');
|
|
out.localizedControl = !!settingRow?.querySelector('ha-switch,input[type="checkbox"]');
|
|
out.defaultOn = card._settingsDialog?.showRoomTooltip === true;
|
|
|
|
card._settingsDialog = { ...card._settingsDialog, showRoomTooltip: false };
|
|
card._settingsDialog = null;
|
|
out.cancelKeepsAbsentDefault = !Object.hasOwn(card._serverCfg.settings, 'show_room_tooltip');
|
|
|
|
room().dispatchEvent(mouse('pointerenter', 180, 180));
|
|
room().dispatchEvent(mouse('pointermove', 180, 180));
|
|
await card.updateComplete;
|
|
out.defaultRoomTip = card._tip?.room === true && !!root().querySelector('.tip');
|
|
|
|
card._openSettingsDialog();
|
|
card._settingsDialog = { ...card._settingsDialog, showRoomTooltip: false };
|
|
await card._saveSettingsDialog();
|
|
await card.updateComplete;
|
|
out.falsePersists = card._serverCfg.settings.show_room_tooltip === false;
|
|
out.visibleRoomTipCleared = card._tip === null && !root().querySelector('.tip');
|
|
|
|
let roomAreaCalls = 0;
|
|
const originalRoomArea = card._roomArea.bind(card);
|
|
card._roomArea = (...args) => {
|
|
roomAreaCalls += 1;
|
|
return originalRoomArea(...args);
|
|
};
|
|
room().dispatchEvent(mouse('pointerenter', 190, 190));
|
|
room().dispatchEvent(mouse('pointermove', 190, 190));
|
|
await card.updateComplete;
|
|
out.disabledRoomTip = card._tip === null && !root().querySelector('.tip');
|
|
out.disabledSkipsArea = roomAreaCalls === 0;
|
|
out.roomHighlightSurvives = card._hoverRoom !== null
|
|
&& !!root().querySelector('.room-hover-fill-layer,.room-hover-outline-layer');
|
|
|
|
root().querySelector('.dev').dispatchEvent(mouse('pointermove', 200, 200));
|
|
await card.updateComplete;
|
|
out.deviceTipSurvives = card._tip?.room === false && !!root().querySelector('.tip');
|
|
|
|
card._openSettingsDialog();
|
|
out.reopenShowsOff = card._settingsDialog?.showRoomTooltip === false;
|
|
card._settingsDialog = { ...card._settingsDialog, showRoomTooltip: true };
|
|
await card._saveSettingsDialog();
|
|
await card.updateComplete;
|
|
out.trueStoredAsAbsent = !Object.hasOwn(card._serverCfg.settings, 'show_room_tooltip');
|
|
out.enableDoesNotRestoreStaleTip = card._tip?.room !== true;
|
|
|
|
room().dispatchEvent(mouse('pointermove', 210, 210));
|
|
await card.updateComplete;
|
|
out.roomTipRestoredOnMove = card._tip?.room === true && !!root().querySelector('.tip');
|
|
return out;
|
|
});
|
|
|
|
checkAll(result, {
|
|
localizedControl: true,
|
|
defaultOn: true,
|
|
cancelKeepsAbsentDefault: true,
|
|
defaultRoomTip: true,
|
|
falsePersists: true,
|
|
visibleRoomTipCleared: true,
|
|
disabledRoomTip: true,
|
|
disabledSkipsArea: true,
|
|
roomHighlightSurvives: true,
|
|
deviceTipSurvives: true,
|
|
reopenShowsOff: true,
|
|
trueStoredAsAbsent: true,
|
|
enableDoesNotRestoreStaleTip: true,
|
|
roomTipRestoredOnMove: true,
|
|
});
|
|
await finish(browser, result);
|