awizemann/harness
AI-driven user testing for iOS Simulator, macOS apps, and web apps. Write a goal in plain language; an LLM agent drives the UI and reports friction. macOS 14+, Swift 6.
What it solves
Harness replaces scripted UI tests with AI-driven user simulation. Instead of writing rigid test scripts that break when a UI element moves, developers can define a goal in plain language and a user persona, allowing an AI agent to navigate the app and identify real-world UX friction, dead ends, and unresponsive controls.
How it works
Harness uses an LLM agent that reads screenshots and interacts with the target application via a "Set-of-Mark" system (numbered overlays on interactive elements). The agent performs actions like clicking, typing, and scrolling based on the visual state of the app. It supports three target environments:
- iOS Simulator: Driven via
xcodebuildand WebDriverAgent. - macOS Apps: Driven via AX actions and
CGEventfor contained input, capturing windows viaCGWindowListCreateImage. - Web Apps: Driven via an embedded
WKWebViewusing JS-synthesized events and snapshots.
The system supports both cloud-based LLMs (Anthropic, OpenAI, Google) and local inference via Ollama (e.g., Qwen3-VL, Llama 3.2 Vision).
Who it’s for
It is designed for macOS developers who want to perform automated user testing and UX auditing on iOS, macOS, or web applications without writing manual test scripts.
Highlights
- Multi-platform support: Works across iOS simulators, native macOS apps, and web apps.
- Set-of-Mark targeting: Agents click by ID rather than pixels, improving reliability.
- Local & Cloud AI: Compatible with local vision models via Ollama and major cloud providers.
- MCP Server integration: Allows external agents to drive the tool for autonomous runs or step-level UI sessions.
- Session State Management: Supports injecting and exporting web session state (cookies/localStorage) to handle authenticated sessions.
Related
- Project
- Project
- Project
- Project
- Project