Enable Vue 3 migration rollout for group CI/CD analytics
What does this MR do and why?
Enables the Vue 3 migration rollout for the group CI/CD analytics page (ee/app/assets/javascripts/pages/groups/analytics/ci_cd_analytics/index.js).
This uses the vue3_migration.yml mechanism to opt the page into Vue 3 behind a feature flag. When vue3_migrate_ci_cd_analytics is enabled, Rails serves the Vue 3 (@vue/compat) chunk, otherwise the page continues to run on Vue 2.
Note: the project level CI/CD analytics page (app/assets/javascripts/pages/projects/pipelines/charts/index.js, served by Projects::PipelinesController#charts) is a separate feature owned by a different team and is explicitly out of scope for this MR.
What changed
- Added
config/feature_flags/beta/vue3_migrate_ci_cd_analytics.yml - Added
ee/app/assets/javascripts/pages/groups/analytics/ci_cd_analytics/vue3_migration.ymlwithstatus: rollout
No JavaScript or controller changes are needed.
How to verify
- Enable the feature flag:
Feature.enable(:vue3_migrate_ci_cd_analytics) - Make sure your test group has at least a Premium license. The controller calls
authorize_view_by_action!(:view_group_ci_cd_analytics), which 403s the whole page unless the group has at least one of thegroup_ci_cd_analytics_pipelines(Premium and Ultimate) orgroup_ci_cd_analytics_releases(Ultimate only) licensed features. - Navigate to any group's CI/CD analytics page (Analyze > CI/CD Analytics,
/groups/<group>/-/analytics/ci_cd) - Open the browser console and confirm the message:
[gitlab] [V] Using Vue.js 3 - Run the smoke tests from the feature issue:
- Switch between the Pipelines and Release statistics tabs, confirm the
tabquery parameter updates, and the correct tab stays selected after using browser back and forward - On the Pipelines tab, select a date range and confirm the URL query parameters update
- On the Release statistics tab, confirm it loads and displays the releases count and the percentage of projects with releases
- If your test group is a root group and you can admin it, confirm the "View group pipeline usage quota" link renders and points to the usage quotas page
- Switch between the Pipelines and Release statistics tabs, confirm the
Note on the Pipelines tab: it also needs the pre-existing group_ci_cd_analytics_pipelines_ff flag (type wip, default off, owned by group::ci platform) on top of the group_ci_cd_analytics_pipelines license. Its dashboard has no panels wired up yet (dashboardConfig returns an empty panels: [] array, with a source comment saying it is still in development), so there is little to smoke test on that tab beyond the tab and filter plumbing above.
Existing test coverage for the group CI/CD analytics page
Frontend unit tests (Jest), ee/spec/frontend/ci/analytics/group_ci_cd_analytics/
app_spec.js: covers the top-level app, which tabs render based on licensed features and the pipelines feature flag, tab selection from thetabquery parameter (including invalid and missing values), restoring the selected tab on browser back and forward (popstate), and the "View group pipeline usage quota" link rendering and its href, gated on acanViewGroupUsageQuotapermission.components/group_pipelines_dashboard_spec.js: covers the Pipelines tab shell, rendering the dashboard layout and filters, the default 7-day date range passed to filters, and recomputing query variables (fromTime and toTime) when filters change or atimeURL query parameter is present. Test comments explicitly mark these variables as temporary, pending the backend queries that will eventually drive the still-empty panels.components/group_pipelines_dashboard_filters_spec.js: covers the date range filter component, default null selection, reflecting the value prop, emitting an input event on selection, and reacting to prop changes.components/group_release_stats_card_spec.js: covers the Release statistics tab, loading state while the GraphQL query is in flight, the fetchedfullPathvariable, rendering header and statistics once loaded, rendering zeros correctly, and rendering placeholder dashes on a GraphQL error.
None of these four spec files appear in scripts/frontend/quarantined_vue3_specs.txt, so they run in both the jest (Vue 2) and jest vue3 (@vue/compat) CI jobs.
Backend
ee/spec/controllers/groups/analytics/ci_cd_analytics_controller_spec.rb: covers#show, renders for a reporter, 403 for a guest, 403 for a non-member, redirects to login when signed out, and 403 when neithergroup_ci_cd_analytics_pipelinesnorgroup_ci_cd_analytics_releasesis licensed.
Feature (system) specs
ee/spec/features/groups/analytics/ci_cd_analytics_spec.rb: visits the page with onlygroup_ci_cd_analytics_releaseslicensed, clicks into the Release statistics tab, and asserts the rendered release count and percentage of projects with releases text.
QA / E2E
None exist for this page.
Not covered
No system spec exercises the Pipelines tab (it needs the separate group_ci_cd_analytics_pipelines_ff flag plus a license, and has no panels to assert on yet). No system spec covers switching tabs via the tab query parameter, browser back and forward tab restoration, or the pipeline usage quota link (Jest-only today). No QA or E2E spec covers this page at all.
References
- Resolves #614009 (closed)
- Rollout issue: #614053
- Parent epic: gitlab-org#23041