@@ -, +, @@ waiting for ajax --- t/db_dependent/selenium/authentication_2fa.t | 3 +-- t/lib/Selenium.pm | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) --- a/t/db_dependent/selenium/authentication_2fa.t +++ a/t/db_dependent/selenium/authentication_2fa.t @@ -279,8 +279,7 @@ SKIP: { $driver->find_element('//*[@id="pin_code"]')->clear; $driver->find_element('//*[@id="pin_code"]')->send_keys($pin_code); $driver->find_element('//*[@id="register-2FA"]')->click; - $s->wait_for_ajax; - is( $driver->get_alert_text, + is( $s->get_next_alert_text, "Two-factor authentication correctly configured. You will be redirected to the login screen." ); $driver->accept_alert; --- a/t/lib/Selenium.pm +++ a/t/lib/Selenium.pm @@ -208,6 +208,24 @@ sub wait_for_ajax { } } +sub get_next_alert_text { + my ( $self ) = @_; + + my $alert_text; + my $max_retries = $self->max_retries; + my $i; + $self->remove_error_handler; + while ( not $alert_text ) { + $alert_text = eval { $self->driver->get_alert_text }; + $self->driver->pause(1000) unless $alert_text; + + die "Cannot wait more for next alert (get_next_alert)" + if $max_retries <= ++$i; + } + $self->add_error_handler; + return $alert_text; +} + sub show_all_entries { my ( $self, $xpath_selector ) = @_; --