3-4. 연결 진단과 Snapshot·Refs CLI 2026-03-21
짧은 응답과 기계가 읽는 응답
이전 글은 rc.14까지의 토큰 최적화와 안정성을 정리했다. 이후에는 짧게 만든 출력이 내부 자동화를 깨뜨리는 문제가 드러났다. query_selector의 compact 문자열을 E2E 클라이언트가 JSON처럼 읽으면서 좌표 측정값을 잃고 있었다.
format을 compact와 json으로 나눠 AI가 읽는 기본 응답은 짧게 유지하고, E2E 클라이언트는 좌표가 포함된 JSON을 요청하도록 수정했다. 포트 충돌 시 대체 포트 시도, 실패 후 나머지 단계를 실행하는 continueOnError, Node 20 이상 호환도 보강했다. #115, #116
연결 실패가 어느 단계인지 알려주기
doctor는 Babel 프리셋 설정, Metro 실행 여부, WebSocket 포트, idb·adb 버전, 시뮬레이터·에뮬레이터 부팅 상태를 점검한다. 연결 오류도 디바이스가 아예 없는 경우, 연결이 끊긴 경우, 요청한 ID가 없는 경우, 여러 디바이스 중 선택해야 하는 경우로 나눠 안내한다. #120, #121
Android E2E에서는 가로 방향으로 잡힌 에뮬레이터와 앱의 세로 좌표가 어긋나는 설정을 고쳤다. 스크롤 뒤 렌더링 대기, 측정 fallback 오류 로그, 잠깐 끊긴 WebSocket의 재연결 대기도 보강했다. 이는 테스트 실행 환경과 실패 원인을 다루는 변경이며 실제 디바이스 성능 개선 수치로 해석하지 않는다. #117, #119
WebView 탭과 재시도
webview_tap은 CSS 선택자로 찾은 DOM 요소의 사각형과 WebView의 네이티브 위치를 합쳐 화면 좌표를 구하고, idb·adb로 실제 탭을 보낸다. E2E에도 webviewTap 단계를 추가했다. #122
일시적으로 실패하는 탭·스와이프·스크롤 단계에는 retryOnFail을 설정할 수 있게 했다. 테스트 전체를 다시 실행할 때는 이전 앱 상태가 다음 시도에 남지 않도록 앱을 재시작하는 경로를 더했다. #123, #124
셸에서 같은 앱을 제어하는 rn-mcp
3월 21일 병합한 #125는 기존 MCP 서버에 연결하는 rn-mcp CLI를 추가한다. snapshot -i가 상호작용 가능한 Fiber 요소에 @e1, @e2 같은 참조를 붙이면, 뒤의 tap·type·swipe 명령이 그 참조로 대상을 고른다. 좌표 변환과 iOS 방향 처리는 도구가 맡는다.
assert는 텍스트나 가시성 판정을 종료 코드로 반환하고, query는 선택자를 직접 받는다. init-agent는 에이전트 안내 파일에 사용법을 추가한다. 참조 매핑은 CLI 호출 사이에 저장하며, 서버를 새로 만드는 대신 기존 WebSocket 연결 방식을 재사용한다. 이 흐름을 확인하는 iOS·Android CLI 스모크도 함께 추가했다. CLI 구현 커밋
2026-09-26 확인 기준 최신 공개 GitHub 릴리즈와 npm 배포 버전은 rc.14다. 이 글의 3월 18~21일 변경은 그 이후 main에 반영된 후속 작업이며, rc.14에 이미 포함됐다고 읽지 않도록 구분한다.