> For the complete documentation index, see [llms.txt](https://docs.does.qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.does.qa/platform/flow-builder.md).

# Flow Builder

Build and rearrange Flows on a visual canvas with the Flow Builder.

The **Flow Builder** is the visual editor for a [Flow](/getting-started/terminology.md). You place [Test Steps](/getting-started/terminology.md) on a canvas, connect them, and grow the design into full coverage.

After Getting Started, journey guides use the Flow Builder as the default way to build. The [Scenario editor](/platform/scenario-editor.md) shares the same Test Steps. Switching tabs shows the same Flow another way.

![Flow Builder canvas for a DoesQA Website journey](https://static.does.qa/assets/ui/light/working-flow-canvas.png)

## What you can do here

* Drag Test Steps from the step library onto the canvas, and filter the library when you search
* Connect steps so each [Test Case](/getting-started/terminology.md) path is clear
* Open a step to set Elements, Values, and other fields
* Add [Flow Branches](/getting-started/terminology.md) when one Flow should cover more than one path
* Gate a branch with [Condition](/test-steps/runner/condition.md) when a path should run only for a device, language, timezone, or Value
* Use [Loop](/test-steps/runner/loop.md) to retry actions or repeat steps until a condition is met
* Drop in [Step Groups](/better-coverage/reuse-steps-with-step-groups.md) for shared login or setup
* Select several steps, align them, duplicate them, or turn them into a Step Group
* Run or preview the Flow from the toolbar, then open **Results**

## Open the Flow Builder

{% stepper %}
{% step %}

## Open a Flow

Open a Flow from **Flows**, or create one.
{% endstep %}

{% step %}

## Select the Flow tab

Select the **Flow** tab.

New Flows open in the Scenario editor first. Use the **Flow** tab when you want the canvas, branches, or a clearer view of a growing Flow. See [Create and run your first Flow](/getting-started/create-and-run-your-first-flow.md).
{% endstep %}
{% endstepper %}

## Flow settings

Configure how the Flow runs in the Flow settings dialog.

| Setting                | What it does                                                                                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title**              | The Flow name shown in the Flows list and results.                                                                                                                                                      |
| **URL**                | The starting URL for Test Cases.                                                                                                                                                                        |
| **Tags**               | Tags that identify this Flow for [Universal Webhook](/platform/integrations/universal-webhook.md), [Schedules](/configuration/schedules.md), or [Run Recipes](/configuration/run-recipes.md) selection. |
| **Stop on first fail** | Stop Test Case execution after the first failing step. Reduces the length of failing tests.                                                                                                             |
| **Run in isolation**   | Test Cases from this Flow run consecutively in isolation, never in parallel with other Test Cases. Use this when parallel runs interfere with each other.                                               |

Tags on the Flow itself control which Flows are selected. Use [Tag Test](/test-steps/utility/tag-test.md) inside the Flow to tag individual Test Case branches for smoke, regression, or other filters.

## Build on the canvas

1. Find a Test Step in the step library. Type in the search box to filter by name or family.
2. Drag the step onto the canvas below the step it should follow, so the connector joins them.
3. Open the step and set its fields.
4. Keep adding steps until the path matches the journey you want to prove.

{% hint style="info" %}
**Pro tip:** Hold **Shift** and drag to select several Test Steps at once. Then duplicate them, align them, or create a [Step Group](/better-coverage/reuse-steps-with-step-groups.md) from the selection.
{% endhint %}

## Seeing edits from teammates and the Assistant

Edits from teammates, the Assistant, or an MCP agent appear live while you view the Flow. Once you start editing, your changes take the lead. This keeps everyone working from the latest version.

## Useful canvas actions

| Action       | How                                                                                     |
| ------------ | --------------------------------------------------------------------------------------- |
| Undo / redo  | Toolbar controls, or **Cmd/Ctrl+Z** and **Cmd/Ctrl+Shift+Z**                            |
| Copy / paste | **Cmd/Ctrl+C** and **Cmd/Ctrl+V**                                                       |
| Duplicate    | **Cmd/Ctrl+D**, or **Duplicate Step(s)** on the context menu                            |
| Align        | Select two or more steps, then align left, right, top, or bottom from the context menu  |
| Delete       | **Backspace** or **Delete**. Neighbouring steps reconnect when a middle step is removed |
| Save         | Changes autosave. **Cmd/Ctrl+S** also saves                                             |

## Branches and Conditions

A Flow with more than one path uses Flow Branches. Design the shared steps once, then split into paths for smoke vs regression, mobile vs desktop, or staging vs production tags.

See [Choose Flow Branch shapes](/better-coverage/choose-flow-branch-shapes.md) for joined starts, a later split, join then split, and layered combinations.

Use [Condition](/test-steps/runner/condition.md) early on a branch when that path should run only for a matching Runner, device, language, timezone, or Run Value. Use [Tag Test](/test-steps/utility/tag-test.md) when a schedule, Recipe, or CI/CD call should pick the path by tag.

For tagging smoke and regression paths, see [Build smoke and regression coverage](/better-coverage/build-smoke-and-regression-coverage.md).

## Run from the Flow Builder

Use **Run Flow** on the toolbar to start a Run while you edit. Overflow controls also let you **Run Tests** or **Preview Tests** when you want a narrower check. Open **Results** from the same place when the Run finishes. See [Understand your results](/getting-started/understand-your-results.md).

## When to prefer the Flow Builder

| Prefer the Flow Builder when                              | Prefer the Scenario editor when                           |
| --------------------------------------------------------- | --------------------------------------------------------- |
| You need Flow Branches or a multi-path design             | You want a single path as plain-language sentences        |
| You are rearranging or extending a larger Flow            | You are starting a simple Flow for the first time         |
| You want the step library and canvas layout               | You are happiest editing step text in a list              |
| You need Step Groups, align, or multi-select canvas tools | You are editing Values and Element names in sentence form |

## Related

* [Scenario editor](/platform/scenario-editor.md)
* [DoesQA AI](/platform/doesqa-ai.md)
* [Create and run your first Flow](/getting-started/create-and-run-your-first-flow.md)
* [DoesQA concepts](/getting-started/doesqa-concepts.md)
* [Reuse steps with Step Groups](/better-coverage/reuse-steps-with-step-groups.md)
* [Choose Flow Branch shapes](/better-coverage/choose-flow-branch-shapes.md)
* [Build smoke and regression coverage](/better-coverage/build-smoke-and-regression-coverage.md)
* [Condition](/test-steps/runner/condition.md)
* [Terminology](/getting-started/terminology.md)
