Update remaining dangerous-action smokes

User-Visible: no
Issue: #32
This commit is contained in:
Matysh
2026-08-31 01:18:00 +03:00
parent 2b3d5613f2
commit 2f021046aa
5 changed files with 20 additions and 18 deletions
+3 -3
View File
@@ -12,7 +12,7 @@ const out = {};
Object.assign(out, await page.evaluate(async () => {
const o = {};
const c = window.__card;
const nativeConfirm = window.confirm;
const confirmDanger = c._confirmDanger;
// Пикер читает `showEntities` и `bindingFilter` из открытого диалога, поэтому
// спрашивать его при закрытом бессмысленно: отдельные сущности устройств не
@@ -30,10 +30,10 @@ Object.assign(out, await page.evaluate(async () => {
const remove = async (device) => {
c._openMarkerDialog(device);
await c.updateComplete;
window.confirm = () => true;
c._confirmDanger = async () => true;
await c._deleteMarker();
await c.updateComplete;
window.confirm = nativeConfirm;
c._confirmDanger = confirmDanger;
};
const markers = () => c._serverCfg.markers || [];
const tombstones = () => markers().filter((m) => m.removed === true);
+5 -5
View File
@@ -79,10 +79,10 @@ Object.assign(out, await page.evaluate(async () => {
const virtualB = c._devices.find((x) => x.virtual && x.name === 'delete-one-b');
c._openMarkerDialog(virtualA); await c.updateComplete;
o.deleteForVirtual = !!sr().querySelector('hp-dialog .btn.danger');
const savedConfirm = window.confirm;
window.confirm = () => true;
const savedConfirmDanger = c._confirmDanger;
c._confirmDanger = async () => true;
await c._deleteMarker(); await c.updateComplete;
window.confirm = savedConfirm;
c._confirmDanger = savedConfirmDanger;
o.deleteOnlySelectedVirtual = !!virtualA && !!virtualB
&& !(c._serverCfg.markers || []).some((m) => m.id === virtualA.id)
&& (c._serverCfg.markers || []).some((m) => m.id === virtualB.id);
@@ -93,9 +93,9 @@ Object.assign(out, await page.evaluate(async () => {
const oldPos = { s: readd.space, x: 0.913, y: 0.917 };
c._layout = { ...c._layout, [readd.id]: oldPos };
c._openMarkerDialog(readd); await c.updateComplete;
window.confirm = () => true;
c._confirmDanger = async () => true;
await c._deleteMarker(); await c.updateComplete;
window.confirm = savedConfirm;
c._confirmDanger = savedConfirmDanger;
c._openMarkerDialog(); await c.updateComplete;
c._markerDialog = {
...c._markerDialog,
+3 -3
View File
@@ -87,12 +87,12 @@ const result = await page.evaluate(async () => {
card._pointers.set(113, { x: 10, y: 10 });
card._drag = { id: 'stale-device', sx: 0, sy: 0, ox: 0, oy: 0, moved: true };
card._saveConfigDebounced();
const confirmBefore = window.confirm;
window.confirm = () => true;
const confirmBefore = card._confirmDanger;
card._confirmDanger = async () => true;
try {
await card._deleteSpace();
} finally {
window.confirm = confirmBefore;
card._confirmDanger = confirmBefore;
}
await settle();
+5 -5
View File
@@ -172,19 +172,19 @@ const out = await page.evaluate(async () => {
&& card._layout['removed-marker'].s === 'gone'
&& !card.renderRoot.querySelector('.dev[data-id="orphan"]');
let nativeConfirmCalls = 0;
const oldConfirm = window.confirm;
window.confirm = () => { nativeConfirmCalls++; return true; };
let dangerConfirmCalls = 0;
const oldConfirmDanger = card._confirmDanger;
card._confirmDanger = async () => { dangerConfirmCalls++; return true; };
card._openSpaceDialog('edit', 'home');
await card.updateComplete;
await card._deleteSpace();
await card.updateComplete;
const blocker = card.renderRoot.querySelector('hp-dialog [role="alert"]')?.textContent || '';
result.deleteExplainsBlockerWithoutConfirmOrWrite = nativeConfirmCalls === 0
result.deleteExplainsBlockerWithoutConfirmOrWrite = dangerConfirmCalls === 0
&& blocker.includes('still used by 1 device')
&& !calls.includes('houseplan/space/delete')
&& card._spaceDialog?.spaceId === 'home';
window.confirm = oldConfirm;
card._confirmDanger = oldConfirmDanger;
card._spaceDialog = null;
await card.updateComplete;
+4 -2
View File
@@ -86,8 +86,10 @@ const out = await page.evaluate(async () => {
&& root().querySelectorAll('.oprow').length === 2
&& root().querySelectorAll('.lockact').length === 1;
window.confirm = () => true;
card._lockAction(lockId, 'unlock');
const confirmDanger = card._confirmDanger;
card._confirmDanger = async () => true;
await card._lockAction(lockId, 'unlock');
card._confirmDanger = confirmDanger;
result.explicitInfoActionStillWorks = serviceCalls.at(-1)?.domain === 'lock'
&& serviceCalls.at(-1)?.service === 'unlock'
&& serviceCalls.at(-1)?.entityId === lockId;