Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qalti logo

AIQA (Qalti)

AIQA is an AI agent for mobile app testing. It visually inspects your app and interacts with it like a user: tapping buttons, entering text, scrolling, and opening links.

You write tests in plain English. AIQA executes them on iOS Simulator or connected devices and produces step-by-step logs with screenshots.

AIQA run preview

Quick start

  • Route A - install prebuilt app (no source build)

    • Install Qalti:

      curl -L -o Qalti.dmg https://app.qalti.com/releases/Qalti.dmg
      hdiutil attach Qalti.dmg -nobrowse -quiet -mountpoint /Volumes/Qalti
      cp -R /Volumes/Qalti/Qalti.app /Applications/Qalti.app
      hdiutil detach /Volumes/Qalti -quiet
    • Launch Qalti from Applications.

    • Add your OpenRouter API key in Settings.

    • Run one of the sample scenarios from tests/ against your app or the SyncUps demo app.

  • Route B - automated source build (recommended for developers)

    git clone <repository-url>
    cd aiqa
    make first-run

    See Build from Source for details and additional commands.

  • Route C - manual source build

    • Follow DEVELOPER.md for the detailed clean-machine setup flow with checkpoints.
    • Build and run manually from xcodeproject/Qalti.xcodeproj.

Access expectations:

  • UI and CLI execution require your own OpenRouter API key.
  • For CLI and CI, set OPENROUTER_API_KEY (or pass --token <OPENROUTER_API_KEY>).

What You Can Achieve

  • Run zero-code UI tests on iOS Simulator.
  • Run the same tests on connected iPhone and iPad devices.
  • Execute test suites in parallel with QaltiScheduler.
  • Export Allure-compatible results for QA dashboards.
  • Test app flows across boundaries (for example app -> deep link -> another app).

How It Works

AIQA runs a perception-action loop on the real rendered UI:

  • View - capture and understand the current screen.
  • Decide - choose the next best action toward the test goal.
  • Act - perform tap, type, scroll, open app, or open URL actions.
  • Verify - compare the visible state with expected assertions.
  • Repeat - continue until the scenario is complete.

This black-box approach does not require source code hooks or UI hierarchy access.

Build from Source

Prerequisites:

  • macOS
  • Xcode 16.4+
  • Python 3.x

Recommended - Automated Build:

make build        # Full build with code formatting and linting
make build-fast   # Fast incremental build (most common during development)
make first-run    # First-time setup with permission guidance

The Makefile automation handles:

  • Python virtual environment setup
  • Code formatting (black) and linting (flake8)
  • xcpretty/xcbeautify tool installation
  • macOS permission troubleshooting
  • App building and launching

Alternative - Manual Build:

Build the simulator runner dependency once before your first local build:

cd xcodeproject
bash ./scripts/archive_simulator_runner.sh

Then build and run Qalti from xcodeproject/Qalti.xcodeproj.

For detailed manual setup, see DEVELOPER.md.

CLI Usage:

CLI binaries are inside the Qalti.app bundle (source build output or /Applications install):

<PATH_TO_QALTI_APP>/Contents/MacOS/Qalti cli --help
<PATH_TO_QALTI_APP>/Contents/Resources/QaltiScheduler --help

Running tests from CLI requires an OpenRouter API key and an app build path. Use DEVELOPER.md for the full source-build + first-test flow.

CI

Use .github/workflows/qalti.yml as the baseline public workflow. It demonstrates:

  • runner setup via scripts/setup_runner.sh
  • parallel simulator runs via QaltiScheduler
  • optional real-device run
  • optional Allure upload and report artifact publishing

CI preview (4 tests running in parallel):

CI demo with 4 parallel tests

Allure Reports

AIQA can emit Allure-compatible results through the --allure-dir flag. The workflow above shows one way to upload them after execution.

Allure report example

Example Tests

Sample plain-text tests are in tests/: The syncups_* scenarios target the open-source SyncUps app: https://github.com/pointfreeco/syncups

Project Layout

  • xcodeproject/ - macOS app, scheduler, iOS runner targets, Xcode project, and packaging assets.
  • tests/ - example .test scenarios for local and CI runs.
  • scripts/ - public helper scripts for CI setup.
  • .github/workflows/ - GitHub Actions workflow examples.
  • DEVELOPER.md - source build workflow and Xcode setup notes.

Documentation

License

MIT. See LICENSE.

About

Qalti AI Agent to control your iPhone

Resources

Stars

50 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages