Display the current coverage data for each selected project

Problem to solve

As a development team lead, I want a view of the current average code coverage for all the projects I selected, so that I can spot projects that are behind our targets and prioritize work.

From the epic: As a development team lead, I want a single page of code coverage data for my group's projects, so I can quickly get the test coverage data Dakota is asking for and get back to work.

Intended users

  • Delaney (Development Team Lead)

Further details

  • Being able to see the coverage for all projects selected in the GitLab UI saves Delaney a step of downloading the data and viewing in a spreadsheet.
  • Delaney would like to be able to click into a project to get specific data by job for that project.
    • Clicking on the GitLab.org project would go go the Analytics -> CI/CD page.

Proposal

Add a project selector to select one or more projects from the group.

Add a paginated table to display the following fields per selected project:

  • project name
  • coverage value
  • number of coverage jobs
  • date of coverage calculation (because coverage may not be updated daily)
  • ability to click through to the project's repository analytics (the project-level equivalent of this group-level page)
  • by default, sort the view by most recent coverage calculation time/date

For example:

Project Coverage Number of coverage jobs Date calculated
Project1 55% 2 2020-08-10
Project2 89% 2 2020-07-31

A view similar to a project list or a table is what we think is the correct interface for this. There may be hundreds of selected projects so a graph is not always the ideal data presentation method.

The design for this interface can be seen in design 3.

Stretch ideas / future iteration opportunities: make the table sortable by coverage, date, project name.

Technical details (frontend proposal)

We'll need to:

  • add a new section on the Group -> Analytics -> Repositories page (the page is being added in !37853 (merged))
  • insert a new vue app to handle the rest, probably inside of ee/app/assets/javascripts/analytics, which consists of:
    • a search box or dropdown allowing the selection of multiple projects within the group
      • maybe reuse ee/app/assets/javascripts/analytics/shared/components/projects_dropdown_filter.vue, which can be seen in action on the group value stream analytics page).
    • an async call to get the coverage data for the selected projects
      • use the finder introduced in !37768 (merged) (not sure if the endpoint exists yet 🤔)
    • a table to display the data
      • sort this table (by default) by most recently generated coverage report
      • each row should link to its project's Repository Analytics page

Documentation

  • Add a new screenshot to the docs with the new interface.

What does success look like, and how can we measure that?

Acceptance criteria

  • The table displays all the data selected
  • A user can click through to a project's Coverage Graph

Measure of Success

  • This feature will be successful if there are 100 daily views of the page 30 days after launch of the feature. This will be measured by tracking page views.

Is this a cross-stage feature?

No.

Edited Aug 11, 2020 by Miranda Fluharty
Assignee Loading
Time tracking Loading