designpaca/apps/site/tools/showcase-duo-e2e-report.md
Yun Chan 8e3cdb0d3b
Some checks are pending
ci / build (push) Waiting to run
feat(site): rework 19 marketing showcases for composition diversity
Measured convergence before: split hero 13/19, top-bar nav 19/19,
one-line notice footer 14/19, body Pretendard 17/21, 10 similarity
pairs above 0.78. Each showcase got a pre-assigned hero family, nav
form, footer form, type pair, background, accent hue, radius, motion
grammar and material from outputs/rework-2026-10-06/plan.md; direction
cards and the chosen reason are recorded in every design.md.

After: 0 similarity warnings, 19 distinct display faces, 7 hero
families, 5 nav forms, 5 footer forms, no scroll reveals, 5 showcases
with SVG filter materials. Example contact values replace bracket
placeholders under the existing fictional-brand notices. Thumbnails,
OG images, card copy and three e2e assertions updated; dead CSS in
dure-enrollment and hannam-jari removed; similarity.mjs learns the new
font families.
2026-10-06 16:55:50 +09:00

58 KiB

Showcase Duo E2E report

  • root: public
  • started: 2026-10-06T07:52:47.277Z
  • finished: 2026-10-06T07:54:06.729Z
  • scenarios: 90/90
  • assertions: 350/350 (350 passed)
  • failed scenarios: 0
  • visual evidence: 12/12
  • contract: PASS

Scenario results

result suite scenario assertions
PASS Chromium 반응형 한남자리 공개 320px 7/7
PASS Chromium 반응형 한남자리 공개 390px 7/7
PASS Chromium 반응형 한남자리 공개 768px 7/7
PASS Chromium 반응형 한남자리 공개 1440px 7/7
PASS Chromium 반응형 한남자리 관리자 320px 7/7
PASS Chromium 반응형 한남자리 관리자 390px 7/7
PASS Chromium 반응형 한남자리 관리자 768px 7/7
PASS Chromium 반응형 한남자리 관리자 1440px 7/7
PASS Chromium 반응형 철판클럽 공개 320px 7/7
PASS Chromium 반응형 철판클럽 공개 390px 7/7
PASS Chromium 반응형 철판클럽 공개 768px 7/7
PASS Chromium 반응형 철판클럽 공개 1440px 7/7
PASS Chromium 반응형 철판클럽 가맹 320px 7/7
PASS Chromium 반응형 철판클럽 가맹 390px 7/7
PASS Chromium 반응형 철판클럽 가맹 768px 7/7
PASS Chromium 반응형 철판클럽 가맹 1440px 7/7
PASS WebKit 한남자리 공개 390px 4/4
PASS WebKit 한남자리 공개 1440px 4/4
PASS WebKit 한남자리 관리자 390px 4/4
PASS WebKit 한남자리 관리자 1440px 4/4
PASS WebKit 철판클럽 공개 390px 4/4
PASS WebKit 철판클럽 공개 1440px 4/4
PASS WebKit 철판클럽 가맹 390px 4/4
PASS WebKit 철판클럽 가맹 1440px 4/4
PASS axe 접근성 한남자리 공개 390px 2/2
PASS axe 접근성 한남자리 공개 1440px 2/2
PASS axe 접근성 한남자리 관리자 390px 2/2
PASS axe 접근성 한남자리 관리자 1440px 2/2
PASS axe 접근성 철판클럽 공개 390px 2/2
PASS axe 접근성 철판클럽 공개 1440px 2/2
PASS axe 접근성 철판클럽 가맹 390px 2/2
PASS axe 접근성 철판클럽 가맹 1440px 2/2
PASS 성능과 자산 한남자리 공개 390px 4/4
PASS 성능과 자산 한남자리 공개 1440px 4/4
PASS 성능과 자산 한남자리 관리자 390px 4/4
PASS 성능과 자산 한남자리 관리자 1440px 4/4
PASS 성능과 자산 철판클럽 공개 390px 4/4
PASS 성능과 자산 철판클럽 공개 1440px 4/4
PASS 성능과 자산 철판클럽 가맹 390px 4/4
PASS 성능과 자산 철판클럽 가맹 1440px 4/4
PASS 점진 향상 한남자리 공개 JavaScript 없음 4/4
PASS 점진 향상 한남자리 공개 감소 모션 4/4
PASS 점진 향상 한남자리 관리자 JavaScript 없음 4/4
PASS 점진 향상 한남자리 관리자 감소 모션 4/4
PASS 점진 향상 철판클럽 공개 JavaScript 없음 4/4
PASS 점진 향상 철판클럽 공개 감소 모션 4/4
PASS 점진 향상 철판클럽 가맹 JavaScript 없음 4/4
PASS 점진 향상 철판클럽 가맹 감소 모션 4/4
PASS 한남자리 공개 기능 분석 전 다섯 조건과 범위 무결성 3/3
PASS 한남자리 공개 기능 매매 다섯 조건 briefing compare와 시각 증거 3/3
PASS 한남자리 공개 기능 전세 예산 면적 입주 주차 변형 3/3
PASS 한남자리 공개 기능 월세 보증금과 월 납부 분리 3/3
PASS 한남자리 공개 기능 세 후보 장면 matrix dossier 상담 동기화 3/3
PASS 한남자리 공개 기능 면적과 가격 단위 왕복 3/3
PASS 한남자리 공개 기능 서류철 다섯 탭 클릭과 키보드 3/3
PASS 한남자리 공개 기능 다섯 조건 저장과 상담 무부작용 3/3
PASS 철판클럽 공개 기능 메뉴 분류 필터 3/3
PASS 철판클럽 공개 기능 메뉴 빈 상태와 전체 복구 3/3
PASS 철판클럽 공개 기능 매운 더블 프리셋 3/3
PASS 철판클럽 공개 기능 세트 조합과 시각 증거 3/3
PASS 철판클럽 공개 기능 재료 조정과 알레르기 재계산 3/3
PASS 철판클럽 공개 기능 영업 종료 매장 선택 경계 3/3
PASS 철판클럽 공개 기능 매장 검색 일치 3/3
PASS 철판클럽 공개 기능 매장 검색 빈 결과와 복구 3/3
PASS 철판클럽 공개 기능 조합 결과 즉시 반영과 미저장 안내 3/3
PASS 철판클럽 공개 기능 선택 결과에서 가상 매장 안내로 이동 3/3
PASS 철판클럽 가맹 기능 첫 단계 필수값 오류 3/3
PASS 철판클럽 가맹 기능 첫 단계 정상 전환 3/3
PASS 철판클럽 가맹 기능 점포 면적 조건부 환산 3/3
PASS 철판클럽 가맹 기능 두 번째 단계 오류와 복구 3/3
PASS 철판클럽 가맹 기능 검토 값과 시각 증거 3/3
PASS 철판클럽 가맹 기능 문의 체험 동의 오류 3/3
PASS 철판클럽 가맹 기능 문의 준비 완료와 다시 시작 3/3
PASS 철판클럽 가맹 기능 문의 준비 실패와 재시도 3/3
PASS 한남자리 관리자 기능 초기 선택과 조사관 동기화 3/3
PASS 한남자리 관리자 기능 행 선택 전환 3/3
PASS 한남자리 관리자 기능 검색 일치 결과 3/3
PASS 한남자리 관리자 기능 검색 빈 상태와 초기화 복구 3/3
PASS 한남자리 관리자 기능 검수 필요 상태 필터 3/3
PASS 한남자리 관리자 기능 매물명 오름차순 정렬 3/3
PASS 한남자리 관리자 기능 불러오는 중과 정상 복구 3/3
PASS 한남자리 관리자 기능 강제 빈 대기열과 복구 3/3
PASS 한남자리 관리자 기능 불러오기 실패와 마지막 자료 복구 3/3
PASS 한남자리 관리자 기능 자료 오래됨과 정상 복구 3/3
PASS 한남자리 관리자 기능 버전 충돌 저장 실패와 정상 재시도 3/3
PASS 한남자리 관리자 기능 권한 제한과 정상 복구 3/3
PASS 한남자리 관리자 기능 키보드 탭과 첫 누락 초점 3/3
PASS 한남자리 관리자 기능 실제 광고 차단 대화상자와 시각 증거 3/3
PASS 한남자리 관리자 기능 AI 주장 검토 완료 3/3
PASS 한남자리 관리자 기능 새 예시 초안 생성 3/3

