diff options
author | Sanad Liaquat <sliaquat@gitlab.com> | 2019-02-07 10:00:51 +0500 |
---|---|---|
committer | Sanad Liaquat <sliaquat@gitlab.com> | 2019-02-07 10:00:51 +0500 |
commit | 784eb9a4302ae78393efabcf8851fc991c93a7c0 (patch) | |
tree | 474f2633d555ff8973c82843ddf580946185aaa4 | |
parent | 2cea4fd067e2b78600b93202e0e71b58bccbe3d1 (diff) | |
download | gitlab-ce-784eb9a4302ae78393efabcf8851fc991c93a7c0.tar.gz |
Wait for login page to load at the beginning of QA suite
-rw-r--r-- | qa/qa/page/main/login.rb | 14 | ||||
-rw-r--r-- | qa/spec/spec_helper.rb | 12 |
2 files changed, 15 insertions, 11 deletions
diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb index d5377f1d1c1..e476cbe29a2 100644 --- a/qa/qa/page/main/login.rb +++ b/qa/qa/page/main/login.rb @@ -40,17 +40,9 @@ module QA 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 - Page::Main::Menu.act { has_personal_area?(wait: 0) } || - has_element?(:login_page) + def page_loaded? + wait(max: 60) do + has_element?(:login_page) end end diff --git a/qa/spec/spec_helper.rb b/qa/spec/spec_helper.rb index 3537ba7c235..50e6168ec8c 100644 --- a/qa/spec/spec_helper.rb +++ b/qa/spec/spec_helper.rb @@ -3,6 +3,18 @@ require_relative '../qa' Dir[::File.join(__dir__, 'support', '**', '*.rb')].each { |f| require f } RSpec.configure do |config| + ServerNotRespondingError = Class.new(RuntimeError) + + # The login page could take some time to load the first time it is visited. + # We visit the login page and wait for it to properly load only once at the beginning of the suite. + config.before(:suite) do + QA::Runtime::Browser.visit(:gitlab, QA::Page::Main::Login) + + unless QA::Page::Main::Login.perform(&:page_loaded?) + raise ServerNotRespondingError, "Login page did not load at #{QA::Page::Main::Login.perform(&:current_url)}" + end + end + config.before do |example| QA::Runtime::Logger.debug("Starting test: #{example.full_description}") if QA::Runtime::Env.debug? |