test: PLAN(3) Feature 카탈로그 다크 스냅샷 + sweep fix#50
Merged
kangddong merged 17 commits intoJun 6, 2026
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PLAN(3) testingDarkMode 의 전체 산출물. 17 commits.
인프라
Baseline 카탈로그 (~92장)
사람-눈 sweep 결과 fix
Scope 외
Test plan
Notes
자세한 결정 로그: `docs/decision/supportDarkMode/testingDarkMode/{PLAN.md, Implementation.md}`
🤖 Generated with Claude Code