Visual evidence

name file geometry bytes sha256
estate-public-390 tools/.gen/showcase-duo/estate-public-390.png 390x844 105194 629d2d01d8667468bdd85847fc7e616b140aecc15a224f95f41b06b2a34c4fed
estate-public-1440 tools/.gen/showcase-duo/estate-public-1440.png 1440x900 640293 f486eb99eb230346649cb9d2bfcb0d516f839667773d78402501aa3444c49433
estate-admin-390 tools/.gen/showcase-duo/estate-admin-390.png 390x844 89860 52ffd23cbeab4e5a4b8bda7f6f4550fe6a2944b17520e857cc28a3570631cabc
estate-admin-1440 tools/.gen/showcase-duo/estate-admin-1440.png 1440x900 165758 f45525bccfbc182ddd1c0b73785a8c404d6b0554fd84b30c42e6f8035b5721dc
burger-public-390 tools/.gen/showcase-duo/burger-public-390.png 390x844 139669 7a40e55d7ff011f567802388662270554642e1bf5bd7c8124fbe7a982f75c639
burger-public-1440 tools/.gen/showcase-duo/burger-public-1440.png 1440x900 567922 35adbb3e26109e8abba8bfd047ebf32c5f24d57ecb6525c324c9219244b949fc
burger-franchise-390 tools/.gen/showcase-duo/burger-franchise-390.png 390x844 164874 7e5eaf098e1a34cb100fed7830723008335d1c5e051b00f613848ad53c8b13ea
burger-franchise-1440 tools/.gen/showcase-duo/burger-franchise-1440.png 1440x900 469301 f9016c9d9fdb081aafcbe5f3edae5851221b523c608461e18d46244a25888788
estate-ai-adjusted-1440 tools/.gen/showcase-duo/estate-ai-adjusted-1440.png 1440x900 55216 88790d166f9748141e21643211c808c538e2ed8a1dcbb88f185e1582a07cd017
burger-builder-valid-1440 tools/.gen/showcase-duo/burger-builder-valid-1440.png 1440x900 81082 4bc72f685d438610460f8bf49ec0d1c93625ac7ed6c1f239af78e5614acc9867
burger-franchise-review-1440 tools/.gen/showcase-duo/burger-franchise-review-1440.png 1440x900 110776 d50e8562a9c3fa2055470c80e4bc97435d78b8b8966b08e9bbffa3d9116ca2dc
estate-admin-block-dialog-1440 tools/.gen/showcase-duo/estate-admin-block-dialog-1440.png 1440x900 227618 4c58ce7e0f15336ac6a00698449f1f9db49c62706d7acdc5e7796e6d29b7d59b

Assertion ledger

PASS · Chromium 반응형 · 한남자리 공개 320px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 320
    • actual: 320
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 844
    • actual: 6836

PASS · Chromium 반응형 · 한남자리 공개 390px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 390x844, >10KB, sha256
    • actual: {"pass":true,"name":"estate-public-390","file":"tools/.gen/showcase-duo/estate-public-390.png","exists":true,"width":390,"height":844,"bytes":105194,"sha256":"629d2d01d8667468bdd85847fc7e616b140aecc15a224f95f41b06b2a34c4fed"}

PASS · Chromium 반응형 · 한남자리 공개 768px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 768
    • actual: 768
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 900
    • actual: 5914

PASS · Chromium 반응형 · 한남자리 공개 1440px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 1440x900, >10KB, sha256
    • actual: {"pass":true,"name":"estate-public-1440","file":"tools/.gen/showcase-duo/estate-public-1440.png","exists":true,"width":1440,"height":900,"bytes":640293,"sha256":"f486eb99eb230346649cb9d2bfcb0d516f839667773d78402501aa3444c49433"}

PASS · Chromium 반응형 · 한남자리 관리자 320px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 320
    • actual: 320
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 844
    • actual: 2039

PASS · Chromium 반응형 · 한남자리 관리자 390px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 390x844, >10KB, sha256
    • actual: {"pass":true,"name":"estate-admin-390","file":"tools/.gen/showcase-duo/estate-admin-390.png","exists":true,"width":390,"height":844,"bytes":89860,"sha256":"52ffd23cbeab4e5a4b8bda7f6f4550fe6a2944b17520e857cc28a3570631cabc"}

PASS · Chromium 반응형 · 한남자리 관리자 768px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 768
    • actual: 768
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 900
    • actual: 1681

PASS · Chromium 반응형 · 한남자리 관리자 1440px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 1
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 1440x900, >10KB, sha256
    • actual: {"pass":true,"name":"estate-admin-1440","file":"tools/.gen/showcase-duo/estate-admin-1440.png","exists":true,"width":1440,"height":900,"bytes":165758,"sha256":"f45525bccfbc182ddd1c0b73785a8c404d6b0554fd84b30c42e6f8035b5721dc"}

PASS · Chromium 반응형 · 철판클럽 공개 320px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 320
    • actual: 320
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 844
    • actual: 10441

