diff --git a/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue b/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
index c92208abfc35263297c5668391b8e438bab78295..73814974d351f23993424de6a4bf000b4aefb920 100644
--- a/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
@@ -56,7 +56,7 @@ export default {
   },
   computed: {
     hasPipeline() {
-      return Boolean(this.packageEntity.pipeline);
+      return Boolean(this.packageEntity.pipeline?.user?.name);
     },
     hasProjectLink() {
       return Boolean(this.packageEntity.project_path);
diff --git a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
index 75cc7e5b78daa85f373c4ff0d79831680a914b67..de979132133b69121d0c415cfb15ad8bab7cb61d 100644
--- a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
+++ b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
@@ -62,9 +62,12 @@ exports[`packages_list_row renders 1`] = `
           class="gl-align-items-center gl-display-flex gl-min-h-6"
         >
           <span>
-            <gl-sprintf-stub
-              message="Created %{timestamp}"
-            />
+            Created
+            <span
+              title="December 10, 2015 at 12:00:00 AM GMT"
+            >
+              4 years ago
+            </span>
           </span>
         </div>
       </div>
diff --git a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/package_list_row_spec.js b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/package_list_row_spec.js
index d00d7180f754ce8cd4ccf89c3ae684ab30f00831..0ef0949de1e1db5db24adcaba31e3c29c26cccbe 100644
--- a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/package_list_row_spec.js
+++ b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/package_list_row_spec.js
@@ -1,4 +1,4 @@
-import { GlLink } from '@gitlab/ui';
+import { GlLink, GlSprintf } from '@gitlab/ui';
 import { nextTick } from 'vue';
 import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
 import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
@@ -9,7 +9,7 @@ import PackageTags from '~/packages_and_registries/shared/components/package_tag
 import { PACKAGE_ERROR_STATUS } from '~/packages_and_registries/shared/constants';
 
 import ListItem from '~/vue_shared/components/registry/list_item.vue';
-import { packageList } from '../mock_data';
+import { packageList, npmPackage } from '../mock_data';
 
 describe('packages_list_row', () => {
   let wrapper;
@@ -40,6 +40,7 @@ describe('packages_list_row', () => {
       stubs: {
         ListItem,
         InfrastructureIconAndName,
+        GlSprintf,
       },
       propsData: {
         packageLink: 'foo',
@@ -96,6 +97,24 @@ describe('packages_list_row', () => {
     });
   });
 
+  describe('published by author', () => {
+    it('shows the text when user is set', () => {
+      mountComponent({
+        packageEntity: { ...npmPackage },
+      });
+
+      expect(wrapper.text()).toContain('published by foo');
+    });
+
+    it('is hidden when user is null', () => {
+      mountComponent({
+        packageEntity: { ...npmPackage, pipeline: { ...npmPackage.pipeline, user: null } },
+      });
+
+      expect(wrapper.text()).not.toContain('published by');
+    });
+  });
+
   describe('deleteAvailable', () => {
     it('does not show when not set', () => {
       mountComponent({ disableDelete: true });