Update destructive action smokes

User-Visible: no
Issue: #32
This commit is contained in:
Matysh
2026-08-31 00:49:56 +03:00
parent c91ac74e19
commit 751769908a
3 changed files with 23 additions and 15 deletions
+3 -2
View File
@@ -5,7 +5,6 @@ const res = await page.evaluate(async () => {
const c = window.__card;
const sr = () => c.shadowRoot || c.renderRoot;
const calls = [];
window.confirm = () => true; // review CR-1: unlocking now confirms
c.hass = { ...c.hass, callService: (d, s, data) => calls.push([d, s, data.entity_id]) };
await c.updateComplete;
// добавить дверь с замком на f1
@@ -21,7 +20,9 @@ const res = await page.evaluate(async () => {
let btn = sr().querySelector('.btn.lockact');
out.unlockBtnShown = !!btn && !btn.disabled;
out.unlockBtnDanger = btn?.classList.contains('warn');
btn.click();
btn.click(); await c.updateComplete;
sr().querySelector('hp-confirm .danger-confirm-footer .btn.warn, hp-confirm .danger-confirm-footer .btn.on')?.click();
await c.updateComplete;
out.unlockCalled = JSON.stringify(calls.at(-1)) === JSON.stringify(['lock', 'unlock', lockId]);
// 2) замок открыт → кнопка "Lock"
c.hass = { ...c.hass, states: { ...c.hass.states, [lockId]: { state: 'unlocked', attributes: {} } } };
+16 -10
View File
@@ -30,18 +30,24 @@ const res = await page.evaluate(async () => {
c._cardToggle('alarm_control_panel.home');
out.cardToggleRefuses = lockCalls().length === 0;
// 4) кнопка в карточке двери — единственная разрешённая поверхность, и спрашивает подтверждение
let asked = null;
window.confirm = (msg) => { asked = msg; return false; };
c._lockAction('lock.front_door', 'unlock');
out.unlockAsksConfirm = asked !== null && lockCalls().length === 0;
window.confirm = () => true;
c._lockAction('lock.front_door', 'unlock');
c._openingEntityAvailable = () => true;
c._openingInfo = {
id: 'front', type: 'door', rx: 0.5, ry: 0.5, len_cm: 90, lock: 'lock.front_door',
};
let pending = c._lockAction('lock.front_door', 'unlock');
await c.updateComplete;
out.unlockAsksConfirm = c._dangerConfirm?.request?.key === 'unlock' && lockCalls().length === 0;
c._cancelDangerConfirm();
await pending;
pending = c._lockAction('lock.front_door', 'unlock');
await c.updateComplete;
(c.shadowRoot || c.renderRoot)
.querySelector('hp-confirm .danger-confirm-footer .btn.warn, hp-confirm .danger-confirm-footer .btn.on')?.click();
await pending;
out.unlockAfterConfirm = calls.at(-1) === 'lock.unlock:lock.front_door';
// запирание не спрашивает
asked = null;
window.confirm = (m) => { asked = m; return true; };
c._lockAction('lock.front_door', 'lock');
out.lockNoConfirm = asked === null && calls.at(-1) === 'lock.lock:lock.front_door';
await c._lockAction('lock.front_door', 'lock');
out.lockNoConfirm = c._dangerConfirm === null && calls.at(-1) === 'lock.lock:lock.front_door';
return out;
});
checkAll(res);
+4 -3
View File
@@ -29,8 +29,6 @@ const res = await page.evaluate(async () => {
}
return base(m);
} };
window.confirm = () => true;
// пространство без плана — как после отцепления
c._openSpaceDialog('edit', 'f1'); await c.updateComplete;
c._spaceDialog = { ...c._spaceDialog, source: 'file', planUrl: null, planFile: null };
@@ -68,7 +66,10 @@ const res = await page.evaluate(async () => {
await c.updateComplete;
await c._deleteServerPlan('f2.bbb.png').catch(() => {});
out.usedNotDeleted = !deleted.includes('f2.bbb.png');
await c._deleteServerPlan('f1.aaa.png');
const deleting = c._deleteServerPlan('f1.aaa.png');
await c.updateComplete;
sr().querySelector('hp-confirm .danger-confirm-footer .btn.danger')?.click();
await deleting;
await c.updateComplete;
out.freeDeleted = deleted.includes('f1.aaa.png');
out.rowGone = !(c._spaceDialog.saved || []).some((p) => p.name === 'f1.aaa.png');