Add Vue 3 migration config for the dependency list

What does this MR do and why?

Adds the Vue 3 migration config for the project and group dependency list pages. This is a feature flag plus a vue3_migration.yml per entrypoint, following Option 1 of the Vue 3 migration guide.

It also fixes the Project token on the group page. Under Vue 3 it sent project names instead of IDs.

Checklist

  • Add the feature flag file
  • Add a vue3_migration.yml per entrypoint
  • Fix anything the specs or manual testing find
  • Add the pipeline:run-rspec-vue3 label to the MR
  • Roll out the flag, then set the files to status: migrated

References

Screenshots or screen recordings

Summary

Page Flag disabled (Vue 2) Flag enabled (Vue 3)
Group 9/9 9/9 (after the Project token fix; 8/9 before)
Project 10/10 10/10

Flag combinations

# Entrypoint Page Flag enabled (Vue 3) Flag disabled (Vue 2)
1 groups/dependencies Group dependency list group-walkthrough-vue3 group-walkthrough-vue2
2 projects/dependencies/index Project dependency list project-walkthrough-vue3 project-walkthrough-vue2

Group page

# Scenario Flag disabled (Vue 2) Flag enabled (Vue 3) Result
G1 Page loads group-vue2-G1 group-vue3-G1 Same
G2 Component token: add and clear group-G2-vue2 group-G2-vue3 Same
G3 Project token (before fix) G3-vue2 G3-vue3 Vue 2 sends project_ids[]=23 (2,073 rows). Vue 3 sent the project name and returned no rows.
G3 (fix) Project token after the fix G3fix-vue2 G3fix-vue3 Both send project_ids[]=23 and return 2,073 rows.
G4 License dropdown: scroll to the bottom, search, select (virtual scroller) G4-vue2 G4-vue3 Same. All 740 licenses reachable, no blank gaps.
G5 Sort and next page group-G5-vue2 group-G5-vue3 Same
G6 Location and project count dropdowns group-G6-vue2 group-G6-vue3 Same
G7 Dependency path drawer group-G7-vue2 group-G7-vue3 Same
G8 Malware token group-vue2-G8 group-vue3-G8 Same
G9 Export dropdown group-vue2-G9 group-vue3-G9 Same

Project page

# Scenario Flag disabled (Vue 2) Flag enabled (Vue 3) Result
P1 Page loads project-vue2-P1 project-vue3-P1 Same
P2 Component token project-P2-vue2 project-P2-vue3 Same
P3 Activity token project-P3-vue2 project-P3-vue3 Same
P4 Sort and next page project-P4-vue2 project-P4-vue3 Same
P5 Dependency path drawer project-P5-vue2 project-P5-vue3 Same
P6 License "+N more" modal project-vue2-P6 project-vue3-P6 Same
P7 Malware badge project-vue2-P7 project-vue3-P7 Same
P8 Export dropdown project-vue2-P8 project-vue3-P8 Same
P9 Row expand: loading spinner clears, row collapses project-vue2-P9-spinner project-vue2-P9-cleared project-vue3-P9-spinner project-vue3-P9-cleared Same
P10 Vulnerabilities popover project-vue2-P10 project-vue3-P10 Same

Console: no new errors under Vue 3.

Not covered

The Tracked ref token and the ref count column. Both need the project_dependency_tracked_ref feature flag, which is off.

How to set up and validate locally

  1. Enable the flag: Feature.enable(:vue3_migrate_dependency_list)
  2. Restart Vite: gdk restart vite
  3. Open the group and project dependency list pages.
  4. Check the console shows [gitlab] [V] Using Vue.js 3 for DependenciesAppRoot.
  5. On the group page, filter by a project and check the request sends a numeric project_ids[] value.

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.

🤖 Generated with Claude Code

Edited by Samantha Ming

Merge request reports

Loading
Loading