PASS · Chromium 반응형 · 철판클럽 공개 390px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 390x844, >10KB, sha256
    • actual: {"pass":true,"name":"burger-public-390","file":"tools/.gen/showcase-duo/burger-public-390.png","exists":true,"width":390,"height":844,"bytes":139669,"sha256":"7a40e55d7ff011f567802388662270554642e1bf5bd7c8124fbe7a982f75c639"}

PASS · Chromium 반응형 · 철판클럽 공개 768px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 768
    • actual: 768
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 900
    • actual: 8652

PASS · Chromium 반응형 · 철판클럽 공개 1440px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 상태 시각 증거
    • expected: 1440x900, >10KB, sha256
    • actual: {"pass":true,"name":"burger-public-1440","file":"tools/.gen/showcase-duo/burger-public-1440.png","exists":true,"width":1440,"height":900,"bytes":567922,"sha256":"35adbb3e26109e8abba8bfd047ebf32c5f24d57ecb6525c324c9219244b949fc"}

PASS · Chromium 반응형 · 철판클럽 가맹 320px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 320
    • actual: 320
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 844
    • actual: 10546

PASS · Chromium 반응형 · 철판클럽 가맹 390px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 시각 증거와 영웅 행동 정렬
    • expected: 390x844, controls >=44px, center diff <=2px
    • actual: {"shot":{"pass":true,"name":"burger-franchise-390","file":"tools/.gen/showcase-duo/burger-franchise-390.png","exists":true,"width":390,"height":844,"bytes":164874,"sha256":"7e5eaf098e1a34cb100fed7830723008335d1c5e051b00f613848ad53c8b13ea"},"heroActions":[{"selector":"button button-primary","height":52,"centerY":389.109375},{"selector":"button button-ghost","height":52,"centerY":389.109375}]}

PASS · Chromium 반응형 · 철판클럽 가맹 768px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 768
    • actual: 768
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 문서가 뷰포트를 채움
    • expected: height >= 900
    • actual: 8988

PASS · Chromium 반응형 · 철판클럽 가맹 1440px

  • PASS · HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · 문서 h1 정확히 하나
    • expected: 1
    • actual: 1
  • PASS · h1 최대 두 줄
    • expected: 1~2 lines
    • actual: 2
  • PASS · 보이는 텍스트 대비 AA
    • expected: 0 violations
    • actual: []
  • PASS · 이미지와 런타임 무결성
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}
  • PASS · 기본 시각 증거와 영웅 행동 정렬
    • expected: 1440x900, controls >=44px, center diff <=2px
    • actual: {"shot":{"pass":true,"name":"burger-franchise-1440","file":"tools/.gen/showcase-duo/burger-franchise-1440.png","exists":true,"width":1440,"height":900,"bytes":469301,"sha256":"f9016c9d9fdb081aafcbe5f3edae5851221b523c608461e18d46244a25888788"},"heroActions":[{"selector":"button button-primary","height":52,"centerY":623},{"selector":"button button-ghost","height":52,"centerY":623}]}

PASS · WebKit · 한남자리 공개 390px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":1}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 한남자리 공개 1440px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":1}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 한남자리 관리자 390px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":1}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 한남자리 관리자 1440px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":1}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 철판클럽 공개 390px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":2}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 철판클럽 공개 1440px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":2}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 철판클럽 가맹 390px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 390
    • actual: 390
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":2}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · WebKit · 철판클럽 가맹 1440px

  • PASS · WebKit HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · WebKit 가로 오버플로 없음
    • expected: <= 1440
    • actual: 1440
  • PASS · WebKit 제목 구조
    • expected: 1 h1 / 1~2 lines
    • actual: {"count":1,"lines":2}
  • PASS · WebKit 이미지와 런타임
    • expected: 0 broken / 0 errors
    • actual: {"broken":[],"errors":[]}

PASS · axe 접근성 · 한남자리 공개 390px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 한남자리 공개 1440px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 한남자리 관리자 390px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 한남자리 관리자 1440px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 철판클럽 공개 390px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 철판클럽 공개 1440px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 철판클럽 가맹 390px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · axe 접근성 · 철판클럽 가맹 1440px

  • PASS · 중대 접근성 위반 없음
    • expected: 0 critical/serious
    • actual: []
  • PASS · 보통 접근성 위반 없음
    • expected: 0 moderate
    • actual: []

PASS · 성능과 자산 · 한남자리 공개 390px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..266240 bytes
    • actual: 111090
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 27928
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 37338

PASS · 성능과 자산 · 한남자리 공개 1440px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..358400 bytes
    • actual: 214514
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 27928
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 37338

PASS · 성능과 자산 · 한남자리 관리자 390px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..266240 bytes
    • actual: 44804
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 25025
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 45921

PASS · 성능과 자산 · 한남자리 관리자 1440px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..358400 bytes
    • actual: 44804
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 25025
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 45921

PASS · 성능과 자산 · 철판클럽 공개 390px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..266240 bytes
    • actual: 173120
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 10858
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 39420

PASS · 성능과 자산 · 철판클럽 공개 1440px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..358400 bytes
    • actual: 251772
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 10858
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 39420

PASS · 성능과 자산 · 철판클럽 가맹 390px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0
  • PASS · 첫 화면 이미지 예산
    • expected: 0..266240 bytes
    • actual: 119384
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 11769
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 57270

PASS · 성능과 자산 · 철판클럽 가맹 1440px

  • PASS · CLS 예산
    • expected: <= 0.1
    • actual: 0.0025
  • PASS · 첫 화면 이미지 예산
    • expected: 0..358400 bytes
    • actual: 119384
  • PASS · 로컬 자바스크립트 예산
    • expected: 1..180KB
    • actual: 11769
  • PASS · 로컬 CSS 예산
    • expected: 1..180KB
    • actual: 57270

PASS · 점진 향상 · 한남자리 공개 JavaScript 없음

  • PASS · 무자바스크립트 HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 핵심 문서 구조 유지
    • expected: visible h1 and main
    • actual: {"h1":true,"main":true}
  • PASS · 읽기 가능한 정적 대안
    • expected: true
    • actual: true
  • PASS · 무자바스크립트 깨진 이미지
    • expected: 0
    • actual: 0

PASS · 점진 향상 · 한남자리 공개 감소 모션

  • PASS · 감소 모션 미디어 일치
    • expected: true
    • actual: true
  • PASS · 부드러운 스크롤 해제
    • expected: auto
    • actual: auto
  • PASS · 반복 애니메이션 제거
    • expected: <= 0.01s
    • actual: 0.00001
  • PASS · 감소 모션에서도 핵심 작동
    • expected: route-specific state changed
    • actual: 35.8평

