diff options
Diffstat (limited to 'spec/features/groups')
-rw-r--r-- | spec/features/groups/clusters/eks_spec.rb | 6 | ||||
-rw-r--r-- | spec/features/groups/clusters/user_spec.rb | 12 | ||||
-rw-r--r-- | spec/features/groups/container_registry_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/groups/group_settings_spec.rb | 50 | ||||
-rw-r--r-- | spec/features/groups/issues_spec.rb | 16 | ||||
-rw-r--r-- | spec/features/groups/labels/create_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/groups/labels/edit_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/groups/labels/sort_labels_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/groups/members/leave_group_spec.rb | 8 | ||||
-rw-r--r-- | spec/features/groups/members/manage_groups_spec.rb | 97 | ||||
-rw-r--r-- | spec/features/groups/members/manage_members_spec.rb | 84 | ||||
-rw-r--r-- | spec/features/groups/navbar_spec.rb | 25 | ||||
-rw-r--r-- | spec/features/groups/settings/ci_cd_spec.rb | 18 | ||||
-rw-r--r-- | spec/features/groups/settings/repository_spec.rb | 6 | ||||
-rw-r--r-- | spec/features/groups/settings/user_searches_in_settings_spec.rb | 2 |
15 files changed, 131 insertions, 203 deletions
diff --git a/spec/features/groups/clusters/eks_spec.rb b/spec/features/groups/clusters/eks_spec.rb index fe62efbd3bf..3cca2d0919c 100644 --- a/spec/features/groups/clusters/eks_spec.rb +++ b/spec/features/groups/clusters/eks_spec.rb @@ -13,13 +13,15 @@ RSpec.describe 'Group AWS EKS Cluster', :js do allow(Groups::ClustersController).to receive(:STATUS_POLLING_INTERVAL) { 100 } allow_any_instance_of(Clusters::Kubernetes::CreateOrUpdateNamespaceService).to receive(:execute) allow_any_instance_of(Clusters::Cluster).to receive(:retrieve_connection_status).and_return(:connected) + stub_application_setting(eks_integration_enabled: true) end context 'when user does not have a cluster and visits group clusters page' do before do visit group_clusters_path(group) - click_link 'Connect with a certificate' + click_button 'Actions' + click_link 'Create a new cluster' end context 'when user creates a cluster on AWS EKS' do @@ -28,7 +30,7 @@ RSpec.describe 'Group AWS EKS Cluster', :js do end it 'user sees a form to create an EKS cluster' do - expect(page).to have_content('Create new cluster on EKS') + expect(page).to have_content('Authenticate with Amazon Web Services') end end end diff --git a/spec/features/groups/clusters/user_spec.rb b/spec/features/groups/clusters/user_spec.rb index 1788167c94c..2ed6ddc09ab 100644 --- a/spec/features/groups/clusters/user_spec.rb +++ b/spec/features/groups/clusters/user_spec.rb @@ -26,7 +26,6 @@ RSpec.describe 'User Cluster', :js do visit group_clusters_path(group) click_link 'Connect with a certificate' - click_link 'Connect existing cluster' end context 'when user filled form with valid parameters' do @@ -94,16 +93,7 @@ RSpec.describe 'User Cluster', :js do expect(page).to have_button('Save changes') end - context 'when user disables the cluster' do - before do - page.find(:css, '.js-cluster-enable-toggle-area .js-project-feature-toggle').click - page.within('.js-cluster-details-form') { click_button 'Save changes' } - end - - it 'user sees the successful message' do - expect(page).to have_content('Kubernetes cluster was successfully updated.') - end - end + include_examples "user disables a cluster" context 'when user changes cluster parameters' do before do diff --git a/spec/features/groups/container_registry_spec.rb b/spec/features/groups/container_registry_spec.rb index f5af9ba8b7b..7bef2dc9416 100644 --- a/spec/features/groups/container_registry_spec.rb +++ b/spec/features/groups/container_registry_spec.rb @@ -97,6 +97,8 @@ RSpec.describe 'Container Registry', :js do expect(find('.modal .modal-title')).to have_content _('Remove tag') find('.modal .modal-footer .btn-danger').click end + + it_behaves_like 'rejecting tags destruction for an importing repository on', tags: ['latest'] end end diff --git a/spec/features/groups/group_settings_spec.rb b/spec/features/groups/group_settings_spec.rb index 30a81333547..50982cb1452 100644 --- a/spec/features/groups/group_settings_spec.rb +++ b/spec/features/groups/group_settings_spec.rb @@ -20,7 +20,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit new_group_full_path - expect(current_path).to eq(new_group_full_path) + expect(page).to have_current_path(new_group_full_path, ignore_query: true) expect(find('h1.home-panel-title')).to have_content(group.name) end @@ -28,7 +28,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit old_group_full_path - expect(current_path).to eq(new_group_full_path) + expect(page).to have_current_path(new_group_full_path, ignore_query: true) expect(find('h1.home-panel-title')).to have_content(group.name) end @@ -41,7 +41,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit new_subgroup_full_path - expect(current_path).to eq(new_subgroup_full_path) + expect(page).to have_current_path(new_subgroup_full_path, ignore_query: true) expect(find('h1.home-panel-title')).to have_content(subgroup.name) end @@ -49,7 +49,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit old_subgroup_full_path - expect(current_path).to eq(new_subgroup_full_path) + expect(page).to have_current_path(new_subgroup_full_path, ignore_query: true) expect(find('h1.home-panel-title')).to have_content(subgroup.name) end end @@ -71,7 +71,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit new_project_full_path - expect(current_path).to eq(new_project_full_path) + expect(page).to have_current_path(new_project_full_path, ignore_query: true) expect(find('.breadcrumbs')).to have_content(project.path) end @@ -79,7 +79,7 @@ RSpec.describe 'Edit group settings' do update_path(new_group_path) visit old_project_full_path - expect(current_path).to eq(new_project_full_path) + expect(page).to have_current_path(new_project_full_path, ignore_query: true) expect(find('.breadcrumbs')).to have_content(project.path) end end @@ -154,32 +154,50 @@ RSpec.describe 'Edit group settings' do namespace_select.find('button').click namespace_select.find('.dropdown-menu p', text: target_group_name, match: :first).click - click_button "Transfer group" + click_button 'Transfer group' end page.within(confirm_modal) do - expect(page).to have_text "You are going to transfer #{selected_group.name} to another namespace. Are you ABSOLUTELY sure? " + expect(page).to have_text "You are going to transfer #{selected_group.name} to another namespace. Are you ABSOLUTELY sure?" - fill_in "confirm_name_input", with: selected_group.name - click_button "Confirm" + fill_in 'confirm_name_input', with: selected_group.name + click_button 'Confirm' end expect(page).to have_text "Group '#{selected_group.name}' was successfully transferred." + expect(current_url).to include(selected_group.reload.full_path) end end - context 'with a sub group' do + context 'from a subgroup' do let(:selected_group) { create(:group, path: 'foo-subgroup', parent: group) } - let(:target_group_name) { "No parent group" } - it_behaves_like 'can transfer the group' + context 'to no parent group' do + let(:target_group_name) { 'No parent group' } + + it_behaves_like 'can transfer the group' + end + + context 'to a different parent group' do + let(:target_group) { create(:group, path: 'foo-parentgroup') } + let(:target_group_name) { target_group.name } + + before do + target_group.add_owner(user) + end + + it_behaves_like 'can transfer the group' + end end - context 'with a root group' do + context 'from a root group' do let(:selected_group) { create(:group, path: 'foo-rootgroup') } - let(:target_group_name) { group.name } - it_behaves_like 'can transfer the group' + context 'to a parent group' do + let(:target_group_name) { group.name } + + it_behaves_like 'can transfer the group' + end end end diff --git a/spec/features/groups/issues_spec.rb b/spec/features/groups/issues_spec.rb index 3fc1484826c..6b663445124 100644 --- a/spec/features/groups/issues_spec.rb +++ b/spec/features/groups/issues_spec.rb @@ -108,6 +108,22 @@ RSpec.describe 'Group issues page' do end end + context 'group with no issues', :js do + let!(:group_with_no_issues) { create(:group) } + let!(:subgroup_with_issues) { create(:group, parent: group_with_no_issues) } + let!(:subgroup_project) { create(:project, :public, group: subgroup_with_issues) } + let!(:subgroup_issue) { create(:issue, project: subgroup_project) } + + before do + stub_feature_flags(vue_issues_list: true) + visit issues_group_path(group_with_no_issues) + end + + it 'shows issues from subgroups on issues list' do + expect(page).to have_text subgroup_issue.title + end + end + context 'projects with issues disabled' do describe 'issue dropdown' do let(:user_in_group) { create(:group_member, :maintainer, user: create(:user), group: group ).user } diff --git a/spec/features/groups/labels/create_spec.rb b/spec/features/groups/labels/create_spec.rb index 9c1a3672ebd..19433e612ff 100644 --- a/spec/features/groups/labels/create_spec.rb +++ b/spec/features/groups/labels/create_spec.rb @@ -18,6 +18,6 @@ RSpec.describe 'Create a group label' do click_button 'Create label' expect(page).to have_content 'test-label' - expect(current_path).to eq(group_labels_path(group)) + expect(page).to have_current_path(group_labels_path(group), ignore_query: true) end end diff --git a/spec/features/groups/labels/edit_spec.rb b/spec/features/groups/labels/edit_spec.rb index 8e6560af352..cf1729af97d 100644 --- a/spec/features/groups/labels/edit_spec.rb +++ b/spec/features/groups/labels/edit_spec.rb @@ -19,7 +19,7 @@ RSpec.describe 'Edit group label' do fill_in 'label_title', with: 'new label name' click_button 'Save changes' - expect(current_path).to eq(root_path) + expect(page).to have_current_path(root_path, ignore_query: true) expect(label.reload.title).to eq('new label name') end diff --git a/spec/features/groups/labels/sort_labels_spec.rb b/spec/features/groups/labels/sort_labels_spec.rb index df75ff7c3cb..fba166449f8 100644 --- a/spec/features/groups/labels/sort_labels_spec.rb +++ b/spec/features/groups/labels/sort_labels_spec.rb @@ -28,7 +28,7 @@ RSpec.describe 'Sort labels', :js do it 'sorts by date' do click_button 'Name' - sort_options = find('ul.dropdown-menu-sort li').all('a').collect(&:text) + sort_options = find('ul.dropdown-menu').all('li').collect(&:text) expect(sort_options[0]).to eq('Name') expect(sort_options[1]).to eq('Name, descending') @@ -37,7 +37,7 @@ RSpec.describe 'Sort labels', :js do expect(sort_options[4]).to eq('Updated date') expect(sort_options[5]).to eq('Oldest updated') - click_link 'Name, descending' + click_button 'Name, descending' # assert default sorting within '.other-labels' do diff --git a/spec/features/groups/members/leave_group_spec.rb b/spec/features/groups/members/leave_group_spec.rb index 9612c6625f6..50d5db46cee 100644 --- a/spec/features/groups/members/leave_group_spec.rb +++ b/spec/features/groups/members/leave_group_spec.rb @@ -21,7 +21,7 @@ RSpec.describe 'Groups > Members > Leave group' do visit group_path(group) click_link 'Leave group' - expect(current_path).to eq(dashboard_groups_path) + expect(page).to have_current_path(dashboard_groups_path, ignore_query: true) expect(page).to have_content left_group_message(group) expect(group.users).not_to include(user) end @@ -35,7 +35,7 @@ RSpec.describe 'Groups > Members > Leave group' do page.accept_confirm wait_for_all_requests - expect(current_path).to eq(dashboard_groups_path) + expect(page).to have_current_path(dashboard_groups_path, ignore_query: true) expect(group.users).not_to include(user) end @@ -45,7 +45,7 @@ RSpec.describe 'Groups > Members > Leave group' do visit group_path(group) click_link 'Leave group' - expect(current_path).to eq(dashboard_groups_path) + expect(page).to have_current_path(dashboard_groups_path, ignore_query: true) expect(page).to have_content left_group_message(group) expect(group.users).not_to include(user) end @@ -57,7 +57,7 @@ RSpec.describe 'Groups > Members > Leave group' do visit group_path(group) click_link 'Leave group' - expect(current_path).to eq(dashboard_groups_path) + expect(page).to have_current_path(dashboard_groups_path, ignore_query: true) expect(page).to have_content left_group_message(group) expect(group.users).not_to include(user) end diff --git a/spec/features/groups/members/manage_groups_spec.rb b/spec/features/groups/members/manage_groups_spec.rb index 61c6709f9cc..5ab5a7ea716 100644 --- a/spec/features/groups/members/manage_groups_spec.rb +++ b/spec/features/groups/members/manage_groups_spec.rb @@ -14,34 +14,6 @@ RSpec.describe 'Groups > Members > Manage groups', :js do sign_in(user) end - context 'with invite_members_group_modal disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - end - - context 'when group link does not exist' do - let_it_be(:group) { create(:group) } - let_it_be(:group_to_add) { create(:group) } - - before do - group.add_owner(user) - group_to_add.add_owner(user) - visit group_group_members_path(group) - end - - it 'can share group with group' do - add_group(group_to_add.id, 'Reporter') - - click_groups_tab - - page.within(first_row) do - expect(page).to have_content(group_to_add.name) - expect(page).to have_content('Reporter') - end - end - end - end - context 'when group link does not exist' do it 'can share a group with group' do group = create(:group) @@ -177,32 +149,14 @@ RSpec.describe 'Groups > Members > Manage groups', :js do end context 'when sharing with groups outside the hierarchy is enabled' do - context 'when the invite members group modal is disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - end - - it 'shows groups within and outside the hierarchy in search results' do - visit group_group_members_path(group) - - click_on 'Invite group' - click_on 'Search for a group' - - expect(page).to have_text group_within_hierarchy.name - expect(page).to have_text group_outside_hierarchy.name - end - end - - context 'when the invite members group modal is enabled' do - it 'shows groups within and outside the hierarchy in search results' do - visit group_group_members_path(group) + it 'shows groups within and outside the hierarchy in search results' do + visit group_group_members_path(group) - click_on 'Invite a group' - click_on 'Select a group' + click_on 'Invite a group' + click_on 'Select a group' - expect(page).to have_text group_within_hierarchy.name - expect(page).to have_text group_outside_hierarchy.name - end + expect(page).to have_text group_within_hierarchy.name + expect(page).to have_text group_outside_hierarchy.name end end @@ -211,45 +165,18 @@ RSpec.describe 'Groups > Members > Manage groups', :js do group.namespace_settings.update!(prevent_sharing_groups_outside_hierarchy: true) end - context 'when the invite members group modal is disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - end - - it 'shows only groups within the hierarchy in search results' do - visit group_group_members_path(group) - - click_on 'Invite group' - click_on 'Search for a group' - - expect(page).to have_text group_within_hierarchy.name - expect(page).not_to have_text group_outside_hierarchy.name - end - end - - context 'when the invite members group modal is enabled' do - it 'shows only groups within the hierarchy in search results' do - visit group_group_members_path(group) + it 'shows only groups within the hierarchy in search results' do + visit group_group_members_path(group) - click_on 'Invite a group' - click_on 'Select a group' + click_on 'Invite a group' + click_on 'Select a group' - expect(page).to have_text group_within_hierarchy.name - expect(page).not_to have_text group_outside_hierarchy.name - end + expect(page).to have_text group_within_hierarchy.name + expect(page).not_to have_text group_outside_hierarchy.name end end end - def add_group(id, role) - page.click_link 'Invite group' - page.within ".invite-group-form" do - select2(id, from: "#shared_with_group_id") - select(role, from: "shared_group_access") - click_button "Invite" - end - end - def click_groups_tab expect(page).to have_link 'Groups' click_link "Groups" diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb index e5dad5ee4be..533d2118b30 100644 --- a/spec/features/groups/members/manage_members_spec.rb +++ b/spec/features/groups/members/manage_members_spec.rb @@ -15,42 +15,18 @@ RSpec.describe 'Groups > Members > Manage members' do sign_in(user1) end - shared_examples 'includes the correct Invite link' do |should_include, should_not_include| - it 'includes either the form or the modal trigger', :aggregate_failures do + shared_examples 'includes the correct Invite link' do |should_include| + it 'includes the modal trigger', :aggregate_failures do group.add_owner(user1) visit group_group_members_path(group) expect(page).to have_selector(should_include) - expect(page).not_to have_selector(should_not_include) end end - shared_examples 'does not include either invite modal or either invite form' do - it 'does not include either of the invite members or invite group modal buttons', :aggregate_failures do - expect(page).not_to have_selector '.js-invite-members-modal' - expect(page).not_to have_selector '.js-invite-group-modal' - end - - it 'does not include either of the invite users or invite group forms', :aggregate_failures do - expect(page).not_to have_selector '.invite-users-form' - expect(page).not_to have_selector '.invite-group-form' - end - end - - context 'when Invite Members modal is enabled' do - it_behaves_like 'includes the correct Invite link', '.js-invite-members-trigger', '.invite-users-form' - it_behaves_like 'includes the correct Invite link', '.js-invite-group-trigger', '.invite-group-form' - end - - context 'when Invite Members modal is disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - end - - it_behaves_like 'includes the correct Invite link', '.invite-users-form', '.js-invite-members-trigger' - it_behaves_like 'includes the correct Invite link', '.invite-group-form', '.js-invite-group-trigger' - end + it_behaves_like 'includes the correct Invite link', '.js-invite-members-trigger' + it_behaves_like 'includes the correct Invite link', '.js-invite-group-trigger' it 'update user to owner level', :js do group.add_owner(user1) @@ -106,33 +82,6 @@ RSpec.describe 'Groups > Members > Manage members' do expect(page).to have_content('Invite "undisclosed_email@gitlab.com" by email') end - context 'when Invite Members modal is disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - end - - it 'do not disclose email addresses', :js do - group.add_owner(user1) - create(:user, email: 'undisclosed_email@gitlab.com', name: "Jane 'invisible' Doe") - - visit group_group_members_path(group) - - find('.select2-container').click - select_input = find('.select2-input') - - select_input.send_keys('@gitlab.com') - wait_for_requests - - expect(page).to have_content('No matches found') - - select_input.native.clear - select_input.send_keys('undisclosed_email@gitlab.com') - wait_for_requests - - expect(page).to have_content('Invite "undisclosed_email@gitlab.com" by email') - end - end - it 'remove user from group', :js do group.add_owner(user1) group.add_developer(user2) @@ -205,30 +154,11 @@ RSpec.describe 'Groups > Members > Manage members' do visit group_group_members_path(group) end - it_behaves_like 'does not include either invite modal or either invite form' - - it 'does not include a button on the members page list to manage or remove the existing member', :js, :aggregate_failures do - page.within(second_row) do - # Can not modify user2 role - expect(page).not_to have_button 'Developer' - - # Can not remove user2 - expect(page).not_to have_selector 'button[title="Remove member"]' - end - end - end - - context 'when user is a guest and the :invite_members_group_modal feature flag is disabled' do - before do - stub_feature_flags(invite_members_group_modal: false) - group.add_guest(user1) - group.add_developer(user2) - - visit group_group_members_path(group) + it 'does not include either of the invite members or invite group modal buttons', :aggregate_failures do + expect(page).not_to have_selector '.js-invite-members-modal' + expect(page).not_to have_selector '.js-invite-group-modal' end - it_behaves_like 'does not include either invite modal or either invite form' - it 'does not include a button on the members page list to manage or remove the existing member', :js, :aggregate_failures do page.within(second_row) do # Can not modify user2 role diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb index c5d2f5e6733..e4b44d65438 100644 --- a/spec/features/groups/navbar_spec.rb +++ b/spec/features/groups/navbar_spec.rb @@ -18,6 +18,7 @@ RSpec.describe 'Group navbar' do stub_feature_flags(customer_relations: false) stub_config(dependency_proxy: { enabled: false }) stub_config(registry: { enabled: false }) + stub_feature_flags(harbor_registry_integration: false) stub_group_wikis(false) group.add_maintainer(user) sign_in(user) @@ -59,6 +60,18 @@ RSpec.describe 'Group navbar' do it_behaves_like 'verified navigation bar' end + context 'when customer_relations feature and flag is enabled but subgroup' do + let(:group) { create(:group, :crm_enabled, parent: create(:group)) } + + before do + stub_feature_flags(customer_relations: true) + + visit group_path(group) + end + + it_behaves_like 'verified navigation bar' + end + context 'when dependency proxy is available' do before do stub_config(dependency_proxy: { enabled: true }) @@ -70,4 +83,16 @@ RSpec.describe 'Group navbar' do it_behaves_like 'verified navigation bar' end + + context 'when harbor registry is available' do + before do + stub_feature_flags(harbor_registry_integration: true) + + insert_harbor_registry_nav(_('Package Registry')) + + visit group_path(group) + end + + it_behaves_like 'verified navigation bar' + end end diff --git a/spec/features/groups/settings/ci_cd_spec.rb b/spec/features/groups/settings/ci_cd_spec.rb index b059cd8da29..8851aeb6381 100644 --- a/spec/features/groups/settings/ci_cd_spec.rb +++ b/spec/features/groups/settings/ci_cd_spec.rb @@ -13,6 +13,24 @@ RSpec.describe 'Group CI/CD settings' do sign_in(user) end + describe 'new group runners view banner' do + it 'displays banner' do + visit group_settings_ci_cd_path(group) + + expect(page).to have_content(s_('Runners|New group runners view')) + expect(page).to have_link(href: group_runners_path(group)) + end + + it 'does not display banner' do + stub_feature_flags(runner_list_group_view_vue_ui: false) + + visit group_settings_ci_cd_path(group) + + expect(page).not_to have_content(s_('Runners|New group runners view')) + expect(page).not_to have_link(href: group_runners_path(group)) + end + end + describe 'runners registration token' do let!(:token) { group.runners_token } diff --git a/spec/features/groups/settings/repository_spec.rb b/spec/features/groups/settings/repository_spec.rb index d95eaf3c92c..159deb2a4e3 100644 --- a/spec/features/groups/settings/repository_spec.rb +++ b/spec/features/groups/settings/repository_spec.rb @@ -26,7 +26,7 @@ RSpec.describe 'Group Repository settings' do end end - context 'Default initial branch name' do + context 'Default branch' do before do visit group_settings_repository_path(group) end @@ -37,8 +37,8 @@ RSpec.describe 'Group Repository settings' do it 'renders the correct setting section content' do within("#js-default-branch-name") do - expect(page).to have_content("Default initial branch name") - expect(page).to have_content("The default name for the initial branch of new repositories created in the group.") + expect(page).to have_content("Default branch") + expect(page).to have_content("Set the initial name and protections for the default branch of new repositories created in the group.") end end end diff --git a/spec/features/groups/settings/user_searches_in_settings_spec.rb b/spec/features/groups/settings/user_searches_in_settings_spec.rb index abf56232aff..c7b7b25caa7 100644 --- a/spec/features/groups/settings/user_searches_in_settings_spec.rb +++ b/spec/features/groups/settings/user_searches_in_settings_spec.rb @@ -32,7 +32,7 @@ RSpec.describe 'User searches group settings', :js do visit group_settings_repository_path(group) end - it_behaves_like 'can search settings', 'Deploy tokens', 'Default initial branch name' + it_behaves_like 'can search settings', 'Deploy tokens', 'Default branch' end context 'in CI/CD page' do |