AI 에이전트가 화면을 읽고, 터치 제스처를 수행하며, CI에서 테스트 플로우를 재생하여 iOS Simulator와 상호작용할 수 있도록 합니다.
다른 이름 valewnrt/testa, @valewnrt/testa-mcp
- 스타
- 3
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.2.2
- 마지막 커밋
- 2026년 10월 8일
- 라이선스
- MIT
Testa MCP란?
Testa은(는) MCP server입니다. AI 에이전트가 화면을 읽고, 터치 제스처를 수행하며, CI에서 테스트 플로우를 재생하여 iOS Simulator와 상호작용할 수 있도록 합니다.
프로젝트 README에서 생성된 요약
Testa MCP server 정보
Testa는 AI 에이전트가 macOS의 iOS Simulator와 직접 상호작용할 수 있는 기능을 제공합니다. Claude Code, Cursor, Codex와 같은 클라이언트가 모바일 인터페이스를 보고 조작할 수 있게 해주는 MCP server로 작동합니다. 이 도구는 accessibility tree를 읽고 Apple Vision OCR을 사용하여 화면을 해석하므로, 코드 수정이나 특정 테스트 식별자 없이도 React Native, Expo 또는 SwiftUI 애플리케이션에서 작동합니다.
사용자는 Xcode가 실행 중인 Mac에서 Homebrew를 통해 서버를 설치합니다. 설정이 완료되면 에이전트는 탭, 타이핑, 스와이프 또는 기기 회전과 같은 복잡한 작업을 수행할 수 있습니다. 이 시스템은 화면을 무거운 이미지 대신 압축된 텍스트로 표현하여 LLM 토큰 예산을 효율적으로 사용하도록 설계되었습니다. 또한 개발자는 에이전트의 동작을 flow 파일로 기록하여 GitHub Action을 통해 CI 환경에서 재생할 수 있으며, 실행 중 실시간 모델 없이도 JUnit 출력과 실패 아티팩트를 얻을 수 있습니다.
활용 사례
- 1자동 UI 테스트에이전트에게 애플리케이션을 실행하고 특정 사용자 등록 플로우를 완료하도록 요청합니다.
- 2코드 수정 없는 테스트사전에 정의된 테스트 식별자가 없는 화면에서 앱 동작을 검증합니다.
- 3지속적 통합(CI) 재생이전에 기록된 에이전트 상호작용을 CI 파이프라인에서 실행하여 안정성을 확보합니다.
- 4복잡한 제스처 시뮬레이션AI에게 핀치(pinching)나 요소 드래그와 같은 멀티 터치 상호작용을 수행하도록 지시합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Testa MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Testa MCP 설치
$ claude mcp add testa -- npx -y @valewnrt/testa-mcpCursor에 Testa MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"testa": {
"command": "npx",
"args": [
"-y",
"@valewnrt/testa-mcp"
]
}
}
}VS Code에 Testa MCP 설치
.vscode/mcp.json
{
"servers": {
"testa": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@valewnrt/testa-mcp"
]
}
}
}VS Code CLI에 Testa MCP 설치
$ code --add-mcp '{"name":"testa","type":"stdio","command":"npx","args":["-y","@valewnrt/testa-mcp"]}'Claude Desktop에 Testa MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"testa": {
"command": "npx",
"args": [
"-y",
"@valewnrt/testa-mcp"
]
}
}
}Codex에 Testa MCP 설치
$ codex mcp add testa -- npx -y @valewnrt/testa-mcpCodex config.toml에 Testa MCP 설치
~/.codex/config.toml
[mcp_servers.testa] command = "npx" args = ["-y", "@valewnrt/testa-mcp"]
Gemini CLI에 Testa MCP 설치
$ gemini mcp add -s user testa npx -- -y @valewnrt/testa-mcpGemini settings.json에 Testa MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"testa": {
"command": "npx",
"args": [
"-y",
"@valewnrt/testa-mcp"
]
}
}
}구성
TESTA_MCP_FULLSet to 1 to expose all 40 tools instead of the 13-tool token-lean default.
TESTA_UDIDTarget a specific simulator UDID instead of the booted one.
| 이름 | 설명 | 유형 |
|---|---|---|
| TESTA_MCP_FULL | Set to 1 to expose all 40 tools instead of the 13-tool token-lean default. | |
| TESTA_UDID | Target a specific simulator UDID instead of the booted one. |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능valewnrt/testa is public and reachablegithub.com/valewnrt/testa ↗통과
- 패키지가 이 저장소를 소스로 명시@valewnrt/testa-mcp names valewnrt/testa as sourcenpmjs.com/package/@valewnrt/testa-mcp ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-08github.com/valewnrt/testa ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @valewnrt/testa-mcp통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음1 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Testa
Let your AI agent test your iOS app.
Testa gives Claude Code, Codex, Cursor or any MCP client eyes and hands in the
iOS Simulator. It reads the screen as compact text, taps, types and swipes with
real touch events, and checks the result. It works with React Native, Expo and
SwiftUI apps, and you don't have to add a single testID. When the agent is
done, save the run as a flow file and replay it in CI without a model.
Install
Requires macOS with Xcode 26 (iOS 26 simulators).
brew tap valewnrt/testa
brew install testa
testa setup # installs the Claude Code skill and registers the MCP server
Or build from source: git clone https://github.com/valewnrt/testa && cd testa && ./install.sh.
Connect your agent
testa setup already configures Claude Code. For other agents:
codex mcp add testa -- testa mcp # Codex
{ "mcpServers": { "testa": { "command": "testa", "args": ["mcp"] } } }
The JSON goes into Cursor's .cursor/mcp.json or any other MCP client config.
Then ask your agent something like "Launch the app in the simulator, sign up
with a test account and check that the welcome screen appears."
More in docs/agents.md.
Try it yourself
Testa is a plain CLI, so you can drive it by hand too:
$ testa boot "iPhone 17 Pro"
$ testa install ./MyApp.app && testa launch com.example.myapp
$ testa ui
19 elements (on screen)
e2 StaticText "ready" #status @201,89
e5 Button "Tap me" #tapButton @102,171
e18 TextField #textInput =type here @201,601
…
$ testa tap "Tap me"
tapped e5 Button Tap me
-- ui changes --
~ e2 StaticText "tap:1" #status @201,89
~ e6 StaticText "count: 1" #tapCount @41,208
$ testa assert "#status" label=tap:1
PASS label tap:1
The first command starts a background daemon (a few seconds, once). After that, each command takes about 60 ms.
What makes it different
- No app changes needed. Testa reads the accessibility tree and falls back to on-device OCR (Apple Vision) for anything that isn't in it: system sheets, canvas-drawn screens, games, WebViews. More →
- Built for token budgets. A screen is one line per element, about 200 tokens instead of about 1,500 for a screenshot, and every action replies with only what changed. Benchmark →
- Record once, replay in CI.
testa flow recordturns what the agent did into a plain-text flow file.testa flow runreplays it with JUnit output and failure artifacts, and there's a GitHub Action. More → - Real gestures and device control. Tap, long-press, swipe, drag-and-drop, pinch, rotate, multi-touch and hardware buttons, plus push notifications, location, Face ID, dark mode, Dynamic Type and more.
- One local binary, no dependencies. Testa talks to Apple's simulator frameworks directly: no Node, no Python, no WebDriver server. No network, no telemetry. How it works →
Status
Testa is pre-1.0 and is used against real production apps. It relies on private Apple frameworks, so a new Xcode can break it; a weekly job runs the suite against Xcode betas so breakage shows up early. Verified on Xcode 26.4 with iOS 26.4 simulators. iOS Simulator only: no real devices, no Android (why).
Documentation
- Commands: selectors, the observe → act → verify loop, full reference
- Using Testa from an AI agent: MCP setup, tools, token cost
- Testing apps without testIDs
- Flows & CI: flow files, recording, GitHub Action
- How it works · Security model
- How Testa compares to Maestro, Appium, idb and Argent
- Troubleshooting & limitations
Contributing
Bug reports, Xcode-compatibility reports and pull requests are welcome. Start with CONTRIBUTING.md; questions and ideas go to Discussions. Changes are listed in the CHANGELOG.
Acknowledgements
Testa's HID and accessibility work was informed by studying Meta's idb (MIT); no idb code is linked or bundled. Thanks to everyone who has contributed.
License
Testa MCP 질문
Testa MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add testa -- npx -y @valewnrt/testa-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Testa MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Testa는 어떤 앱을 테스트할 수 있나요?
React Native, Expo, SwiftUI 앱에서 작동하며 별도의 testID 추가가 필요하지 않습니다.
Testa를 사용하려면 애플리케이션 코드를 수정해야 하나요?
아니요, accessibility tree를 읽고 tree에서 찾을 수 없는 시스템 시트나 게임 같은 요소는 기기 내 OCR을 사용하여 처리합니다.
CI 환경에서 이 테스트를 실행할 수 있나요?
네, 에이전트의 세션을 flow 파일로 기록한 뒤 GitHub Action을 사용하여 CI에서 재생할 수 있습니다.
실제 Android 기기를 지원하나요?
아니요, Testa는 iOS Simulator만 지원하며 실제 기기나 Android는 지원하지 않습니다.