Behavior-driven development (BDD) is an idea or method of software process and a technology for agile software development.

Flybirds is a front-end UI automation test framework based on BDD mode, providing a series of out-of-the-box tools and complete documentation.

  • Based on Behave, supporting BDD tools are required to associate Natural Language Test Case Documentation with Automated Test Code in BDD.
  • Based on Airtest, UI automated test framework is needed to implement "test cases can be executed on automated test platform" in BDD.

What can I do?

With Flybirds you can do most of the mobile automation, here are some features to help you get started:

  • Based on BDD pattern, similar natural language syntax
  • Support automatic app operation, form submission, UI element verification, keyboard input, deeplink jump, etc. on the Android side. The IOS side is in progress
  • English and Chinese are supported by default. Support more languages ​​extensions
  • Plug in design, support user-defined automation framework extension
  • Provide cli scaffolding construction to help build projects quickly
  • Provide html report


  • python(3.7-3.9)
  • nodejs(12+)

Quickly start

1. Install

use pip to install flybirds,required pip install dependency package will be automatically installed

pip install flybirds

On MacOS/Linux platform, you need to grant adb execute permission.

for mac

cd {your_python_path}/site-packages/airtest/core/android/static/adb/mac
chmod +x adb

for linux

cd {your_python_path}/site-packages/airtest/core/android/static/adb/linux
chmod +x adb

use cli to create project

flybirds create 

You will be prompted to input the following information during project creation

  • project name
  • test platform:Android / iOS
  • test device name( can be skipped. you can config the node deviceId before running )
  • APP package name( can be skipped,ctrip demo package is default,you can config the node packageName before running )
  • webDriverAgent BundleID( can be skipped. only ios test needed, you can config the node webDriverAgent before running )

To help you use, demo features will be generated in the test directory when the project is created, and can be deleted later

2. Run

Please ensure that the test device used can be connected normally, then execute the following command

  • Android: run adb devices , check if test device is in the list
  • iOS:use tidevice,run tidevice list,check if test device is in the list

Android device connect Q&A

  • Please install the official driver of the phone's corresponding brand first to ensure that you can use the computer to perform USB debugging on the phone
  • Make sure that the "Developer Options" in the phone is turned on, and turn on "Allow USB Debugging" in the "Developer Options"
  • Some phones need to turn on "Allow Simulated Location" and "Allow App Installation via USB"
  • Turning off the mobile assistant software installed on the computer can avoid most of the problems. Please be sure to manually end the mobile assistant process in the task manager

iOS device connect Q&A

  • Please prepare a macOS first. After successfully deploying iOS-Tagent using xcode, you can connect to the iOS phone on the mac or windows machine. Please click linkdownload the project code to local deployment。
  • mac: install iproxy by Homebrew brew install libimobiledevice
  • windows: install itunes

Download and install test package

  • Android:project will automatically download and install the test package through packagepath in config(Please make sure that the phone is turned on "Allow installation from unknown sources"). It can also be downloaded and installed manually.Download
  • iOS:
  1. download from below address and install manually: Download
  2. use cmd or shell to start wdaproxy manually shell tidevice --udid $udid wdaproxy -B $web_driver_angnt_bundle_id -p $port

Run test,all feature files in the features directory by default

flybirds run  # run test

  • The presentation contains the main automation syntax. In order to make the presentation run normally, it is recommended not to modify the configuration items packagename and packagepath. If you do not need a presentation, you can modify it yourself
  • For more description of the cli : flybirds cli
  • For more description of the project : Project atructure
  • For more description of the feature writing : Feature writing

3. Project structure

4. Feature writing

5. flybirds cli


  1. Fork this repository
  2. Create a new branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push (git push origin my-new-feature)
  5. File a PR

Welcome to fork and feedback

If you have any suggestion, welcome to GitHub to raise issues.


This project follows the MIT license.


Thanks for all these great works that make this project better.

GitHub - ctripcorp/flybirds at
BDD-driven natural language automated testing framework, present by Trip Flight - GitHub - ctripcorp/flybirds at