From d80dcaa2612ab47450acfa460d1b6c795c016caa Mon Sep 17 00:00:00 2001 From: Jan Cernik <66427541+jancernik@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:05:41 -0300 Subject: [PATCH] DEV: Attempt to fix flaky signup spec (#29396) --- spec/system/page_objects/modals/base.rb | 1 + spec/system/page_objects/modals/signup.rb | 9 +++++++-- spec/system/page_objects/pages/signup.rb | 7 +++++-- spec/system/signup_spec.rb | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/spec/system/page_objects/modals/base.rb b/spec/system/page_objects/modals/base.rb index 963800bf05e..51c174f2799 100644 --- a/spec/system/page_objects/modals/base.rb +++ b/spec/system/page_objects/modals/base.rb @@ -5,6 +5,7 @@ module PageObjects class Base include Capybara::DSL include RSpec::Matchers + include SystemHelpers BODY_SELECTOR = "" diff --git a/spec/system/page_objects/modals/signup.rb b/spec/system/page_objects/modals/signup.rb index 0dfacd68afe..2015b3b6f80 100644 --- a/spec/system/page_objects/modals/signup.rb +++ b/spec/system/page_objects/modals/signup.rb @@ -31,8 +31,13 @@ module PageObjects click("#login-link") end - def click_create_account - click(".modal.create-account .btn-primary") + def click_create_account(expect_success: true) + try_until_success(timeout: 5) do + click(".modal.create-account .btn-primary") + if expect_success + expect(page).to have_css(".modal.create-account .btn-primary.is-loading") + end + end end def has_password_input? diff --git a/spec/system/page_objects/pages/signup.rb b/spec/system/page_objects/pages/signup.rb index 9f2c2e30245..afe6c1de062 100644 --- a/spec/system/page_objects/pages/signup.rb +++ b/spec/system/page_objects/pages/signup.rb @@ -31,8 +31,11 @@ module PageObjects click("#login-link") end - def click_create_account - click(".signup-fullpage .btn-primary") + def click_create_account(expect_success: true) + try_until_success(timeout: 5) do + click(".signup-fullpage .btn-primary") + expect(page).to have_css(".signup-fullpage .btn-primary.is-loading") if expect_success + end end def has_password_input? diff --git a/spec/system/signup_spec.rb b/spec/system/signup_spec.rb index 8962e7f7042..7222e42d0d7 100644 --- a/spec/system/signup_spec.rb +++ b/spec/system/signup_spec.rb @@ -131,7 +131,7 @@ shared_examples "signup scenarios" do |signup_page_object, login_page_object| .fill_email("johndoe@example.com") .fill_username("john") .fill_password("supersecurepassword") - .click_create_account + .click_create_account(expect_success: false) expect(signup_form).to have_content(I18n.t("js.user_fields.required", name: "Occupation")) expect(signup_form).to have_no_css(".account-created") end