From 3b24a5891c8015a09437dd1243b8993f4894976a Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Fri, 12 Jan 2024 13:27:50 +0100
Subject: [PATCH] Bug 35329: Add POD + tidy Selenium.pm

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
---
 t/lib/Selenium.pm | 49 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 40 insertions(+), 9 deletions(-)

diff --git a/t/lib/Selenium.pm b/t/lib/Selenium.pm
index 8cbd673dddc..3fc65b0c605 100644
--- a/t/lib/Selenium.pm
+++ b/t/lib/Selenium.pm
@@ -114,17 +114,18 @@ sub opac_auth {
 sub fill_form {
     my ( $self, $values ) = @_;
     while ( my ( $id, $value ) = each %$values ) {
-        my $attr = 'id';
+        my $attr       = 'id';
         my $attr_value = $id;
         if ( $id =~ m{=} ) {
-            ($attr, $attr_value) = split '=', $id;
+            ( $attr, $attr_value ) = split '=', $id;
         }
-        my $element = $self->driver->find_element(sprintf '//*[@%s="%s"]', $attr, $attr_value);
-        my $tag = $element->get_tag_name();
+        my $element = $self->driver->find_element( sprintf '//*[@%s="%s"]', $attr, $attr_value );
+        my $tag     = $element->get_tag_name();
         if ( $tag eq 'input' ) {
-            $self->driver->find_element(sprintf '//input[@%s="%s"]', $attr, $attr_value)->send_keys($value);
+            $self->driver->find_element( sprintf '//input[@%s="%s"]', $attr, $attr_value )->send_keys($value);
         } elsif ( $tag eq 'select' ) {
-            $self->driver->find_element(sprintf '//select[@%s="%s"]//option[@value="%s"]', $attr, $attr_value, $value)->click;
+            $self->driver->find_element( sprintf '//select[@%s="%s"]//option[@value="%s"]', $attr, $attr_value, $value )
+                ->click;
         }
     }
 }
@@ -201,12 +202,12 @@ sub wait_for_element_visible {
 sub wait_for_element_hidden {
     my ( $self, $xpath_selector ) = @_;
 
-    my ($hidden, $elt);
+    my ( $hidden, $elt );
     $self->remove_error_handler;
     my $max_retries = $self->max_retries;
     my $i;
     while ( not $hidden ) {
-        $elt = eval {$self->driver->find_element($xpath_selector) };
+        $elt    = eval { $self->driver->find_element($xpath_selector) };
         $hidden = $elt || !$elt->is_displayed;
         $self->driver->pause(1000) unless $hidden;
 
@@ -351,13 +352,43 @@ when we use automation test using Selenium
 
 =head2 click
 
-    $s->click
+    $s->click($xpath_selector);
 
     This is a bit dirty for now but will evolve depending on the needs
     3 parameters possible but only the following 2 forms are used:
     $s->click({ href => '/module/script.pl?foo=bar', main => 'doc3' }); # Sometimes we have doc or doc3. To make sure we are not going to hit a link in the header
     $s->click({ id => 'element_id });
 
+=head2 wait_for_element_visible
+
+    $s->wait_for_element_visible($xpath_selector)
+
+    Wait 10s for an element to be visible
+
+=head2 wait_for_element_hidden
+
+    $s->wait_for_element_hidden($xpath_selector)
+
+    Wait 10s for an element to be hidden
+
+=head2 wait_for_ajax
+
+    $s->wait_for_ajax;
+
+    Wait 10s for all the current AJAX requests to be received.
+
+=head2 get_next_alert_text
+
+    $s->get_next_alert_text;
+
+    Retrieve the next alert text.
+
+=head2 show_all_entries
+
+    $s->show_all_entries($xpath_selector);
+
+    Select the "All" entries of the DataTables present in the selector.
+
 =head2 click_when_visible
 
     $c->click_when_visible
-- 
2.34.1