google-home-ui-automator 1.0.5
Google Home UI Automator
License: Apache 2.0
Requires Python: >=3.11

# Google Home UI Automator

Google Home Automator can help you automate your Google Home App.

## Getting Started

### Prerequisites

#### Python 3

You need a python 3 environment to run the script. Google Home UI Automator
requires python 3.11 or newer.

#### Android phone

1.  Turn on ***User Debugging*** mode on your android phone.
1.  Connect your android phone to computer.

#### Google Home App

1.  You need to install Google Home App on your Android phone.
1.  Login to your Google Home App.
1.  Make sure the Google Home App's version is between `3.1.1.14` and
    `3.32.126.2`. Dogfood version `3.32.192.0-dog-food` is also supported.

NOTE: Please select the correct Google account on Google Home App.

NOTE: This tool only works with the English version of the Google Home App.

### Installation

#### PyPI (recommended)

```shell
$ pip install google-home-ui-automator
```

#### Build from source code

1.  clone this repo.

    ```shell
    $ git clone https://testsuite-smarthome-matter.googlesource.com/ui-automator
    ```

2.  `cd` to the folder.

3.  Run `pip install .`

## Usage

### Commissioning Matter device

Follow the steps below to automatically commission a matter device.

```shell
$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME [--google_account <GOOGLE_ACCOUNT>]
```

*   `DEVICE_NAME`: desired Matter device, e.g. `m5stack`
*   `PAIRING_CODE`: pairing code of your Matter device, e.g. `34970112332`
*   `ROOM_NAME`: room that is going to be assigned, e.g. `Office`
*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
    `test@gmail.com`

### Decommissioning Matter device

Follow the steps below to decommission a matter device.

```shell
$ ui-automator --decommission DEVICE_NAME [--google_account <GOOGLE_ACCOUNT>]
```

*   `DEVICE_NAME`: display name of commissioned Matter device on GHA, e.g.
    `m5stack`
*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
    `test@gmail.com`

### Regression Test

Follow the steps below to run a regression test.

```shell
$ ui-automator --commission DEVICE_NAME,PAIRING_CODE,ROOM_NAME --regtest [--repeat <REPEAT_TIMES>] [--hub <HUB_VERSION>] [--dut <MODEL>,<TYPE>,<PROTOCOL>] [--fw <DEVICE_FIRMWARE>] [--google_account <GOOGLE_ACCOUNT>]
```

*   `DEVICE_NAME`: desired Matter device, e.g. `m5stack`
*   `PAIRING_CODE`: pairing code of your Matter device, e.g. `34970112332`
*   `ROOM_NAME`: room that is going to be assigned, e.g. `Office`
*   `--repeat`: Optional. Specifies the number of times to repeat the regression
    test.
    *   `REPEAT_TIMES`: Number of times to repeat the regression test, e.g.,
        `10`.
*   `--hub`: Optional. Includes the hub version in the test report.
    *   `HUB_VERSION`: Version of the hub controlling the devices in GHA, e.g.,
        `1.0.0`
*   `--dut`: Optional. Includes the device under test information in the test
    report.
    *   `MODEL`: Model of the device. e.g. `X123123`
    *   `TYPE`: Type of the device. e.g. `LIGHT`
    *   `PROTOCOL`: Protocol used by the device. e.g. `MATTER`
*   `--fw`: Optional. Includes the device firmware in the test report.
    *   `DEVICE_FIRMWARE`: Firmware of test device.
*   `GOOGLE_ACCOUNT`: Optional. Account to use in Google Home App, e.g.
    `test@gmail.com`

## Roadmap

-   [x] Commissioning Matter device
-   [x] Decommissioning Matter device
-   [x] Regression test of cycling commissioning/decommissioning
-   [ ] Support regression test for devices that need additionally manual
    operations after decommissioning to recover to BLE commissioning mode
-   [ ] Share Fabric
-   [ ] Get pairing code when sharing fabric

## Notice

*   While UI Automation is processing, interfering android phone with any UI
    operation might fail the automation.

## Report issue

-   Click
    [here](https://issuetracker.google.com/issues/new?component=655104&template=1694023)
    to report any encountered issues.

## Disclaimer

This project is not an official Google project. It is not supported by Google
and Google specifically disclaims all warranties as to its quality,
merchantability, or fitness for a particular purpose.