Skip to content

test: PLAN(3) Feature 카탈로그 다크 스냅샷 + sweep fix#50

Merged
kangddong merged 17 commits into
feat/47-dark-mode-supportfrom
feat/47-dark-mode-snapshot-catalog
Jun 6, 2026
Merged

test: PLAN(3) Feature 카탈로그 다크 스냅샷 + sweep fix#50
kangddong merged 17 commits into
feat/47-dark-mode-supportfrom
feat/47-dark-mode-snapshot-catalog

Conversation

@kangddong

Copy link
Copy Markdown
Collaborator

Summary

PLAN(3) testingDarkMode 의 전체 산출물. 17 commits.

인프라

  • `DoriTestSupport` 모듈 신설 (mock factories)
  • 4개 unit test target 신설 (Onboarding/AddDori/Calendar/MyPage) + History 의존 보강

Baseline 카탈로그 (~92장)

  • P0 6 TC × 2 = 12 (root view)
  • P1 13 TC × 2 = 26 (주요 state 분기)
  • P2 14 TC × 2 = 28 (state 변이 + 컴포넌트 색 변이)

사람-눈 sweep 결과 fix

  • B `DoriCommonAlert` secondary 텍스트 `.black` → `.textPrimary`
  • C `OnBrand.colorset` dark `#FFFFFF` → `#111111` (38장 baseline 영향)
  • E `DoriTextField` `.foregroundStyle(.textPrimary)` 명시
  • F 카카오 버튼 텍스트 brand-fixed `#212223` (`Brand/KakaoOnYellow.colorset` 신규)
  • A (방문여부 버튼/토글) 검토 결과 이미 토큰 적용 — 결함 아님
  • D 이미지 dark variant — 보류 (디자이너 PNG 작업 대기)

Scope 외

Test plan

  • 6개 모듈 record/replay 0 failures
  • 각 P0/P1/P2 tier 회귀 시나리오 1건 통과 (detection 검증)
  • PLAN(1) asset lint 통과 (KakaoOnYellow 포함)
  • iPhone 17 Pro iOS 26.4 시뮬 다크 실행 확인 (Splash + Intro)
  • 머지 후 develop 으로 retarget → CI green

Notes

자세한 결정 로그: `docs/decision/supportDarkMode/testingDarkMode/{PLAN.md, Implementation.md}`

🤖 Generated with Claude Code

kangddong and others added 17 commits May 27, 2026 16:55
Documents the (3) Feature 카탈로그 다크모드 스냅샷 작업 — sibling
of validateDarkMode/. PLAN defines P0/P1/P2 catalog (~106 baseline),
Implementation lays out 5-phase execution with snapshot-testing
specific record/replay/회귀 시나리오 종료기준.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- DoriModules.testSupport case + Projects/Core target wired with
  DoriCore + ComposableArchitecture deps
- Dori+Mock (mockJudori, mockBaddori, mock, mockList: 4건)
- PartnerSummary+Mock (mock, mockList: 3건)
- PartnerDoriList+Mock (mock, mockEmpty)

Feature snapshot tests will import this for stable mock state.
Missing previewValue for AuthTokenStoreClient / KakaoServerLoginClient /
UserNotificationSettingsClient — added JIT in Phase D as tests
require them.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- doriUnitTests for Onboarding/AddDori/Calendar/MyPage with
  TestSupport + ComposableArchitecture + snapshotTesting deps
- History existing test target deps 보강 (snapshotTesting + TestSupport)
- Placeholder.swift per feature so Tuist's Tests/** glob is non-empty
  (real snapshot tests land in Tests/Snapshot/ from Phase D1)
- Disable AddDoriFeatureTests.swift (stale State references, pre-existing,
  out of scope for snapshot work) — file renamed to .disabled, recovery
  via git history.

All 5 feature schemes (Onboarding/AddDori/Calendar/History/MyPage)
TEST BUILD SUCCEEDED.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Onboarding: SplashSnapshotTests, IntroSnapshotTests
- AddDori: AddDoriRootSnapshotTests (step1 진입)
- Calendar: CalendarGridSnapshotTests (currentMonth 고정 2025-05-01)
- History: DoriListSnapshotTests (empty state)
- MyPage: MyPageSnapshotTests (default)

각 TC 명시적 두 어설션 (.light/.dark UITraitCollection).
Layout .fixed(393, 852) — iPhone 16 size.

검증:
- Record 1회차: 12/12 fail with "Automatically recorded snapshot"
- Replay 2회차: 12/12 PASS
- 회귀 시나리오 (SplashSnapshotTests test_splash_light layout 변경) →
  "Snapshot does not match reference" → detection 살아있음 확인 → 원복

Side effect: FeatureHistory 의 사전 Swift Testing 테스트
(SearchFeatureTests, EditDoriMemoFieldTests) 가 deps 그래프 변경 후
crash/timeout. 본 PR 범위 외라 .disabled 로 비활성화.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Previously the workspace's DerivedData was redirected to ./build/
via Xcode IDE's Custom build location setting (since reverted, but
folder remained as stale artifact). Our xcodebuild calls use the
default ~/Library/Developer/Xcode/DerivedData path. Ignoring the
root build/ prevents accidental commits if anyone re-toggles the
Xcode setting.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Onboarding (1 TC):
- IntroLoadingSnapshotTests: state.isLoading=true spinner

