> ## Documentation Index
> Fetch the complete documentation index at: https://www.minitap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedules

> Run your scenarios on their own every night or every morning, and read one summary in Slack when each run ends.

A schedule runs the scenarios you pick at a set time, on the days you pick, and posts one summary to a Slack channel when the run ends. Use it to check the app every night without anyone pressing **Run tests**, or to keep an eye on the build your users have between releases.

## Create a schedule

Open **Schedules** under **Test suite** and click **Set up a nightly run** (or **New schedule** once you have one). You can also click **Schedule this…** at the end of [Run tests](https://www.minitap.ai/docs/minitest/runs/triggering-a-run.md). Setting it up takes three steps:

| Step | What you set |
| - | - |
| **Scenarios & platforms** | **All tests**, scenarios selected by tag, or **Pick scenarios** by name, then the build each platform runs. With all tests or tags, new scenarios join automatically; picked scenarios stay exactly as picked. |
| **Devices** | Cloud simulators and emulators, or the physical phones of your workspace, as in [Choose devices](https://www.minitap.ai/docs/minitest/setup/devices.md#how-a-run-picks-its-device). For a web app, the browsers. |
| **Schedule** | The **Name**, the **Start time** and timezone, the **Days**, the Slack channel for the summary, and **Post when all clear too**. |

Click **Create schedule**. The confirmation tells you when the first run starts.

![New schedule, Schedule step: name, start time 03:00 Paris, weekdays selected, next three runs, an estimated duration of about 25 minutes per platform, the Slack channel picker and the This schedule summary](https://mintcdn.com/minitap-30239763/QCLbAMcddko_3eZy/minitest/images/app/new-schedule.png?fit=max\&auto=format\&n=QCLbAMcddko_3eZy\&q=85\&s=0791223cdeb5d31e0de10371da48a4df)

The Schedule step: when it runs, how long it takes, and where the summary goes.

> [!TIP]
>
> A new schedule starts at 03:00 on weekdays, in your browser's timezone. Pick **Weekdays**, **Every day** or any set of days, and search the timezone by city or country.

### Which build runs

| Build | What happens at each start |
| - | - |
| **Newest build** | The newest build that installs, picked again at every run. |
| **A fixed build** | The same build every run, like the one in the store. |
| **Build a branch** | Mini builds the latest commit of a branch of your repository, then tests it. A failed build is reported as not tested. |

For a web app, test the URL from the app's settings, another URL such as staging or a preview, or a branch Mini builds before each run.

### Before you save

The **Schedule** step shows what the schedule will cost and when it will finish:

* **Next runs**: the next three starts, in the schedule's timezone.
* **Duration**: how long the run takes, based on past runs of these scenarios, and around when the summary reaches Slack.
* The number of scenario runs a night and a week. Scheduled runs are billed like any run.

On physical phones, scenarios run as many at a time as you have phones, and a busy phone is waited for up to 4 hours.

Slack has to be connected to the workspace, since the summary has nowhere else to go. See [Mini in Slack](https://www.minitap.ai/docs/minitest/integrations/mini-in-slack.md).

## The Slack summary

After each run, Mini posts one message in the channel you picked: what passed, which issues are new since the schedule's previous run, which are still broken, and a link to the run report. A night that didn't run says why. Turn off **Post when all clear too** to hear only about problems.

## Read the history

Each schedule has a card on the **Schedules** page with its days and time, the channel it posts to, and its last runs, oldest first. Hover a run to see the build it tested (a new build or the same as last time) and its issues, marked **New**, **Still broken** or **Works again**. Runs started by a schedule also show on the **Runs** page, labeled with the schedule's name.

A run that didn't start always has a reason on the card, for example:

* The workspace is out of credits or reached its spend limit.
* No build installs, or the branch failed to build.
* The previous run was still going.
* No scenario matches the schedule.
* The site didn't respond, or your test phones were busy.

From the card's menu you can **Run now**, **Edit schedule…** or **Delete schedule** (hold to confirm, and undo it right after if you need to). The switch on the card pauses a schedule and turns it back on. Past runs of a deleted schedule stay on the **Runs** page.

## From the CLI

The `minitest schedules` commands manage the same schedules. They take the app with `--app` and address a schedule by name or ID.

```bash theme={"theme":{"light":"github-light","dark":"vesper"}}
# Weekdays at 03:00 in this machine's timezone, on the latest Android build
minitest --app <app-id> schedules create --name "Nightly sanity check" --at 03:00 \
  --tag smoke --android --slack-channel C0123ABCD

# Every day at 05:00 in Oslo, the whole suite on a fixed iOS build
minitest --app <app-id> schedules create --name "Monitoring" --at 05:00 \
  --days every-day --timezone Europe/Oslo --ios-build <build-id> --slack-channel C0123ABCD
```

| Command | What it does |
| - | - |
| `schedules list` / `get <schedule>` | List the app's schedules, or show one. |
| `schedules preview <schedule>` | What the next run would do: scenario count, duration and builds. |
| `schedules run <schedule>` | Start it now, the same way a scheduled start does. It posts to Slack too. |
| `schedules fires <schedule>` | The past runs, newest first, with new, still open and fixed issues, or why a run was skipped. |
| `schedules update <schedule>` | Change only the flags you pass. |
| `schedules pause <schedule>` / `resume <schedule>` | Pause it, or turn it back on. |
| `schedules delete <schedule> --yes` / `restore <id>` | Delete it, or undo the delete. |

`--days` takes `weekdays` (the default), `weekends`, `every-day` or a list like `mon,wed,fri`. What runs is `--suite` (the default), `--tag` with optional `--exclude`, or `--scenario`. The Slack channel ID is at the bottom of the channel's **About** tab in Slack. Run `minitest schedules create --help` for every flag.

## Next steps

> [card] [Ways to start a run](https://www.minitap.ai/docs/minitest/runs/triggering-a-run.md)
>
> Every other way to start a run, from the dashboard to CI.

> [card] [Mini in Slack](https://www.minitap.ai/docs/minitest/integrations/mini-in-slack.md)
>
> Connect Slack and pick the channels Mini posts to.

> [card] [Triage issues](https://www.minitap.ai/docs/minitest/triage/issues.md)
>
> What to do with the issues a night turned up.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.