Bug 29458: Fix selenium test
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 31 Jan 2022 15:39:59 +0000 (16:39 +0100)
committerFridolin Somers <fridolin.somers@biblibre.com>
Fri, 11 Feb 2022 19:11:39 +0000 (09:11 -1000)
commit5520b8fb84f26419c6ec9f73a14cdf14f036afce
tree2f25fb3ab7b3cb8046ff8114ef21399b8919fc01
parentb8038cfe33752053a78aaba3694471f0341a64fc
Bug 29458: Fix selenium test

The authentication.t selenium tests (and a couple of others) were
failing with:
Error while executing command: element not interactable: Element <input class="btn btn-primary" type="submit"> could not be scrolled into view at /usr/local/share/perl/5.32.1/Selenium/Remote/Driver.pm line 411. at /usr/local/share/perl/5.32.1/Selenium/Remote/Driver.pm line 356.

We changed the other of the form, and t::lib::Selenium::submit_form was
not getting the correct (first) form. The one from the auth modal was
retrieved and submit button was clicked. Selenium raised an error as it
is not displayed.
The ->is_displayed selenium method does not work, as per the doc
"""
Note: This does *not* tell you an element's 'visibility' property; as it still takes up space in the DOM and is therefore considered 'displayed'.
"""
https://metacpan.org/pod/Selenium::Remote::WebElement#is_displayed

"The internet" is saying we should be able to use the following in our
xpath expression: not(ancestor::div[contains(@style,'display:none')]
but it actually only works if the display:none rule is defined on the
node (not from .css). Which does not work for us.

The only solution I found is to check for the size of the element, which
is (0,0) if not effectively displayed.

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
t/lib/Selenium.pm