PASS · 점진 향상 · 한남자리 관리자 JavaScript 없음

  • PASS · 무자바스크립트 HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 핵심 문서 구조 유지
    • expected: visible h1 and main
    • actual: {"h1":true,"main":true}
  • PASS · 읽기 가능한 정적 대안
    • expected: true
    • actual: true
  • PASS · 무자바스크립트 깨진 이미지
    • expected: 0
    • actual: 0

PASS · 점진 향상 · 한남자리 관리자 감소 모션

  • PASS · 감소 모션 미디어 일치
    • expected: true
    • actual: true
  • PASS · 부드러운 스크롤 해제
    • expected: auto
    • actual: auto
  • PASS · 반복 애니메이션 제거
    • expected: <= 0.01s
    • actual: 0.00001
  • PASS · 감소 모션에서도 핵심 작동
    • expected: route-specific state changed
    • actual: true

PASS · 점진 향상 · 철판클럽 공개 JavaScript 없음

  • PASS · 무자바스크립트 HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 핵심 문서 구조 유지
    • expected: visible h1 and main
    • actual: {"h1":true,"main":true}
  • PASS · 읽기 가능한 정적 대안
    • expected: true
    • actual: true
  • PASS · 무자바스크립트 깨진 이미지
    • expected: 0
    • actual: 0

PASS · 점진 향상 · 철판클럽 공개 감소 모션

  • PASS · 감소 모션 미디어 일치
    • expected: true
    • actual: true
  • PASS · 부드러운 스크롤 해제
    • expected: auto
    • actual: auto
  • PASS · 반복 애니메이션 제거
    • expected: <= 0.01s
    • actual: 0.00001
  • PASS · 감소 모션에서도 핵심 작동
    • expected: route-specific state changed
    • actual: 2

PASS · 점진 향상 · 철판클럽 가맹 JavaScript 없음

  • PASS · 무자바스크립트 HTTP 상태
    • expected: 200
    • actual: 200
  • PASS · 핵심 문서 구조 유지
    • expected: visible h1 and main
    • actual: {"h1":true,"main":true}
  • PASS · 읽기 가능한 정적 대안
    • expected: true
    • actual: true
  • PASS · 무자바스크립트 깨진 이미지
    • expected: 0
    • actual: 0

PASS · 점진 향상 · 철판클럽 가맹 감소 모션

  • PASS · 감소 모션 미디어 일치
    • expected: true
    • actual: true
  • PASS · 부드러운 스크롤 해제
    • expected: auto
    • actual: auto
  • PASS · 반복 애니메이션 제거
    • expected: <= 0.01s
    • actual: 0.00001
  • PASS · 감소 모션에서도 핵심 작동
    • expected: route-specific state changed
    • actual: 확인용 호칭을 두 글자 이상 입력해 주세요.

PASS · 한남자리 공개 기능 · 분석 전 다섯 조건과 범위 무결성

  • PASS · 보이는 의사결정 필드 집합
    • expected: ["budget","minArea","moveIn","parking","trade"]
    • actual: [{"name":"trade","visible":true},{"name":"budget","visible":true},{"name":"minArea","visible":true},{"name":"moveIn","visible":true},{"name":"parking","visible":true}]
  • PASS · 분석 전 briefing matrix dossier 미실행 상태
    • expected: empty visible / groups hidden / five 분석 후 notes / no 적합 claim
    • actual: {"emptyVisible":true,"groupsHidden":true,"listItems":0,"analysisHome":"아직 분석하지 않았습니다","analysisText":"\n 공인중개사 확인 전 안내용 비교아직 분석하지 않았습니다\n \n 01\n 내 조건을 먼저 알려 주세요.분석을 실행하면 세 후보 가운데 조건과 가까운 집을 고르고, 이유를 세 묶음으로 정리합니다.\n 조건 입력으로 이동\n \n \n 01조건과 맞는 점\n 02조정이 필요한 점\n 03중개사와 확인할 점\n \n ","matrixNotes":["분석 후 거래 조건 대조","분석 후 예산과 대조","분석 후 면적과 대조","분석 후 주차와 대조","분석 후 입주일과 대조"],"dossierFit":"브리핑을 실행하면 입력 조건과의 관계를 표시합니다."}
  • PASS · 공개 범위 고지와 금지 토큰
    • expected: scoped 예시 labels / every image 연출 / footer limits / no legacy tokens
    • actual: {"forbidden":[],"candidateScopes":1,"dossierScopes":1,"imageCount":6,"imageProvenance":["연출 이미지","연출 이미지","연출 이미지","연출 이미지","연출 이미지","연출 이미지"],"demoStrip":"예시 자료입니다. 상담은 접수되지 않습니다.","limitItems":2,"footer":"한남자리는 예시 자료로 구성한 서비스 화면입니다. 등록 공인중개사무소나 거래 서비스를 제공하지 않습니다."}

PASS · 한남자리 공개 기능 · 매매 다섯 조건 briefing compare와 시각 증거

  • PASS · 브리핑 세 묶음 생성
    • expected: empty hidden / groups visible / all lists populated
    • actual: {"emptyHidden":true,"groupsVisible":true,"counts":[1,4,2],"home":"정원형 연립주택 브리핑"}
  • PASS · 선택 후보와 다섯 조건 compare dossier 동기화
    • expected: home-1 / 5 resolved matrix notes / dossier recomputed
    • actual: {"selected":"home-1","matrixValues":["매매","38억 원","118.42㎡","2대","2026.12.20 이후 협의"],"matrixNotes":["입력과 같음","예산보다 18억 높음","최소보다 11.58㎡ 작음","1대 부족","희망일보다 늦음"],"dossier":"정원형 연립주택","dossierFit":"매매 조건과 같습니다."}
  • PASS · 새 briefing compare 시각 증거
    • expected: exists / 1440x900 / >10KB / sha256
    • actual: {"pass":true,"name":"estate-ai-adjusted-1440","file":"tools/.gen/showcase-duo/estate-ai-adjusted-1440.png","exists":true,"width":1440,"height":900,"bytes":55216,"sha256":"88790d166f9748141e21643211c808c538e2ed8a1dcbb88f185e1582a07cd017"}

