# Run tests

> Start a run from a test, a suite, your terminal or GitHub.

Source: https://rehearsal.dev/docs/tests/run-tests

A run is one request to run tests. It holds one test, several, or a suite. Starting a run needs the **Manage projects** permission.

## From the app

- **One test.** Press **Run** on its row in **Tests**, or **Run test** on its page.
- **Several tests.** Select them in **Tests** and press **Run selected**. They go into one run.
- **A suite.** Open it under **Suites** and press **Run suite**. See [Suites](https://rehearsal.dev/docs/tests/suites.md).
- **A new test.** Press **Run now** on its card in the chat. You can also ask Re:agent to run a test.
- **A run again.** Press **Run again** on a finished run. It runs the same tests, in the same versions, at the same addresses.

A message confirms that the run started. Press **View** in it to open the run.

## Choose where it runs

Each app in a run is tested at one address. If the app has one address, Rehearsal uses it. If it has more, Rehearsal asks **Where should this run?** and you pick one for each app.

An address on your computer has to be connected. If it is not, Rehearsal shows the command to run on that computer. See [Connect a local app](https://rehearsal.dev/docs/cli/connect-a-local-app.md).

## From your terminal

The CLI starts a run and can wait for its result.

```sh
rehearsal runs start --test <test-id>
rehearsal runs start --suite <suite-id>
rehearsal runs wait <run-id>
```

[Run tests from the terminal](https://rehearsal.dev/docs/cli/run-tests.md) covers every option.

## From GitHub

A rule runs your tests when a pull request opens or changes, or when a branch changes. Each result appears as a check on the commit. See [Rules for pull requests and deployments](https://rehearsal.dev/docs/github/rules.md).

## What a run checks

- A run writes down its tests when it starts, each in the newest version that passed in a fresh browser. Changes after that apply to the next run.
- The tests in a run go one after another, in order.
- Each test has three minutes to finish. A test that fails is not run again in the same run.
- A test that is not ready still goes into the run, and the run ends **Blocked**. Rehearsal tells you before you start.

## Stop a run

Press **Stop** on a run that is still going. The test that is running finishes first, and the tests after it do not run. The run ends **Cancelled**.

## If a run could not finish

If a problem on our side stops a run, Rehearsal picks it up again and keeps the results it already has. If it still cannot finish, the run says **Could not run**. It counts towards nothing. See [Runs we could not finish](https://rehearsal.dev/docs/billing/runs-we-could-not-finish.md).

## Next steps

- [Read a run](https://rehearsal.dev/docs/tests/read-a-run.md) to see what happened.
- Group the tests you run together into [suites](https://rehearsal.dev/docs/tests/suites.md).
