# Action-Based Testing Guide
What You Will Learn
ABT is a modular-designed and action-driven test method that provides a systematic approach to incrementally increase the success of automated testing. Modular-design addresses the challenges of test planning and test case management through efficient test organization. Action-driven test development eliminates the majority of the programming work required to automate and maintain tests long-term.
ABT consists of three parts:
- Top-down, modular test planning.
- Test Module development.
- Action-driven test authoring.
# The Test's Language
Most tests consist of a sequence of actions, with action keywords and arguments. Actions are either built-in actions or user-defined actions. User-defined actions are implemented either with action definitions or coded in an automation script. A Gondola action has the following syntax:
action name **<argument 1>** ... **<argument n>**
**action name**:
- The action name tells Gondola which operation to perform.
**argument**:
- The number of action arguments and types depends on the how the action is defined. Arguments can be of many different types such as Strings, Integers, etc.
Example syntax of an enter action:
# Built-in Actions
Gondola includes a library of built-in actions to perform a myriad of functions.
Built-in actions are automatically available with your installation of Gondola. There are several categories of built-in actions:
Common actions:
Actions that work with both mobile and web apps such as checkControlExist and enterMobile actions:
Actions that work with mobile apps such as tap,swipe and checkAppIsInstalledWeb actions:
Actions that work with browsers such as switchFrame and switchBrowserTabWeb service actions:
Actions designed to work with Rest API endpoints such as checkResponseStatus and sendPostRequestTest Support actions: Automation control actions, like If and While, and declaratory actions (Test Case, Suite Initial, Suite Final).
# Under Development
- Resemble.js helper actions Actions for image comparison using Resemble.js