diff --git a/qa/t/lib/QA/Util.pm b/qa/t/lib/QA/Util.pm index 23a3f158df..1e871144a5 100644 --- a/qa/t/lib/QA/Util.pm +++ b/qa/t/lib/QA/Util.pm @@ -299,6 +299,21 @@ sub go_to_bug { $sel->click_ok('action-menu-btn', 'Expand action menu'); $sel->click_ok('action-expand-all', 'Expand all modal panels'); + # Expanding uses a jQuery slide animation that sets overflow:hidden on the + # module content until it finishes. WebDriver treats the clipped fields as + # not displayed (get_text returns ''), so wait for the animation to end. + my $animating; + for (1 .. 50) { + $animating = $sel->driver->execute_script( + 'return window.jQuery ? jQuery(":animated").length : 0'); + last unless $animating; + select(undef, undef, undef, 0.1); + } + if ($animating) { + ok(0, 'Module expand animation finished within 5s'); + diag("$animating element(s) still animating; later get_text calls may return ''"); + } + # Remove the blue New Changes link because the sticky banner causes a click interception issue in # Selenium that cannot be reproduced in real browser environments $sel->driver->execute_script('document.querySelector(\'.new-changes-link\')?.remove();');