# How uploaded results become suites and cases

Source: https://docs.qualflare.com/docs/runs/automated-results · Last updated: 2026-10-28

How Qualflare turns an uploaded results file into suites, test cases and steps: matching by name, what a rename does, what is overwritten and what runs next.

In Qualflare, each `qf <identifier> collect` upload becomes one launch: Qualflare finds each suite by name in the project and each test case by name in its suite, creates the ones it doesn't find, and records one case run per test result.

## From results file to launch

Here is what happens to an upload on its way to a launch:

* `qf <identifier> collect` reads your report files, sends them in one upload and prints `OK Test results collected successfully`. Several files in one call make one launch.
* Qualflare first checks the environment, milestone and language. If one doesn't exist in the project, the upload fails with HTTP 400 and creates nothing, for example `environment "staging" does not exist in this project` ([Use environments from the CLI](https://docs.qualflare.com/docs/runs/environments#use-environments-from-the-cli)).
* Each upload counts once toward the workspace's monthly Launches limit, 50 on Starter ([Limits](https://docs.qualflare.com/docs/administration/plans#limits)). qf sends an `Idempotency-Key`, so when it retries a request, Qualflare returns the launch it already created and counts nothing twice.

## How suites and cases are matched

Qualflare matches a suite by its name in the project, and a test case by its name in that suite; nothing else identifies a test. Suites and cases an upload creates are marked automated, and a new case starts Active.

| When your report …                                  | Qualflare …                                                                                            |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| keeps a test's suite and name                       | adds a case run to the same case, so its history continues                                             |
| renames a test                                      | creates a new case; the old case keeps its runs and stays in **Browse** until you archive or delete it |
| moves a test to another suite, or renames the suite | creates the case in that suite, and the suite too if it is new                                         |
| repeats a name in one suite in one upload           | records each result on the one case                                                                    |

A case's history, flaky score and AI Insights belong to the case, so a renamed test starts them over ([Detect and fix flaky tests](https://docs.qualflare.com/docs/analytics/flaky-tests)).

## Steps on matched cases

> **Caution: An upload can replace a case's steps**
>
> When a report includes steps for a test, Qualflare replaces the steps of the case it matches with the reported ones, including steps you wrote by hand or generated with Quo. A test reported without steps leaves the case's steps as they are.

Reports that carry steps include Cucumber, Karate, Playwright, Newman, XCTest, Allure, CTRF and Qualflare JSON ([Supported formats](https://docs.qualflare.com/docs/cli/formats)).

On an automated case, the steps are read-only in the app, and its state is Active or Outdated; see [Test cases](https://docs.qualflare.com/docs/test-management/test-cases).

## What else an upload changes

An upload also sets the suite's test type: it follows the latest report that names one, even if you set it by hand. Nothing else you set on an existing suite or case changes: its name, priority, state, description, or whether it's manual.

## Manual and uploaded cases side by side

Manual and uploaded cases share one namespace: a manual case and an uploaded test with the same suite and name are one case, so the upload's results, and any reported steps, go to your manual case. Keep manual cases in their own suites, or give them names your tests don't use.

## What runs after an upload

These start in the background after the upload returns, so qf doesn't wait for them:

| What                            | When                                                                    | Page                                                                                                                                            |
| ------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| AI launch analysis              | AI features are on for the project and the plan allows it               | [AI Launch Analysis](https://docs.qualflare.com/docs/ai/launch-analysis)                                                                        |
| Failure clustering              | Tests failed, AI is on and the plan allows it                           | [Failure Clusters](https://docs.qualflare.com/docs/ai/failure-clusters)                                                                         |
| Flaky detection and AI Insights | The plan has flaky detection or AI Insights; archived cases are skipped | [Detect and fix flaky tests](https://docs.qualflare.com/docs/analytics/flaky-tests), [AI Insights](https://docs.qualflare.com/docs/ai/insights) |
| Integration events and webhooks | Where you set them up                                                   | [Share and export results](https://docs.qualflare.com/docs/runs/share-results)                                                                  |
| Public report                   | The project's public report is on                                       | [Publishing a Report](https://docs.qualflare.com/docs/open-source/publishing)                                                                   |
| Overview dashboard              | Within about 7 minutes                                                  | [Overview dashboard](https://docs.qualflare.com/docs/analytics#data-freshness)                                                                  |

A manual run you finalize in the Test Wizard starts none of these except the dashboard ([Run manual tests](https://docs.qualflare.com/docs/runs/manual-testing#finalizing-the-launch)).

## Related

* **Guides:** [Quickstart](https://docs.qualflare.com/docs/get-started) · [Upload results with qf collect](https://docs.qualflare.com/docs/cli/collect) · [CI/CD integration](https://docs.qualflare.com/docs/cli/ci-cd)
* **Reference:** [Launches](https://docs.qualflare.com/docs/runs/launches#launch-statuses) · [Test cases](https://docs.qualflare.com/docs/test-management/test-cases) · [Supported formats](https://docs.qualflare.com/docs/cli/formats) · [Upload screenshots, videos and traces](https://docs.qualflare.com/docs/cli/artifacts), and how long they're kept