PASS · 한남자리 공개 기능 · 전세 예산 면적 입주 주차 변형

  • PASS · 전세 후보와 서류철 선택
    • expected: home-2 / 복층형 공동주택
    • actual: {"selected":"home-2","analysis":"복층형 공동주택 브리핑","dossier":"복층형 공동주택"}
  • PASS · 다섯 입력만 의사결정 주장에 반영
    • expected: trade/price/area/parking/move and no commute/sunlight
    • actual: {"titles":["거래 형태","가격 상한","전용면적","주차","입주 시점"],"text":"\n 01조건과 맞는 점거래 형태전세 조건과 같습니다.입력한 조건과 매물 정보\n 02조정이 필요한 점가격 상한입력한 상한보다 1억 원 높습니다.입력한 조건과 매물 정보전용면적최소 면적보다 2.20㎡ 작습니다.입력한 조건과 매물 정보주차필요한 수보다 1대 부족합니다.입력한 조건과 매물 정보입주 시점2027.01.15 이후 협의으로 입력한 희망일보다 늦습니다.입력한 조건과 매물 정보\n 03중개사와 확인할 점권리 관계등기와 계약 조건은 등기부등본과 계약서로 다시 확인해야 합니다.공인중개사 확인현장 상태소음, 마감과 채광은 방문해서 확인해야 합니다.현장 확인\n "}
  • PASS · 전세 다섯 조건 matrix 판정
    • expected: same / +1억 / -2.20㎡ / -1 car / late
    • actual: ["입력과 같음","예산보다 1억 높음","최소보다 2.20㎡ 작음","1대 부족","희망일보다 늦음"]

PASS · 한남자리 공개 기능 · 월세 보증금과 월 납부 분리

  • PASS · 월세 후보와 서류철 선택
    • expected: home-3 / 테라스형 다세대주택
    • actual: {"selected":"home-3","analysis":"테라스형 다세대주택 브리핑","dossier":"테라스형 다세대주택"}
  • PASS · 보증금만으로 가격 적합 처리 금지
    • expected: no price fit / 월 납부 조건 in adjust
    • actual: {"fitTitles":["거래 형태","전용면적","주차","입주 시점"],"adjustTitles":["월 납부 조건"],"adjustText":"월 납부 조건보증금은 상한 안쪽이지만 월 1,200만 원을 별도로 살펴야 합니다.입력한 조건과 매물 정보"}
  • PASS · 월세 matrix dossier에 별도 확인 유지
    • expected: deposit + monthly / monthly note in matrix and dossier
    • actual: {"price":"보증금 5억 · 월 1,200만","note":"보증금은 상한 안쪽, 월 납부 별도","dossierRisk":"보증금은 상한 안쪽이지만 월 1,200만 원을 별도로 살펴야 합니다.등기와 계약 조건은 등기부등본과 계약서로 다시 확인해야 합니다.소음, 마감과 채광은 방문해서 확인해야 합니다."}

PASS · 한남자리 공개 기능 · 세 후보 장면 matrix dossier 상담 동기화

  • PASS · 정원형 연립주택 전체 표면 동기화
    • expected: home-1 / image / five matrix / dossier / consult
    • actual: {"snapshot":{"selected":"home-1","selectedCount":1,"scene":"정원형 연립주택","image":"./assets/hannam-interior-1200.webp","imageAlt":"큰 창과 목재 수납이 있는 거실을 표현한 이미지","matrix":["매매","38억 원","118.42㎡","2대","2026.12.20 이후 협의"],"dossier":"정원형 연립주택","specs":["매매","38억 원","118.42㎡","2대","2026.12.20 이후 협의"],"consult":"정원형 연립주택"},"expected":{"id":"home-1","name":"정원형 연립주택","image":"hannam-interior-1200.webp","matrix":["매매","38억 원","118.42㎡","2대","2026.12.20 이후 협의"]}}
  • PASS · 복층형 공동주택 전체 표면 동기화
    • expected: home-2 / image / five matrix / dossier / consult
    • actual: {"snapshot":{"selected":"home-2","selectedCount":1,"scene":"복층형 공동주택","image":"./assets/hannam-evening-1600.webp","imageAlt":"서울 언덕 생활권의 현대 주거 외관을 표현한 이미지","matrix":["전세","22억 원","142.80㎡","2대","2027.01.15 이후 협의"],"dossier":"복층형 공동주택","specs":["전세","22억 원","142.80㎡","2대","2027.01.15 이후 협의"],"consult":"복층형 공동주택"},"expected":{"id":"home-2","name":"복층형 공동주택","image":"hannam-evening-1600.webp","matrix":["전세","22억 원","142.80㎡","2대","2027.01.15 이후 협의"]}}
  • PASS · 테라스형 다세대주택 전체 표면 동기화
    • expected: home-3 / image / five matrix / dossier / consult
    • actual: {"snapshot":{"selected":"home-3","selectedCount":1,"scene":"테라스형 다세대주택","image":"./assets/hannam-interior-1200.webp","imageAlt":"큰 창과 목재 수납이 있는 거실을 표현한 이미지","matrix":["월세","보증금 5억 · 월 1,200만","140.84㎡","1대","2026.11.01 이후 협의"],"dossier":"테라스형 다세대주택","specs":["월세","보증금 5억 · 월 1,200만","140.84㎡","1대","2026.11.01 이후 협의"],"consult":"테라스형 다세대주택"},"expected":{"id":"home-3","name":"테라스형 다세대주택","image":"hannam-interior-1200.webp","matrix":["월세","보증금 5억 · 월 1,200만","140.84㎡","1대","2026.11.01 이후 협의"]}}

PASS · 한남자리 공개 기능 · 면적과 가격 단위 왕복

  • PASS · 평 단위 전체 비교 표면
    • expected: pressed / 3 candidate areas / matrix and dossier 35.8평
    • actual: {"pressed":"true","candidates":["35.8평","43.2평","42.6평"],"matrix":"35.8평","spec":"35.8평"}
  • PASS · 면적 단가 matrix dossier 반영
    • expected: unit pressed / both price values are per-pyeong
    • actual: {"pressed":"true","matrix":"평당 약 10,610만 원","spec":"평당 약 10,610만 원"}
  • PASS · 총액과 제곱미터 복원
    • expected: m2 and total pressed / 118.42㎡ / 38억 원
    • actual: {"areaPressed":"true","pricePressed":"true","area":"118.42㎡","price":"38억 원"}

PASS · 한남자리 공개 기능 · 서류철 다섯 탭 클릭과 키보드

  • PASS · 가격 탭 클릭 상태
    • expected: price selected/focused/sole visible/tabstop
    • actual: {"selected":"price","selectedCount":1,"visible":["price"],"focus":"price","tabStops":["price"]}
  • PASS · 화살표와 Home 키보드 순환
    • expected: rights → location → facility → basic with focus
    • actual: [{"selected":"rights","selectedCount":1,"visible":["rights"],"focus":"rights","tabStops":["rights"]},{"selected":"location","selectedCount":1,"visible":["location"],"focus":"location","tabStops":["location"]},{"selected":"facility","selectedCount":1,"visible":["facility"],"focus":"facility","tabStops":["facility"]},{"selected":"basic","selectedCount":1,"visible":["basic"],"focus":"basic","tabStops":["basic"]}]
  • PASS · 다섯 탭 aria-controls 관계
    • expected: 5 unique tabs map to 5 panels
    • actual: [{"name":"basic","controls":"dossier-basic","panel":"basic","role":"tab"},{"name":"price","controls":"dossier-price","panel":"price","role":"tab"},{"name":"rights","controls":"dossier-rights","panel":"rights","role":"tab"},{"name":"location","controls":"dossier-location","panel":"location","role":"tab"},{"name":"facility","controls":"dossier-facility","panel":"facility","role":"tab"}]

