diff --git a/ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb b/ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb
index b8a85467d355106c2fd2432d87b925a1a592b29d..295ab51164f42ec94e4e3b5bfd616f634a412ac6 100644
--- a/ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb
+++ b/ee/spec/features/groups/analytics/cycle_analytics/filters_and_data_spec.rb
@@ -219,7 +219,7 @@ def vsa_stages(selected_group)
 
     context 'without valid query parameters set' do
       before do
-        create_value_stream_group_aggregation(group)
+        create_value_stream_aggregation(group)
       end
 
       context 'with created_after date > created_before date' do
@@ -259,7 +259,7 @@ def vsa_stages(selected_group)
       projects_dropdown = '.js-projects-dropdown-filter'
 
       before do
-        create_value_stream_group_aggregation(group)
+        create_value_stream_aggregation(group)
       end
 
       context 'with project_ids set' do
@@ -356,7 +356,7 @@ def vsa_stages(selected_group)
       Gitlab::Analytics::CycleAnalytics::DefaultStages.all.map do |params|
         group.cycle_analytics_stages.build(params.merge(value_stream: value_stream)).save!
       end
-      create_value_stream_group_aggregation(group)
+      create_value_stream_aggregation(group)
 
       select_group(group)
     end
diff --git a/ee/spec/features/groups/analytics/cycle_analytics/multiple_value_streams_spec.rb b/ee/spec/features/groups/analytics/cycle_analytics/multiple_value_streams_spec.rb
index 2ca27236cadbe8c69b4e31250ea608f061e62678..9d0658deed9568cc05d6a450b29515285714ba33 100644
--- a/ee/spec/features/groups/analytics/cycle_analytics/multiple_value_streams_spec.rb
+++ b/ee/spec/features/groups/analytics/cycle_analytics/multiple_value_streams_spec.rb
@@ -256,7 +256,7 @@ def create_and_select_value_stream(name, with_aggregation = true)
       end
 
       it 'displays the value stream once an aggregation is run' do
-        create_value_stream_group_aggregation(group)
+        create_value_stream_aggregation(group)
 
         reload_value_stream
 
@@ -267,8 +267,8 @@ def create_and_select_value_stream(name, with_aggregation = true)
 
     context 'with an aggregation created' do
       before do
-        create_value_stream_group_aggregation(group)
-        create_value_stream_group_aggregation(sub_group)
+        create_value_stream_aggregation(group)
+        create_value_stream_aggregation(sub_group)
 
         # ensure we have a value stream already available
         create(:cycle_analytics_value_stream, namespace: group, name: 'default')
diff --git a/ee/spec/features/projects/analytics/cycle_analytics_spec.rb b/ee/spec/features/projects/analytics/cycle_analytics_spec.rb
index a3028e926e3f4deadf3711a372d7fd4e1364fe94..59750f2c77afcd790f618967ab494de5189b81af 100644
--- a/ee/spec/features/projects/analytics/cycle_analytics_spec.rb
+++ b/ee/spec/features/projects/analytics/cycle_analytics_spec.rb
@@ -8,11 +8,13 @@
   let_it_be(:user) { create(:user) }
   let_it_be(:group) { create(:group, name: 'CA-test-group') }
   let_it_be(:project) { create(:project, :repository, namespace: group, group: group, name: 'Cool fun project') }
+  let_it_be(:project_namespace) { project.project_namespace }
 
   let(:empty_state_selector) { '[data-testid="vsa-empty-state"]' }
   let(:value_stream_selector) { '[data-testid="dropdown-value-streams"]' }
   let(:duration_chart_selector) { '[data-testid="vsa-duration-chart"]' }
   let(:metrics_groups_selector) { '[data-testid="vsa-metrics-group"]' }
+  let(:metrics_selector) { '[data-testid="vsa-metrics"]' }
 
   before_all do
     group.add_owner(user)
@@ -37,19 +39,72 @@
     end
   end
 
