Hide unconfigured reports and add empty states to the reports tab

What does this MR do and why?

The reports tab now shows a nav item only for reports the head pipeline has, replaces the status line with three Pajamas empty states via a new ReportsEmptyState, and hides the sidebar when no nav item would show. The tab also navigates to the first configured report and redirects deep links to reports that are not configured.

The tab switches from its own poller to the shared mergeRequestData mixin, which owns one store and one poller serving both the reports tab and the tab count badge.

A new configured_reports.js holds the license compliance and code quality checks, called by both the reports tab and the tab count badge so they agree. Both read fields on the merge request widget store. This fixes a badge bug: it counted license compliance whenever the project had the license_scanning feature, rather than when a report existed. Like the merge request widget, the store sets report paths in its constructor, so a report appearing during polling needs a reload.

References

Screenshots or screen recordings

Screenshot_2026-09-01_at_08.41.40

Screenshot_2026-09-01_at_08.42.22

Screenshot_2026-09-01_at_08.42.30

How to set up and validate locally

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Phil Hughes

Merge request reports

Loading
Loading