docs(recommendation): 서브 배너 리뷰와 QA 증거를 보존한다
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Phase 4: 서브 배너 카운트 제거 증거
|
||||
|
||||
2026-10-30, PRD DEC-009. 제품 변경은 `SubBannerCarousel.swift`의 overlay 6줄 및 `pageIndicator` helper/구분 공백 17줄 삭제뿐이다(181→158줄). 원본 줄 75~80, 118~134를 제외한 문자열과 최종 파일의 완전 일치를 확인했다. 접근성 페이지/전체 라벨, 제스처·순환·타이머·레이아웃은 동일하다.
|
||||
|
||||
## 소스 연결
|
||||
- 변경 전 SHA256: `b3e4c5333cf8249ccd7773b5cabd372efb5a5565323bd7778034e110386151fd`.
|
||||
- 변경 후/runner 실행 전/컴파일 대상/실행 후 SHA256: `15ade1c2e0cd26fca4b0e1833bbb08aa42627335a8c79099528caedc337015d8`.
|
||||
- 기존 `BannerCarousel.swift` SHA256: `3dc39a2bcb081ed0013a8940f22537b79765353881e0f9468aae98f547bcde19`. 메인 배너 및 기존 harness/UI tests/runner/project generator 해시 불변 확인.
|
||||
|
||||
## 실행 명령과 결과
|
||||
첫 도구 호출에서 `RUN_TMP=$(mktemp -d "/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/no-count.XXXXXX")`로 소유 root `no-count.zj3m6P` 및 `OWNED-RESOURCES.txt` 정리 TODO를 생성했다. 모든 shell에서 이 root의 `TMPDIR`, `NODE_COMPILE_CACHE`, `BUN_INSTALL_CACHE_DIR`를 사용했고 기존 runner도 그 아래 module/cache/tmp를 사용했다.
|
||||
|
||||
```bash
|
||||
export RUN_TMP=/var/folders/yh/8xsbvpsj5wg2qnxzxdp11_gm0000gn/T/opencode/no-count.zj3m6P
|
||||
export TMPDIR="$RUN_TMP/" NODE_COMPILE_CACHE="$RUN_TMP/node-cache" BUN_INSTALL_CACHE_DIR="$RUN_TMP/bun-cache"
|
||||
export KINGFISHER_MODULE_PATH=/Users/klaus/Library/Developer/Xcode/DerivedData/SodaLive-clzdtvqrsfonoxcijatzkrqdzrsu/Build/Products/Debug-iphonesimulator
|
||||
bash work/tests/check-sub-banners.sh --ui
|
||||
xcrun simctl create NoCount-zj3m6P com.apple.CoreSimulator.SimDeviceType.iPhone-SE-3rd-generation com.apple.CoreSimulator.SimRuntime.iOS-18-3
|
||||
export SB_SIMULATOR_ID=755670D7-8F09-458C-9B2A-8707973E1B38 SB_RUN_ROOT="$RUN_TMP" SB_RUN_NAME=no-count
|
||||
xcrun simctl boot "$SB_SIMULATOR_ID"
|
||||
xcrun simctl bootstatus "$SB_SIMULATOR_ID" -b
|
||||
bash work/tests/run-sub-banner-gesture-tests.sh \
|
||||
-only-testing:GestureUITests/SubBannerGestureUITests/testManualBoundaryFrames \
|
||||
-only-testing:GestureUITests/SubBannerGestureUITests/testSwipeDoesNotTap
|
||||
xcrun xcresulttool get test-results summary --path "$RUN_TMP/no-count.xcresult"
|
||||
xcrun xcresulttool export attachments --test-id 'SubBannerGestureUITests/testManualBoundaryFrames()' \
|
||||
--path "$RUN_TMP/no-count.xcresult" --output-path "$RUN_TMP/attachments"
|
||||
```
|
||||
|
||||
- `--ui`: exit 0, production carousel/model/UIKit opener iOS16.6 typecheck PASS(설치된 Kingfisher 및 실제 theme/font).
|
||||
- 전용 iPhone SE3, iOS18.3 runtime(실제 OS18.3.1/22D8075), x86_64. `TEST SUCCEEDED`, xcodebuild exit 0, **2 tests / 0 failures / 0 skipped**.
|
||||
- `testManualBoundaryFrames`: PASS, 15.416초. 실제 좌표 입력으로 1→3→1 양방향 경계 이동, 페이지 접근성 라벨 유지, callback0 확인.
|
||||
- `testSwipeDoesNotTap`: PASS, 9.295초. 실제 swipe 후 callback0, 현재 배너 tap 후 callback1/ID2 확인. 합계 24.711초.
|
||||
- native attachment 1장을 [no-count-native.png](no-count-native.png)로 보존하고 직접 열어 확인했다. `BANNER 3`은 fixture 이미지 내부 글자이며 카운터가 아니다. 이미지 우측 상단은 파란 이미지 그대로이고 카운트 capsule/텍스트가 없다. 가로 전체 폭과 아래 콘텐츠가 정상 표시된다.
|
||||
- PNG SHA256: `038f3787462ec58907ed31ca22bdb14a14166cde8dcd68188c42d9f77d610c14`(750×1334). 원본 attachment `3DC829EB-E276-482A-ABF6-939AC29FEAFE.png`를 그대로 복사했다.
|
||||
|
||||
## 정리 및 검증 한계
|
||||
- 소유 앱 `invalid.sodalive.gesturefix.Gesture`, runner `invalid.sodalive.gesturefix.GestureUITests.xctrunner`에 각각 `xcrun simctl uninstall "$SB_SIMULATOR_ID" <bundle-id>` exit 0. `simctl listapps`에서 두 bundle 부재 확인 PASS.
|
||||
- `xcrun simctl shutdown "$SB_SIMULATOR_ID"` 및 `xcrun simctl delete "$SB_SIMULATOR_ID"` exit 0. 소유 device 디렉터리 부재 확인 PASS. `ps -p 35102,35139,35180,34167 -o pid=,comm=` 출력 없음: runner35102, 앱35139/35180, 해당 simulator launchd34167 모두 종료.
|
||||
- 증거 보존 및 최종 소스 해시 재확인 후 `rm -rf "$RUN_TMP"`, `test ! -e "$RUN_TMP"` PASS. root 하위 build/xcresult/임시 프레임/cache와 `OWNED-RESOURCES.txt` 메모까지 제거했다. 최종 출력: `PASS: owned root/cache/note and simulator directory absent`. 공유 Kingfisher/DerivedData cache와 기존 device는 삭제하지 않았다.
|
||||
- 새 의존성·테스트·scaffolding·worktree·commit·push 없음. 기존 테스트 2개와 UI typecheck만 실행했으며 전체11개 suite/전체 앱 빌드/실서비스/실기기/VoiceOver 자체 조작은 재검증하지 않았다. LSP 도구는 제공되지 않아 native Swift typecheck 및 harness build/test로 검증했다.
|
||||
Reference in New Issue
Block a user