summaryrefslogtreecommitdiff
path: root/qa/qa/page/main
diff options
context:
space:
mode:
authorsliaquat <sliaquat@gitlab.com>2018-10-04 19:46:57 +0500
committersliaquat <sliaquat@gitlab.com>2018-10-09 16:24:29 +0500
commitb7a5b204ba4f8afc4fc627660c035d253dcd4d79 (patch)
tree73fff937b5f434a748d078d389d0e97ed03cc3ab /qa/qa/page/main
parent867b4f066f362edde126cf8c0132430c3946f2cc (diff)
downloadgitlab-ce-b7a5b204ba4f8afc4fc627660c035d253dcd4d79.tar.gz
Add missed files Use correct method Implement review feedback Add missing frozen_string_literal Squash 5 commits
Diffstat (limited to 'qa/qa/page/main')
-rw-r--r--qa/qa/page/main/login.rb8
-rw-r--r--qa/qa/page/main/menu.rb95
-rw-r--r--qa/qa/page/main/sign_up.rb2
3 files changed, 100 insertions, 5 deletions
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