The basics
Running your first workflow
In this tutorial, we'll create a new Node.js project, install the test suite, and run our first workflow.
Create a project
Use npm, yarn, or pnpm to create a new project. Install cucumber and the LetsFlow test suite.
yarn init
yarn add --dev @cucumber/cucumber @letsflow/testingCopy the cucumber configuration from the test suite and create directories from the scenario and test files.
cp node_modules/@letsflow/testing/cucumber.example.yaml ./cucumber.yaml
mkdir scenarios featuresEdit package.json and add the test:workflows script.
"scripts": {
"test:workflows": "cucumber-js --profile workflows"
}My first scenario
The scenario describes the process we're automating. We can write a scenario in either JSON or YAML.
Create file basics.yaml (or basics.json) in the scenarios directory.
A scenario has states. A new process will always start in the "initial" state. We define that if we perform the "complete" action, the process will transition to the "(done)" state.
states:
initial:
on: complete
goto: (done){
"states": {
"initial": {
"on": "complete",
"goto": "(done)",
}
}
}A state with a name in parenthesis, like "(done)", is an end state. There are no transitions from an end state. Unlike normal states, end states can be used in a goto statement without defining them explicitly.
Running a test
The scenario can be tested by writing a BDD test in the Gherkin language. Gherkin uses a set of special keywords to give structure and meaning so the test can be executed.
The LetsFlow test suite comes with a predefined set of statements that can be used to test running a scenario.
Create file basics.feature in the features directory.
Feature: Run a simple process that is completed in one step
Background:
Given the process is created from the "basics" scenario
And "Joe" is the actor
Scenario:
When "Joe" does "complete"
Then the process endedRun the test from the command line
yarn test:workflows features/basics.featureCongratulations!
You've successfully created and tested your first workflow.
Last updated
Was this helpful?