Skip to main content

Testing Workflows

The builder gives you four ways to check a workflow before you rely on it: Validate Workflow, the ▶ button on each node, Test Case nodes with Run All Tests, and the Executions history. This page explains exactly what each one does.

Validate the structure​

Click Validate Workflow (the tick button in the canvas toolbar). It checks that:

  • the workflow has a name, nodes and exactly one Trigger;
  • every Loop Start is paired with a Loop End;
  • every node except the Trigger is connected;
  • Agent, Team and Function nodes have something selected;
  • Test Case nodes have a scenario name, and For Each loops have a collection variable.

Problems are listed above the canvas. The same checks run every time you save, and before Run Workflow.

Validation doesn't check Condition branches or variable references. Watch for:

  • red variable chips and "references no longer resolve" under a field — a referenced node has been deleted;
  • a Condition branch handle with no connection — the run stops there if that branch is taken.

The API's POST /workflows/validate (or the Platform MCP tool validate_workflow_definition) also checks Condition branches and Dropdown options.

Do a test run​

The most reliable test is a real run:

  1. On Build → Workflows, click Run on the workflow (or use Build → Missions).
  2. Enter realistic test inputs and launch.
  3. Watch it on the execution canvas. Open each node with View output or Open in Chat to check what it received and produced.

Run Workflow in the builder also starts a real run, but with no attribute values — any ${attribute.…} will be empty.

Every test run is a real mission: agents call their tools, functions run, and tokens are charged. Point side-effecting steps at test systems, or put an Approval node in front of them while you're testing.

The node ▶ button​

Each node has a ▶ ("Run this node on its own") button. It opens a Run node dialog with an Input message box and, if the node refers to earlier steps, a box for each reference. Click Run node.

warning

Despite the dialog's wording, the platform currently runs the whole saved workflow from its Trigger, using your Input message as the run's initial message. The values you enter for earlier steps aren't used, unsaved changes on the canvas aren't included, and the run is recorded as a mission. Save first, and treat it as a full test run.

The result opens in the Test Results drawer (see below).

Test Case nodes and Run All Tests​

A Test Case node describes a scenario: a Scenario Name, a Trigger Payload (JSON) such as {"initial_message": "Hello"}, an Expected Final State (JSON), an Expected Node Path and Target Metrics (DeepEval metrics such as AnswerRelevancy or Hallucination). Adding one to the canvas shows the Run All Tests button (the flask) in the toolbar.

warning

Test Case nodes on the canvas aren't wired up to testing yet:

  • The builder won't save a workflow with an unconnected node, and if you connect a Test Case node, a run that reaches it fails ("Unknown node type: TEST_CASE"). Remove Test Case nodes before saving.
  • Run All Tests runs the workflow's saved test scenarios, which are created through the API (POST /workflows/{workflow_id}/test-nodes) or the Platform MCP tool create_workflow_test_node — not the Test Case nodes on the canvas. If none exist, it reports "No test nodes found for workflow".

The Run All Tests button only appears while a Test Case node is on the canvas, so add one temporarily to reach it.

For each saved scenario, Run All Tests runs the whole workflow with the scenario's initial_message. If the scenario has target metrics, it is then scored with DeepEval using your organisation's workflow-test judge model, which an organisation admin sets through the API (workflow_test_judge_llm_config_id in /platform-settings). The scenarios run one after another, so this can take a while.

Saved scenario fields:

FieldDescription
node_idThe canvas node the scenario belongs to (one scenario per node).
scenario_nameName shown in results.
trigger_payloadUses initial_message as the run's starting text.
expected_final_stateUses expected_output, actual_output and context for scoring.
expected_node_pathStored for reference.
target_metricsDeepEval metric names.

Test Results drawer​

After Run All Tests or a node ▶ run, the Test Results drawer slides up with "passed/total passed" and a row per scenario:

ColumnShows
NodeThe node the scenario belongs to.
ScenarioThe scenario name.
Statuscompleted if the run finished without error, otherwise failed.
ScoreThe average metric score as a percentage, when metrics were scored.
DurationHow long the run took.
ErrorWhy it failed.

Review run history​

Click the history (clock) button beside the workflow name to open Executions: every run with when it Started, Status, Trigger, Stage, Progress and Duration. Click a run to open it on the mission canvas. Use this to compare runs before and after a change.

The workflow list also shows each workflow's Runs, Success rate, Avg Cost and Last Run.

A testing checklist​

  1. Validate and fix every listed problem.
  2. Run from Missions with typical inputs, then with empty and unusual inputs.
  3. Force each Condition branch with inputs that should take it, and check the other branches show Skipped.
  4. Check loops stop when you expect — look at the iteration outputs.
  5. Try an approval both ways: approve, then reject (the run should end Failed).
  6. Check cost on the workflow list before scheduling it.