From 2fe75a7a443dd3dbd6a24a88d092d2355d1a03d5 Mon Sep 17 00:00:00 2001
From: Miguel Rincon <mrincon@gitlab.com>
Date: Mon, 10 Mar 2025 16:05:42 +0100
Subject: [PATCH] Use correct label for 50th percentile in charts

P50 represents the median, not the mean, this
fixes a misleading label in the pipeline duration
charts.
---
 .../pipelines/charts/components/pipeline_charts_new.vue   | 2 +-
 .../charts/components/pipeline_duration_chart.vue         | 2 +-
 .../pipelines/charts/components/statistics_list.vue       | 8 ++++----
 locale/gitlab.pot                                         | 4 ++--
 .../charts/components/pipeline_charts_new_spec.js         | 6 +++---
 .../charts/components/pipeline_duration_chart_spec.js     | 4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/app/assets/javascripts/projects/pipelines/charts/components/pipeline_charts_new.vue b/app/assets/javascripts/projects/pipelines/charts/components/pipeline_charts_new.vue
index c0219ab9ff2a7..0730b3225b8ab 100644
--- a/app/assets/javascripts/projects/pipelines/charts/components/pipeline_charts_new.vue
+++ b/app/assets/javascripts/projects/pipelines/charts/components/pipeline_charts_new.vue
@@ -75,7 +75,7 @@ export default {
         this.pipelineAnalytics.aggregate;
       return {
         total: count === null ? '-' : count,
-        meanDuration: durationStatistics.p50,
+        medianDuration: durationStatistics.p50,
         successRatio: Number(count) ? (successCount / count) * 100 : 0,
         failureRatio: Number(count) ? (failedCount / count) * 100 : 0,
       };
diff --git a/app/assets/javascripts/projects/pipelines/charts/components/pipeline_duration_chart.vue b/app/assets/javascripts/projects/pipelines/charts/components/pipeline_duration_chart.vue
index 2bb50cc9432e1..4213246584d74 100644
--- a/app/assets/javascripts/projects/pipelines/charts/components/pipeline_duration_chart.vue
+++ b/app/assets/javascripts/projects/pipelines/charts/components/pipeline_duration_chart.vue
@@ -25,7 +25,7 @@ export default {
   computed: {
     data() {
       const durationSeries = [
-        { name: s__('Pipeline|Mean (50th percentile)'), data: [] },
+        { name: s__('Pipeline|Median (50th percentile)'), data: [] },
         { name: s__('Pipeline|95th percentile'), data: [] },
       ];
 
diff --git a/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue b/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue
index 1b2cc998bdff8..200b6c3385ef8 100644
--- a/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue
+++ b/app/assets/javascripts/projects/pipelines/charts/components/statistics_list.vue
@@ -52,11 +52,11 @@ export default {
         },
       ];
 
-      if (this.counts.meanDuration) {
+      if (this.counts.medianDuration) {
         statistics.splice(1, 0, {
-          label: s__('PipelineCharts|Mean duration'),
-          identifier: 'mean-duration',
-          value: formatTimeSpent(this.counts.meanDuration),
+          label: s__('PipelineCharts|Median duration'),
+          identifier: 'median-duration',
+          value: formatTimeSpent(this.counts.medianDuration),
         });
       }
 
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index e298cbeb8a556..ea3adec272aee 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -42477,7 +42477,7 @@ msgstr ""
 msgid "PipelineCharts|Last week"
 msgstr ""
 
-msgid "PipelineCharts|Mean duration"
+msgid "PipelineCharts|Median duration"
 msgstr ""
 
 msgid "PipelineCharts|Pipelines"
@@ -43389,7 +43389,7 @@ msgstr ""
 msgid "Pipeline|Manual"
 msgstr ""
 
-msgid "Pipeline|Mean (50th percentile)"
+msgid "Pipeline|Median (50th percentile)"
 msgstr ""
 
 msgid "Pipeline|Merge request pipeline"
diff --git a/spec/frontend/projects/pipelines/charts/components/pipeline_charts_new_spec.js b/spec/frontend/projects/pipelines/charts/components/pipeline_charts_new_spec.js
index 65a7973a3c117..f318546a54b46 100644
--- a/spec/frontend/projects/pipelines/charts/components/pipeline_charts_new_spec.js
+++ b/spec/frontend/projects/pipelines/charts/components/pipeline_charts_new_spec.js
@@ -104,7 +104,7 @@ describe('~/projects/pipelines/charts/components/pipeline_charts_new.vue', () =>
 
       expect(findStatisticsList().props('counts')).toEqual({
         failureRatio: 0,
-        meanDuration: 0,
+        medianDuration: 0,
         successRatio: 0,
         total: '0',
       });
@@ -123,13 +123,13 @@ describe('~/projects/pipelines/charts/components/pipeline_charts_new.vue', () =>
 
       expect(findStatisticsList().props('counts')).toEqual({
         failureRatio: 25,
-        meanDuration: 1800,
+        medianDuration: 1800,
         successRatio: 25,
         total: '8',
       });
 
       expect(findAllSingleStats().at(0).text()).toBe('Total pipeline runs 8');
-      expect(findAllSingleStats().at(1).text()).toBe('Mean duration 30m');
+      expect(findAllSingleStats().at(1).text()).toBe('Median duration 30m');
       expect(findAllSingleStats().at(2).text()).toBe('Failure rate 25%');
       expect(findAllSingleStats().at(3).text()).toBe('Success rate 25%');
     });
diff --git a/spec/frontend/projects/pipelines/charts/components/pipeline_duration_chart_spec.js b/spec/frontend/projects/pipelines/charts/components/pipeline_duration_chart_spec.js
index ba556c6f4585e..a69e292f02b53 100644
--- a/spec/frontend/projects/pipelines/charts/components/pipeline_duration_chart_spec.js
+++ b/spec/frontend/projects/pipelines/charts/components/pipeline_duration_chart_spec.js
@@ -44,7 +44,7 @@ describe('PipelineDurationChart', () => {
         },
       },
       data: [
-        { data: [], name: 'Mean (50th percentile)' },
+        { data: [], name: 'Median (50th percentile)' },
         { data: [], name: '95th percentile' },
       ],
     });
@@ -66,7 +66,7 @@ describe('PipelineDurationChart', () => {
           ['2021-12-01', 100],
           ['2021-12-02', 101],
         ],
-        name: 'Mean (50th percentile)',
+        name: 'Median (50th percentile)',
       },
       {
         data: [
-- 
GitLab