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/testing

Copy 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 features

Edit 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.

basics.yaml
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.

basics.feature
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 ended

Run the test from the command line

yarn test:workflows features/basics.feature

Congratulations!

You've successfully created and tested your first workflow.

Last updated