Skip to main content

STF client with appium

Project description

OpenSTF+Appium Client for test automation

Unit tests Coverage Status PyPI version

Library provides basic functionality for test automation which allows allocating phone from STF server using python stf-client, initialise adb connection to it and start [appium][https://github.com/appium/python-client] server for it.

Basic idea is to run tests against remote openstf device farm with minimum requirements.

Flow

sequenceDiagram
    participant C as User
    participant A as stf-appium-client
    participant B as STF(device)
    C->>A: allocation_context(requirements, wait_timeout, timeout, shuffle)
    A->>B: Find suitable device
    A->>B: allocate device
    A->>B: remoteConnect
    A->>B: ADB Connection
    A->>A: Start AppiumServer(ADB)
    A->>A: Start AppiumClient(AppiumServer)
    A->>C: AppiumClient(AppiumServer(ADB))
    C->>A: Run Appium Tests

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

  • openstf server and access token
  • python >=3.9
  • adb
  • appium (npm install appium) Library expects that appium is located to PATH
    • appium 2 (npm install appium@next)
      • remember to install appium drivers, e.g. appium driver install uiautomator2
    • appium 1
    • note that appium server and client need to be compatible with each other!

Installing

  • pip install stf-appium-client

or for development purpose:

  • pip install -e .

Running the tests

make test

CI runs tests against following environments:

ubuntu-latest macos-latest windows-latest
3.7
3.8
3.9
3.10
3.11

Deployment

This pip package could be installed together with test framework and utilise using CLI interface or via python interface. See more usage examples below.

usage

Python Library

client = StfClient(host=environ.get('STF_HOST'))
client.connect(token=environ.get('STF_TOKEN'))

with client.allocation_context(
        requirements=dict(version='10')) as device:
    print('phone is now allocated and remote connected')
    with AdbServer(device['remote_adb_url']) as adb_port:
        print('adb server started with port: {adb_port}')
            with AppiumServer() as appium:
                print("Phone is ready for test automation..")
                # appium is running and ready for usage
                with AppiumClient() as driver:
                   print(driver)

See examples from examples -folder.

Logging

Library utilise python native logging module. Logger name is StfAppiumClient. By default it configure default console handler for logger with INFO level. STF_APPIUM_LOGGING env variable can be used to use DEBUG logging level. If any handlers for this logger is configured before StfClient instance creation no default handlers are added.

CLI

stf --token 123456 --requirements "{\"version\": \"9\"}" "echo $DEV1_SERIAL"

Call robot framework

stf --token 123456 --requirements "{\"version\": \"9\"}" "robot phone/suite" 
$ stf --help
usage: stf [-h] --token TOKEN [--host HOST] [--requirements R] [--list]
           [command [command ...]]

STF client with appium.

Tool allocate phone, create adb and appium server and 
call user given command with generated env variables:
DEV1_ADB_PORT      ADB PORT that appium utilize.
DEV1_APPIUM_HOST   appium host where user given command can connect, e.g. robot framework
DEV1_SERIAL        device details..
DEV1_VERSION
DEV1_REQUIREMENTS  user given requirements
DEV1_INFO          phone details

Example: stf --token 123 -- echo \$DEV1_SERIAL


positional arguments:
  command           Command to be execute during device allocation

optional arguments:
  -h, --help          show this help message and exit
  --token TOKEN       openstf access token
  --host HOST         openstf host
  --list              list only requirements, filtered on given requirements
  --requirements R    requirements as json string
  --timeout t         allocation timeout
  --wait_timeout w    max wait time for suitable device allocation
  --verbose           appium logs to console. WARNING: this mix console prints
  --appium-logs file  appium logs to file

License

This project is licensed under the MIT License - see the LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stf_appium_client-0.13.0.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stf_appium_client-0.13.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file stf_appium_client-0.13.0.tar.gz.

File metadata

  • Download URL: stf_appium_client-0.13.0.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for stf_appium_client-0.13.0.tar.gz
Algorithm Hash digest
SHA256 b5cd5ab75bf4569b4aee16965341571674a7a2ac9eaea450f7bb4d8711a49d54
MD5 1651ca1fd4c06983f96ac456bae1a98f
BLAKE2b-256 11f8b429a8dd2f38245b64b8bd470b4ea637b96f16e86528cec03b7a0ce07465

See more details on using hashes here.

File details

Details for the file stf_appium_client-0.13.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stf_appium_client-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 438d9782d6303315529ba7dc4a331a3b7d26709bad34f268ef785748cb08be0d
MD5 5a4575f7da9bd3be7b2f41edf0ed4689
BLAKE2b-256 5b43e7a7a24fd65959af5a015d52eba06b36132d1c9a8352c766b578b0d422e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page