summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-04-21 06:09:06 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-04-21 06:09:06 +0000
commit7e6efee3b34f52a62360cb4a50f2e77cb67cf769 (patch)
tree6bfe2f6f8fc8f147269ab5020c42afad06f62785 /qa
parent22400f4dd0bd5503b3c6e4914d8dd6e1167b6c98 (diff)
downloadgitlab-ce-7e6efee3b34f52a62360cb4a50f2e77cb67cf769.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/Gemfile2
-rw-r--r--qa/Gemfile.lock4
-rw-r--r--qa/qa/page/main/login.rb2
-rw-r--r--qa/qa/page/main/menu.rb5
-rw-r--r--qa/qa/page/project/new.rb8
-rw-r--r--qa/qa/page/project/show.rb10
-rw-r--r--qa/qa/page/user/show.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb101
8 files changed, 68 insertions, 66 deletions
diff --git a/qa/Gemfile b/qa/Gemfile
index abb654b4a96..58bf10a1f75 100644
--- a/qa/Gemfile
+++ b/qa/Gemfile
@@ -9,7 +9,7 @@ gem 'capybara', '~> 3.39.0'
gem 'capybara-screenshot', '~> 1.0.26'
gem 'rake', '~> 13', '>= 13.0.6'
gem 'rspec', '~> 3.12'
-gem 'selenium-webdriver', '~> 4.8', '>= 4.8.6'
+gem 'selenium-webdriver', '~> 4.9'
gem 'airborne', '~> 0.3.7', require: false # airborne is messing with rspec sandboxed mode so not requiring by default
gem 'rest-client', '~> 2.1.0'
gem 'rspec-retry', '~> 0.6.2', require: 'rspec/retry'
diff --git a/qa/Gemfile.lock b/qa/Gemfile.lock
index e86a5526fc8..e04cfe94c6d 100644
--- a/qa/Gemfile.lock
+++ b/qa/Gemfile.lock
@@ -260,7 +260,7 @@ GEM
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
- selenium-webdriver (4.8.6)
+ selenium-webdriver (4.9.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@@ -335,7 +335,7 @@ DEPENDENCIES
rspec-retry (~> 0.6.2)
rspec_junit_formatter (~> 0.6.0)
ruby-debug-ide (~> 0.7.3)
- selenium-webdriver (~> 4.8, >= 4.8.6)
+ selenium-webdriver (~> 4.9)
slack-notifier (~> 2.4)
terminal-table (~> 3.0.2)
warning (~> 1.3)
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb
index 59371dbed39..bea01a5bbc7 100644
--- a/qa/qa/page/main/login.rb
+++ b/qa/qa/page/main/login.rb
@@ -249,7 +249,7 @@ module QA
terms.accept_terms if terms.visible?
end
- Page::Main::Menu.perform(&:enable_new_navigation) if Runtime::Env.super_sidebar_enabled? && !on_login_page?
+ Page::Main::Menu.perform(&:enable_new_navigation) if Runtime::Env.super_sidebar_enabled?
Page::Main::Menu.validate_elements_present! unless skip_page_validation
end
diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb
index a46b2057327..c44ab24db50 100644
--- a/qa/qa/page/main/menu.rb
+++ b/qa/qa/page/main/menu.rb
@@ -25,6 +25,10 @@ module QA
element :sign_out_link
element :edit_profile_link
end
+
+ view 'app/assets/javascripts/super_sidebar/components/user_name_group.vue' do
+ element :user_profile_link
+ end
else
view 'app/views/layouts/header/_default.html.haml' do
element :navbar, required: true
@@ -257,6 +261,7 @@ module QA
def enable_new_navigation
Runtime::Logger.info("Enabling super sidebar!")
+ return Runtime::Logger.info("User is not signed in, skipping") unless has_element?(:navbar, wait: 2)
return Runtime::Logger.info("Super sidebar is already enabled") if has_css?('[data-testid="super-sidebar"]')
within_user_menu { click_element(:new_navigation_toggle) }
diff --git a/qa/qa/page/project/new.rb b/qa/qa/page/project/new.rb
index f7434656be3..8624e4c3d83 100644
--- a/qa/qa/page/project/new.rb
+++ b/qa/qa/page/project/new.rb
@@ -48,11 +48,9 @@ module QA
end
def choose_namespace(namespace)
- retry_on_exception do
- click_element :select_namespace_dropdown
- fill_element :select_namespace_dropdown_search_field, namespace
- click_button namespace
- end
+ click_element :select_namespace_dropdown
+ fill_element :select_namespace_dropdown_search_field, namespace
+ within_element(:select_namespace_dropdown) { click_button namespace }
end
def click_import_project
diff --git a/qa/qa/page/project/show.rb b/qa/qa/page/project/show.rb
index a76717f4760..daaee280b84 100644
--- a/qa/qa/page/project/show.rb
+++ b/qa/qa/page/project/show.rb
@@ -74,6 +74,10 @@ module QA
element :download_source_code_button
end
+ view 'app/views/projects/tree/_tree_header.html.haml' do
+ element :ref_dropdown_container
+ end
+
def wait_for_viewers_to_load
has_no_element?(:spinner_placeholder, wait: QA::Support::Repeater::DEFAULT_MAX_WAIT_TIME)
end
@@ -172,8 +176,10 @@ module QA
end
def switch_to_branch(branch_name)
- expand_select_list
- select_item(branch_name)
+ within_element(:ref_dropdown_container) do
+ expand_select_list
+ select_item(branch_name)
+ end
end
def wait_for_import
diff --git a/qa/qa/page/user/show.rb b/qa/qa/page/user/show.rb
index 9f5f0fae9bc..f14ddea3e8b 100644
--- a/qa/qa/page/user/show.rb
+++ b/qa/qa/page/user/show.rb
@@ -22,6 +22,8 @@ module QA
end
def click_following_tab
+ return click_element(:nav_item_link, submenu_item: 'Following') if Runtime::Env.super_sidebar_enabled?
+
click_element(:following_tab)
end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb
index 3f5842d756e..f257f1edbc1 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb
@@ -16,7 +16,8 @@ module QA
end
RSpec.describe 'Manage', :skip_signup_disabled, :requires_admin, product_group: :authentication_and_authorization do
- describe 'while LDAP is enabled', :orchestrated, :ldap_no_tls, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347934' do
+ describe 'while LDAP is enabled', :orchestrated, :ldap_no_tls,
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347934' do
before do
# When LDAP is enabled, a previous test might have created a token for the LDAP 'tanuki' user who is not an admin
# So we need to set it to nil in order to create a new token for admin user so that we are able to set_application_settings
@@ -29,22 +30,22 @@ module QA
ldap_username = Runtime::Env.ldap_username
Runtime::Env.ldap_username = nil
- set_require_admin_approval_after_user_signup_via_api(false)
+ set_require_admin_approval_after_user_signup(false)
Runtime::Env.ldap_username = ldap_username
end
- it_behaves_like 'registration and login'
-
after do
Runtime::Env.personal_access_token = @personal_access_token
end
+
+ it_behaves_like 'registration and login'
end
describe 'standard', :reliable, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347867' do
context 'when admin approval is not required' do
before(:all) do
- set_require_admin_approval_after_user_signup_via_api(false)
+ set_require_admin_approval_after_user_signup(false)
end
it_behaves_like 'registration and login'
@@ -70,7 +71,15 @@ module QA
Support::Waiter.wait_until(max_duration: 120, sleep_interval: 3) { !user.exists? }
end
- it 'allows recreating with same credentials', :reliable, testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347868' do
+ after do
+ if @recreated_user
+ @recreated_user.api_client = admin_api_client
+ @recreated_user.remove_via_api!
+ end
+ end
+
+ it 'allows recreating with same credentials', :reliable,
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347868' do
expect(Page::Main::Menu.perform(&:signed_in?)).to be_falsy
Flow::Login.sign_in(as: user, skip_page_validation: true)
@@ -86,13 +95,6 @@ module QA
expect(Page::Main::Menu.perform(&:signed_in?)).to be_truthy
end
- after do
- if @recreated_user
- @recreated_user.api_client = admin_api_client
- @recreated_user.remove_via_api!
- end
- end
-
def admin_api_client
@admin_api_client ||= Runtime::API::Client.as_admin
end
@@ -100,29 +102,42 @@ module QA
end
context 'when admin approval is required' do
- let(:signed_up_waiting_approval_text) { 'You have signed up successfully. However, we could not sign you in because your account is awaiting approval from your GitLab administrator.' }
- let(:pending_approval_blocked_text) { 'Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error.' }
+ let(:signed_up_waiting_approval_text) do
+ 'You have signed up successfully. However, we could not sign you in because your account is awaiting approval from your GitLab administrator.'
+ end
- before do
- enable_require_admin_approval_after_user_signup_via_ui
+ let(:pending_approval_blocked_text) do
+ 'Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error.'
+ end
- Support::Retrier.retry_on_exception do
- @user = Resource::User.fabricate_via_browser_ui! do |user|
- user.expect_fabrication_success = false
- end
+ let(:user) do
+ Resource::User.fabricate_via_browser_ui! do |user|
+ user.expect_fabrication_success = false
end
end
- it 'allows user login after approval', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347871' do
+ before do
+ set_require_admin_approval_after_user_signup(true)
+ end
+
+ after do
+ set_require_admin_approval_after_user_signup(false)
+ user.remove_via_api! if user
+ end
+
+ it 'allows user login after approval',
+ testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347871' do
+ user # sign up user
+
expect(page).to have_text(signed_up_waiting_approval_text)
- Flow::Login.sign_in(as: @user, skip_page_validation: true)
+ Flow::Login.sign_in(as: user, skip_page_validation: true)
expect(page).to have_text(pending_approval_blocked_text)
- approve_user(@user)
+ approve_user(user)
- Flow::Login.sign_in(as: @user, skip_page_validation: true)
+ Flow::Login.sign_in(as: user, skip_page_validation: true)
Flow::UserOnboarding.onboard_user
@@ -131,11 +146,6 @@ module QA
Runtime::Browser.visit(:gitlab, Page::Dashboard::Welcome)
Page::Main::Menu.perform(&:has_personal_area?)
end
-
- after do
- set_require_admin_approval_after_user_signup_via_api(false)
- @user.remove_via_api! if @user
- end
end
end
@@ -158,36 +168,17 @@ module QA
end
end
- def set_require_admin_approval_after_user_signup_via_api(enable_or_disable)
- return if get_require_admin_approval_after_user_signup_via_api == enable_or_disable
+ def set_require_admin_approval_after_user_signup(enable_or_disable)
+ return if get_require_admin_approval_after_user_signup == enable_or_disable
Runtime::ApplicationSettings.set_application_settings(require_admin_approval_after_user_signup: enable_or_disable)
-
- sleep 10 # It takes a moment for the setting to come into effect
+ QA::Support::Retrier.retry_until(max_duration: 10, sleep_interval: 1) do
+ get_require_admin_approval_after_user_signup == enable_or_disable
+ end
end
- def get_require_admin_approval_after_user_signup_via_api
+ def get_require_admin_approval_after_user_signup
Runtime::ApplicationSettings.get_application_settings[:require_admin_approval_after_user_signup]
end
-
- def enable_require_admin_approval_after_user_signup_via_ui
- unless get_require_admin_approval_after_user_signup_via_api
- QA::Support::Retrier.retry_until do
- Flow::Login.while_signed_in_as_admin do
- Page::Main::Menu.perform(&:go_to_admin_area)
- QA::Page::Admin::Menu.perform(&:go_to_general_settings)
- Page::Admin::Settings::General.perform do |setting|
- setting.expand_sign_up_restrictions do |settings|
- settings.require_admin_approval_after_user_signup
- end
- end
- end
-
- sleep 15 # It takes a moment for the setting to come into effect
-
- get_require_admin_approval_after_user_signup_via_api
- end
- end
- end
end
end