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/page/main/login.rb | 8 ++-- qa/qa/page/main/menu.rb | 95 ++++++++++++++++++++++++++++++++++++++++++++++ qa/qa/page/main/sign_up.rb | 2 +- 3 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 qa/qa/page/main/menu.rb (limited to 'qa/qa/page/main') 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 -- cgit v1.2.1