Create a concrete test model

A unique feature of Harmony is to generate a concrete model from the abstract one. By applying other tools, you should create a concrete model during which several mistakes can be made.

By applying Harmony, you can generate the concrete model during the manual execution of the abstract test cases. In other words, you can generate the concrete model from the abstract one. The concrete model consists of Gherkin++ phrases that are the related implementation-dependent transformations of the abstract action-state steps. While the abstract model is understandable by humans, the concrete model is understandable by machines and Harmony can generate any executable code from it. Currently, Harmony generates JavaScript code for the Cypress runner.

Gherkin++ is an extension of the original Gherkin language. The main difference is that based on the Gherkin you should make the code, while Gherkin++ steps can be compiled to executable test code.

Both actions and responses can be automatically extended to phrases. A phrase starts with the action/response name in the abstract model. Then the necessary concrete steps are added. Each step consists of four:

  1. Gherkin++ initial keyword WHEN, THEN, AND, IF.
  2. Selector (abstract)
  3. Gherkin++ middle keyword IS, HAS, etc.
  4. Value (abstract)


Test design







The process is that you execute a test case manually while the Cypress Runner is running. Harmony displays an action or a response, you should execute. The actions are very straightforward as you should enter text or click on buttons, while Harmony generates the selectors and the phrases into the related windows. For responses, you should select the necessary command from a list. For example, if you would like to validate that a button is active, you will select the #active command.

During this process, the test steps are executed, thus you can validate the results immediately. For example, if you select a wrong command such as #non-active, when the button is active, your test fails and you should fix the validation.

When you are ready just press the Done button:

The necessary selectors, values, and phrases are generated. When the test is ready, you should execute it again. Re-executing is necessary as the timing for step-by-step and all-in-one executions is different and it can occur that some wait-until action or forced click/type should be added.