From f5c4887056837182883ec422d8e0d003b5acd06b Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 13 Oct 2026 13:17:32 +0900 Subject: [PATCH] =?UTF-8?q?test(device):=20=EB=8D=B0=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=ED=83=91=20=EB=B0=B0=EC=B9=98=20=EC=84=9C=EB=AA=85=20=EC=9E=A1?= =?UTF-8?q?=EC=9D=8C=20=EB=B9=BC=EA=B8=B0=20=E2=80=94=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EC=95=88=20=C2=B7=20=EC=9B=80=EC=A7=81=EC=9D=B4=EB=8A=94(?= =?UTF-8?q?=EC=95=A0=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20=C2=B7=20?= =?UTF-8?q?=EB=A1=9C=EB=94=A9=20=EC=9B=90)=20=EC=9A=94=EC=86=8C=20?= =?UTF-8?q?=EC=A0=9C=EC=99=B8=20=C2=B7=20=EB=B6=88=EB=9F=AC=EC=98=A4?= =?UTF-8?q?=EB=8A=94=20=EC=A4=91=20=ED=91=9C=EC=8B=9C=EA=B0=80=20=EC=82=AC?= =?UTF-8?q?=EB=9D=BC=EC=A7=88=20=EB=95=8C=EA=B9=8C=EC=A7=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8B=A4=EB=A6=BC=20(=EA=B8=B0=EA=B8=B0=EB=8C=80=EC=9D=91=201-?= =?UTF-8?q?2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Ji4nuyLVHcxrXWHTdb5nRD --- resources/tester/test_device_audit.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/resources/tester/test_device_audit.py b/resources/tester/test_device_audit.py index 062e788a3..7e16ea39f 100644 --- a/resources/tester/test_device_audit.py +++ b/resources/tester/test_device_audit.py @@ -121,13 +121,18 @@ AUDIT_JS = r""" } """ -# 데스크탑 배치 서명 — 보이는 요소 사각형(정수) · 순서대로 +# 데스크탑 배치 서명 — 화면 안에 보이는 요소 사각형(정수) · 순서대로. +# 잡음 빼기 = 움직이는 중(CSS 애니메이션 · 로딩 원)인 요소와 그 안 · 화면 밖(스크롤 아래 1px 흔들림) LAYOUT_JS = r""" () => { const rows = []; + const moving = new Set(document.getAnimations().map((a) => a.effect && a.effect.target).filter(Boolean)); + const isMoving = (el) => { for (let p = el; p; p = p.parentElement) if (moving.has(p)) return true; return false; }; for (const el of document.body.querySelectorAll('*')) { const r = el.getBoundingClientRect(); if (r.width < 1 || r.height < 1) continue; + if (r.bottom <= 0 || r.top >= innerHeight || r.right <= 0 || r.left >= innerWidth) continue; + if (isMoving(el)) continue; if (el.checkVisibility && !el.checkVisibility({ visibilityProperty: true })) continue; rows.push(`${el.tagName}|${Math.round(r.left)},${Math.round(r.top)},${Math.round(r.width)},${Math.round(r.height)}`); }