# Recipes

A Run Recipe allows you to define a reusable set of filters and value overwrites for test execution.

You can find and manage recipes in **Settings → Run Recipes**. From there, you can create a new recipe, edit an existing one or click the Run button to immediately execute it with the configured filters and values.

When creating a new recipe, start by giving it a title. Then configure the following sections:

## Flow Filters

Control which flows are included in the run:

| Filter Type  | Description                                                 |
| ------------ | ----------------------------------------------------------- |
| Include Tags | The flow must contain **all** of the selected tags.         |
| Exclude Tags | The flow must **not** contain **any** of the selected tags. |

## Test Case Filters

Control which individual test cases are included within the matching flows:

| Filter Type  | Description                                                 |
| ------------ | ----------------------------------------------------------- |
| Include Tags | The test must contain **all** of the selected tags.         |
| Exclude Tags | The test must **not** contain **any** of the selected tags. |

## Value Overwrites

Override default values used during test execution by providing key-value pairs. These values replace any matching values defined in the Value Store.

### **Example**

```json
{
  "BASE_URL": "https://staging.example.com",
  "USERNAME": "testuser123",
  "COUNTRY": "UK",
  "FEATURE_FLAG_CHECKOUT_V2": true
}
```

This is useful for running the same tests across different environments, user accounts, regions, or feature flag configurations — all without modifying the test logic.

## Iterating Over Values

You can configure a recipe to iterate over a list of values, allowing the same set of tests to run multiple times — once for each item in the array.

To do this, provide an array of objects in the Value Overwrites section. Each object represents a separate run with its own values. During execution, the values are injected into the tests just like standard overwrites.

### Setting a PrimaryValue

When iterating over multiple values, it can be helpful to set a `primaryValue` inside each object. This will then be displayed on your test results to highlight which data set was being run.

### Example

```json
[
  {
    "primaryValue": "United Kingdom",
    "COUNTRY": "UK",
    "USERNAME": "user_uk",
    "BASE_URL": "https://uk.example.com",
    "CURRENCY": "GBP"
  },
  {
    "primaryValue": "Germany",
    "COUNTRY": "DE",
    "USERNAME": "user_de",
    "BASE_URL": "https://de.example.com",
    "CURRENCY": "EUR"
  },
  {
    "primaryValue": "France",
    "COUNTRY": "FR",
    "USERNAME": "user_fr",
    "BASE_URL": "https://fr.example.com",
    "CURRENCY": "EUR"
  }
]
```

In this example, the recipe will run the selected flows three times:

1. Once using values for the UK environment
2. Once using values for the German environment
3. Once using values for the French environment


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.does.qa/configuration/recipes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