-  context 'with the `cycle_analytics_for_projects` license' do
+  context 'with custom value streams feature available' do
+    let_it_be(:group) { create(:group, name: 'Project with custom value streams available') }
+    let_it_be(:project) do
+      create(:project, :repository, namespace: group, group: group, name: 'Important project')
+    end
+
+    let_it_be(:project_namespace) { project.project_namespace }
+
     before do
-      stub_licensed_features(cycle_analytics_for_projects: true)
+      stub_licensed_features(
+        cycle_analytics_for_projects: true,
+        cycle_analytics_for_groups: true,
+        group_level_analytics_dashboard: true
+      )
 
       project.add_maintainer(user)
       sign_in(user)
     end
 
-    it 'renders the customizable VSA empty state' do
-      visit project_cycle_analytics_path(project)
+    context 'with no value stream' do
+      it 'renders the customizable VSA empty state' do
+        visit project_cycle_analytics_path(project)
+
+        expect(page).to have_selector(empty_state_selector)
+        expect(page).to have_text(s_('CycleAnalytics|Custom value streams to measure your DevSecOps lifecycle'))
+      end
+    end
 
-      expect(page).to have_selector(empty_state_selector)
-      expect(page).to have_text(s_('CycleAnalytics|Custom value streams to measure your DevSecOps lifecycle'))
+    context 'with a value stream created', :sidekiq_inline do
+      let_it_be(:value_stream_name) { 'My awesome splendiferous value stream' }
+      let_it_be(:stages) do
+        [
+          create(:cycle_analytics_stage, namespace: project_namespace, name: "Issue", relative_position: 1),
+          create(:cycle_analytics_stage, namespace: project_namespace, name: "Code", relative_position: 2)
+        ]
+      end
+
+      let_it_be(:value_stream) do
+        create(:cycle_analytics_value_stream,
+          namespace: project_namespace,
+          name: value_stream_name,
+          stages: stages)
+      end
+
+      before do
+        # otherwise we get the "Data is collecting and loading"
+        create_value_stream_aggregation(project_namespace)
+
+        visit project_cycle_analytics_path(project)
+        wait_for_requests
+        find(value_stream_selector).click
+        click_button(value_stream_name, match: :first)
+        wait_for_requests
+      end
+
+      it 'displays data' do
+        expect(page).to have_content(value_stream_name)
+        expect(page).to have_selector(duration_chart_selector)
+        expect(page).to have_selector(metrics_selector)
+
+        metrics_tiles = page.find(metrics_selector)
+        expect(metrics_tiles).to have_content('Commit')
+        expect(metrics_tiles).to have_content('Deploy')
+        expect(metrics_tiles).to have_content('Deployment Frequency')
+        expect(metrics_tiles).to have_content('New Issue')
+      end
     end
   end
 
diff --git a/spec/support/helpers/cycle_analytics_helpers.rb b/spec/support/helpers/cycle_analytics_helpers.rb
index eba5771e062e724271c424cf8e514b9363525734..51880a7e81d6e1e71985174aec4f6324b996cc5a 100644
--- a/spec/support/helpers/cycle_analytics_helpers.rb
+++ b/spec/support/helpers/cycle_analytics_helpers.rb
@@ -91,13 +91,13 @@ def select_value_stream(value_stream_name)
     wait_for_requests
   end
 
-  def create_value_stream_group_aggregation(group)
-    aggregation = Analytics::CycleAnalytics::Aggregation.safe_create_for_namespace(group)
+  def create_value_stream_aggregation(group_or_project_namespace)
+    aggregation = Analytics::CycleAnalytics::Aggregation.safe_create_for_namespace(group_or_project_namespace)
     Analytics::CycleAnalytics::AggregatorService.new(aggregation: aggregation).execute
   end
 
   def select_group_and_custom_value_stream(group, custom_value_stream_name)
-    create_value_stream_group_aggregation(group)
+    create_value_stream_aggregation(group)
 
     select_group(group)
     select_value_stream(custom_value_stream_name)