A test run is a time-bounded execution of a set of test cases. When you create a run, each included test case becomes a test inside that run, a working instance where you record results, link issues, and track progress. Runs give you a structured way to plan, execute, and report on testing activity across your team.
The Runs & Results page is the main hub for all manual test runs in a project. It shows active and closed runs, summary metrics, and tools for creating and managing runs.
Creating a Test Run
To create a single run, click the + Run button in the toolbar on the Runs & Results page. You can also click the + icon that appears in any milestone's run list.
The Add Run dialog has two tabs: Run and Notes.
Run tab
- Name (required): the display name for the run.
- Configuration (optional): the environment or configuration being tested, such as a browser, OS, or device. If your project has configurations defined, selecting one here links this run to it. An Apply to cases link next to the field becomes active when a configuration is selected; clicking it filters the case selection to only cases matching that configuration. If cases are already selected, the configuration filter is intersected with the existing selection; if all cases are included, the selection is replaced with configuration-filtered cases.
- Milestone (optional): associates the run with a milestone. You can create a new milestone inline using the + icon next to this field. Runs not assigned to a milestone appear under Unscheduled on the Runs & Results page.
- Case selection — controls which test cases are included in the run:
- Include all test cases — includes all cases currently in the repository. New cases added to the repository after the run is created are also included automatically.
- Select cases to include — opens the Select Cases dialog where you can pick specific cases. The number of selected cases is shown as a link you can click to change the selection.
- State (required): the workflow state for the run, such as In Progress or Ready for Review. The field defaults to the project's default run state.
- Issues: link existing issues from a connected tracker to the run at the time of creation.
- Tags: add one or more tags to the run for filtering. Tags can be created inline.
Notes tab
The Notes tab contains a rich text editor for run-level notes: test scope, objectives, environment details, or any other context relevant to the run.
Selecting Test Cases
When you choose Select cases to include in the run creation form (or click the cases link on a run row in the multi-run dialog), the Select Cases dialog opens. This is a resizable three-pane dialog for browsing, filtering, and building the exact set of cases to include in the run.
Folder tree (left pane)
The left pane lists all repository folders with their case counts. Clicking a folder loads its cases in the center pane. The folder tree is a navigation aid; selecting a folder does not automatically add those cases to the run, just pre-selects them.
Case list (center pane)
The center pane shows the cases in the currently selected folder as a table with Case name and State columns. Each row has a checkbox for selecting or deselecting individual cases. The pane header shows the case count for the current folder.
Checking a row adds that case to the selection; unchecking removes it. You can navigate between folders and continue selecting cases; previously checked cases remain in the selection.
The total number of selected cases is shown in the dialog footer.
Filter panel (right pane)
The right pane is a dynamic filter builder for making bulk changes to the selection. Build one or more conditions, then apply them using the Set Selection button. Each application of the filter updates the selection based on the chosen selection mode (see below).
Filter mode: a toggle at the top of the panel controls how multiple conditions are combined:
- Match ALL filters — a case must satisfy every condition to be included (AND logic)
- Match ANY filters — a case matching any one condition is included (OR logic)
Two buttons sit above the condition builder:
- Set Selection — applies the current filter conditions to your selection. The dropdown arrow opens a menu to choose how the filter result is applied (see Selection modes below).
- Reset Filter — clears all filter conditions and resets the mode to AND. This does not change which cases are currently selected; it only clears the condition form.
A brief success message appears after each filter application, showing how many cases were added, removed, or set.
Selection modes
The Set Selection button dropdown offers three modes:
| Mode | Effect |
|---|---|
| Set | Replaces the entire current selection with cases matching the filter. |
| Add | Adds cases matching the filter to the current selection. |
| Remove | Removes cases matching the filter from the current selection. |
Clicking the Set Selection button directly (without opening the dropdown) always uses Set.
Set is the most common starting point; it replaces whatever is selected. Add and Remove let you build up or trim a selection incrementally. For example: use Set with a folder filter to start with all cases in a folder, then use Remove with a State filter to drop deprecated cases from that set.
Importing a previous run's case selection
An Import from run button appears in the dialog footer. Clicking it opens the Import from run dialog, letting you base the selection on the case selection from an existing run (optionally filtered by result status) rather than building it manually from the repository. This is a shortcut to the same import mechanism available in the multi-run dialog.
Creating Multiple Runs at Once
Click + Multiple runs in the toolbar to open the Add multiple runs dialog. This dialog lets you define any number of runs and submit them all at once.
Adding run rows
Each row in the dialog represents one run. Use the + Run button in the dialog toolbar to append a new empty row. Every row has:
- Name: the run name (required).
- Cases: shows Include all or the count of selected cases. Click to change the selection for that individual run.
- State: workflow state for this run.
- Tags: per-run tags that are merged with any global tags set at the top of the dialog.
- More: toggle to expand or collapse the Notes field for the row.
- Select configurations: opens the configurations dialog for this run (see below).
- Duplicate icon: instantly copies the row in place, appending a copy directly below it.
- Delete icon: removes the row from the batch.
Global fields
At the top of the dialog, a Milestone selector and a Tags field apply to all runs being created in the current batch. Per-run tags are merged with the global tags.
Configurations
Each run row has a Select configurations button. When configurations are chosen for a run, a separate run is created for each selected configuration, so one row can expand into multiple runs. This is useful for creating parallel test runs across environments.
In the Select configurations dialog, each configuration can have its own case selection: inherit from the run's base selection, include all cases, or use a custom selection. The configurations summary table on the run row shows each configuration name alongside its case selection ("Same as above", "All cases", or a case count).
Importing Previous Runs
The Import Runs dropdown in the Add Multiple Runs dialog toolbar contains two options for populating runs from existing data.
Import previous runs
Import previous runs opens a two-pane dialog. The top pane lists all runs in the project, both active and closed, and can be searched and filtered. The bottom pane shows the runs you have selected for import. Select runs from the top and they move to the bottom; remove them to send them back.
A Statuses filter at the bottom of the dialog controls which tests are carried over: only test cases whose current result status in the source run matches the selected statuses will be included in the new runs. For example, selecting Failed and Retest imports only the failing tests from each source run, useful for creating a regression or retest run.
After clicking Import, the selected runs are added to the Add multiple runs dialog as pre-populated rows that you can review and adjust before creating them.
What carries over from the source run: name, configuration, milestone, state, tags, documentation, and case selection (filtered by chosen statuses). What does not carry over: results, elapsed times, per-result issues, and test assignments.
Import from list
Import from list opens a simple text-entry dialog. Type or paste run names, one per line, into the text area. Each line becomes a separate run with default settings. After importing, the runs appear in the Add multiple runs dialog where you can configure case selections, state, configurations, and tags before creating them.
This is the fastest way to create many runs with different names when the settings are otherwise the same.
Duplicating a Run
You can duplicate an individual run from the run detail page. Open the run and click the Duplicate icon in the toolbar and choose if you want to include all cases of that run or only ones with specific statuses.
The Duplicate Run dialog opens pre-populated with the source run's name, configuration, milestone, state, tags, documentation, and case selection. All fields are editable before saving.
An extra checkbox, Copy test assignments to new run, appears in this dialog. When checked, tests in the new run are assigned to the same users as in the source run, matched by test case.
What is duplicated: name, configuration, milestone, state, tags, documentation, and case selection.
What is not duplicated: test results, per-result issues, contributor history, and timestamps. The new run always starts with all tests in the Untested status.
Filtering and Searching Runs
The Runs & Results page provides several ways to find runs:
- Tabs: the Active and Closed tabs separate open runs from completed ones.
- Inline filters: the filter bar above the run list includes quick dropdowns for Milestone, State, and Tags.
- Search: the search field matches against run names and run notes.
-
Advanced filters: click the Filter dropdown to open the full filter popup, which supports filtering by:
- Configuration
- Created By
- Creation date
- Elapsed time
- Forecast time
- Issues
- Milestone (including sub-milestones)
- State
- Tags
Runs are grouped by milestones on the index. Runs without a milestone appear under Unscheduled.
The Run View
Clicking a run opens its detail view. The page header shows the run name, the configuration in parentheses (if set), a progress bar with completion percentage, and action buttons. A Closed badge with the closer's name and timestamp appears on closed runs.
The run view has four tabs: Results, Status, Activity, and Issues.
Results
The main test execution view. Tests are displayed in a three-pane layout:
- Left pane (tree): folder and group navigation for the tests in the run.
- Center pane (list): the scrollable list of tests with their current status, assignee, and configured columns.
- Right pane (details): opens when a test is selected, showing the test case content and result entry form.
The test list can be grouped by Folder, Assignee, Priority, State, Status, Template, or any custom field. Use the Columns button to configure which columns are visible.
Filtering tests within a run: click the filter icon above the test list to open the test filter popup.
The filter supports Match ALL filters (AND) or Match ANY filters (OR) logic. The Apply button will apply the selected filters to the entire run. The Reset button clears all filter conditions and resets the mode to AND. You can also clear the filters by clicking the X icon next to the Filter dropdown when any filter is applied.
Keyboard shortcuts for fast result entry are: R (Add result), P (Pass & next), L (Next test), H (Previous test).
Status
The Status tab shows the overall health and progress of the run. The left panel shows:
- Status chart: a pie chart with the result distribution across all statuses (Untested, Passed, Failed, Retest, Blocked, Skipped, and any custom statuses). Clicking a segment filters to that subset of tests.
- Notes: the run's rich text documentation content. If no notes have been added and you have edit permission, a placeholder with an Add notes button is shown here.
The right sidebar shows:
- About: current state, creation and close dates, milestone, linked issues, tags, and contributors (all users who have recorded a result in the run).
- Progress: elapsed time, forecast time (open runs only), and a progress bar showing completion.
- Resources: files and URLs attached to the run.
Activity
The Activity tab shows an activity chart with results recorded over time (covering the last 14 days) and a chronological list of all results added to the run. You can filter the activity list by result status. The sidebar shows the same About section as the Status tab.
Issues
The Issues tab shows two sections:
- Issues found during testing: issues added directly to test results within this run.
- Issues linked from run: issues linked from the run itself, its parent milestone, and the test cases included in the run.
- Requirements linked from run: requirements linked from the test cases included in the run.
Issues found during testing support filtering by issue status and searching by issue ID.
Run Statistics
Testmo tracks the following counts at the run level, updated continuously as results are recorded:
| Metric | Description |
|---|---|
| Total | Total number of tests in the run. |
| Untested | Tests with no result yet. |
| Passed | Tests with a passing result. |
| Failed | Tests with a failing result. |
| Retest | Tests marked for retesting. |
| Blocked | Tests that are blocked. |
| Skipped | Tests that were skipped. |
| Completed | Tests with any non-Untested result. |
| Elapsed | Total time logged across all tests. |
| Forecast | Estimated total time for all tests. |
Custom result statuses (up to 24 total statuses are supported) are tracked with their own counters alongside the built-in ones.
A quick stats popup is accessible from the info icon in the run header and shows pass/fail/untested counts at a glance. For time-based forecasting details, see Forecasting.
Closing a Run
When testing is complete, click the Close button in the run toolbar. Closing a run:
- Marks the run as closed and records who closed it and when.
- Takes a snapshot of the test case repository as it existed at close time, preserving the case data for reporting even if cases are later edited or deleted.
- May trigger an automatic workflow state transition if one is configured for your project.
Closing is irreversible. Closed runs are read-only; no further results can be recorded, and the case selection cannot be changed. Closed runs are accessible from the Closed tab on the Runs & Results page.
Elapsed times recorded in the run are used to improve time forecasts for future runs.
Assigning Tests
Tests within a run can be assigned to specific team members. Open the run and click the Assign Tests button in the toolbar. You can assign all tests or only selected tests, and there is an Unassign option to clear all current assignments.
When duplicating a run, check Copy test assignments to new run to carry over assignments from the source run, matched by test case. For detailed information on distributing work across multiple runs and workload-aware assignment strategies, see Tests & Test Results.
Editing and Managing Runs
Editing a single run: open the run and click the Edit button in the toolbar, or click the edit icon on a run row in the Runs & Results page. The same Add Run dialog opens in edit mode with all fields available.
Bulk editing multiple runs: select multiple runs on the Runs & Results page and choose Edit from the actions menu. The bulk edit dialog shows the same fields, each controlled by a checkbox. Only fields with their checkbox enabled are updated. Where selected runs have different values for a field, a "<various>" label is shown. Fields available in bulk edit: name, configuration, milestone, state, issues, tags, notes, and case selection.
Deleting runs: select a run on the index and choose Delete from the actions menu. Deleting a run permanently removes all associated tests, results, result notes, attachments, and activity history. Closed runs require a separate delete permission and follow the same process. This action cannot be undone.