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)