"""408-4 횡단 판이 넓을 때 상태 글판 · 잰 값 창 겹침 — 횡단 판 왼쪽 빈 폭을 반씩 나눠 쓰고, 반이 200 px 아래면(`bottomRowNarrow`) 잰 값 창을 상태 글판 위로 쌓음(둘 다 빈 폭 전부 · 좁으면 줄바꿈). TS 셈은 `helper_408_2_status_lift.cjs`(Node · `logic/B05_Profile_RouteEdit_InfoLift.ts`). ./venv/Scripts/python.exe -m pytest resources/tester/test_408_4_bottom_row.py -q """ import json import subprocess from pathlib import Path import pytest B05 = Path(__file__).resolve().parents[2] / "B05_Profile" CSS = B05 / "B05_Profile_UI_Style_RouteEdit.css" HELPER = Path(__file__).with_name("helper_408_2_status_lift.cjs") @pytest.fixture(scope="module") def got() -> dict: run = subprocess.run( # noqa: S603 — 고정 실행 파일 ["node", str(HELPER)], capture_output=True, text=True, encoding="utf-8", timeout=60 ) assert run.returncode == 0, run.stderr return json.loads(run.stdout) def _rules(selector: str) -> list[str]: css = CSS.read_text(encoding="utf-8") return [part[: part.index("}")] for part in css.split(f"{selector} {{")[1:]] def test_반_폭이_모자라면_쌓음(got) -> None: # (1172 - 36 - 736) / 2 = 200 → 나란히 · 737 → 쌓음 assert got["narrow"] == [False, False, True, False, True] def test_두_글판이_반_폭까지만() -> None: assert any( "max-width: min(460px, 46%, var(--b05-bottom-half));" in r for r in _rules(".b05-routeedit__info") ) assert any("max-width: var(--b05-bottom-half);" in r for r in _rules(".b05-routeedit__measure")) half = _rules(".b05-routeedit")[0] assert ( "--b05-bottom-half: max(0px, calc((100% - 3 * var(--spacing-12) - var(--b05-side-open)) / 2));" in half ) def test_좁으면_잰_값_창이_상태_글판_위로() -> None: narrow = _rules(".b05-routeedit.is-narrow-bottom")[0] assert "calc(100% - 2 * var(--spacing-12) - var(--b05-side-open))" in narrow measure = _rules(".b05-routeedit.is-narrow-bottom .b05-routeedit__measure")[0] assert "var(--b05-info-h, 0px)" in measure and "var(--b05-profile-cover, 0px)" in measure def test_편집기가_횡단_판_글판_크기를_관찰() -> None: chrome = (B05 / "B05_Profile_UI_RouteEdit_Chrome.ts").read_text(encoding="utf-8") assert ( "lift.observe(info)" in chrome and 'lift.observe(overlay.querySelector(".b05-routeedit__side-wrap")!)' in chrome ) assert '"is-narrow-bottom"' in chrome and '"--b05-info-h"' in chrome