Android UI Automation Framework — like Geppetto brought Pinocchio to life, this tool brings your tests to life.
Project description
geppetto-android
Geppetto is a high-level Python framework for Android UI automation. It provides a single, typed API to orchestrate ADB, Fastboot, and UIAutomator2.
Just as Geppetto brought Pinocchio to life, this tool brings your Android tests to life.
Highlights
- High-level
Devicefacade for Android automation workflows. - Widget search through text, id, class, content description, and XPath.
- Structured UI hierarchy parsing via
lxml(WindowDump,Widget,Bounds). - Built-in services for Wi-Fi, lockscreen, and notification controls.
- Optional extras for image/video analyzers and hardware integrations.
Requirements
- Python 3.12+
- Android SDK platform tools (
adb, optionalfastboot) available on PATH - Android device or emulator with ADB enabled
Installation
pip
pip install geppetto-android
Optional extras:
# Image/video analyzers
pip install "geppetto-android[analyzers]"
# Hardware integrations
pip install "geppetto-android[hardware]"
# All optional features
pip install "geppetto-android[all]"
uv
uv add geppetto-android
uv add "geppetto-android[analyzers]"
uv add "geppetto-android[hardware]"
uv add "geppetto-android[all]"
Quick start
from geppetto import By, Device, WifiSecurityType
device = Device("SERIAL_NUMBER")
device.install("app.apk", replace=True)
device.open_app("com.example.app")
login_button = device.await_widget(By.TEXT, "Login", timeout=15)
device.click(login_button)
device.screenshot("login_screen", pull_to_results=True)
device.wifi.connect("MyNetwork", WifiSecurityType.WPA2, "password")
Main components
Device: primary facade and entry point.geppetto.core: ADB/Fastboot clients.geppetto.ui: UI models (WindowDump,Widget,Bounds,Children).geppetto.services: automation services (wifi,lockscreen,notification).geppetto.models: enums such asBy,Direction,WifiSecurityType,CommonClasses.
Development
git clone https://github.com/desodre/geppetto.git
cd geppetto
uv sync --all-extras
Links
- Homepage: https://github.com/desodre/geppetto
- Repository: https://github.com/desodre/geppetto
- Issues: https://github.com/desodre/geppetto/issues
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file geppetto_android-2.0.4.tar.gz.
File metadata
- Download URL: geppetto_android-2.0.4.tar.gz
- Upload date:
- Size: 75.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89ec238927dad430de856dbe274ecbc43e54610f95411a0fd5c068bb057b2b60
|
|
| MD5 |
e82c9c60990c497a16e425d12c6183f8
|
|
| BLAKE2b-256 |
dedb8dbb51cfabec530dde0f8505958bf0d9d4d3b04bf267251d1b3292a56081
|
Provenance
The following attestation bundles were made for geppetto_android-2.0.4.tar.gz:
Publisher:
publish.yml on desodre/Geppetto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geppetto_android-2.0.4.tar.gz -
Subject digest:
89ec238927dad430de856dbe274ecbc43e54610f95411a0fd5c068bb057b2b60 - Sigstore transparency entry: 1550986587
- Sigstore integration time:
-
Permalink:
desodre/Geppetto@486c077b609c62975e8b66dc2c1f20f175c68558 -
Branch / Tag:
refs/tags/v2.0.4 - Owner: https://github.com/desodre
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@486c077b609c62975e8b66dc2c1f20f175c68558 -
Trigger Event:
push
-
Statement type:
File details
Details for the file geppetto_android-2.0.4-py3-none-any.whl.
File metadata
- Download URL: geppetto_android-2.0.4-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33facd1eb0d2f052b93a4d5de5c4d868507436ec338426b3e312566f71fa027d
|
|
| MD5 |
11732d6d7aa5a97cd36b1ec4ce41fc79
|
|
| BLAKE2b-256 |
b604f73cae3b53f3fc8a6976b96bc5cabec482e1ef5555b1bd25901d9bc4fd97
|
Provenance
The following attestation bundles were made for geppetto_android-2.0.4-py3-none-any.whl:
Publisher:
publish.yml on desodre/Geppetto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geppetto_android-2.0.4-py3-none-any.whl -
Subject digest:
33facd1eb0d2f052b93a4d5de5c4d868507436ec338426b3e312566f71fa027d - Sigstore transparency entry: 1550986669
- Sigstore integration time:
-
Permalink:
desodre/Geppetto@486c077b609c62975e8b66dc2c1f20f175c68558 -
Branch / Tag:
refs/tags/v2.0.4 - Owner: https://github.com/desodre
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@486c077b609c62975e8b66dc2c1f20f175c68558 -
Trigger Event:
push
-
Statement type: