Skip to main content

mut - Mobile UI Testing CLI

Run YAML-based mobile UI tests anywhere - CI/CD, local development, or scripts.

Features

  • Run anywhere - No Claude Code dependency, works in CI/CD
  • Fast screenshots - ~50ms via scrcpy frame buffer
  • AI verification - Gemini 2.5 Flash for visual assertions
  • Video recording - Capture test execution for debugging
  • Record tests - Capture user interactions to generate YAML

Installation

pip install mut

Requirements

  • Python 3.11+
  • Android device/emulator with USB debugging enabled
  • adb in PATH
  • scrcpy 3.x installed
  • GOOGLE_API_KEY environment variable (for AI features)

Quick Start

Run a test

mut run tests/login.yaml

Record a test

mut record login-flow
# Interact with your app...
mut stop

List devices

mut devices

YAML Test Format

config:
  app: com.example.app

setup:
  - terminate_app
  - launch_app
  - wait: 2s

tests:
  - name: Login flow
    steps:
      - tap: "Email"
      - type: "user@test.com"
      - tap: "Password"
      - type: "secret123"
      - tap: "Sign In"
      - verify_screen: "Welcome screen with user greeting"

Commands

mut run <test.yaml>

Execute a YAML test file.

# Basic execution
mut run tests/login.yaml

# Skip AI verifications (faster, for CI)
mut run tests/login.yaml --no-ai

# Specify device
mut run tests/login.yaml --device emulator-5554

# Custom output
mut run tests/login.yaml --output reports/

mut record <name>

Start recording user interactions.

mut record checkout-flow

mut stop

Stop recording and generate YAML test.

mut stop
# Opens browser with approval UI
# Export YAML when done

mut devices

List connected devices.

mut devices

Configuration

Global config (~/.mut.yaml)

ai:
  model: gemini-2.5-flash

defaults:
  video: true
  verbose: false

Project config (.mut.yaml)

device: emulator-5554
test_dir: tests/
report_dir: reports/

CI/CD Integration

GitHub Actions

name: Mobile UI Tests
on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install mut
        run: pip install mut

      - name: Run tests
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 34
          script: mut run tests/login.yaml --no-ai

Environment Variables

Variable Description
GOOGLE_API_KEY Gemini API key for AI features
MUT_DEVICE Default device ID
MUT_VERBOSE Enable verbose logging

License

MIT

Metadata

Release files for mobileuitest 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mobileuitest 0.1.0
File Size Uploaded
mobileuitest-0.1.0.tar.gz 128.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mobileuitest 0.1.0
File Interpreter ABI Platform
mobileuitest-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 141.7 kB

Release files / mobileuitest-0.1.0.tar.gz

Download URL mobileuitest-0.1.0.tar.gz
Size 128.5 kB
Tags Source
SHA-256 checksum
How to use checksums
635e4f4c28735e715cfff808455ce5fdb9a9207530dfb259bb495b7b2828d671
BLAKE2b-256 checksum
How to use checksums
5df6dd6d6979d4cb13013d92e577ecceccb2491eb5b65da90e9e5a6037c3a7b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / mobileuitest-0.1.0-py3-none-any.whl

Download URL mobileuitest-0.1.0-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
163ce571318efc79202e48634a9ad3b204a076ffb76b39e97bdba6fbe7ff8126
BLAKE2b-256 checksum
How to use checksums
9e20b2699bf8a3840810266946f93b4a99967da7396cea537b41589e7e71a6e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page