Maestro can run a suite of tests and generate a test report at the end.
To run a suite, point maestro test
to a folder that contains the flows
maestro test myFolderWtihTests/
Maestro will run every flow from the directory excluding subfolders. The command will complete successfully if and only if all the flows have completed successfully.
To generate a report, add a --format
parameter to a test
command:
maestro test --format junit myFolderWithTests/
Or if you are using Maestro Cloud:
maestro cloud --format junit myFolderWithTests/
Once execution completes, the report will be stored in a report.xml
file in a JUnit-compatible format that is supported by most platforms.
junit
- JUnit XML format
--output {file}
allows to override the report filename
There are multiple mechanisms to control what flows to run when running a test suite.
Flow tags are covered extensively in the following section
{% content-ref url="tags.md" %} tags.md {% endcontent-ref %}
By default, when running a test suite only flows from the top level of a given directory will be executed. Consider the following folder structure:
workspace/
flowA.yaml
subFolder/
flowB.yaml
subSubFolder/
flowC.yaml
When running a test
or cloud
command on a workspace
folder, only flowA.yaml
will be executed by default (though it is still able to refer to subFolder/flowB.yaml
and subFolder/subSubFolder/flowC.yaml
using runFlow
command).
This behaviour can be customised by using inclusion patterns. To do that, update your config.yaml
(create the file if missing) as following:
flows:
- "*" # the default behaviour
- "subFolder/*"
In such case, both flowA and flowB will be included into the test suite but not flowC.
Tests can also be included recursively:
flows:
- "**"
In this example, all flows A, B and C will be included into the test suite.
{% hint style="warning" %} We discourage usage of deterministic ordering as this will block you from parallelising test execution. {% endhint %}
{% hint style="warning" %} This option is not supported for Maestro Cloud tests. All tests in a suite are going to be executed in parallel regardless of this setting. {% endhint %}
Normally, tests in a suite are executed in a non-deterministic order. In cases where a fixed order of execution is required, you can force your tests to run in alphabetical order. Update your config.yaml
(or create the file if missing) to enable this behaviour:
local:
deterministicOrder: true