AddDori (4 TC):
- AddDoriPage1SnapshotTests: emptySearch (query without results) + searchResults
  (populated via Dori.mockList from DoriTestSupport)
- AddDoriPage3SnapshotTests: amountError (feedbackTextError) + datePickerOpen (bgScrim)

History (3 TC):
- DoriListPopulatedSnapshotTests: PartnerSummary.mockList from DoriTestSupport
- EditDoriSnapshotTests: default + datePickerOpen (bgScrim)

MyPage (5 TC):
- MyPageLogoutAlertSnapshotTests: isLogoutAlertPresented=true (DoriCommonAlert)
- NotificationSettingsSnapshotTests: allOn + allOff (toggle knob onBrand)
- DoriToggleSwitchSnapshotTests: on + off direct component snapshot

검증:
- Record 1회차: 26/26 fail with "Automatically recorded snapshot"
- Replay 2회차: 5/5 schemes TEST SUCCEEDED, 38/38 baseline total PASS
  (P0 12 + P1 26)

PLAN의 P1 17 TC 중 4 TC deferred to D3 (Calendar populated/DayDetailSheet
single+multiple/PartnerDoriDetail default — CalendarMonthlyData·CalendarDori
복합 state 구성 필요).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Page1 selected, Page2 default/birthday/customEventInput, Page3 amountTyped/amountZero,
Root step3. 회귀 시나리오 1건 (Page2 wedding → funeral) 통과 — detection 확인 후 원복.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DoriSegmentControl judori/baddori, dayDetailSheet empty. 회귀 시나리오 1건
(judori → baddori) 통과 — detection 확인 후 원복.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
NotificationSettings partialEnabled, FCMPushTest default/loading. 회귀 시나리오
1건 (FCMPushTest title 변경) 통과 — detection 확인 후 원복.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Search empty/typedNoResults/typedWithResults, PartnerDoriHistory all/judoriOnly/baddoriOnly,
DoriBarGraph zero/judoriHeavy/balanced, PersonCard collapsed, TransactionRow judori/baddori,
EditDori amountError, PartnerDoriDetail deleteAlert. 회귀 시나리오 1건 (DoriBarGraph zero
givenAmount 1000 변경) 통과 — detection 확인 후 원복.

PersonCard expanded 는 internal @State 로 외부 토글 불가. 컴포넌트 binding 리팩터 후
별도 PR 에서 추가. PLAN(3) P2 의 15 TC 중 14 TC 진행, 1 TC 구조적 제약으로 보류.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PLAN(3) P2 27 TC commit 4건 + replay 통과 로그 + 회귀 시나리오 4건 기록.
PersonCard expanded 보류, Calendar P1 누락, 사람-눈 sweep 미수행을 명시.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
claude multimodal 13/27 dark PNG sweep:
- FCMPushTest TextField text contrast 부족 (다크 토큰 미적용 의심) — 높음
- TransactionRow baddori 아이콘 배경 light gray — 낮음 (디자인 결정 필요)

잔여 14장 사용자 직접 확인 영역.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
P2 sweep 발견 결함 B. 취소 버튼 .foregroundColor(.black) → .textPrimary.
다크에서 검은 글씨 → 흰 글씨 (#FDFDFD). DoriCommonAlert/LogoutAlert/
DeleteAlert baseline re-record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
P2 sweep 발견 결함 C. brandMain 위에 올라가는 onBrand 토큰을 다크에서
#111111 (검정) 으로 변경. 영향: DoriBarGraph 의 "주도리" 텍스트, DoriToggleSwitch
의 thumb, PrimaryButton 의 모든 brand 텍스트, DoriSegmentButton 의 선택
상태 텍스트 등 brand 위 글씨/원 일괄.

38장 dark baseline re-record (DoriDesignSystem swatch/Alert/Toast/Button +
Onboarding Intro + AddDori 전체 + Calendar segment + History BarGraph 등 +
MyPage ToggleSwitch 등).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
P2 sweep 발견 결함 E. FCMPushTest 의 TextField text 가 다크에서 시스템
기본색을 못 받아 검은색으로 박히는 의심. .foregroundStyle(.textPrimary)
명시로 다크 토큰 강제 적용. baseline re-record.

비고: 시각적 결과가 placeholder-회색 톤으로 보이는 건 SwiftUI TextField
text 색 modulation 한계 또는 mock binding 동기화 별건 가능성. 토큰 적용
자체는 완료.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
P2 sweep 시뮬 실행 후 발견. 카카오 가이드라인상 KakaoYellow 배경 위 텍스트는
#212223 brand-fixed 인데 .textPrimary 토큰을 박아 다크에서 흰 글씨가 됨.
Brand/KakaoOnYellow.colorset 신규 (light/dark 동일 #212223) + IntroView 의
foregroundStyle 교체. Intro/IntroLoading baseline 4장 재기록.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@kangddong kangddong merged commit 885e72f into feat/47-dark-mode-support Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant