Metadata-Version: 2.4
Name: geppetto-android
Version: 2.0.1
Summary: Android UI Automation Framework — like Geppetto brought Pinocchio to life, this tool brings your tests to life.
Project-URL: Homepage, https://github.com/jhonathasodre/geppetto
Project-URL: Repository, https://github.com/jhonathasodre/geppetto
Project-URL: Issues, https://github.com/jhonathasodre/geppetto/issues
Author-email: Jhonatha Sodre <jhonathacirilo9000@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.12
Requires-Dist: adbutils>=2.9.3
Requires-Dist: lxml>=6.0.0
Requires-Dist: pillow>=11.0.0
Requires-Dist: uiautomator2>=3.3.3
Provides-Extra: all
Requires-Dist: geppetto[analyzers,hardware]; extra == 'all'
Provides-Extra: analyzers
Requires-Dist: extcolors>=1.0.0; extra == 'analyzers'
Requires-Dist: imagehash>=4.3.1; extra == 'analyzers'
Requires-Dist: numpy>=1.26.0; extra == 'analyzers'
Requires-Dist: opencv-python>=4.9.0; extra == 'analyzers'
Provides-Extra: hardware
Requires-Dist: brainstem>=2.9.0; extra == 'hardware'
Description-Content-Type: text/markdown

# Geppetto

> Just as Geppetto brought Pinocchio to life, this tool brings your tests to life through automation.

## Overview

Geppetto is an Android UI automation framework that orchestrates and executes your test suite
with precision and care. It provides a high-level Python API for controlling Android devices
via ADB, Fastboot, and UIAutomator2.

## Installation

```bash
uv add geppetto

# With image/video analysis support
uv add geppetto --optional analyzers

# With Acroname USB hub support
uv add geppetto --optional hardware

# Everything
uv add geppetto --optional all
```

For development:

```bash
# Clone the repository
git clone <repo-url>
cd geppetto

# Install dependencies and create virtual environment
uv sync --all-extras
```

## Quick Start

```python
from geppetto import Device, By

device = Device("SERIAL_NUMBER")

# Install and open an app
device.install("app.apk", replace=True)
device.open_app("com.example.app")

# Find and interact with UI elements
widget = device.await_widget(By.TEXT, "Login", timeout=15)
device.click(widget)

# Take a screenshot
device.screenshot("login_screen", pull_to_results=True)

# Access sub-services
device.wifi.connect("MyNetwork", WifiSecurityType.WPA2, "password")
device.lockscreen.set_pin("1234")
device.notification.open()
```

## Architecture

```
geppetto/
├── core/        # ADB & Fastboot transport layers
├── ui/          # Widget, Bounds, WindowDump, Children
├── services/    # Lockscreen, WiFi, Notification controllers
├── analyzers/   # Screen and Video analysis tools
├── hardware/    # External hardware (Acroname USB hub)
├── models/      # Enums (By, Direction, WifiSecurityType)
├── device.py    # Main Device class (composition-based)
└── exceptions.py
```

## License

MIT
