Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/groups')
-rw-r--r--spec/features/groups/container_registry_spec.rb2
-rw-r--r--spec/features/groups/dependency_proxy_for_containers_spec.rb12
-rw-r--r--spec/features/groups/dependency_proxy_spec.rb4
-rw-r--r--spec/features/groups/group_page_with_external_authorization_service_spec.rb2
-rw-r--r--spec/features/groups/group_runners_spec.rb301
-rw-r--r--spec/features/groups/labels/create_spec.rb6
-rw-r--r--spec/features/groups/labels/edit_spec.rb14
-rw-r--r--spec/features/groups/members/manage_members_spec.rb2
-rw-r--r--spec/features/groups/members/request_access_spec.rb4
-rw-r--r--spec/features/groups/navbar_spec.rb5
-rw-r--r--spec/features/groups/new_group_page_spec.rb4
-rw-r--r--spec/features/groups/packages_spec.rb2
-rw-r--r--spec/features/groups/settings/packages_and_registries_spec.rb2
-rw-r--r--spec/features/groups/user_sees_package_sidebar_spec.rb2
14 files changed, 218 insertions, 144 deletions
diff --git a/spec/features/groups/container_registry_spec.rb b/spec/features/groups/container_registry_spec.rb
index d68b4ccf8f8..953a8e27547 100644
--- a/spec/features/groups/container_registry_spec.rb
+++ b/spec/features/groups/container_registry_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Container Registry', :js, feature_category: :container_registry do
- let(:user) { create(:user) }
+ let(:user) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
diff --git a/spec/features/groups/dependency_proxy_for_containers_spec.rb b/spec/features/groups/dependency_proxy_for_containers_spec.rb
index c0456140291..1e15b97c5aa 100644
--- a/spec/features/groups/dependency_proxy_for_containers_spec.rb
+++ b/spec/features/groups/dependency_proxy_for_containers_spec.rb
@@ -6,6 +6,7 @@ RSpec.describe 'Group Dependency Proxy for containers', :js, feature_category: :
include DependencyProxyHelpers
include_context 'file upload requests helpers'
+ include_context 'with a server running the dependency proxy'
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
@@ -21,17 +22,6 @@ RSpec.describe 'Group Dependency Proxy for containers', :js, feature_category: :
HTTParty.get(url, headers: headers)
end
- def run_server(handler)
- default_server = Capybara.server
-
- Capybara.server = Capybara.servers[:puma]
- server = Capybara::Server.new(handler)
- server.boot
- server
- ensure
- Capybara.server = default_server
- end
-
let_it_be(:external_server) do
handler = lambda do |env|
if env['REQUEST_PATH'] == '/token'
diff --git a/spec/features/groups/dependency_proxy_spec.rb b/spec/features/groups/dependency_proxy_spec.rb
index 60922f813df..2d4f6d4fbf2 100644
--- a/spec/features/groups/dependency_proxy_spec.rb
+++ b/spec/features/groups/dependency_proxy_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
RSpec.describe 'Group Dependency Proxy', feature_category: :dependency_proxy do
- let(:owner) { create(:user) }
- let(:reporter) { create(:user) }
+ let(:owner) { create(:user, :no_super_sidebar) }
+ let(:reporter) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
let(:path) { group_dependency_proxy_path(group) }
let(:settings_path) { group_settings_packages_and_registries_path(group) }
diff --git a/spec/features/groups/group_page_with_external_authorization_service_spec.rb b/spec/features/groups/group_page_with_external_authorization_service_spec.rb
index 5b373aecce8..4cc0fe4171d 100644
--- a/spec/features/groups/group_page_with_external_authorization_service_spec.rb
+++ b/spec/features/groups/group_page_with_external_authorization_service_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe 'The group page', feature_category: :groups_and_projects do
include ExternalAuthorizationServiceHelpers
- let(:user) { create(:user) }
+ let(:user) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
before do
diff --git a/spec/features/groups/group_runners_spec.rb b/spec/features/groups/group_runners_spec.rb
index e9d2d185e8a..4e5d7c6f8e8 100644
--- a/spec/features/groups/group_runners_spec.rb
+++ b/spec/features/groups/group_runners_spec.rb
@@ -7,182 +7,235 @@ RSpec.describe "Group Runners", feature_category: :runner_fleet do
include Spec::Support::Helpers::ModalHelpers
let_it_be(:group_owner) { create(:user) }
+ let_it_be(:group_maintainer) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
before do
group.add_owner(group_owner)
- sign_in(group_owner)
+ group.add_maintainer(group_maintainer)
end
describe "Group runners page", :js do
- context "with no runners" do
+ context 'when logged in as group maintainer' do
before do
- visit group_runners_path(group)
+ sign_in(group_maintainer)
end
- it_behaves_like 'shows no runners registered'
-
- it 'shows tabs with total counts equal to 0' do
- expect(page).to have_link('All 0')
- expect(page).to have_link('Group 0')
- expect(page).to have_link('Project 0')
- end
- end
+ context "with no runners" do
+ before do
+ visit group_runners_path(group)
+ end
- context "with an online group runner" do
- let!(:group_runner) do
- create(:ci_runner, :group, groups: [group], description: 'runner-foo', contacted_at: Time.zone.now)
- end
+ it_behaves_like 'shows no runners registered'
- before do
- visit group_runners_path(group)
+ it 'shows tabs with total counts equal to 0' do
+ expect(page).to have_link('All 0')
+ expect(page).to have_link('Group 0')
+ expect(page).to have_link('Project 0')
+ end
end
- it_behaves_like 'shows runner in list' do
- let(:runner) { group_runner }
- end
+ context "with an online group runner" do
+ let_it_be(:group_runner) do
+ create(:ci_runner, :group, groups: [group], description: 'runner-foo', contacted_at: Time.zone.now)
+ end
- it_behaves_like 'pauses, resumes and deletes a runner' do
- let(:runner) { group_runner }
- end
+ before do
+ visit group_runners_path(group)
+ end
- it 'shows an editable group badge' do
- within_runner_row(group_runner.id) do
- expect(find_link('Edit')[:href]).to end_with(edit_group_runner_path(group, group_runner))
+ it_behaves_like 'shows runner in list' do
+ let(:runner) { group_runner }
+ end
- expect(page).to have_selector '.badge', text: s_('Runners|Group')
+ it_behaves_like 'shows runner details from list' do
+ let(:runner) { group_runner }
+ let(:runner_page_path) { group_runner_path(group, group_runner) }
end
- end
- context 'when description does not match' do
- before do
- input_filtered_search_keys('runner-baz')
+ it 'shows a group runner badge' do
+ within_runner_row(group_runner.id) do
+ expect(page).to have_selector '.badge', text: s_('Runners|Group')
+ end
end
- it_behaves_like 'shows no runners found'
+ context 'when description does not match' do
+ before do
+ input_filtered_search_keys('runner-baz')
+ end
+
+ it_behaves_like 'shows no runners found'
- it 'shows no runner' do
- expect(page).not_to have_content 'runner-foo'
+ it 'shows no runner' do
+ expect(page).not_to have_content 'runner-foo'
+ end
end
end
- end
- context "with an online project runner" do
- let!(:project_runner) do
- create(:ci_runner, :project, projects: [project], description: 'runner-bar', contacted_at: Time.zone.now)
- end
+ context "with an online project runner" do
+ let_it_be(:project_runner) do
+ create(:ci_runner, :project, projects: [project], description: 'runner-bar', contacted_at: Time.zone.now)
+ end
- before do
- visit group_runners_path(group)
- end
+ before do
+ visit group_runners_path(group)
+ end
- it_behaves_like 'shows runner in list' do
- let(:runner) { project_runner }
- end
+ it_behaves_like 'shows runner in list' do
+ let(:runner) { project_runner }
+ end
- it_behaves_like 'pauses, resumes and deletes a runner' do
- let(:runner) { project_runner }
+ it_behaves_like 'shows runner details from list' do
+ let(:runner) { project_runner }
+ let(:runner_page_path) { group_runner_path(group, project_runner) }
+ end
+
+ it 'shows a project runner badge' do
+ within_runner_row(project_runner.id) do
+ expect(page).to have_selector '.badge', text: s_('Runners|Project')
+ end
+ end
end
- it 'shows an editable project runner' do
- within_runner_row(project_runner.id) do
- expect(find_link('Edit')[:href]).to end_with(edit_group_runner_path(group, project_runner))
+ context "with an online instance runner" do
+ let_it_be(:instance_runner) do
+ create(:ci_runner, :instance, description: 'runner-baz', contacted_at: Time.zone.now)
+ end
- expect(page).to have_selector '.badge', text: s_('Runners|Project')
+ before do
+ visit group_runners_path(group)
end
- end
- end
- context "with an online instance runner" do
- let!(:instance_runner) do
- create(:ci_runner, :instance, description: 'runner-baz', contacted_at: Time.zone.now)
- end
+ context "when selecting 'Show only inherited'" do
+ before do
+ find("[data-testid='runner-membership-toggle'] button").click
- before do
- visit group_runners_path(group)
- end
+ wait_for_requests
+ end
- context "when selecting 'Show only inherited'" do
- before do
- find("[data-testid='runner-membership-toggle'] button").click
+ it_behaves_like 'shows runner in list' do
+ let(:runner) { instance_runner }
+ end
- wait_for_requests
+ it_behaves_like 'shows runner details from list' do
+ let(:runner) { instance_runner }
+ let(:runner_page_path) { group_runner_path(group, instance_runner) }
+ end
end
+ end
- it_behaves_like 'shows runner in list' do
- let(:runner) { instance_runner }
+ describe 'filtered search' do
+ before do
+ visit group_runners_path(group)
end
- it 'shows runner details page' do
- click_link("##{instance_runner.id} (#{instance_runner.short_sha})")
+ it 'allows user to search by paused and status', :js do
+ focus_filtered_search
- expect(current_url).to include(group_runner_path(group, instance_runner))
- expect(page).to have_content "#{s_('Runners|Description')} runner-baz"
+ page.within(search_bar_selector) do
+ expect(page).to have_link(s_('Runners|Paused'))
+ expect(page).to have_content('Status')
+ end
end
end
- end
- context 'with a multi-project runner' do
- let(:project) { create(:project, group: group) }
- let(:project_2) { create(:project, group: group) }
- let!(:runner) { create(:ci_runner, :project, projects: [project, project_2], description: 'group-runner') }
+ describe 'filter by tag' do
+ let!(:rnr_1) { create(:ci_runner, :group, groups: [group], description: 'runner-blue', tag_list: ['blue']) }
+ let!(:rnr_2) { create(:ci_runner, :group, groups: [group], description: 'runner-red', tag_list: ['red']) }
- it 'user cannot remove the project runner' do
- visit group_runners_path(group)
+ before do
+ visit group_runners_path(group)
+ end
- within_runner_row(runner.id) do
- expect(page).not_to have_button 'Delete runner'
+ it_behaves_like 'filters by tag' do
+ let(:tag) { 'blue' }
+ let(:found_runner) { rnr_1.description }
+ let(:missing_runner) { rnr_2.description }
end
end
end
- context "with multiple runners" do
+ context 'when logged in as group owner' do
before do
- create(:ci_runner, :group, groups: [group], description: 'runner-foo')
- create(:ci_runner, :group, groups: [group], description: 'runner-bar')
-
- visit group_runners_path(group)
+ sign_in(group_owner)
end
- it_behaves_like 'deletes runners in bulk' do
- let(:runner_count) { '2' }
- end
- end
+ context "with an online group runner" do
+ let_it_be(:group_runner) do
+ create(:ci_runner, :group, groups: [group], description: 'runner-foo', contacted_at: Time.zone.now)
+ end
- describe 'filtered search' do
- before do
- visit group_runners_path(group)
+ before do
+ visit group_runners_path(group)
+ end
+
+ it_behaves_like 'pauses, resumes and deletes a runner' do
+ let(:runner) { group_runner }
+ end
+
+ it 'shows an edit link' do
+ within_runner_row(group_runner.id) do
+ expect(find_link('Edit')[:href]).to end_with(edit_group_runner_path(group, group_runner))
+ end
+ end
end
- it 'allows user to search by paused and status', :js do
- focus_filtered_search
+ context "with an online project runner" do
+ let_it_be(:project_runner) do
+ create(:ci_runner, :project, projects: [project], description: 'runner-bar', contacted_at: Time.zone.now)
+ end
+
+ before do
+ visit group_runners_path(group)
+ end
- page.within(search_bar_selector) do
- expect(page).to have_link(s_('Runners|Paused'))
- expect(page).to have_content('Status')
+ it_behaves_like 'pauses, resumes and deletes a runner' do
+ let(:runner) { project_runner }
+ end
+
+ it 'shows an editable project runner' do
+ within_runner_row(project_runner.id) do
+ expect(find_link('Edit')[:href]).to end_with(edit_group_runner_path(group, project_runner))
+ end
end
end
- end
- describe 'filter by tag' do
- let!(:runner_1) { create(:ci_runner, :group, groups: [group], description: 'runner-blue', tag_list: ['blue']) }
- let!(:runner_2) { create(:ci_runner, :group, groups: [group], description: 'runner-red', tag_list: ['red']) }
+ context 'with a multi-project runner' do
+ let_it_be(:project) { create(:project, group: group) }
+ let_it_be(:project_2) { create(:project, group: group) }
+ let_it_be(:runner) do
+ create(:ci_runner, :project, projects: [project, project_2], description: 'group-runner')
+ end
- before do
- visit group_runners_path(group)
+ it 'owner cannot remove the project runner' do
+ visit group_runners_path(group)
+
+ within_runner_row(runner.id) do
+ expect(page).not_to have_button 'Delete runner'
+ end
+ end
end
- it_behaves_like 'filters by tag' do
- let(:tag) { 'blue' }
- let(:found_runner) { runner_1.description }
- let(:missing_runner) { runner_2.description }
+ context "with multiple runners" do
+ before do
+ create(:ci_runner, :group, groups: [group], description: 'runner-foo')
+ create(:ci_runner, :group, groups: [group], description: 'runner-bar')
+
+ visit group_runners_path(group)
+ end
+
+ it_behaves_like 'deletes runners in bulk' do
+ let(:runner_count) { '2' }
+ end
end
end
end
describe "Group runner create page", :js do
before do
+ sign_in(group_owner)
+
visit new_group_runner_path(group)
end
@@ -196,23 +249,39 @@ RSpec.describe "Group Runners", feature_category: :runner_fleet do
create(:ci_runner, :group, groups: [group], description: 'runner-foo')
end
- let_it_be(:group_runner_job) { create(:ci_build, runner: group_runner) }
+ let_it_be(:group_runner_job) { create(:ci_build, runner: group_runner, project: project) }
- before do
- visit group_runner_path(group, group_runner)
- end
+ context 'when logged in as group maintainer' do
+ before do
+ sign_in(group_maintainer)
- it 'user views runner details' do
- expect(page).to have_content "#{s_('Runners|Description')} runner-foo"
+ visit group_runner_path(group, group_runner)
+ end
+
+ it 'user views runner details' do
+ expect(page).to have_content "#{s_('Runners|Description')} runner-foo"
+ end
end
- it_behaves_like 'shows runner jobs tab' do
- let(:job_count) { '1' }
- let(:job) { group_runner_job }
+ context 'when logged in as group owner' do
+ before do
+ sign_in(group_owner)
+
+ visit group_runner_path(group, group_runner)
+ end
+
+ it_behaves_like 'shows runner jobs tab' do
+ let(:job_count) { '1' }
+ let(:job) { group_runner_job }
+ end
end
end
describe "Group runner edit page", :js do
+ before do
+ sign_in(group_owner)
+ end
+
context 'when updating a group runner' do
let_it_be(:group_runner) { create(:ci_runner, :group, groups: [group]) }
@@ -239,6 +308,8 @@ RSpec.describe "Group Runners", feature_category: :runner_fleet do
let(:runner) { project_runner }
let(:runner_page_path) { group_runner_path(group, project_runner) }
end
+
+ it_behaves_like 'shows locked field'
end
end
end
diff --git a/spec/features/groups/labels/create_spec.rb b/spec/features/groups/labels/create_spec.rb
index 5b57e670c1d..8242f422e6e 100644
--- a/spec/features/groups/labels/create_spec.rb
+++ b/spec/features/groups/labels/create_spec.rb
@@ -9,15 +9,17 @@ RSpec.describe 'Create a group label', feature_category: :team_planning do
before do
group.add_owner(user)
sign_in(user)
- visit group_labels_path(group)
+
+ visit new_group_label_path(group)
end
it 'creates a new label' do
- click_link 'New label'
fill_in 'Title', with: 'test-label'
click_button 'Create label'
expect(page).to have_content 'test-label'
expect(page).to have_current_path(group_labels_path(group), ignore_query: true)
end
+
+ it_behaves_like 'lock_on_merge when creating labels'
end
diff --git a/spec/features/groups/labels/edit_spec.rb b/spec/features/groups/labels/edit_spec.rb
index 6e056d35435..70568d4baa2 100644
--- a/spec/features/groups/labels/edit_spec.rb
+++ b/spec/features/groups/labels/edit_spec.rb
@@ -12,6 +12,7 @@ RSpec.describe 'Edit group label', feature_category: :team_planning do
before do
group.add_owner(user)
sign_in(user)
+
visit edit_group_label_path(group, label)
end
@@ -34,4 +35,17 @@ RSpec.describe 'Edit group label', feature_category: :team_planning do
expect(page).to have_content("#{label.title} was removed").and have_no_content("#{label.title}</span>")
end
+
+ describe 'lock_on_merge' do
+ let(:label_unlocked) { create(:group_label, group: group, lock_on_merge: false) }
+ let(:label_locked) { create(:group_label, group: group, lock_on_merge: true) }
+ let(:edit_label_path_unlocked) { edit_group_label_path(group, label_unlocked) }
+ let(:edit_label_path_locked) { edit_group_label_path(group, label_locked) }
+
+ before do
+ visit edit_label_path_unlocked
+ end
+
+ it_behaves_like 'lock_on_merge when editing labels'
+ end
end
diff --git a/spec/features/groups/members/manage_members_spec.rb b/spec/features/groups/members/manage_members_spec.rb
index 138031ffaac..dd64ddcede5 100644
--- a/spec/features/groups/members/manage_members_spec.rb
+++ b/spec/features/groups/members/manage_members_spec.rb
@@ -85,7 +85,7 @@ RSpec.describe 'Groups > Members > Manage members', feature_category: :groups_an
end
end
- it_behaves_like 'inviting members', 'group-members-page' do
+ it_behaves_like 'inviting members', 'group_members_page' do
let_it_be(:entity) { group }
let_it_be(:members_page_path) { group_group_members_path(entity) }
let_it_be(:subentity) { create(:group, parent: group) }
diff --git a/spec/features/groups/members/request_access_spec.rb b/spec/features/groups/members/request_access_spec.rb
index cd0c9bfe3eb..c04b84be90e 100644
--- a/spec/features/groups/members/request_access_spec.rb
+++ b/spec/features/groups/members/request_access_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
RSpec.describe 'Groups > Members > Request access', feature_category: :groups_and_projects do
- let(:user) { create(:user) }
- let(:owner) { create(:user) }
+ let(:user) { create(:user, :no_super_sidebar) }
+ let(:owner) { create(:user, :no_super_sidebar) }
let(:group) { create(:group, :public) }
let!(:project) { create(:project, :private, namespace: group) }
diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb
index a52e2d95fed..6a38f0c59a8 100644
--- a/spec/features/groups/navbar_spec.rb
+++ b/spec/features/groups/navbar_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'Group navbar', :with_license, feature_category: :navigation do
include_context 'group navbar structure'
- let_it_be(:user) { create(:user) }
+ let_it_be(:user) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
@@ -18,7 +18,6 @@ RSpec.describe 'Group navbar', :with_license, feature_category: :navigation do
stub_config(dependency_proxy: { enabled: false })
stub_config(registry: { enabled: false })
- stub_feature_flags(harbor_registry_integration: false)
stub_feature_flags(observability_group_tab: false)
stub_group_wikis(false)
group.add_maintainer(user)
@@ -87,8 +86,6 @@ RSpec.describe 'Group navbar', :with_license, feature_category: :navigation do
before do
group.update!(harbor_integration: harbor_integration)
- stub_feature_flags(harbor_registry_integration: true)
-
insert_harbor_registry_nav(_('Package Registry'))
visit group_path(group)
diff --git a/spec/features/groups/new_group_page_spec.rb b/spec/features/groups/new_group_page_spec.rb
index c3731565ddf..e1034f2bb9d 100644
--- a/spec/features/groups/new_group_page_spec.rb
+++ b/spec/features/groups/new_group_page_spec.rb
@@ -39,14 +39,14 @@ RSpec.describe 'New group page', :js, feature_category: :groups_and_projects do
context 'for a new top-level group' do
it 'shows the "Your work" navigation' do
visit new_group_path
- expect(page).to have_selector(".super-sidebar .context-switcher-toggle", text: "Your work")
+ expect(page).to have_selector(".super-sidebar", text: "Your work")
end
end
context 'for a new subgroup' do
it 'shows the group navigation of the parent group' do
visit new_group_path(parent_id: parent_group.id, anchor: 'create-group-pane')
- expect(page).to have_selector(".super-sidebar .context-switcher-toggle", text: parent_group.name)
+ expect(page).to have_selector(".super-sidebar", text: parent_group.name)
end
end
end
diff --git a/spec/features/groups/packages_spec.rb b/spec/features/groups/packages_spec.rb
index ec8215928e4..1d9269501be 100644
--- a/spec/features/groups/packages_spec.rb
+++ b/spec/features/groups/packages_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Group Packages', feature_category: :package_registry do
- let_it_be(:user) { create(:user) }
+ let_it_be(:user) { create(:user, :no_super_sidebar) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
diff --git a/spec/features/groups/settings/packages_and_registries_spec.rb b/spec/features/groups/settings/packages_and_registries_spec.rb
index 8ea8dc9219a..fa310722860 100644
--- a/spec/features/groups/settings/packages_and_registries_spec.rb
+++ b/spec/features/groups/settings/packages_and_registries_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe 'Group Package and registry settings', feature_category: :package_registry do
include WaitForRequests
- let(:user) { create(:user) }
+ let(:user) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
let(:sub_group) { create(:group, parent: group) }
diff --git a/spec/features/groups/user_sees_package_sidebar_spec.rb b/spec/features/groups/user_sees_package_sidebar_spec.rb
index 6a91dfb92bf..4efb9ff7608 100644
--- a/spec/features/groups/user_sees_package_sidebar_spec.rb
+++ b/spec/features/groups/user_sees_package_sidebar_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Groups > sidebar', feature_category: :groups_and_projects do
- let(:user) { create(:user) }
+ let(:user) { create(:user, :no_super_sidebar) }
let(:group) { create(:group) }
before do