Testa

io.github.valewnrt由 GitHub 帳號 valewnrt 發布v0.2.2更新於 Oct 24, 2026

Drive the iOS Simulator from an agent: read the screen, tap/type/swipe, replay flows in CI.

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

讓 AI 助理操控 iOS 模擬器:以文字讀取畫面、點擊、輸入、滑動、驗證結果,並可錄製流程在 CI 中重播。

可以做什麼
  • 以精簡文字讀取模擬器畫面,包含無障礙元素,缺少時改用 OCR
  • 執行點擊、輸入、滑動、長按、拖曳、捏合、旋轉、多點觸控與硬體按鍵
  • 對元素標籤做斷言,並查看每次操作後的畫面變化
  • 啟動模擬器、安裝並執行 App
  • 把助理操作錄製成流程檔,並以 JUnit 輸出重播
適用情境
適合讓助理在模擬器中測試或探索 iOS App 而不必加入 testID,或希望先錄製一次執行、之後在 CI 中不依賴模型重播。
執行需求
macOS 與 Xcode 26(iOS 26 模擬器);需在本機安裝執行檔(Homebrew 或原始碼建置),或以 npx 執行 npm 套件。選用環境變數 TESTA_MCP_FULL(開放全部 40 個工具,而非預設 13 個)與 TESTA_UDID(指定模擬器)。無網路、無遙測。
安裝前請注意
它以真實觸控事件操控模擬器,並可安裝與啟動 App,助理操作會改變模擬器狀態。它依賴 Apple 私有框架,新版 Xcode 可能導致失效;目前為 1.0 之前的版本,僅支援 iOS 模擬器,不支援實機與 Android。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Testa,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Testa

Let your AI agent test your iOS app.

[CI] [Xcode beta] [Release] [License: MIT]

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.

[Terminal running testa tap, pinch, rotate, dragdrop, typein, tapocr and assert next to the iOS Simulator, which reacts to each command]

Install

Requires macOS with Xcode 26 (iOS 26 simulators).

bash
brew tap valewnrt/testabrew install testatesta 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:

bash
codex mcp add testa -- testa mcp      # Codex
json
{ "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:

console
$ testa boot "iPhone 17 Pro"$ testa install ./MyApp.app && testa launch com.example.myapp
$ testa ui19 elements (on screen)e2 StaticText "ready" #status @201,89e5 Button "Tap me" #tapButton @102,171e18 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:1PASS 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 record turns what the agent did into a plain-text flow file. testa flow run replays 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

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

MIT

來源:README.md,提交 69e717a

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.2.2最新Oct 9, 2026
  2. v0.2.1Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分