Commit 2580edc2 authored by Ezekiel Kigbo's avatar Ezekiel Kigbo Committed by Max Woolf

Additional feature specs for new VSA features

parent 2c9210d6
...@@ -22,14 +22,24 @@ RSpec.describe 'Value stream analytics charts', :js do ...@@ -22,14 +22,24 @@ RSpec.describe 'Value stream analytics charts', :js do
stage.find('[data-testid="more-actions-toggle"]').click stage.find('[data-testid="more-actions-toggle"]').click
end end
before_all do
group.add_owner(user)
end
before do before do
stub_licensed_features(cycle_analytics_for_groups: true) stub_licensed_features(cycle_analytics_for_groups: true)
group.add_owner(user)
sign_in(user) sign_in(user)
end end
shared_examples 'has all the default stages' do
it 'has all the default stages in the duration dropdown' do
toggle_duration_chart_dropdown
expect(duration_chart_stages).to eq(translated_default_stage_names + [latest_custom_stage_name])
end
end
context 'Duration chart' do context 'Duration chart' do
duration_stage_selector = '.js-dropdown-stages' duration_stage_selector = '.js-dropdown-stages'
stage_nav_selector = '.stage-nav' stage_nav_selector = '.stage-nav'
...@@ -37,7 +47,7 @@ RSpec.describe 'Value stream analytics charts', :js do ...@@ -37,7 +47,7 @@ RSpec.describe 'Value stream analytics charts', :js do
let(:duration_chart_dropdown) { page.find(duration_stage_selector) } let(:duration_chart_dropdown) { page.find(duration_stage_selector) }
let(:first_default_stage) { page.find('.stage-nav-item-cell', text: 'Issue').ancestor('.stage-nav-item') } let(:first_default_stage) { page.find('.stage-nav-item-cell', text: 'Issue').ancestor('.stage-nav-item') }
let(:nav) { page.find(stage_nav_selector) } let(:custom_value_stream_name) { "New created value stream" }
let_it_be(:translated_default_stage_names) do let_it_be(:translated_default_stage_names) do
Gitlab::Analytics::CycleAnalytics::DefaultStages.names.map do |name| Gitlab::Analytics::CycleAnalytics::DefaultStages.names.map do |name|
...@@ -54,31 +64,61 @@ RSpec.describe 'Value stream analytics charts', :js do ...@@ -54,31 +64,61 @@ RSpec.describe 'Value stream analytics charts', :js do
duration_chart_dropdown.click duration_chart_dropdown.click
end end
def hide_vsa_stage(index = 0)
page.find_button(_('Edit')).click
page.find("[data-testid='stage-action-hide-#{index}']").click
page.find_button(_('Save Value Stream')).click
wait_for_requests
end
def latest_custom_stage_name
index = duration_chart_stages.length
"Cool custom stage - name #{index}"
end
before do before do
stub_feature_flags(value_stream_analytics_path_navigation: false) select_group(group)
select_group(group, stage_table_selector)
create_custom_value_stream(custom_value_stream_name)
end end
it 'has all the default stages' do it_behaves_like 'has all the default stages'
it 'hidden stages will not appear in the duration chart dropdown' do
first_stage_name = duration_chart_stages.first
hide_vsa_stage
toggle_duration_chart_dropdown toggle_duration_chart_dropdown
expect(duration_chart_stages).to eq(translated_default_stage_names) expect(duration_chart_stages).not_to include(first_stage_name)
end end
context 'hidden stage' do context 'With the path navigation feature flag disabled' do
let(:nav) { page.find(stage_nav_selector) }
before do before do
toggle_more_options(first_default_stage) stub_feature_flags(value_stream_analytics_path_navigation: false)
select_group(group, stage_table_selector)
end
click_button(_('Hide stage')) it_behaves_like 'has all the default stages'
# wait for the stage list to laod context 'hidden stage' do
expect(nav).to have_content(s_('CycleAnalyticsStage|Plan')) before do
end toggle_more_options(first_default_stage)
click_button(_('Hide stage'))
end
it 'will not appear in the duration chart dropdown' do
# wait for the stage list to laod
expect(nav).to have_content(s_('CycleAnalyticsStage|Plan'))
it 'will not appear in the duration chart dropdown' do toggle_duration_chart_dropdown
toggle_duration_chart_dropdown
expect(duration_chart_stages).not_to include(s_('CycleAnalyticsStage|Issue')) expect(duration_chart_stages).not_to include(s_('CycleAnalyticsStage|Issue'))
end
end end
end end
end end
...@@ -89,7 +129,6 @@ RSpec.describe 'Value stream analytics charts', :js do ...@@ -89,7 +129,6 @@ RSpec.describe 'Value stream analytics charts', :js do
before do before do
stub_licensed_features(cycle_analytics_for_groups: true, type_of_work_analytics: true) stub_licensed_features(cycle_analytics_for_groups: true, type_of_work_analytics: true)
group.add_owner(user)
project.add_maintainer(user) project.add_maintainer(user)
sign_in(user) sign_in(user)
......
...@@ -139,9 +139,17 @@ RSpec.describe 'Group value stream analytics filters and data', :js do ...@@ -139,9 +139,17 @@ RSpec.describe 'Group value stream analytics filters and data', :js do
expect(page).to have_selector(path_nav_selector) expect(page).to have_selector(path_nav_selector)
end end
it 'each stage will have median values' do
stage_medians = page.all('.gl-path-button span').collect(&:text)
expect(stage_medians).to eq(["-"] * 7)
end
it 'displays the default list of stages' do it 'displays the default list of stages' do
path_nav = page.find(path_nav_selector) path_nav = page.find(path_nav_selector)
expect(path_nav).to have_content(_("Overview"))
%w[Issue Plan Code Test Review Staging].each do |item| %w[Issue Plan Code Test Review Staging].each do |item|
string_id = "CycleAnalytics|#{item}" string_id = "CycleAnalytics|#{item}"
expect(path_nav).to have_content(s_(string_id)) expect(path_nav).to have_content(s_(string_id))
......
...@@ -13,10 +13,8 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -13,10 +13,8 @@ RSpec.describe 'Multiple value streams', :js do
end end
end end
let(:value_stream_selector) { '[data-testid="dropdown-value-streams"]' }
let(:extended_form_fields_selector) { '[data-testid="extended-form-fields"]' } let(:extended_form_fields_selector) { '[data-testid="extended-form-fields"]' }
let(:custom_value_stream_name) { "New created value stream" } let(:custom_value_stream_name) { "New created value stream" }
let(:value_stream_dropdown) { page.find(value_stream_selector) }
let!(:default_value_stream) { create(:cycle_analytics_group_value_stream, group: group, name: 'default') } let!(:default_value_stream) { create(:cycle_analytics_group_value_stream, group: group, name: 'default') }
3.times do |i| 3.times do |i|
...@@ -29,10 +27,6 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -29,10 +27,6 @@ RSpec.describe 'Multiple value streams', :js do
sign_in(user) sign_in(user)
end end
def toggle_value_stream_dropdown
value_stream_dropdown.click
end
def select_value_stream(value_stream_name) def select_value_stream(value_stream_name)
toggle_value_stream_dropdown toggle_value_stream_dropdown
...@@ -40,34 +34,6 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -40,34 +34,6 @@ RSpec.describe 'Multiple value streams', :js do
wait_for_requests wait_for_requests
end end
def add_custom_stage_to_form
page.find_button(s_('CreateValueStreamForm|Add another stage')).click
index = page.all('[data-testid="value-stream-stage-fields"]').length
last_stage = page.all('[data-testid="value-stream-stage-fields"]').last
within last_stage do
find('[name*="custom-stage-name-"]').fill_in with: "Cool custom stage - name #{index}"
select_dropdown_option_by_value "custom-stage-start-event-", :merge_request_created
select_dropdown_option_by_value "custom-stage-end-event-", :merge_request_merged
end
end
def create_value_stream
fill_in 'create-value-stream-name', with: custom_value_stream_name
page.find_button(_('Create Value Stream')).click
wait_for_requests
end
def create_custom_value_stream
toggle_value_stream_dropdown
page.find_button(_('Create new Value Stream')).click
add_custom_stage_to_form
create_value_stream
end
describe 'Create value stream' do describe 'Create value stream' do
before do before do
select_group(group) select_group(group)
...@@ -81,7 +47,7 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -81,7 +47,7 @@ RSpec.describe 'Multiple value streams', :js do
end end
it 'can create a value stream' do it 'can create a value stream' do
create_value_stream save_value_stream(custom_value_stream_name)
expect(page).to have_text(_("'%{name}' Value Stream created") % { name: custom_value_stream_name }) expect(page).to have_text(_("'%{name}' Value Stream created") % { name: custom_value_stream_name })
end end
...@@ -94,7 +60,7 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -94,7 +60,7 @@ RSpec.describe 'Multiple value streams', :js do
page.find("[data-testid='stage-action-hide-3']").click page.find("[data-testid='stage-action-hide-3']").click
page.find("[data-testid='stage-action-hide-1']").click page.find("[data-testid='stage-action-hide-1']").click
create_value_stream save_value_stream(custom_value_stream_name)
expect(page).to have_text(_("'%{name}' Value Stream created") % { name: custom_value_stream_name }) expect(page).to have_text(_("'%{name}' Value Stream created") % { name: custom_value_stream_name })
expect(page.find('[data-testid="gl-path-nav"]')).to have_text("Cool custom stage - name") expect(page.find('[data-testid="gl-path-nav"]')).to have_text("Cool custom stage - name")
...@@ -105,7 +71,7 @@ RSpec.describe 'Multiple value streams', :js do ...@@ -105,7 +71,7 @@ RSpec.describe 'Multiple value streams', :js do
before do before do
select_group(group) select_group(group)
create_custom_value_stream create_custom_value_stream(custom_value_stream_name)
page.find_button(_('Edit')).click page.find_button(_('Edit')).click
end end
......
...@@ -9241,9 +9241,6 @@ msgstr "" ...@@ -9241,9 +9241,6 @@ msgstr ""
msgid "Create Project" msgid "Create Project"
msgstr "" msgstr ""
msgid "Create Value Stream"
msgstr ""
msgid "Create a GitLab account first, and then connect it to your %{label} account." msgid "Create a GitLab account first, and then connect it to your %{label} account."
msgstr "" msgstr ""
......
...@@ -3,6 +3,38 @@ ...@@ -3,6 +3,38 @@
module CycleAnalyticsHelpers module CycleAnalyticsHelpers
include GitHelpers include GitHelpers
def toggle_value_stream_dropdown
page.find('[data-testid="dropdown-value-streams"]').click
end
def add_custom_stage_to_form
page.find_button(s_('CreateValueStreamForm|Add another stage')).click
index = page.all('[data-testid="value-stream-stage-fields"]').length
last_stage = page.all('[data-testid="value-stream-stage-fields"]').last
within last_stage do
find('[name*="custom-stage-name-"]').fill_in with: "Cool custom stage - name #{index}"
select_dropdown_option_by_value "custom-stage-start-event-", :merge_request_created
select_dropdown_option_by_value "custom-stage-end-event-", :merge_request_merged
end
end
def save_value_stream(custom_value_stream_name)
fill_in 'create-value-stream-name', with: custom_value_stream_name
page.find_button(s_('CreateValueStreamForm|Create Value Stream')).click
wait_for_requests
end
def create_custom_value_stream(custom_value_stream_name)
toggle_value_stream_dropdown
page.find_button(_('Create new Value Stream')).click
add_custom_stage_to_form
save_value_stream(custom_value_stream_name)
end
def wait_for_stages_to_load(selector = '.js-path-navigation') def wait_for_stages_to_load(selector = '.js-path-navigation')
expect(page).to have_selector selector expect(page).to have_selector selector
wait_for_requests wait_for_requests
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment