1# Welcome to Mobly
2
3[![Latest release](https://img.shields.io/github/release/google/mobly.svg)](https://github.com/google/mobly/releases/latest)
4[![Build Status](https://github.com/google/mobly/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/google/mobly/actions)
5
6**Mobly** is a Python-based test framework that specializes in supporting test
7cases that require multiple devices, complex environments, or custom hardware
8setups.
9
10Here are some example use cases:
11*   P2P data transfer between two devices
12*   Conference calls across three phones
13*   Wearable device interacting with a phone
14*   Internet-Of-Things devices interacting with each other
15*   Testing RF characteristics of devices with special equipment
16*   Testing LTE network by controlling phones, base stations, and eNBs
17
18Mobly can support many different types of devices and equipment, and it's easy
19to plug your own device or custom equipment/service into Mobly.
20
21Mobly comes with a set of libs to control common devices like Android devices.
22
23While developed by Googlers, Mobly is not an official Google product.
24
25## Compatibility
26
27Mobly requires *python 3.11* or newer.
28
29Mobly tests could run on the following platforms:
30  - Ubuntu 14.04+
31  - MacOS 10.6+
32  - Windows 7+
33
34## System dependencies
35  - adb (1.0.40+ recommended)
36  - python3.11+
37
38## Installation
39You can install the released package from pip
40
41```sh
42pip install mobly
43```
44
45or install from the source to use the bleeding edge:
46
47```sh
48git clone https://github.com/google/mobly.git
49cd mobly
50pip install -e .
51```
52
53You may need `sudo` for the above commands if your system has certain permission
54restrictions.
55
56## Tutorials
57
58* [Mobly 101](docs/tutorial.md) -
59Simple test examples to get you started with Mobly.
60
61* [Mobly Instrumentation Runner Tutorial](docs/instrumentation_tutorial.md) -
62How to use Mobly's Android instrumentation test runner to run Android instrumentation tests.
63
64* [Mobly AndroidDevice Service](docs/android_device_service.md) -
65Create custom service to attach to Mobly's `AndroidDevice` controller.
66
67## Mobly Snippet
68The Mobly Snippet projects let users better control Android devices.
69
70* [Mobly Snippet Lib](https://github.com/google/mobly-snippet-lib): used for
71triggering custom device-side code from host-side Mobly tests. You could use existing
72Android libraries like UI Automator and Espresso.
73* [Mobly Bundled Snippets](https://github.com/google/mobly-bundled-snippets): a set
74of Snippets to allow Mobly tests to control Android devices by exposing a simplified
75version of the public Android API suitable for testing.
76