PASS · 한남자리 공개 기능 · 다섯 조건 저장과 상담 무부작용

  • PASS · 로컬 저장은 다섯 필드만
    • expected: exact fields and typed values / no network mutation
    • actual: {"saved":{"trade":"monthly","budget":31,"minArea":135,"moveIn":"2027-02-01","parking":1},"externalMutations":[]}
  • PASS · 새로고침 뒤 다섯 입력 복원
    • expected: monthly / 31 / 135 / 2027-02-01 / 1
    • actual: {"trade":"monthly","budget":"31","minArea":"135","moveIn":"2027-02-01","parking":"1"}
  • PASS · 상담 완료 바깥 클릭 Escape와 초점 복귀
    • expected: preview only / both close / trigger focus / storage unchanged / no requests
    • actual: {"finished":"준비할 순서권리 관계와 계약 조건현장 방문 때 볼 항목","outside":{"open":false,"locked":false,"focus":true},"escape":{"open":false,"locked":false,"focus":true,"storage":"{"trade":"monthly","budget":31,"minArea":135,"moveIn":"2027-02-01","parking":1}"},"saved":"{"trade":"monthly","budget":31,"minArea":135,"moveIn":"2027-02-01","parking":1}","externalMutations":[]}

PASS · 철판클럽 공개 기능 · 메뉴 분류 필터

  • PASS · 곁들임 필터 선택
    • expected: true
    • actual: true
  • PASS · 곁들임 두 항목만 노출
    • expected: 2 side items
    • actual: ["side","side"]
  • PASS · 필터 결과가 있어 빈 상태 숨김
    • expected: true
    • actual: true

PASS · 철판클럽 공개 기능 · 메뉴 빈 상태와 전체 복구

  • PASS · 메뉴 빈 상태 노출
    • expected: true
    • actual: true
  • PASS · 빈 상태에서 메뉴 0개
    • expected: 0
    • actual: 0
  • PASS · 모든 메뉴 보기로 복구
    • expected: fixture removed and six items visible
    • actual: {"query":"","count":6}

PASS · 철판클럽 공개 기능 · 매운 더블 프리셋

  • PASS · 매운 맛과 더블 동시 선택
    • expected: 2
    • actual: 2
  • PASS · 프리셋 이름 반영
    • expected: 고추 피클 더블
    • actual: 고추 피클 더블
  • PASS · 매운 조합 알레르기 반영
    • expected: contains 토마토
    • actual: 알, 우유, 대두, 밀, 쇠고기, 토마토

PASS · 철판클럽 공개 기능 · 세트 조합과 시각 증거

  • PASS · 세트 선택 뒤 곁들임 입력 활성
    • expected: side and drink enabled
    • actual: [false,false]
  • PASS · 세트 예시 총액 계산
    • expected: 13,000원
    • actual: 13,000원
  • PASS · 유효 버거 조합 시각 증거
    • expected: 1440x900, >10KB, sha256
    • actual: {"pass":true,"name":"burger-builder-valid-1440","file":"tools/.gen/showcase-duo/burger-builder-valid-1440.png","exists":true,"width":1440,"height":900,"bytes":81082,"sha256":"4bc72f685d438610460f8bf49ec0d1c93625ac7ed6c1f239af78e5614acc9867"}

PASS · 철판클럽 공개 기능 · 재료 조정과 알레르기 재계산

  • PASS · 재료 문장 동기화
    • expected: no cheese / extra onion / sauce side
    • actual: 패티 두 장 / 치즈 없음 / 양파 많이 / 피클 기본 / 소스 따로
  • PASS · 우유 알레르기 제거
    • expected: does not contain 우유
    • actual: 알, 대두, 밀, 쇠고기
  • PASS · 재료 변경 총액 계산
    • expected: 8,500원
    • actual: 8,500원

PASS · 철판클럽 공개 기능 · 영업 종료 매장 선택 경계

  • PASS · 목록과 지도 연남 선택
    • expected: yeonnam selected in both
    • actual: {"card":"yeonnam","pin":"yeonnam"}
  • PASS · 종료 상태 요약
    • expected: contains 영업 종료
    • actual: 오늘 영업 종료
  • PASS · 가상 매장 안내 행동
    • expected: #stores / 가상 매장 안내 보기
    • actual: {"href":"#stores","text":"가상 매장 안내 보기"}

PASS · 철판클럽 공개 기능 · 매장 검색 일치

  • PASS · 검색 결과 한 매장
    • expected: 1
    • actual: 1
  • PASS · 검색 결과와 지도 핀 일치
    • expected: yeonnam
    • actual: yeonnam
  • PASS · 검색어가 있어 지우기 노출
    • expected: false
    • actual: false

PASS · 철판클럽 공개 기능 · 매장 검색 빈 결과와 복구

  • PASS · 매장 빈 상태 노출
    • expected: true
    • actual: true
  • PASS · 빈 검색 결과 0개
    • expected: 0
    • actual: 0
  • PASS · 검색 조건 초기화로 세 매장 복구
    • expected: blank query / 3 stores
    • actual: {"query":"","count":3}

PASS · 철판클럽 공개 기능 · 조합 결과 즉시 반영과 미저장 안내

  • PASS · 조합 결과 즉시 반영
    • expected: contains 양파 많이
    • actual: 패티 두 장 / 치즈 한 장 / 양파 많이 / 피클 기본 / 소스 기본
  • PASS · 선택 내용은 브라우저에 저장하지 않음
    • expected: null
    • actual: null
  • PASS · 주문 미제공 안내
    • expected: contains 주문과 결제는 진행되지 않습니다
    • actual: 이 페이지는 메뉴 조합을 살펴보는 안내 페이지이며, 주문과 결제는 진행되지 않습니다.

PASS · 철판클럽 공개 기능 · 선택 결과에서 가상 매장 안내로 이동

  • PASS · 가상 매장 안내 앵커 이동
    • expected: #stores
    • actual: #stores
  • PASS · 가상 매장 안내 섹션이 보임
    • expected: true
    • actual: true
  • PASS · 이동 뒤에도 선택 내용을 저장하지 않음
    • expected: null
    • actual: null

PASS · 철판클럽 가맹 기능 · 첫 단계 필수값 오류

  • PASS · 첫 단계 오류 세 가지
    • expected: name / region / area kind
    • actual: ["확인용 호칭을 두 글자 이상 입력해 주세요.","희망 지역을 골라 주세요.","희망 상권을 골라 주세요."]
  • PASS · 첫 오류 입력으로 초점
    • expected: demo-name
    • actual: demo-name
  • PASS · 오류 뒤 첫 단계 유지
    • expected: 1
    • actual: 1

PASS · 철판클럽 가맹 기능 · 첫 단계 정상 전환

  • PASS · 두 번째 단계 노출
    • expected: 2
    • actual: 2
  • PASS · 단계 표시 aria-current
    • expected: 2
    • actual: 2
  • PASS · 두 번째 제목으로 초점 이동
    • expected: step-two-heading
    • actual: step-two-heading

PASS · 철판클럽 가맹 기능 · 점포 면적 조건부 환산

  • PASS · 협의 중이면 면적 입력 노출
    • expected: true
    • actual: true
  • PASS · 면적 입력 필수 전환
    • expected: true
    • actual: true
  • PASS · 제곱미터와 평 환산 병기
    • expected: contains 약 30평
    • actual: 99.2㎡, 약 30평

PASS · 철판클럽 가맹 기능 · 두 번째 단계 오류와 복구

  • PASS · 두 번째 단계 누락 오류
    • expected: possession / opening / experience
    • actual: ["점포 상태를 골라 주세요.","희망 시작 시기를 골라 주세요.","운영 경험 여부를 골라 주세요."]
  • PASS · 입력 뒤 오류 속성 해제
    • expected: all aria-invalid removed
    • actual: 0
  • PASS · 복구 뒤 검토 단계 진입
    • expected: 3
    • actual: 3

PASS · 철판클럽 가맹 기능 · 검토 값과 시각 증거

  • PASS · 검토 원장에 입력값 반영
    • expected: name / region / possession
    • actual: {"demoName":"예시점주","region":"서울 동쪽","areaKind":"주거지","storePossession":"협의 중","exclusiveArea":"99.2㎡, 약 30평","openingWindow":"석 달에서 여섯 달","experience":"없음"}
  • PASS · 검토 원장에 면적 환산
    • expected: contains 약 30평
    • actual: 99.2㎡, 약 30평
  • PASS · 가맹 검토 단계 시각 증거
    • expected: 1440x900, >10KB, sha256
    • actual: {"pass":true,"name":"burger-franchise-review-1440","file":"tools/.gen/showcase-duo/burger-franchise-review-1440.png","exists":true,"width":1440,"height":900,"bytes":110776,"sha256":"d50e8562a9c3fa2055470c80e4bc97435d78b8b8966b08e9bbffa3d9116ca2dc"}

PASS · 철판클럽 가맹 기능 · 문의 체험 동의 오류

  • PASS · 동의 입력 aria-invalid
    • expected: true
    • actual: true
  • PASS · 동의 오류 이유
    • expected: contains 확인해 주세요
    • actual: 개인정보를 입력하지 않았는지 확인해 주세요.
  • PASS · 동의 입력으로 초점
    • expected: demo-consent
    • actual: demo-consent

PASS · 철판클럽 가맹 기능 · 문의 준비 완료와 다시 시작

  • PASS · 성공 패널로 전환
    • expected: success visible / form hidden
    • actual: {"success":true,"form":true}
  • PASS · 입력 내용 다시 보기 3단계
    • expected: 3
    • actual: 3
  • PASS · 처음부터 보기 입력 초기화
    • expected: step 1 / blank name
    • actual: {"step":"1","name":""}

PASS · 철판클럽 가맹 기능 · 문의 준비 실패와 재시도

  • PASS · 제출 실패 이유
    • expected: contains 확인할 수 없어요
    • actual: 지금은 입력한 조건을 확인할 수 없어요. 입력한 값은 그대로 두었습니다.
  • PASS · 재시도 버튼 복구
    • expected: enabled / 다시 시도하기
    • actual: {"disabled":false,"text":"다시 시도하기"}
  • PASS · 실패 뒤 입력과 단계 보존
    • expected: step 3 / name retained
    • actual: {"step":"3","name":"예시점주"}

PASS · 한남자리 관리자 기능 · 초기 선택과 조사관 동기화

  • PASS · 첫 행 선택 상태
    • expected: DEMO-HJ-101 selected / aria-selected true
    • actual: {"id":"DEMO-HJ-101","selected":"true"}
  • PASS · 상세 정보 제목과 식별자 동기화
    • expected: 한남 생활권 정원 주거 / 자료번호 101
    • actual: {"title":"한남 생활권 정원 주거","id":"자료번호 101 · 예시 매물"}
  • PASS · 초기 대기열 원장
    • expected: 6 rows / 6건
    • actual: {"rows":6,"count":"6건"}

PASS · 한남자리 관리자 기능 · 행 선택 전환

  • PASS · 닫힌 단일 대기열과 행 선택 뒤 분할 복구
    • expected: closed edge <=2px / open split 0..20px
    • actual: {"closed":{"inspectorOpen":false,"selectedCount":0,"rightEdgeDiff":0},"restored":{"inspectorOpen":true,"gap":12,"inspectorRightDiff":0}}
  • PASS · 새 행만 선택
    • expected: 102 true / 101 false
    • actual: {"next":"true","previous":"false","selectedCount":1}
  • PASS · 선택 제목과 상태 상세 정보 반영
    • expected: 한강 가까운 복층 주거 / 예시 공개
    • actual: {"title":"한강 가까운 복층 주거","status":"예시 공개"}

PASS · 한남자리 관리자 기능 · 검색 일치 결과

  • PASS · 검색 결과 한 행
    • expected: 1
    • actual: 1
  • PASS · 검색 결과 식별자
    • expected: DEMO-HJ-105
    • actual: DEMO-HJ-105
  • PASS · 검색 결과 수와 빈 상태
    • expected: 1건 / empty hidden
    • actual: {"count":"1건","empty":true}

PASS · 한남자리 관리자 기능 · 검색 빈 상태와 초기화 복구

  • PASS · 검색 빈 상태 원인 안내
    • expected: 0건 / 현재 조건
    • actual: {"count":"0건","title":"현재 조건에 맞는 항목이 없습니다.","visible":true}
  • PASS · 빈 검색에서 보이는 행 없음
    • expected: 0
    • actual: 0
  • PASS · 필터 초기화로 전체 복구
    • expected: blank / all / 6 rows
    • actual: {"query":"","status":"all","rows":6}

PASS · 한남자리 관리자 기능 · 검수 필요 상태 필터

  • PASS · 검수 필요 결과 수
    • expected: 2
    • actual: 2
  • PASS · 검수 필요 식별자 집합
    • expected: DEMO-HJ-101, DEMO-HJ-106
    • actual: ["DEMO-HJ-101","DEMO-HJ-106"]
  • PASS · 상태 필터 결과 문구
    • expected: 2건
    • actual: 2건

