Skip to main content

SpecterQA iOS Simulator Driver — AI-driven iOS testing via Claude Computer Use

Project description

SpecterQA iOS Simulator Driver

AI-driven iOS app testing via Claude Computer Use.

Install

pip install "git+https://github.com/SyncTek-LLC/specterqa-ios.git"

No other packages required — specterqa-ios is fully standalone.

Quick Start

# Verify environment (Xcode, simulators, API key)
specterqa-ios setup

# List available simulators
specterqa-ios devices

# Scaffold a project for your app
specterqa-ios init --slug my-app --name "My App"

# Edit the generated config
# .specterqa/products/my-app.yaml  — set bundle_id and app_path
# .specterqa/journeys/smoke-test.yaml  — customize test steps

# Validate your config before running
specterqa-ios validate --product my-app --journey smoke-test

# Boot a simulator
specterqa-ios boot

# Run a test journey
specterqa-ios run --product my-app --journey smoke-test

# Quick smoke test (reduced budget, fewer iterations)
specterqa-ios smoke --product my-app

Commands

Command Description
specterqa-ios setup Check Xcode, simulators, and API key
specterqa-ios devices List available iOS simulators
specterqa-ios boot [--device <name>] Boot a simulator
specterqa-ios install <app.app> [--device <id>] Install app on simulator
specterqa-ios init [--slug <id>] Scaffold project config files
specterqa-ios validate --product <slug> Validate product/journey config
specterqa-ios run --product <slug> --journey <id> Run a test journey
specterqa-ios smoke --product <slug> Quick smoke test
specterqa-ios serve Start the MCP server (stdio transport)

Claude Code Integration

SpecterQA iOS ships as a Model Context Protocol (MCP) server, letting Claude Code drive iOS simulator tests directly from your editor.

Install with MCP extras

pip install 'specterqa-ios[mcp]'

Add to Claude Code

Add the server to your Claude Code MCP configuration. The specterqa-ios-mcp console script is registered by pip install and starts the stdio server automatically.

Option A — project-level (.claude/mcp.json in your repo root):

{
  "mcpServers": {
    "specterqa-ios": {
      "command": "specterqa-ios-mcp",
      "env": {
        "SPECTERQA_IOS_LICENSE": "founder"
      }
    }
  }
}

Option B — global (add to ~/.claude/mcp.json or via claude mcp add):

claude mcp add specterqa-ios -- specterqa-ios-mcp

Set ANTHROPIC_API_KEY in the environment (or in the env block above).

Available MCP Tools

Once connected, Claude Code can call these tools:

Tool Description
ios_setup Check environment (Xcode, simulators, API key)
ios_list_devices List available iOS simulators
ios_boot_device Boot a simulator by name or UDID
ios_install_app Install a .app bundle on a simulator
ios_run_test Run a full test journey (primary tool)
ios_run_smoke Quick smoke test (reduced budget)
ios_run_exploratory Persona-driven AI exploration
ios_get_results Retrieve results from a previous run
ios_screenshot Screenshot the current simulator state
ios_list_products List configured products
ios_list_journeys List configured journeys

Example Claude Code session

> Run a smoke test on the Palace iOS app

[Claude calls ios_list_products, discovers palace-ios]
[Claude calls ios_boot_device, boots iPhone 15 Pro]
[Claude calls ios_run_smoke with product_slug="palace-ios"]
[Returns: 4/4 steps passed, 0 findings, $0.32 spent]

Alternative: direct invocation

# stdio transport (for custom MCP clients)
specterqa-ios-mcp

# or via Python module
python -m specterqa.ios.mcp

# or via CLI
specterqa-ios serve

Requirements

  • macOS with Xcode 15+
  • Python 3.10+
  • ANTHROPIC_API_KEY environment variable
export ANTHROPIC_API_KEY=sk-ant-...

Project Structure

After specterqa-ios init, your project contains:

.specterqa/
  products/
    my-app.yaml         # bundle_id, device, cost limits
  personas/
    ios-tester.yaml     # AI persona (goals, frustrations, credentials)
  journeys/
    smoke-test.yaml     # test steps with goals and checkpoints
  evidence/
    IOS-RUN-*/          # screenshots, step results, run-result.json

How It Works

  1. Each journey step has a goal — a natural-language instruction for Claude
  2. The AI takes a screenshot of the simulator, observes the UI context, and decides the next action (tap, type, scroll, wait)
  3. Actions are executed via xcrun simctl and Quartz event injection
  4. Crashes, error logs, and performance anomalies are surfaced as Findings
  5. All evidence (screenshots, step summaries, findings) is saved to .specterqa/evidence/

License

Elastic License 2.0 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

specterqa_ios-10.1.0.tar.gz (311.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

specterqa_ios-10.1.0-py3-none-any.whl (198.4 kB view details)

Uploaded Python 3

File details

Details for the file specterqa_ios-10.1.0.tar.gz.

File metadata

  • Download URL: specterqa_ios-10.1.0.tar.gz
  • Upload date:
  • Size: 311.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for specterqa_ios-10.1.0.tar.gz
Algorithm Hash digest
SHA256 149b1b108e0c967b9c04a996d216538a7d43f2d640c8376ae524a1252e9d1905
MD5 9e40f839750473ebb1daf5d3823cad1c
BLAKE2b-256 82cfcddd5e6f390515e3264460c42014e45bd1c2b9127c7254b791a3c6a76209

See more details on using hashes here.

File details

Details for the file specterqa_ios-10.1.0-py3-none-any.whl.

File metadata

  • Download URL: specterqa_ios-10.1.0-py3-none-any.whl
  • Upload date:
  • Size: 198.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for specterqa_ios-10.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e3cec8907589984360a4b9d28d34ba53998f436f5301239ba7d218dc7975b55
MD5 598858948dc8081d38a70588ef11d9a4
BLAKE2b-256 e7e40c4a8e9c25536ac33b4e0d37a1d213b202ef96383c2d7e1795819d9034c5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page