diff options
| author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-21 06:09:06 +0000 |
|---|---|---|
| committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-04-21 06:09:06 +0000 |
| commit | 7e6efee3b34f52a62360cb4a50f2e77cb67cf769 (patch) | |
| tree | 6bfe2f6f8fc8f147269ab5020c42afad06f62785 /qa | |
| parent | 22400f4dd0bd5503b3c6e4914d8dd6e1167b6c98 (diff) | |
| download | gitlab-ce-7e6efee3b34f52a62360cb4a50f2e77cb67cf769.tar.gz | |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
| -rw-r--r-- | qa/Gemfile | 2 | ||||
| -rw-r--r-- | qa/Gemfile.lock | 4 | ||||
| -rw-r--r-- | qa/qa/page/main/login.rb | 2 | ||||
| -rw-r--r-- | qa/qa/page/main/menu.rb | 5 | ||||
| -rw-r--r-- | qa/qa/page/project/new.rb | 8 | ||||
| -rw-r--r-- | qa/qa/page/project/show.rb | 10 | ||||
| -rw-r--r-- | qa/qa/page/user/show.rb | 2 | ||||
| -rw-r--r-- | qa/qa/specs/features/browser_ui/1_manage/login/register_spec.rb | 101 |
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 |
