diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
index 52da4d0146837e8fd7c556251262f629efd8249e..7c78abae77f538eae639297506bb98f6d098561c 100644
--- a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
+++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_url.vue
@@ -136,8 +136,8 @@ export default {
           return __('Branch');
       }
     },
-    commitTitleText() {
-      return this.pipeline?.commit?.title || __("Can't find HEAD commit for this branch");
+    commitTitle() {
+      return this.pipeline?.commit?.title;
     },
     hasAuthor() {
       return (
@@ -159,22 +159,27 @@ export default {
   <div class="pipeline-tags" data-testid="pipeline-url-table-cell">
     <template v-if="rearrangePipelinesTable">
       <div class="commit-title gl-mb-2" data-testid="commit-title-container">
-        <span class="gl-display-flex">
-          <tooltip-on-truncate :title="commitTitleText" class="flex-truncate-child gl-flex-grow-1">
+        <span v-if="commitTitle" class="gl-display-flex">
+          <tooltip-on-truncate :title="commitTitle" class="flex-truncate-child gl-flex-grow-1">
             <gl-link
-              :href="pipeline.path"
-              class="commit-row-message gl-text-blue-600!"
+              :href="commitUrl"
+              class="commit-row-message gl-text-gray-900"
               data-testid="commit-title"
-              data-qa-selector="pipeline_url_link"
-              >{{ commitTitleText }}</gl-link
+              >{{ commitTitle }}</gl-link
             >
           </tooltip-on-truncate>
         </span>
+        <span v-else>{{ __("Can't find HEAD commit for this branch") }}</span>
       </div>
       <div class="gl-mb-2">
-        <span class="gl-font-weight-bold gl-text-gray-500" data-testid="pipeline-identifier">
+        <gl-link
+          :href="pipeline.path"
+          class="gl-text-decoration-underline gl-text-blue-600!"
+          data-testid="pipeline-url-link"
+          data-qa-selector="pipeline_url_link"
+        >
           #{{ pipeline[pipelineKey] }}
-        </span>
+        </gl-link>
         <!--Commit row-->
         <div class="icon-container gl-display-inline-block">
           <gl-icon
diff --git a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
index b77b3d69fc1855565dce0913186badd25e78a7e7..2a49109d360bb03610f957a080e39d516bb36f68 100644
--- a/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_merge_request_pipelines_spec.rb
@@ -64,7 +64,7 @@
     it 'sees branch pipelines and detached merge request pipelines in correct order' do
       page.within('.ci-table') do
         expect(page).to have_selector('.ci-created', count: 2)
-        expect(first('[data-testid="pipeline-identifier"]')).to have_content("##{detached_merge_request_pipeline.id}")
+        expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}")
       end
     end
 
@@ -101,16 +101,16 @@
         page.within('.ci-table') do
           expect(page).to have_selector('.ci-pending', count: 4)
 
-          expect(all('[data-testid="pipeline-identifier"]')[0])
+          expect(all('[data-testid="pipeline-url-link"]')[0])
             .to have_content("##{detached_merge_request_pipeline_2.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[1])
+          expect(all('[data-testid="pipeline-url-link"]')[1])
             .to have_content("##{detached_merge_request_pipeline.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[2])
+          expect(all('[data-testid="pipeline-url-link"]')[2])
             .to have_content("##{push_pipeline_2.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[3])
+          expect(all('[data-testid="pipeline-url-link"]')[3])
             .to have_content("##{push_pipeline.id}")
         end
       end
@@ -201,7 +201,7 @@
       it 'sees a branch pipeline in pipeline tab' do
         page.within('.ci-table') do
           expect(page).to have_selector('.ci-created', count: 1)
-          expect(first('[data-testid="pipeline-identifier"]')).to have_content("##{push_pipeline.id}")
+          expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{push_pipeline.id}")
         end
       end
 
@@ -252,7 +252,7 @@
     it 'sees branch pipelines and detached merge request pipelines in correct order' do
       page.within('.ci-table') do
         expect(page).to have_selector('.ci-pending', count: 2)
-        expect(first('[data-testid="pipeline-identifier"]')).to have_content("##{detached_merge_request_pipeline.id}")
+        expect(first('[data-testid="pipeline-url-link"]')).to have_content("##{detached_merge_request_pipeline.id}")
       end
     end
 
@@ -295,16 +295,16 @@
         page.within('.ci-table') do
           expect(page).to have_selector('.ci-pending', count: 4)
 
-          expect(all('[data-testid="pipeline-identifier"]')[0])
+          expect(all('[data-testid="pipeline-url-link"]')[0])
             .to have_content("##{detached_merge_request_pipeline_2.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[1])
+          expect(all('[data-testid="pipeline-url-link"]')[1])
             .to have_content("##{detached_merge_request_pipeline.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[2])
+          expect(all('[data-testid="pipeline-url-link"]')[2])
             .to have_content("##{push_pipeline_2.id}")
 
-          expect(all('[data-testid="pipeline-identifier"]')[3])
+          expect(all('[data-testid="pipeline-url-link"]')[3])
             .to have_content("##{push_pipeline.id}")
         end
       end
diff --git a/spec/features/merge_request/user_sees_pipelines_spec.rb b/spec/features/merge_request/user_sees_pipelines_spec.rb
index a356dd5089848cbe5a22f3b9f6289ccca4f6f1e2..266ae0d8c37433a8461f6947554a18fc3db251a3 100644
--- a/spec/features/merge_request/user_sees_pipelines_spec.rb
+++ b/spec/features/merge_request/user_sees_pipelines_spec.rb
@@ -134,7 +134,7 @@
         create_merge_request_pipeline
         act_on_security_warning(action: 'Run pipeline')
 
-        check_pipeline(expected_project: parent_project, link_selector: 'pipeline-url-link')
+        check_pipeline(expected_project: parent_project)
         check_head_pipeline(expected_project: parent_project)
       end
 
@@ -179,13 +179,13 @@ def create_merge_request_pipeline
       click_button('Run pipeline')
     end
 
-    def check_pipeline(expected_project:, link_selector: 'commit-title')
+    def check_pipeline(expected_project:)
       page.within('.ci-table') do
         expect(page).to have_selector('.commit', count: 2)
 
         page.within(first('.commit')) do
           page.within('.pipeline-tags') do
-            expect(page.find("[data-testid=#{link_selector}]")[:href]).to include(expected_project.full_path)
+            expect(page.find('[data-testid="pipeline-url-link"]')[:href]).to include(expected_project.full_path)
             expect(page).to have_content('detached')
           end
           page.within('.pipeline-triggerer') do
diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb
index d5b470194a26e100aadf1a39e07176def5b26bcf..37ac5a9d5a2e246e862d85cb434e073082268ac0 100644
--- a/spec/features/projects/pipelines/pipelines_spec.rb
+++ b/spec/features/projects/pipelines/pipelines_spec.rb
@@ -711,7 +711,7 @@
           end
 
           expect(page.find('[data-testid="pipeline-th"]')).to have_content 'Pipeline'
-          expect(page.find('[data-testid="pipeline-identifier"]')).to have_content "##{pipeline.iid}"
+          expect(page.find('[data-testid="pipeline-url-link"]')).to have_content "##{pipeline.iid}"
         end
       end
     end
diff --git a/spec/frontend/pipelines/mock_data.js b/spec/frontend/pipelines/mock_data.js
index 8cb6cf3bed6b67d8b51e2fcc31878c2fc0a36404..59d4e808b326c3dfb04703bd63ef809647a8eb0f 100644
--- a/spec/frontend/pipelines/mock_data.js
+++ b/spec/frontend/pipelines/mock_data.js
@@ -676,7 +676,7 @@ export const mockPipeline = (projectPath) => {
         short_id: 'fd6df5b3',
         created_at: '2021-10-19T21:17:12.000+00:00',
         parent_ids: ['7147906b84306e83cb3fec6582a25390b75713c6'],
-        title: 'Commit Title',
+        title: 'Commit',
         message: 'Commit',
         author_name: 'Administrator',
         author_email: 'admin@example.com',
@@ -1141,176 +1141,3 @@ export const mockPipelineBranch = () => {
     viewType: 'root',
   };
 };
-
-export const mockPipelineNoCommit = () => {
-  return {
-    pipeline: {
-      id: 268,
-      iid: 34,
-      user: {
-        id: 1,
-        username: 'root',
-        name: 'Administrator',
-        state: 'active',
-        avatar_url:
-          'https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
-        web_url: 'http://gdk.test:3000/root',
-        show_status: false,
-        path: '/root',
-      },
-      active: false,
-      source: 'push',
-      created_at: '2022-01-14T17:40:27.866Z',
-      updated_at: '2022-01-14T18:02:35.850Z',
-      path: '/root/mr-widgets/-/pipelines/268',
-      flags: {
-        stuck: false,
-        auto_devops: false,
-        merge_request: false,
-        yaml_errors: false,
-        retryable: true,
-        cancelable: false,
-        failure_reason: false,
-        detached_merge_request_pipeline: false,
-        merge_request_pipeline: false,
-        merge_train_pipeline: false,
-        latest: true,
-      },
-      details: {
-        status: {
-          icon: 'status_warning',
-          text: 'passed',
-          label: 'passed with warnings',
-          group: 'success-with-warnings',
-          tooltip: 'passed',
-          has_details: true,
-          details_path: '/root/mr-widgets/-/pipelines/268',
-          illustration: null,
-          favicon:
-            '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
-        },
-        stages: [
-          {
-            name: 'validate',
-            title: 'validate: passed with warnings',
-            status: {
-              icon: 'status_warning',
-              text: 'passed',
-              label: 'passed with warnings',
-              group: 'success-with-warnings',
-              tooltip: 'passed',
-              has_details: true,
-              details_path: '/root/mr-widgets/-/pipelines/268#validate',
-              illustration: null,
-              favicon:
-                '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
-            },
-            path: '/root/mr-widgets/-/pipelines/268#validate',
-            dropdown_path: '/root/mr-widgets/-/pipelines/268/stage.json?stage=validate',
-          },
-          {
-            name: 'test',
-            title: 'test: passed',
-            status: {
-              icon: 'status_success',
-              text: 'passed',
-              label: 'passed',
-              group: 'success',
-              tooltip: 'passed',
-              has_details: true,
-              details_path: '/root/mr-widgets/-/pipelines/268#test',
-              illustration: null,
-              favicon:
-                '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
-            },
-            path: '/root/mr-widgets/-/pipelines/268#test',
-            dropdown_path: '/root/mr-widgets/-/pipelines/268/stage.json?stage=test',
-          },
-          {
-            name: 'build',
-            title: 'build: passed',
-            status: {
-              icon: 'status_success',
-              text: 'passed',
-              label: 'passed',
-              group: 'success',
-              tooltip: 'passed',
-              has_details: true,
-              details_path: '/root/mr-widgets/-/pipelines/268#build',
-              illustration: null,
-              favicon:
-                '/assets/ci_favicons/favicon_status_success-8451333011eee8ce9f2ab25dc487fe24a8758c694827a582f17f42b0a90446a2.png',
-            },
-            path: '/root/mr-widgets/-/pipelines/268#build',
-            dropdown_path: '/root/mr-widgets/-/pipelines/268/stage.json?stage=build',
-          },
-        ],
-        duration: 75,
-        finished_at: '2022-01-14T18:02:35.842Z',
-        name: 'Pipeline',
-        manual_actions: [],
-        scheduled_actions: [],
-      },
-      ref: {
-        name: 'update-ci',
-        path: '/root/mr-widgets/-/commits/update-ci',
-        tag: false,
-        branch: true,
-        merge_request: false,
-      },
-      retry_path: '/root/mr-widgets/-/pipelines/268/retry',
-      delete_path: '/root/mr-widgets/-/pipelines/268',
-      failed_builds: [
-        {
-          id: 1260,
-          name: 'fmt',
-          started: '2022-01-14T17:40:36.435Z',
-          complete: true,
-          archived: false,
-          build_path: '/root/mr-widgets/-/jobs/1260',
-          retry_path: '/root/mr-widgets/-/jobs/1260/retry',
-          playable: false,
-          scheduled: false,
-          created_at: '2022-01-14T17:40:27.879Z',
-          updated_at: '2022-01-14T17:40:42.129Z',
-          status: {
-            icon: 'status_warning',
-            text: 'failed',
-            label: 'failed (allowed to fail)',
-            group: 'failed-with-warnings',
-            tooltip: 'failed - (script failure) (allowed to fail)',
-            has_details: true,
-            details_path: '/root/mr-widgets/-/jobs/1260',
-            illustration: {
-              image:
-                '/assets/illustrations/skipped-job_empty-29a8a37d8a61d1b6f68cf3484f9024e53cd6eb95e28eae3554f8011a1146bf27.svg',
-              size: 'svg-430',
-              title: 'This job does not have a trace.',
-            },
-            favicon:
-              '/assets/ci_favicons/favicon_status_failed-41304d7f7e3828808b0c26771f0309e55296819a9beea3ea9fbf6689d9857c12.png',
-            action: {
-              icon: 'retry',
-              title: 'Retry',
-              path: '/root/mr-widgets/-/jobs/1260/retry',
-              method: 'post',
-              button_title: 'Retry this job',
-            },
-          },
-          recoverable: false,
-        },
-      ],
-      project: {
-        id: 23,
-        name: 'mr-widgets',
-        full_path: '/root/mr-widgets',
-        full_name: 'Administrator / mr-widgets',
-      },
-      triggered_by: null,
-      triggered: [],
-    },
-    pipelineScheduleUrl: 'foo',
-    pipelineKey: 'id',
-    viewType: 'root',
-  };
-};
diff --git a/spec/frontend/pipelines/pipeline_url_spec.js b/spec/frontend/pipelines/pipeline_url_spec.js
index b24e2e09ea83d31e8f4e0acd0c03243311c441bb..2f083faaaa63fc4a1947abe34679d4ad542e5059 100644
--- a/spec/frontend/pipelines/pipeline_url_spec.js
+++ b/spec/frontend/pipelines/pipeline_url_spec.js
@@ -1,12 +1,7 @@
 import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
 import { trimText } from 'helpers/text_helper';
 import PipelineUrlComponent from '~/pipelines/components/pipelines_list/pipeline_url.vue';
-import {
-  mockPipeline,
-  mockPipelineBranch,
-  mockPipelineTag,
-  mockPipelineNoCommit,
-} from './mock_data';
+import { mockPipeline, mockPipelineBranch, mockPipelineTag } from './mock_data';
 
 const projectPath = 'test/test';
 
@@ -31,7 +26,7 @@ describe('Pipeline Url Component', () => {
   const findCommitIconType = () => wrapper.findByTestId('commit-icon-type');
 
   const findCommitTitleContainer = () => wrapper.findByTestId('commit-title-container');
-  const findCommitTitle = () => wrapper.findByTestId('commit-title');
+  const findCommitTitle = (commitWrapper) => commitWrapper.find('[data-testid="commit-title"]');
 
   const defaultProps = mockPipeline(projectPath);
 
@@ -237,33 +232,5 @@ describe('Pipeline Url Component', () => {
         expect(findCommitIconType().attributes('title')).toBe(expectedTitle);
       },
     );
-
-    describe('with commit', () => {
-      beforeEach(() => {
-        createComponent({}, true);
-      });
-
-      it('displays commit title with link to pipeline', () => {
-        expect(findCommitTitle().attributes('href')).toBe(defaultProps.pipeline.path);
-      });
-
-      it('displays commit title text', () => {
-        expect(findCommitTitle().text()).toBe(defaultProps.pipeline.commit.title);
-      });
-    });
-
-    describe('without commit', () => {
-      beforeEach(() => {
-        createComponent(mockPipelineNoCommit(), true);
-      });
-
-      it('displays cant find head commit text', () => {
-        expect(findCommitTitle().text()).toBe("Can't find HEAD commit for this branch");
-      });
-
-      it('displays link to pipeline', () => {
-        expect(findCommitTitle().attributes('href')).toBe(mockPipelineNoCommit().pipeline.path);
-      });
-    });
   });
 });