Commit d0884ab6 authored by Ramya Authappan's avatar Ramya Authappan

Merge branch 'qa-speed-up-login-page' into 'master'

[CE] Speed up login page usage

See merge request gitlab-org/gitlab-ce!24021
parents fddb4746 8bee93b0
Pipeline #41329119 passed with stages
in 48 minutes and 6 seconds
!!! 5
%html.devise-layout-html{ class: system_message_class }
= render "layouts/head"
%body.ui-indigo.login-page.application.navless{ data: { page: body_data_page } }
%body.ui-indigo.login-page.application.navless.qa-login-page{ data: { page: body_data_page } }
.page-wrap
= render "layouts/header/empty"
.login-page-broadcast
......
......@@ -108,8 +108,8 @@ module QA
element.select value.to_s.capitalize
end
def has_element?(name)
has_css?(element_selector_css(name))
def has_element?(name, wait: Capybara.default_max_wait_time)
has_css?(element_selector_css(name), wait: wait)
end
def has_no_text?(text)
......
......@@ -35,13 +35,21 @@ module QA
element :saml_login_button
end
view 'app/views/layouts/devise.html.haml' do
element :login_page
end
def initialize
# The login page is usually the entry point for all the scenarios so
# we need to wait for the instance to start. That said, in some cases
# we are already logged-in so we check both cases here.
# Check if we're already logged in first. If we don't then we have to
# wait 10 seconds for the check for the login page to fail every time
# we use this class when we're already logged in (E.g., whenever we
# create a personal access token to use for API access).
wait(max: 500) do
has_css?('.login-page') ||
Page::Main::Menu.act { has_personal_area?(wait: 0) }
Page::Main::Menu.act { has_personal_area?(wait: 0) } ||
has_element?(:login_page)
end
end
......
......@@ -63,15 +63,11 @@ module QA
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
has_element?(:user_avatar, wait: wait)
end
def has_admin_area_link?(wait: Capybara.default_max_wait_time)
using_wait_time(wait) do
page.has_selector?(element_selector_css(:admin_area_link))
end
has_element?(:admin_area_link, wait: wait)
end
private
......
......@@ -77,7 +77,7 @@ module QA
super
end
def has_element?(name)
def has_element?(name, wait: Capybara.default_max_wait_time)
found = super
log("has_element? :#{name} returned #{found}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment