Build your first agent in just a few minutes with [Rasa Copilot](https://hello.rasa.com/?utm_source=docs&utm_medium=referral&utm_campaign=docs_cta).

## Coverage Report Generation

To generate a coverage report, use the `--coverage-report` option with the `rasa test e2e` command. You can also specify an output directory for the report with the `--coverage-output-path` argument. By default, the coverage results are printed to `stdout` and saved in the `e2e_coverage_results` directory within your assistant's folder. The report calculates coverage separately for both passing and failing tests.

```bash
rasa test e2e <path-to-test-cases> --coverage-report
```

The specific output artifacts are explained below.

## Flow Coverage

Flow coverage report shows the percentage of flow steps that are covered by the E2E tests. Here's an example output:

```bash
                                           Flow Name Coverage  Num Steps  Missing Steps  Line Numbers
             data/flows/order_pizza.yml::order_pizza   80.00%          5              1  [15-22]
                   data/flows/add_card.yml::add_card   75.00%          4              1  [10-10]
             data/flows/add_contact.yml::add_contact   25.00%          4              3  [22-35, 27-28, 31-32]
 data/flows/authenticate_user.yml::authenticate_user    0.00%          5              5  [11-13, 23-24, 16-24, 20-21, 14-15]
         data/flows/check_balance.yml::check_balance    0.00%          2              2  [7-7, 6-6]
                                               Total    40.00%        20             12
```

The `Coverage` column shows the percentage of steps covered by tests, while the `Num Steps` column indicates the total steps in each flow. The `Missing Steps` column lists steps not covered by tests, and `Line Numbers` indicates where these missing steps are located in the flow files.

From the above example, it is evident that majority of `data/flows/add_contact.yml::add_contact` are not well tested and none of the steps of `data/flows/authenticate_user.yml::authenticate_user` and `data/flows/check_balance.yml::check_balance` are tested. The next logical step for the user is to add E2E tests that cover the following flows.

As mentioned, the above analysis is done for both passing and failing tests and the results are also added to the `coverage_report_for_passed_tests.csv` and `coverage_report_for_failed_tests.csv` files respectively.

## Command Coverage

The tool also outputs the coverage of [commands](/content/docs/reference/config/components/llm-command-generators/#command-reference/index.html) the dialogue understanding module triggers when running the E2E tests. The output is a histogram for passing and failing tests separately in `commands_histogram_for_passed_tests.png` and `commands_histogram_for_failed_tests.png`.

## Passing / failing tests

Each passing and failing test is added to `passed.yml` and `failed.yml` respectively.

By using these tools, you can ensure your assistant is thoroughly tested and any gaps in coverage are identified and addressed.

- [Flow Coverage](/content/docs/reference/testing/e2e/coverage/#flow-coverage/index.html)
- [Command Coverage](/content/docs/reference/testing/e2e/coverage/#command-coverage/index.html)
- [Passing / failing tests](/content/docs/reference/testing/e2e/coverage/#passing--failing-tests/index.html)
