> 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/better-coverage/build-smoke-and-regression-coverage.md).

# Build smoke and regression coverage

Smoke coverage is a short path that proves the core journey still works. Regression coverage runs the longer paths. In DoesQA, both can live in one Flow: share the early steps, split with a [Flow Branch](/getting-started/terminology.md), then mark each path with [**Tag Test**](/test-steps/utility/tag-test.md). That pattern is usually a later split: one Open, shared steps, then the smoke and regression paths. See [Choose Flow Branch shapes](/better-coverage/choose-flow-branch-shapes.md).

```mermaid
flowchart TD
  open["Open and shared steps"] --> branch{"Flow Branch"}
  branch --> smoke["Smoke path + Tag Test smoke"]
  branch --> regress["Regression path + Tag Test regression"]
  smoke --> recipe["Run Recipe Include Tags"]
  regress --> recipe
```

Use the **Flow Builder** for this walkthrough.

## What you need

* A Flow with a journey you can split into a short path and a longer path
* Tag names you will reuse in recipes, such as `smoke` and `regression`

## Mark each path with Tag Test

{% stepper %}
{% step %}

## Open the start of the journey

Start with [**Open**](/test-steps/starter/open.md). Add any shared steps both packs need, such as login.
{% endstep %}

{% step %}

## Add a Flow Branch

Split the Flow so one path stays short (smoke) and another continues into fuller coverage (regression). Shared steps stay above the branch so you maintain them once.
{% endstep %}

{% step %}

## Tag the smoke path

On the short path, add [**Tag Test**](/test-steps/utility/tag-test.md) from **Utilities**.

Choose or create the `smoke` tag. Finish the path with the checks that prove the core journey.
{% endstep %}

{% step %}

## Tag the regression path

On the longer path, add another [**Tag Test**](/test-steps/utility/tag-test.md) with the `regression` tag. Continue with the extra steps that pack should own.
{% endstep %}
{% endstepper %}

Each tagged path becomes a [Test Case](/getting-started/terminology.md). A path can carry more than one tag if you place more than one Tag Test on it.

{% hint style="info" %}
**Pro tip:** **Manual Run Mode** on Tag Test only affects the play button in the Flow Builder. **Ignore Test Case** skips that path on a manual run. Recipe, Schedule, and CI Runs always use your recipe filters instead.
{% endhint %}

<figure><img src="/files/9tkDqfRdhsBa46nh3Fca" alt="Open, Touch, and Tag Test"><figcaption><p>Example path with Tag Test</p></figcaption></figure>

## Create Run Recipes for each pack

Go to [**Settings → Run Recipes**](/configuration/run-recipes.md).

{% stepper %}
{% step %}

## Smoke recipe

Create a recipe titled for smoke coverage.

Under **Test Case Filters → Include Tags**, select `smoke`. Leave Flow Filters empty unless you also organise whole Flows with tags.
{% endstep %}

{% step %}

## Regression recipe

Create a second recipe. Under **Test Case Filters → Include Tags**, select `regression`.
{% endstep %}

{% step %}

## Run a pack

Open the recipe and start it with the play control. Only Test Cases that carry every include tag (and none of the exclude tags) run.
{% endstep %}
{% endstepper %}

Include tags mean **all** selected tags must be present. If you set include tags, paths with no matching Tag Test are left out. So a smoke path tagged only `smoke` does not run in a regression recipe unless that path also has the `regression` tag.

## Related

* [Choose Flow Branch shapes](/better-coverage/choose-flow-branch-shapes.md)
* [Tag Test](/test-steps/utility/tag-test.md)
* [Run Recipes](/configuration/run-recipes.md)
* [Run across environments](/better-coverage/run-across-environments.md)
* [Schedules](/configuration/schedules.md)
* [Trigger Runs from CI/CD](/configuration/ci-cd.md)
