From b7a5b204ba4f8afc4fc627660c035d253dcd4d79 Mon Sep 17 00:00:00 2001 From: sliaquat Date: Thu, 4 Oct 2018 19:46:57 +0500 Subject: Reorganize menu files Add missed files Use correct method Implement review feedback Add missing frozen_string_literal Squash 5 commits --- qa/qa.rb | 12 +- qa/qa/factory/resource/branch.rb | 2 +- qa/qa/factory/resource/deploy_key.rb | 2 +- qa/qa/factory/resource/fork.rb | 2 +- qa/qa/factory/resource/kubernetes_cluster.rb | 2 +- qa/qa/factory/resource/personal_access_token.rb | 4 +- qa/qa/factory/resource/project_milestone.rb | 2 +- qa/qa/factory/resource/runner.rb | 2 +- qa/qa/factory/resource/sandbox.rb | 2 +- qa/qa/factory/resource/secret_variable.rb | 2 +- qa/qa/factory/resource/ssh_key.rb | 4 +- qa/qa/factory/resource/user.rb | 4 +- qa/qa/factory/resource/wiki.rb | 2 +- qa/qa/factory/settings/hashed_storage.rb | 6 +- qa/qa/page/admin/menu.rb | 47 ++++++++ qa/qa/page/main/login.rb | 8 +- qa/qa/page/main/menu.rb | 95 +++++++++++++++ qa/qa/page/main/sign_up.rb | 2 +- qa/qa/page/menu/admin.rb | 45 -------- qa/qa/page/menu/main.rb | 93 --------------- qa/qa/page/menu/profile.rb | 34 ------ qa/qa/page/menu/side.rb | 125 -------------------- qa/qa/page/profile/menu.rb | 36 ++++++ qa/qa/page/project/menu.rb | 127 +++++++++++++++++++++ .../browser_ui/1_manage/login/log_in_spec.rb | 2 +- .../login/log_into_gitlab_via_ldap_spec.rb | 2 +- .../browser_ui/1_manage/login/register_spec.rb | 2 +- .../1_manage/project/import_github_repo_spec.rb | 8 +- .../1_manage/project/view_project_activity_spec.rb | 2 +- .../browser_ui/2_plan/issue/create_issue_spec.rb | 2 +- .../merge_merge_request_from_fork_spec.rb | 2 +- .../merge_request/rebase_merge_request_spec.rb | 2 +- .../3_create/repository/add_ssh_key_spec.rb | 4 +- .../3_create/repository/use_ssh_key_spec.rb | 4 +- .../wiki/create_edit_clone_push_wiki_spec.rb | 2 +- .../pipeline/create_and_process_pipeline_spec.rb | 2 +- .../deploy_key/clone_using_deploy_key_spec.rb | 4 +- .../create_project_with_auto_devops_spec.rb | 4 +- .../create_group_with_mattermost_team_spec.rb | 2 +- 39 files changed, 355 insertions(+), 349 deletions(-) create mode 100644 qa/qa/page/admin/menu.rb create mode 100644 qa/qa/page/main/menu.rb delete mode 100644 qa/qa/page/menu/admin.rb delete mode 100644 qa/qa/page/menu/main.rb delete mode 100644 qa/qa/page/menu/profile.rb delete mode 100644 qa/qa/page/menu/side.rb create mode 100644 qa/qa/page/profile/menu.rb create mode 100644 qa/qa/page/project/menu.rb diff --git a/qa/qa.rb b/qa/qa.rb index 227d4424b09..9cb70da5343 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -120,6 +120,7 @@ module QA module Main autoload :Login, 'qa/page/main/login' + autoload :Menu, 'qa/page/main/menu' autoload :OAuth, 'qa/page/main/oauth' autoload :SignUp, 'qa/page/main/sign_up' end @@ -128,13 +129,6 @@ module QA autoload :Common, 'qa/page/settings/common' end - module Menu - autoload :Main, 'qa/page/menu/main' - autoload :Side, 'qa/page/menu/side' - autoload :Admin, 'qa/page/menu/admin' - autoload :Profile, 'qa/page/menu/profile' - end - module Dashboard autoload :Projects, 'qa/page/dashboard/projects' autoload :Groups, 'qa/page/dashboard/groups' @@ -158,6 +152,7 @@ module QA autoload :New, 'qa/page/project/new' autoload :Show, 'qa/page/project/show' autoload :Activity, 'qa/page/project/activity' + autoload :Menu, 'qa/page/project/menu' module Import autoload :Github, 'qa/page/project/import/github' @@ -217,6 +212,7 @@ module QA end module Profile + autoload :Menu, 'qa/page/profile/menu' autoload :PersonalAccessTokens, 'qa/page/profile/personal_access_tokens' autoload :SSHKeys, 'qa/page/profile/ssh_keys' end @@ -235,6 +231,8 @@ module QA end module Admin + autoload :Menu, 'qa/page/admin/menu' + module Settings autoload :Repository, 'qa/page/admin/settings/repository' diff --git a/qa/qa/factory/resource/branch.rb b/qa/qa/factory/resource/branch.rb index 60539992073..f3b52565d17 100644 --- a/qa/qa/factory/resource/branch.rb +++ b/qa/qa/factory/resource/branch.rb @@ -43,7 +43,7 @@ module QA # to `allow_to_push` variable. return branch unless @protected - Page::Menu::Side.act do + Page::Project::Menu.act do click_repository_settings end diff --git a/qa/qa/factory/resource/deploy_key.rb b/qa/qa/factory/resource/deploy_key.rb index ea8a3ad687d..4c53c500c27 100644 --- a/qa/qa/factory/resource/deploy_key.rb +++ b/qa/qa/factory/resource/deploy_key.rb @@ -24,7 +24,7 @@ module QA def fabricate! project.visit! - Page::Menu::Side.act do + Page::Project::Menu.act do click_repository_settings end diff --git a/qa/qa/factory/resource/fork.rb b/qa/qa/factory/resource/fork.rb index 1fa47e92983..83dd4000f0a 100644 --- a/qa/qa/factory/resource/fork.rb +++ b/qa/qa/factory/resource/fork.rb @@ -32,7 +32,7 @@ module QA puts "Visited project page" Capybara::Screenshot.screenshot_and_save_page - return if Page::Menu::Main.act { has_personal_area?(wait: 0) } + return if Page::Main::Menu.act { has_personal_area?(wait: 0) } puts "Not signed in. Attempting to sign in again." Capybara::Screenshot.screenshot_and_save_page diff --git a/qa/qa/factory/resource/kubernetes_cluster.rb b/qa/qa/factory/resource/kubernetes_cluster.rb index ed9d0329081..cdee35c54e3 100644 --- a/qa/qa/factory/resource/kubernetes_cluster.rb +++ b/qa/qa/factory/resource/kubernetes_cluster.rb @@ -16,7 +16,7 @@ module QA def fabricate! @project.visit! - Page::Menu::Side.act { click_operations_kubernetes } + Page::Project::Menu.act { click_operations_kubernetes } Page::Project::Operations::Kubernetes::Index.perform do |page| page.add_kubernetes_cluster diff --git a/qa/qa/factory/resource/personal_access_token.rb b/qa/qa/factory/resource/personal_access_token.rb index 514e3615d18..166054cfcdc 100644 --- a/qa/qa/factory/resource/personal_access_token.rb +++ b/qa/qa/factory/resource/personal_access_token.rb @@ -12,8 +12,8 @@ module QA end def fabricate! - Page::Menu::Main.act { go_to_profile_settings } - Page::Menu::Profile.act { click_access_tokens } + Page::Main::Menu.act { go_to_profile_settings } + Page::Profile::Menu.act { click_access_tokens } Page::Profile::PersonalAccessTokens.perform do |page| page.fill_token_name(name || 'api-test-token') diff --git a/qa/qa/factory/resource/project_milestone.rb b/qa/qa/factory/resource/project_milestone.rb index 47a5e74204f..1251ae03135 100644 --- a/qa/qa/factory/resource/project_milestone.rb +++ b/qa/qa/factory/resource/project_milestone.rb @@ -17,7 +17,7 @@ module QA def fabricate! project.visit! - Page::Menu::Side.act do + Page::Project::Menu.act do click_issues click_milestones end diff --git a/qa/qa/factory/resource/runner.rb b/qa/qa/factory/resource/runner.rb index 03b69eb1bdf..7ac65fe6913 100644 --- a/qa/qa/factory/resource/runner.rb +++ b/qa/qa/factory/resource/runner.rb @@ -26,7 +26,7 @@ module QA def fabricate! project.visit! - Page::Menu::Side.act { click_ci_cd_settings } + Page::Project::Menu.act { click_ci_cd_settings } Service::Runner.new(name).tap do |runner| Page::Project::Settings::CICD.perform do |settings| diff --git a/qa/qa/factory/resource/sandbox.rb b/qa/qa/factory/resource/sandbox.rb index 4f6039f300f..5249e1755a6 100644 --- a/qa/qa/factory/resource/sandbox.rb +++ b/qa/qa/factory/resource/sandbox.rb @@ -11,7 +11,7 @@ module QA end def fabricate! - Page::Menu::Main.act { go_to_groups } + Page::Main::Menu.act { go_to_groups } Page::Dashboard::Groups.perform do |page| if page.has_group?(@name) diff --git a/qa/qa/factory/resource/secret_variable.rb b/qa/qa/factory/resource/secret_variable.rb index 12a830da116..4084a7fc2cd 100644 --- a/qa/qa/factory/resource/secret_variable.rb +++ b/qa/qa/factory/resource/secret_variable.rb @@ -12,7 +12,7 @@ module QA def fabricate! project.visit! - Page::Menu::Side.act { click_ci_cd_settings } + Page::Project::Menu.act { click_ci_cd_settings } Page::Project::Settings::CICD.perform do |setting| setting.expand_secret_variables do |page| diff --git a/qa/qa/factory/resource/ssh_key.rb b/qa/qa/factory/resource/ssh_key.rb index 6c872f32d16..45236f69de9 100644 --- a/qa/qa/factory/resource/ssh_key.rb +++ b/qa/qa/factory/resource/ssh_key.rb @@ -27,8 +27,8 @@ module QA end def fabricate! - Page::Menu::Main.act { go_to_profile_settings } - Page::Menu::Profile.act { click_ssh_keys } + Page::Main::Menu.act { go_to_profile_settings } + Page::Profile::Menu.act { click_ssh_keys } Page::Profile::SSHKeys.perform do |page| page.add_key(public_key, title) diff --git a/qa/qa/factory/resource/user.rb b/qa/qa/factory/resource/user.rb index 34b52223b2d..e8b9ea2e6b4 100644 --- a/qa/qa/factory/resource/user.rb +++ b/qa/qa/factory/resource/user.rb @@ -38,8 +38,8 @@ module QA def fabricate! # Don't try to log-out if we're not logged-in - if Page::Menu::Main.act { has_personal_area?(wait: 0) } - Page::Menu::Main.perform { |main| main.sign_out } + if Page::Main::Menu.act { has_personal_area?(wait: 0) } + Page::Main::Menu.perform { |main| main.sign_out } end if credentials_given? diff --git a/qa/qa/factory/resource/wiki.rb b/qa/qa/factory/resource/wiki.rb index cc200a512d5..acfe143fa61 100644 --- a/qa/qa/factory/resource/wiki.rb +++ b/qa/qa/factory/resource/wiki.rb @@ -10,7 +10,7 @@ module QA end def fabricate! - Page::Menu::Side.act { click_wiki } + Page::Project::Menu.act { click_wiki } Page::Project::Wiki::New.perform do |page| page.go_to_create_first_page page.set_title(@title) diff --git a/qa/qa/factory/settings/hashed_storage.rb b/qa/qa/factory/settings/hashed_storage.rb index c69ebed3c6b..f2e58a3ea38 100644 --- a/qa/qa/factory/settings/hashed_storage.rb +++ b/qa/qa/factory/settings/hashed_storage.rb @@ -6,8 +6,8 @@ module QA raise ArgumentError unless traits.include?(:enabled) Page::Main::Login.act { sign_in_using_credentials } - Page::Menu::Main.act { go_to_admin_area } - Page::Menu::Admin.act { go_to_settings } + Page::Main::Menu.act { go_to_admin_area } + Page::Admin::Menu.act { go_to_repository_settings } Page::Admin::Settings::Main.perform do |setting| setting.expand_repository_storage do |page| @@ -16,7 +16,7 @@ module QA end end - QA::Page::Menu::Main.act { sign_out } + QA::Page::Main::Menu.act { sign_out } end end end diff --git a/qa/qa/page/admin/menu.rb b/qa/qa/page/admin/menu.rb new file mode 100644 index 00000000000..e8c7d274966 --- /dev/null +++ b/qa/qa/page/admin/menu.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module QA + module Page + module Admin + class Menu < Page::Base + view 'app/views/layouts/nav/sidebar/_admin.html.haml' do + element :admin_sidebar + element :admin_sidebar_submenu + element :admin_settings_item + element :admin_settings_repository_item + end + + def go_to_repository_settings + hover_settings do + within_submenu do + click_element :admin_settings_repository_item + end + end + end + + private + + def hover_settings + within_sidebar do + scroll_to_element(:admin_settings_item) + find_element(:admin_settings_item).hover + + yield + end + end + + def within_sidebar + within_element(:admin_sidebar) do + yield + end + end + + def within_submenu + within_element(:admin_sidebar_submenu) do + yield + end + end + end + end + end +end diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb index 9b3183ba328..eab7a85ff04 100644 --- a/qa/qa/page/main/login.rb +++ b/qa/qa/page/main/login.rb @@ -37,13 +37,13 @@ module QA # we are already logged-in so we check both cases here. wait(max: 500) do has_css?('.login-page') || - Page::Menu::Main.act { has_personal_area?(wait: 0) } + Page::Main::Menu.act { has_personal_area?(wait: 0) } end end def sign_in_using_credentials(user = nil) # Don't try to log-in if we're already logged-in - return if Page::Menu::Main.act { has_personal_area?(wait: 0) } + return if Page::Main::Menu.act { has_personal_area?(wait: 0) } using_wait_time 0 do set_initial_password_if_present @@ -57,7 +57,7 @@ module QA end end - Page::Menu::Main.act { has_personal_area? } + Page::Main::Menu.act { has_personal_area? } end def sign_in_using_admin_credentials @@ -72,7 +72,7 @@ module QA sign_in_using_gitlab_credentials(admin) end - Page::Menu::Main.act { has_personal_area? } + Page::Main::Menu.act { has_personal_area? } end def self.path diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb new file mode 100644 index 00000000000..e18b95bde9f --- /dev/null +++ b/qa/qa/page/main/menu.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true + +module QA + module Page + module Main + class Menu < Page::Base + view 'app/views/layouts/header/_current_user_dropdown.html.haml' do + element :user_sign_out_link, 'link_to _("Sign out")' + element :settings_link, 'link_to s_("CurrentUser|Settings")' + end + + view 'app/views/layouts/header/_default.html.haml' do + element :navbar + element :user_avatar + element :user_menu, '.dropdown-menu' + end + + view 'app/views/layouts/nav/_dashboard.html.haml' do + element :admin_area_link + element :projects_dropdown + element :groups_dropdown + end + + view 'app/views/layouts/nav/projects_dropdown/_show.html.haml' do + element :projects_dropdown_sidebar + element :your_projects_link + end + + def go_to_groups + within_top_menu do + click_element :groups_dropdown + end + + page.within('.qa-groups-dropdown-sidebar') do + click_element :your_groups_link + end + end + + def go_to_projects + within_top_menu do + click_element :projects_dropdown + end + + page.within('.qa-projects-dropdown-sidebar') do + click_element :your_projects_link + end + end + + def go_to_admin_area + within_top_menu { click_element :admin_area_link } + end + + def sign_out + within_user_menu do + click_link 'Sign out' + end + end + + def go_to_profile_settings + within_user_menu do + click_link 'Settings' + end + end + + def has_personal_area?(wait: Capybara.default_max_wait_time) + using_wait_time(wait) do + page.has_selector?(element_selector_css(:user_avatar)) + end + end + + def assert_has_personal_area + raise "Failed to sign in" unless has_personal_area? + end + + private + + def within_top_menu + page.within('.qa-navbar') do + yield + end + end + + def within_user_menu + within_top_menu do + click_element :user_avatar + + page.within('.dropdown-menu') do + yield + end + end + end + end + end + end +end diff --git a/qa/qa/page/main/sign_up.rb b/qa/qa/page/main/sign_up.rb index 64cd395de78..dddda4f2bdf 100644 --- a/qa/qa/page/main/sign_up.rb +++ b/qa/qa/page/main/sign_up.rb @@ -19,7 +19,7 @@ module QA fill_in :new_user_password, with: user.password click_button 'Register' - Page::Menu::Main.act { assert_has_personal_area } + Page::Main::Menu.act { assert_has_personal_area } end end end diff --git a/qa/qa/page/menu/admin.rb b/qa/qa/page/menu/admin.rb deleted file mode 100644 index bf05a912bc6..00000000000 --- a/qa/qa/page/menu/admin.rb +++ /dev/null @@ -1,45 +0,0 @@ -module QA - module Page - module Menu - class Admin < Page::Base - view 'app/views/layouts/nav/sidebar/_admin.html.haml' do - element :admin_sidebar - element :admin_sidebar_submenu - element :admin_settings_item - element :admin_settings_repository_item - end - - def go_to_repository_settings - hover_settings do - within_submenu do - click_element :admin_settings_repository_item - end - end - end - - private - - def hover_settings - within_sidebar do - scroll_to_element(:admin_settings_item) - find_element(:admin_settings_item).hover - - yield - end - end - - def within_sidebar - within_element(:admin_sidebar) do - yield - end - end - - def within_submenu - within_element(:admin_sidebar_submenu) do - yield - end - end - end - end - end -end diff --git a/qa/qa/page/menu/main.rb b/qa/qa/page/menu/main.rb deleted file mode 100644 index 2ae86bbc7dc..00000000000 --- a/qa/qa/page/menu/main.rb +++ /dev/null @@ -1,93 +0,0 @@ -module QA - module Page - module Menu - class Main < Page::Base - view 'app/views/layouts/header/_current_user_dropdown.html.haml' do - element :user_sign_out_link, 'link_to _("Sign out")' - element :settings_link, 'link_to s_("CurrentUser|Settings")' - end - - view 'app/views/layouts/header/_default.html.haml' do - element :navbar - element :user_avatar - element :user_menu, '.dropdown-menu' - end - - view 'app/views/layouts/nav/_dashboard.html.haml' do - element :admin_area_link - element :projects_dropdown - element :groups_dropdown - end - - view 'app/views/layouts/nav/projects_dropdown/_show.html.haml' do - element :projects_dropdown_sidebar - element :your_projects_link - end - - def go_to_groups - within_top_menu do - click_element :groups_dropdown - end - - page.within('.qa-groups-dropdown-sidebar') do - click_element :your_groups_link - end - end - - def go_to_projects - within_top_menu do - click_element :projects_dropdown - end - - page.within('.qa-projects-dropdown-sidebar') do - click_element :your_projects_link - end - end - - def go_to_admin_area - within_top_menu { click_element :admin_area_link } - end - - def sign_out - within_user_menu do - click_link 'Sign out' - end - end - - def go_to_profile_settings - within_user_menu do - click_link 'Settings' - end - end - - def has_personal_area?(wait: Capybara.default_max_wait_time) - using_wait_time(wait) do - page.has_selector?(element_selector_css(:user_avatar)) - end - end - - def assert_has_personal_area - raise "Failed to sign in" unless has_personal_area? - end - - private - - def within_top_menu - page.within('.qa-navbar') do - yield - end - end - - def within_user_menu - within_top_menu do - click_element :user_avatar - - page.within('.dropdown-menu') do - yield - end - end - end - end - end - end -end diff --git a/qa/qa/page/menu/profile.rb b/qa/qa/page/menu/profile.rb deleted file mode 100644 index 7e24fa85c33..00000000000 --- a/qa/qa/page/menu/profile.rb +++ /dev/null @@ -1,34 +0,0 @@ -module QA - module Page - module Menu - class Profile < Page::Base - view 'app/views/layouts/nav/sidebar/_profile.html.haml' do - element :access_token_link, 'link_to profile_personal_access_tokens_path' - element :access_token_title, 'Access Tokens' - element :top_level_items, '.sidebar-top-level-items' - element :ssh_keys, 'SSH Keys' - end - - def click_access_tokens - within_sidebar do - click_link('Access Tokens') - end - end - - def click_ssh_keys - within_sidebar do - click_link('SSH Keys') - end - end - - private - - def within_sidebar - page.within('.sidebar-top-level-items') do - yield - end - end - end - end - end -end diff --git a/qa/qa/page/menu/side.rb b/qa/qa/page/menu/side.rb deleted file mode 100644 index a1eedfea42e..00000000000 --- a/qa/qa/page/menu/side.rb +++ /dev/null @@ -1,125 +0,0 @@ -module QA - module Page - module Menu - class Side < Page::Base - view 'app/views/layouts/nav/sidebar/_project.html.haml' do - element :settings_item - element :settings_link, 'link_to edit_project_path' - element :repository_link, "title: _('Repository')" - element :link_pipelines - element :pipelines_settings_link, "title: _('CI / CD')" - element :operations_kubernetes_link, "title: _('Kubernetes')" - element :issues_link, /link_to.*shortcuts-issues/ - element :issues_link_text, "Issues" - element :merge_requests_link, /link_to.*shortcuts-merge_requests/ - element :merge_requests_link_text, "Merge Requests" - element :top_level_items, '.sidebar-top-level-items' - element :operations_section, "class: 'shortcuts-operations'" - element :activity_link, "title: _('Activity')" - element :wiki_link_text, "Wiki" - element :milestones_link - end - - view 'app/assets/javascripts/fly_out_nav.js' do - element :fly_out, "classList.add('fly-out-list')" - end - - def click_repository_settings - hover_settings do - within_submenu do - click_link('Repository') - end - end - end - - def click_ci_cd_settings - hover_settings do - within_submenu do - click_link('CI / CD') - end - end - end - - def click_operations_kubernetes - hover_operations do - within_submenu do - click_link('Kubernetes') - end - end - end - - def click_ci_cd_pipelines - within_sidebar do - click_element :link_pipelines - end - end - - def go_to_settings - within_sidebar do - click_on 'Settings' - end - end - - def click_issues - within_sidebar do - click_link('Issues') - end - end - - def click_merge_requests - within_sidebar do - click_link('Merge Requests') - end - end - - def click_milestones - within_sidebar do - click_element :milestones_link - end - end - - def click_wiki - within_sidebar do - click_link('Wiki') - end - end - - private - - def hover_settings - within_sidebar do - find('.qa-settings-item').hover - - yield - end - end - - def hover_operations - within_sidebar do - find('.shortcuts-operations').hover - - yield - end - end - - def within_sidebar - page.within('.sidebar-top-level-items') do - yield - end - end - - def go_to_activity - within_sidebar do - click_on 'Activity' - end - end - - def within_submenu - page.within('.fly-out-list') do - yield - end - end - end - end - end -end diff --git a/qa/qa/page/profile/menu.rb b/qa/qa/page/profile/menu.rb new file mode 100644 index 00000000000..f8a7d64e016 --- /dev/null +++ b/qa/qa/page/profile/menu.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module QA + module Page + module Profile + class Menu < Page::Base + view 'app/views/layouts/nav/sidebar/_profile.html.haml' do + element :access_token_link, 'link_to profile_personal_access_tokens_path' + element :access_token_title, 'Access Tokens' + element :top_level_items, '.sidebar-top-level-items' + element :ssh_keys, 'SSH Keys' + end + + def click_access_tokens + within_sidebar do + click_link('Access Tokens') + end + end + + def click_ssh_keys + within_sidebar do + click_link('SSH Keys') + end + end + + private + + def within_sidebar + page.within('.sidebar-top-level-items') do + yield + end + end + end + end + end +end diff --git a/qa/qa/page/project/menu.rb b/qa/qa/page/project/menu.rb new file mode 100644 index 00000000000..e7670472440 --- /dev/null +++ b/qa/qa/page/project/menu.rb @@ -0,0 +1,127 @@ +# frozen_string_literal: true + +module QA + module Page + module Project + class Menu < Page::Base + view 'app/views/layouts/nav/sidebar/_project.html.haml' do + element :settings_item + element :settings_link, 'link_to edit_project_path' + element :repository_link, "title: _('Repository')" + element :link_pipelines + element :pipelines_settings_link, "title: _('CI / CD')" + element :operations_kubernetes_link, "title: _('Kubernetes')" + element :issues_link, /link_to.*shortcuts-issues/ + element :issues_link_text, "Issues" + element :merge_requests_link, /link_to.*shortcuts-merge_requests/ + element :merge_requests_link_text, "Merge Requests" + element :top_level_items, '.sidebar-top-level-items' + element :operations_section, "class: 'shortcuts-operations'" + element :activity_link, "title: _('Activity')" + element :wiki_link_text, "Wiki" + element :milestones_link + end + + view 'app/assets/javascripts/fly_out_nav.js' do + element :fly_out, "classList.add('fly-out-list')" + end + + def click_repository_settings + hover_settings do + within_submenu do + click_link('Repository') + end + end + end + + def click_ci_cd_settings + hover_settings do + within_submenu do + click_link('CI / CD') + end + end + end + + def click_operations_kubernetes + hover_operations do + within_submenu do + click_link('Kubernetes') + end + end + end + + def click_ci_cd_pipelines + within_sidebar do + click_element :link_pipelines + end + end + + def go_to_settings + within_sidebar do + click_on 'Settings' + end + end + + def click_issues + within_sidebar do + click_link('Issues') + end + end + + def click_merge_requests + within_sidebar do + click_link('Merge Requests') + end + end + + def click_milestones + within_sidebar do + click_element :milestones_link + end + end + + def click_wiki + within_sidebar do + click_link('Wiki') + end + end + + private + + def hover_settings + within_sidebar do + find('.qa-settings-item').hover + + yield + end + end + + def hover_operations + within_sidebar do + find('.shortcuts-operations').hover + + yield + end + end + + def within_sidebar + page.within('.sidebar-top-level-items') do + yield + end + end + + def go_to_activity + within_sidebar do + click_on 'Activity' + end + end + + def within_submenu + page.within('.fly-out-list') do + yield + end + end + end + end + end +end diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb index 1c7da930567..ae196349c6b 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb @@ -8,7 +8,7 @@ module QA # TODO, since `Signed in successfully` message was removed # this is the only way to tell if user is signed in correctly. # - Page::Menu::Main.perform do |menu| + Page::Main::Menu.perform do |menu| expect(menu).to have_personal_area end end diff --git a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb index c296296def6..217870531da 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb @@ -10,7 +10,7 @@ module QA # TODO, since `Signed in successfully` message was removed # this is the only way to tell if user is signed in correctly. # - Page::Menu::Main.perform do |menu| + Page::Main::Menu.perform do |menu| expect(menu).to have_personal_area end 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 478a5cb9c4c..368c24d757f 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 @@ -10,7 +10,7 @@ module QA # TODO, since `Signed in successfully` message was removed # this is the only way to tell if user is signed in correctly. # - Page::Menu::Main.perform do |menu| + Page::Main::Menu.perform do |menu| expect(menu).to have_personal_area end end diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb index 2ef8de61441..d1cd9865aef 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb @@ -27,7 +27,7 @@ module QA imported_project # import the project - Page::Menu::Main.act { go_to_projects } + Page::Main::Menu.act { go_to_projects } Page::Dashboard::Projects.perform do |dashboard| dashboard.go_to_project(imported_project.name) end @@ -48,7 +48,7 @@ module QA end def verify_issues_import - Page::Menu::Side.act { click_issues } + Page::Project::Menu.act { click_issues } expect(page).to have_content('This is a sample issue') click_link 'This is a sample issue' @@ -66,7 +66,7 @@ module QA end def verify_merge_requests_import - Page::Menu::Side.act { click_merge_requests } + Page::Project::Menu.act { click_merge_requests } expect(page).to have_content('Improve README.md') click_link 'Improve README.md' @@ -101,7 +101,7 @@ module QA end def verify_wiki_import - Page::Menu::Side.act { click_wiki } + Page::Project::Menu.act { click_wiki } expect(page).to have_content('Welcome to the test-project wiki!') end diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb index 34bb6f1c197..97ac35e8dba 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb @@ -13,7 +13,7 @@ module QA push.commit_message = 'Add README.md' end - Page::Menu::Side.act { go_to_activity } + Page::Project::Menu.act { go_to_activity } Page::Project::Activity.act { go_to_push_events } diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb index 542f532a629..49d76f31e3a 100644 --- a/qa/qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb +++ b/qa/qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb @@ -17,7 +17,7 @@ module QA it 'user creates an issue' do create_issue - Page::Menu::Side.act { click_issues } + Page::Project::Menu.act { click_issues } expect(page).to have_content(issue_title) end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb index 407a15800ab..922feadb4e1 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb @@ -11,7 +11,7 @@ module QA merge_request.fork_branch = 'feature-branch' end - Page::Menu::Main.perform { |main| main.sign_out } + Page::Main::Menu.perform { |main| main.sign_out } Page::Main::Login.perform { |login| login.sign_in_using_credentials } merge_request.visit! diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb index ddcbc94b1b1..984cea8ca10 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb @@ -11,7 +11,7 @@ module QA project.name = "only-fast-forward" end - Page::Menu::Side.act { go_to_settings } + Page::Project::Menu.act { go_to_settings } Page::Project::Settings::MergeRequest.act { enable_ff_only } merge_request = Factory::Resource::MergeRequest.fabricate! do |merge_request| diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb index 84f663c4866..b163ca896a7 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb @@ -16,8 +16,8 @@ module QA expect(page).to have_content("Title: #{key_title}") expect(page).to have_content(key.fingerprint) - Page::Menu::Main.act { go_to_profile_settings } - Page::Menu::Profile.act { click_ssh_keys } + Page::Main::Menu.act { go_to_profile_settings } + Page::Profile::Menu.act { click_ssh_keys } Page::Profile::SSHKeys.perform do |ssh_keys| ssh_keys.remove_key(key_title) diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb index 7c989bfd8cc..563393b3d07 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb @@ -28,8 +28,8 @@ module QA expect(page).to have_content('README.md') expect(page).to have_content('Test Use SSH Key') - Page::Menu::Main.act { go_to_profile_settings } - Page::Menu::Profile.act { click_ssh_keys } + Page::Main::Menu.act { go_to_profile_settings } + Page::Profile::Menu.act { click_ssh_keys } Page::Profile::SSHKeys.perform do |ssh_keys| ssh_keys.remove_key(key_title) diff --git a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb index 8009b9e8609..44dd85c1746 100644 --- a/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb @@ -40,7 +40,7 @@ module QA push.file_content = '# My Third Wiki Content' push.commit_message = 'Update Home.md' end - Page::Menu::Side.act { click_wiki } + Page::Project::Menu.act { click_wiki } expect(page).to have_content('My Third Wiki Content') end diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb index cdfe9b90e15..e901531b1bf 100644 --- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb +++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb @@ -64,7 +64,7 @@ module QA expect(page).to have_content('Add .gitlab-ci.yml') - Page::Menu::Side.act { click_ci_cd_pipelines } + Page::Project::Menu.act { click_ci_cd_pipelines } expect(page).to have_content('All 1') expect(page).to have_content('Add .gitlab-ci.yml') diff --git a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb index 8352d13b06d..73af24e7f50 100644 --- a/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb +++ b/qa/qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb @@ -28,7 +28,7 @@ module QA resource.image = 'gitlab/gitlab-runner:ubuntu' end - Page::Menu::Main.act { sign_out } + Page::Main::Menu.act { sign_out } end after(:all) do @@ -90,7 +90,7 @@ module QA sha1sum = Digest::SHA1.hexdigest(gitlab_ci) Page::Project::Show.act { wait_for_push } - Page::Menu::Side.act { click_ci_cd_pipelines } + Page::Project::Menu.act { click_ci_cd_pipelines } Page::Project::Pipeline::Index.act { go_to_latest_pipeline } Page::Project::Pipeline::Show.act { go_to_first_job } diff --git a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb index 4604936916b..bf2a1be5026 100644 --- a/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb +++ b/qa/qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb @@ -51,13 +51,13 @@ module QA end project.visit! - Page::Menu::Side.act { click_ci_cd_settings } + Page::Project::Menu.act { click_ci_cd_settings } Page::Project::Settings::CICD.perform do |p| p.enable_auto_devops_with_domain("#{kubernetes_cluster.ingress_ip}.nip.io") end project.visit! - Page::Menu::Side.act { click_ci_cd_pipelines } + Page::Project::Menu.act { click_ci_cd_pipelines } Page::Project::Pipeline::Index.act { go_to_latest_pipeline } Page::Project::Pipeline::Show.perform do |pipeline| diff --git a/qa/qa/specs/features/browser_ui/7_configure/mattermost/create_group_with_mattermost_team_spec.rb b/qa/qa/specs/features/browser_ui/7_configure/mattermost/create_group_with_mattermost_team_spec.rb index 6ffdc55538a..af24b36b734 100644 --- a/qa/qa/specs/features/browser_ui/7_configure/mattermost/create_group_with_mattermost_team_spec.rb +++ b/qa/qa/specs/features/browser_ui/7_configure/mattermost/create_group_with_mattermost_team_spec.rb @@ -6,7 +6,7 @@ module QA it 'user creates a group with a mattermost team' do Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.act { sign_in_using_credentials } - Page::Menu::Main.act { go_to_groups } + Page::Main::Menu.act { go_to_groups } Page::Dashboard::Groups.perform do |page| page.go_to_new_group -- cgit v1.2.1