diff --git a/A00_Common/device_context.ts b/A00_Common/device_context.ts index 4ea4e6d42..cf07adf04 100644 --- a/A00_Common/device_context.ts +++ b/A00_Common/device_context.ts @@ -51,12 +51,14 @@ export function readTouchMode(): TouchMode { } } -const coarseQuery = window.matchMedia("(pointer: coarse)"); +// window 없는 곳(서버 Node 묶음) = 건너뜀 +const hasWindow = typeof window !== "undefined"; +const coarseQuery = hasWindow ? window.matchMedia("(pointer: coarse)") : null; let current: DeviceContext | null = null; let lastInput = ""; function read(): DeviceContext { - const pointer = coarseQuery.matches ? "coarse" : "fine"; + const pointer = coarseQuery?.matches ? "coarse" : "fine"; const touchMode = readTouchMode(); const touch = touchMode === "on" || (touchMode === "auto" && pointer === "coarse"); return { @@ -105,7 +107,7 @@ function init(): void { for (const [name, px] of Object.entries(SIZE_BREAKS)) html.style.setProperty(`--bp-${name}`, `${px}px`); apply(); - coarseQuery.addEventListener("change", apply); + coarseQuery?.addEventListener("change", apply); window.addEventListener("resize", apply); window.visualViewport?.addEventListener("resize", apply); screen.orientation?.addEventListener("change", apply); @@ -120,4 +122,4 @@ function init(): void { ); } -init(); +if (hasWindow) init(); diff --git a/resources/tester/test_254_1_b08_milestone_bases.py b/resources/tester/test_254_1_b08_milestone_bases.py index 5cccd62e7..2eb6d6c66 100644 --- a/resources/tester/test_254_1_b08_milestone_bases.py +++ b/resources/tester/test_254_1_b08_milestone_bases.py @@ -205,7 +205,8 @@ def test_화면_기준점_여럿_등록_삭제(): state = _read(B08 + "UI_Milestone_State.ts") assert "migrateMilestone(" in state and "bases: []," in state page = _read(B08 + "UI_Milestone.ts") - assert "data.bases.length > 0" in page and 'to: "site",' in page + assert 'to: "site",' in page + assert "data.bases.length > 0" in _read(B08 + "Milestone_Table.ts") # 302-3 표로 옮김 for name in ("Milestone_Calc.ts", "Milestone_Layout.ts", "UI_Milestone_Diagram.ts", "UI_Milestone_Modal.ts", "UI_Milestone_State.ts", "UI_Milestone_LegModal.ts", "UI_Milestone_Route.ts", "UI_Milestone.ts"): # fmt: skip diff --git a/resources/tester/test_52_6_cross_underdrain.py b/resources/tester/test_52_6_cross_underdrain.py index b8146e009..6e5a15584 100644 --- a/resources/tester/test_52_6_cross_underdrain.py +++ b/resources/tester/test_52_6_cross_underdrain.py @@ -36,13 +36,8 @@ def test_컨테이너_맹암거_높이_경사_손_입력(): ("culvert_slope_pct", "암거 경사", "%"), ): o = opts[key] - assert (o.label, o.input, o.unit, o.default, o.required) == ( - label, - "number", - unit, - None, - False, - ) + # 기본값 = 마스터 사용자 편집 몫 — 실제 값에 기대지 않음 + assert (o.label, o.input, o.unit, o.required) == (label, "number", unit, False) assert o.empty_means # 손 입력 · 기본값 근거 없음 — 비워 둘 수 있음(B05 단계 필수 금지) groups = load_definition()["그룹"][KEY] assert groups == [