PASS · 한남자리 관리자 기능 · 매물명 오름차순 정렬

  • PASS · 정렬 뒤 원장 보존
    • expected: 6
    • actual: 6
  • PASS · 한국어 매물명 오름차순
    • expected: every previous <= next
    • actual: ["남산 가까운 가족 주거","독서당길 안쪽 복층 주거","언덕 위 작은 정원 주거","조용한 골목의 테라스 주거","한강 가까운 복층 주거","한남 생활권 정원 주거"]
  • PASS · 정렬 변경 라이브 안내
    • expected: contains 정렬을 바꿨습니다
    • actual: 대기열 정렬을 바꿨습니다.

PASS · 한남자리 관리자 기능 · 불러오는 중과 정상 복구

  • PASS · 대기열 로딩 상태
    • expected: aria-busy true / loading visible
    • actual: {"busy":"true","loading":true}
  • PASS · 로딩 라이브 안내
    • expected: contains 불러오는 중
    • actual: 대기열을 불러오는 중입니다.
  • PASS · 정상 선택으로 로딩 종료
    • expected: aria-busy false / loading hidden / 6 rows
    • actual: {"busy":"false","loading":true,"rows":6}

PASS · 한남자리 관리자 기능 · 강제 빈 대기열과 복구

  • PASS · 강제 빈 대기열 노출
    • expected: true
    • actual: true
  • PASS · 강제 빈 상태 설명
    • expected: contains 아직 표시할
    • actual: 아직 표시할 항목이 없습니다.
  • PASS · 정상 선택으로 빈 상태 해제
    • expected: empty hidden / 6건
    • actual: {"empty":true,"count":"6건"}

PASS · 한남자리 관리자 기능 · 불러오기 실패와 마지막 자료 복구

  • PASS · 불러오기 실패 배너
    • expected: visible / 대기열 일부
    • actual: {"visible":true,"title":"대기열 일부를 불러오지 못했습니다."}
  • PASS · 실패 중 마지막 여섯 행 유지
    • expected: 6
    • actual: 6
  • PASS · 정상 선택으로 실패 배너 해제
    • expected: banner hidden / normal state
    • actual: {"hidden":true,"state":"normal"}

PASS · 한남자리 관리자 기능 · 자료 오래됨과 정상 복구

  • PASS · 자료 오래됨 차단 상태
    • expected: body stale / banner visible
    • actual: {"stale":true,"banner":true}
  • PASS · 조사관 오래됨 상태
    • expected: 자료 오래됨
    • actual: 자료 오래됨
  • PASS · 정상 선택으로 오래됨 전역 상태 해제
    • expected: body normal / banner hidden
    • actual: {"stale":false,"hidden":true}

PASS · 한남자리 관리자 기능 · 버전 충돌 저장 실패와 정상 재시도

  • PASS · 충돌 저장 실패 배너
    • expected: 최신 자료와 차이가 있어 저장하지 않았습니다.
    • actual: 최신 자료와 차이가 있어 저장하지 않았습니다.
  • PASS · 충돌 저장 실패 라이브 안내
    • expected: contains 저장하지 않았습니다
    • actual: 버전 충돌로 저장하지 않았습니다.
  • PASS · 정상 재시도는 외부 저장 없음
    • expected: contains 실제로 저장되거나 전송되지는 않습니다
    • actual: 변경 내용을 확인했습니다. 실제로 저장되거나 전송되지는 않습니다.

PASS · 한남자리 관리자 기능 · 권한 제한과 정상 복구

  • PASS · 권한 제한 행동 비활성
    • expected: review/save/draft disabled
    • actual: [true,true,true]
  • PASS · 권한 제한 근거 배너
    • expected: body limited / permission title
    • actual: {"limited":true,"title":"중개보조 권한으로 보는 중입니다."}
  • PASS · 정상 선택으로 행동 복구
    • expected: body normal / all enabled
    • actual: {"limited":false,"disabled":0}

PASS · 한남자리 관리자 기능 · 키보드 탭과 첫 누락 초점

  • PASS · 오른쪽 화살표로 표시 광고 탭 활성
    • expected: legal selected / focused
    • actual: {"selected":"true","focused":"tab-legal"}
  • PASS · 탭과 패널 상태 동기화
    • expected: legal visible / basic hidden
    • actual: {"legal":false,"basic":true}
  • PASS · 첫 누락 입력으로 초점
    • expected: missing-orientation
    • actual: missing-orientation

PASS · 한남자리 관리자 기능 · 실제 광고 차단 대화상자와 시각 증거

  • PASS · 게시 차단 대화상자와 배경 잠금
    • expected: dialog open / body locked / inspector open
    • actual: {"open":true,"locked":true,"inspector":true}
  • PASS · 게시 차단 조사관 시각 증거
    • expected: exists / 1440x900 / >10KB / sha256
    • actual: {"pass":true,"name":"estate-admin-block-dialog-1440","file":"tools/.gen/showcase-duo/estate-admin-block-dialog-1440.png","exists":true,"width":1440,"height":900,"bytes":227618,"sha256":"4c58ce7e0f15336ac6a00698449f1f9db49c62706d7acdc5e7796e6d29b7d59b"}
  • PASS · 대화상자 닫힘과 선택 상태 동시 해제
    • expected: dialog closed / unlocked / inspector closed / no selected row
    • actual: {"open":false,"locked":false,"inspector":false,"selectedRows":0}

PASS · 한남자리 관리자 기능 · AI 주장 검토 완료

  • PASS · 지원되지 않은 주장 수정 반영
    • expected: disabled / 수정 반영
    • actual: {"disabled":true,"text":"수정 반영"}
  • PASS · 사람 검토 완료 상태
    • expected: disabled / 수정 후 승인됨 / pass badge
    • actual: {"disabled":true,"text":"수정 후 승인됨","badge":"수정 후 승인","pass":true}
  • PASS · AI 검토 라이브 안내
    • expected: contains 실제 광고에는 사용되지 않습니다
    • actual: AI 참고 결과를 수정 후 확인 상태로 바꿨습니다. 실제 광고에는 사용되지 않습니다.

PASS · 한남자리 관리자 기능 · 새 예시 초안 생성

  • PASS · 초안 행 한 번만 추가
    • expected: 7 rows / DEMO-HJ-NEW once
    • actual: {"rows":7,"drafts":1}
  • PASS · 새 초안 선택과 조사관 유지
    • expected: draft selected / inspector open
    • actual: {"selected":"true","inspector":true}
  • PASS · 새 초안 조사관 기본값
    • expected: title / 입력 전 / 7개 예시
    • actual: {"title":"제목 없는 새 항목","price":"미선택","count":"7건"}