Files
Aislo/resources/tester/test_552_5_part_fixes.py
T
eomsangdonandClaude Opus 5.5 877b89f37c fix(ui-kit): 부품 흠 다섯 — 보조 글 줄 안 inline · 단추 실측 = 단 · 숨김 단추 · 놓기 칸 전체 누름 · 격자표 (PLAN 552-5)
- 보조 글: span · small 에 붙은 .ui-text = inline(줄 안 끊김) · p · div 는 한 줄 상자 그대로
- 단추: 위아래 여백 = 1em 기준 + 줄 높이 1 · 왼쪽 패널 양식(.ui-panel-form) 옛 규칙(글 12 · 줄 높이 normal)이 단을 덮지 않음 — B07 도면 단추 35 → 32
- 숨김: .ui-btn · .ui-icon-btn [hidden] = display none(공용 기본 꼴이 안 실린 곳에서도)
- 파일 놓기 칸: 칸 어디든 누름 · 초점 Enter · Space = 파일 고르기(옛 B03 동작) · 단추 누름은 칸으로 올라가 한 번만
- 표: 격자 꼴(grid · 세로선 · 칸 테두리 · 몸 안 이름 칸 th) · 합친 칸(colSpan · rowSpan · head) · columns 비우면 머리 줄 없음 · 기본 꼴 그대로
- 부품 모음 견본: 글 줄 안 보조 글 · 격자표(수량 산출표 꼴)
- 시험: test_552_5_part_fixes 새 · test_552_2_button 높이 식 기대 고침(1em · 줄 높이 1)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 23:38:33 +09:00

78 lines
3.5 KiB
Python

"""552-5 부품 흠 다섯 지킴 시험 — 화면 실측은 Playwright · ORCA(부품 모음 · B07 · B03).
① 보조 글 — 글 줄 안 span · small 은 inline(줄 안 끊김)
② 단추 실측 = 단 — 여백 1em 기준 · 줄 높이 1 · 왼쪽 패널 양식(.ui-panel-form) 옛 규칙이 덮지 않음
③ [hidden] 단추 — 단추 display 가 숨김을 덮지 않음
④ 파일 놓기 칸 — 칸 전체 누름 · Enter · Space = 파일 고르기 · 단추 누름은 한 번만
⑤ 표 — 격자 꼴(grid · 세로선) · 합친 칸(colSpan · rowSpan · head) · 기본 꼴 그대로
"""
from __future__ import annotations
import re
from pathlib import Path
UI = Path(__file__).resolve().parents[2] / "ui_template"
RAW = re.compile(r"#[0-9a-fA-F]{3,8}\b|rgba?\(|--b01-|--draw-")
def _t(name: str) -> str:
return (UI / name).read_text(encoding="utf-8")
def _rule(css: str, selector: str) -> str:
return re.search(re.escape(selector) + r" \{([^}]*)\}", css).group(1)
def test_보조_글_줄_안_inline():
css = _t("ui_template_text.css")
assert "display: inline;" in _rule(css, ":is(span, small).ui-text")
assert "display: flex;" in _rule(css, ".ui-text") # p · div 는 한 줄 상자 그대로
assert not RAW.search(css)
def test_단추_실측_단():
css = _t("ui_template_button.css")
rule = _rule(css, ".ui-btn[data-size]")
assert "calc((var(--ui-size-h) - 2px - 1em) / 2)" in rule and "line-height: 1;" in rule
panel = _rule(css, ".ui-panel-form .ui-btn[data-size]:not(.ui-help-btn, .ui-step-nav-btn)")
assert "padding-block: calc((var(--ui-size-h) - 2px - 1em) / 2);" in panel
assert "line-height: 1;" in panel
# 덮는 옛 규칙(글 12 · 줄 높이 normal)은 그대로 — 단 규칙이 더 세게(클래스 넷 > 셋)
overlay = (UI / "ui_template_overlay.css").read_text(encoding="utf-8")
assert ".ui-panel-form .ui-btn:not(.ui-help-btn, .ui-step-nav-btn) {" in overlay
def test_숨김_단추():
css = _t("ui_template_button.css")
assert "display: none !important;" in _rule(css, ":is(.ui-btn, .ui-icon-btn)[hidden]")
def test_놓기_칸_전체_누름():
ts, css = _t("ui_template_drop.ts"), _t("ui_template_drop.css")
assert 'attrs: { role: "button" }' in ts
assert 'root.addEventListener("click"' in ts and "ev.target !== input" in ts
assert 'ev.key !== "Enter" && ev.key !== " "' in ts and "ev.target !== root" in ts
assert "root.tabIndex = on ? -1 : 0" in ts
# 단추는 칸으로 올라감 — 따로 열면 두 번 열림
pick = re.search(r"const pick = createButton\(\{([^}]*)\}\)", ts).group(1)
assert "onClick" not in pick
assert "cursor: pointer;" in _rule(css, ".ui-drop")
def test_표_격자_합친_칸():
ts, css = _t("ui_template_table.ts"), _t("ui_template_table.css")
assert "grid?: boolean" in ts and '" ui-table--grid"' in ts
assert "export interface SpanCell" in ts
assert "td.colSpan = span.colSpan" in ts and "td.rowSpan = span.rowSpan" in ts
assert 'el(span?.head ? "th" : "td"' in ts
assert "if (columns.length)" in ts # 머리 줄 없는 표
grid = _rule(css, ".ui-table--grid :is(th, td)")
assert "border: 1px solid var(--color-border);" in grid
assert "border-style: hidden;" in _rule(css, ".ui-table--grid")
# 기본 꼴 = 세로선 없음 그대로
assert "border-left" not in _rule(css, ".ui-table td")
assert not RAW.search(css)
kit = _t("ui_template_ui_kit_parts.ts")
assert "grid: true" in kit and "rowSpan: 2" in kit