다른 장치의 시뮬레이터로 테스트하기

주 장치의 코디네이터가 같은 계정의 Mac에 워커를 띄우고, 그 워커가 그곳에서 iOS 시뮬레이터 테스트를 실행해 결과를 보고합니다.

목표. 작업은 한 장치에서 하는데 iOS 시뮬레이터는 다른 Mac(여기서는 ci-mac)에 있습니다. 코디네이터가 시뮬레이터 실행을 그 Mac의 워커에게 맡기고, 끝날 때까지 기다렸다가 결과를 읽습니다. 그 Mac 앞으로 갈 필요가 없습니다.

필요한 것

  • 두 장치 모두 같은 계정으로 로그인(st login)해 공유하고 있어야 하고, 양쪽 다 st 0.3.85 이상이어야 합니다. 코디네이터 쪽 장치는 반드시 로그인되어 있어야 합니다.
  • CI Mac에서는 st hooks install을 해 두고, Claude Code에 로그인하고, 저장소를 checkout해 둡니다.
  • 두 장치가 모두 fetch와 push를 할 수 있는 원격 저장소가 있어야 합니다. st는 아직 장치 사이로 코드를 옮기지 않으므로 브랜치는 git으로 오갑니다.
  • 릴레이로만 연결된 CI Mac이 워커를 받을 수 있는지는 아직 확인되지 않았습니다.

1. CI Mac이 워커를 받게 하기

CI Mac에서 실행합니다. 켜기 전까지는 꺼져 있고, 켜도 같은 계정의 장치만 받습니다.

st orch accept-remote on
st orch accept-remote status   # 확인

2. 브랜치 올리기

워커가 받아 갈 수 있게 주 장치에서 push합니다.

git push origin fix-login

3. 과제 쓰기

# 시뮬레이터에서 로그인 UI 테스트 돌리기
 
/Users/ci/src/app에서: git fetch origin && git checkout fix-login
실행: xcodebuild test -scheme App -destination 'platform=iOS Simulator,name=iPhone 16'
코드는 고치지 않는다. 실패한 테스트와 메시지를 sim-report.md에 적고
st doc sim-report.md --title "Simulator run"을 실행한다.

--cwd를 주지 않으면 워커는 그 장치의 홈 폴더에서 일합니다. 과제와 --cwd에 쓰는 경로는 CI Mac 기준입니다.

4. 코디네이터에게 부탁하기

/sophonz:orchestrate ci-mac의 Claude 워커에게 sim.md를 맡기고, 끝나면
어떤 테스트가 왜 실패했는지 알려 줘.

코디네이터는 이렇게 실행합니다.

st worker start --machine ci-mac --agent claude --task sim.md --cwd /Users/ci/src/app
st worker wait ci-mac/%7 --timeout 30m
st worker read ci-mac/%7

장치는 이름, 호스트 이름, slug 중 무엇으로 불러도 됩니다. st worker start는 CI Mac에서 워커가 턴을 시작한 것을 확인한 뒤 돌아오면서 id(<장치>/%N)를 출력합니다. CI Mac의 경로는 전체를 다 씁니다. ~를 쓰면 st에 넘어가기 전에 내 장치의 셸이 그것을 내 홈 폴더로 바꿔 버립니다.

CI Mac에서 st orch accept-remote on을 하지 않았거나 그 장치의 st가 너무 오래됐으면, st가 그 사실을 알려 주고 아무것도 띄우지 않습니다.

5. 지켜보기

  • CI Mac에서 워커는 st-remote 세션의 새 창에 뜹니다. 세션이 없으면 새로 만듭니다. 권한 모드를 포함해 그 Mac의 설정대로 실행됩니다.
  • 데스크탑 앱에서 워커는 사이드바의 CI Mac 아래에 그대로 있고, 장치 아이콘과 ↳ 부모 · 장치 표시가 붙습니다. 코디네이터 카드에도 나옵니다. 그 행을 누르면 지켜볼 수 있습니다.
  • 폰에서는 다른 장치를 열 때처럼 CI Mac과 그 st-remote 세션을 엽니다.
  • 웹 터미널의 Agents 카드와 에이전트 그래프에도 원격 워커가 나옵니다(st 0.3.92 이상).

CI Mac에 연결되지 않는 동안 st worker wait는 워커가 아직 일하고 있는 것으로 봅니다.

6. 결과 읽기

st worker read ci-mac/%7은 워커의 마지막 답과 done 요약을 가져오고, 코디네이터는 이를 바탕으로 보고합니다. 보고서 자체는 CI Mac에서 st doc으로 넘겼으므로 앱에서 그 장치의 Documents에 있습니다(문서 참고). 코디네이터 쪽에서 그 문서로 가는 링크는 아직 없습니다.

7. 마무리

st worker stop ci-mac/%7 --yes   # CI Mac의 워커 창 닫기

과제에서 워커에게 수정을 push하게 했다면 내 장치에서 받아 옵니다(git fetch origin). 워커를 더 받지 않으려면 CI Mac에서 st orch accept-remote off를 실행합니다.

자세한 내용은 다른 장치의 워커에 있습니다.