fix(ui): 돋보기 스크롤 따라감 — 다시 켤 때 원을 먼저 보여 스크롤 옮김이 먹게 · 켠 채 스크롤은 rAF 한 번에 칸 · 페이지 위치 맞춤 · 0.5 초 뒤 다시 뜸 (221-2)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QND7Co43B24zK2P937rdxt
This commit is contained in:
2026-10-10 16:29:34 +09:00
co-authored by Claude Opus 5.5
parent a5f5cac739
commit 8379836748
3 changed files with 137 additions and 15 deletions
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""돋보기 스크롤 따라감(계획서 221-2) 회귀검증 — 스크롤해 둔 뒤 켜도 원 = 지금 화면 ·
켠 채 스크롤하면 다음 화면 틀(rAF 한 번)에 위치만 맞춤 · 0.5 초 뒤 다시 뜸 · 끄면 예약 없음.
218-1 헬퍼(`helper_218_1_loupe.cjs`)의 스크롤 장면을 판정함(숨긴 원 안에선 스크롤이 안 먹는 실제 동작 흉내).
"""
import json
import os
import subprocess
import pytest
HERE = os.path.dirname(os.path.abspath(__file__))
@pytest.fixture(scope="module")
def s():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_218_1_loupe.cjs")],
capture_output=True,
text=True,
encoding="utf-8",
timeout=60,
)
assert proc.returncode == 0, proc.stderr
return json.loads(proc.stdout)["scroll"]
def test_스크롤한_뒤_켬(s):
assert s["zero"] == 0
assert s["before"] == 260 # 다시 켤 때도 지금 스크롤 그대로
def test_켠_채_스크롤_위치만_맞춤(s):
assert s["rafs"] == 1 # 스크롤 두 번 → 한 틀에 한 번
assert s["during"] == {"top": 400, "same": True, "pageTop": "-50px"} # 칸 · 문서 스크롤
def test_켠_채_스크롤_0_5초_뒤_다시_뜸(s):
assert s["recaptured"] == {"same": False, "top": 400}
assert s["timersAfterHide"] == 0