The Coverage Map shows which screens and controls of your application your Test Runs reached and used, and which ones no test used. You choose the runs, Thunders computes the map, and you read it as a tree of Apps, sections and screens, each with the share of branches your tests covered. Use it to find the gaps before a release, and to see what a Test Set or a Test Case really exercises.
What the map measures
A branch is one way to use a control. A button has one branch (clicked). A text field has two (filled, left empty). A checkbox has two (turned on, turned off). A dropdown has two (two different values).
A control is covered when all its branches are covered, and partly covered when some of them are. A control counts even when the step that used it failed.
The percentages are branch coverage: the covered branches out of the branches present on the screens the map measured.
Every percentage is an upper bound. A screen that a test visited but the map could not measure, and a screen that no test reached, can hold more controls. Real coverage is equal or lower.
A closed door is a link on a reached screen that opens a screen no test reached.
Controls that appear on many screens of an App, such as a menu or a header, count once, on the Layout node. A test that uses one of them on any screen covers it.
Select What counts as covered on any map to read the full rules.
Create a Coverage Map
Open the Test Project and select Coverage Map in the left-hand navigation.
Select New Coverage Map.
Under Runs to read, choose one option:
Test set runs reads the exact runs you pick, which suits one release. Narrow the list with Test set and From, or type in Search a test set, then tick the runs. A map reads one Environment, so the first run you tick sets it, and the runs of other Environments are greyed out.
A period reads every finished run of one Environment between a Start date and an End date. A period can mix versions of your application, so a changed menu then counts as two menus.
Select Compute map.
The map reads the runs of the Branch you are on. It opens at once and fills in as each screen finishes, and you can leave the page while it computes. If a map already exists for the same runs, Thunders opens that map instead of computing a new one. A Test Project computes up to two maps at the same time.
In Test set runs, Compute map stays disabled until the Test Project has a Test Set with a finished run. Users with the Read-only role can open every map, but they cannot create one.
Read the map
The Whole map pill in the header gives the branch coverage of the whole map, for example "62% · 31 of 50". Hover it for the measured screens, the closed doors and the screens with no assertions.
The scope chips show All apps or one App at a time, each with its own percentage.
The map itself is a tree of cards: the Test Project, its Apps, their sections and their screens. Each card shows its percentage, a bar, the covered branches out of the branches present, and a No assertions tag when no assertion checks the screen. A screen card also shows how many tests reach it.
Expand or collapse a card with the round button on its right edge, or double-click it. Expand all and Collapse all act on the whole tree. Zoom in, Zoom out and Fit change the view.
Search screens and controls finds a screen by name or a control by its label, and moves the map to it.
The legend at the bottom of the map explains the colours:
Legend | Meaning |
Under 50% | A gap: less than half of the branches are covered. |
50 to 79% | Partly covered. |
80% and more | Well covered. |
Closed door | A screen that a link opens, but that no test reached. |
Not measured | A test visited the screen, but the map has no list of its controls. It shows a dash and counts in no percentage. |
No assertions | Tests reach the screen, but no assertion checks it. |
Find the gaps
Select a card to open its details in the side panel.
The figures give Branches covered, Not covered and Closed doors. A screen also gives Tests, and a Test Project, an App or a section gives Measured, the screens the map could measure.
Top gaps lists the controls where a new test adds the most, each with its reason, for example Key action, Form field or Opens a screen no test reached.
On a screen, the controls are grouped into Covered, Partly covered and Not covered. A partly covered control shows the branch it is missing, for example Missing: Left empty.
Select a control to see each of its branches, and the Test Cases and runs that covered it.
Tests at the bottom of the panel lists the Test Cases that reach the selected node, with a link to each Test Case and its latest run.
Mark a control as not worth testing
Some controls do not need a test. To record that:
Select the control, or a closed door.
Select Not worth testing.
Choose a Reason: Out of scope, Tested elsewhere, Not a real control or Other. Add a Note (optional) if you want.
Select Save.
The control shows Dismissed for everyone who opens the map. It still counts in the percentages, so the figures stay comparable. Select Undo to remove the dismissal. Users with the Read-only role see dismissals but cannot add or undo them.
See coverage from the pages you already use
Test Runs list. On a finished Test Set run, open the row menu and select Coverage map. Select Open coverage map when a map holds that run, or Compute coverage map to open the creation dialog with the run already ticked.
Test Set page. When a map holds runs of the Test Set, the Coverage map section of the properties panel shows "Up to" the branch percentage, the measured screens, the map name and date, and Open map. When newer runs exist, it says From an older map and offers Compute a new map.
Test Run report. See in coverage map opens the map with the screens of that run highlighted under Screens reached by this run. The figures stay those of the whole map. Select Clear to see the whole map again.
Test Case page. The Coverage section shows how many screens the Test Case reaches and how many branches it covers in the latest map that holds it, and Show in map opens that map with its screens highlighted. It shows counts only, because a single Test Case has no percentage of its own.
Thunders AI. When a map exists, the chat of a Test Run suggests What did this run not cover?, and the chat of a Test Set suggests Which screens does this set never reach?. You can also ask Thunders AI about your maps, their gaps and the tests behind a screen.
Thunders MCP server. The tools
list_coverage_maps,get_coverage_map,get_screen_gapsandget_test_case_coverageread your maps, andcompute_coverage_mapcomputes one from Test Set runs.
Frequently asked questions
How do I see coverage for my latest runs?
Compute a new map. A map never changes after it is ready, so it always describes the runs it read. On the Test Set page, Compute a new map opens the creation dialog with the latest finished run of the Test Set already ticked.
How do I get a screen measured?
Run a Test Case that uses the controls of that screen, then compute a new map from that run. A screen shows Not measured when a test visited it but the runs gave no list of its controls. It stays on the map, so you can see it was visited, but it counts in no percentage.
How do I close a gap?
Select the gap in Top gaps to see the control and the branch it misses. Add a step that uses that control in an existing Test Case, or write a new Test Case for it, run it, then compute a new map to see the change.
How do I compare the coverage of two Test Sets?
Compare the gaps and the screens rather than the percentages alone. Each percentage only counts the screens its own map measured, so two maps that measured different screens give percentages that do not compare directly. The measured count next to each percentage tells you how much of the map it rests on.
How do I delete a Coverage Map?
On the Coverage Map page, open the row menu of the map and select Delete. The map leaves the list, and the Test Runs it read are not changed.

