From 0f781bdaf29f6ae1fd2e717c551cc46f2d1aa11d Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 2 May 2023 09:37:02 -0700 Subject: [PATCH] Robustify the scrolling in the Help app test This keeps failing on the accessibility section, and looking at the screenshots I realized why. When you press 'down', GNOME doesn't just 'snap' to the new view, it does a smooth downward scroll. We're often matching *while it's scrolling*, so the needle match is right at the bottom of the screen. But then the animation continues, so when we get to the click action (even though we use click_lastmatch it's not *instant* in openQA), the thing we're trying to click (the "Accessibility" section title) is a bit further up the screen, and the click 'misses'. So, we need to wait out the scroll then re-assert and click. This unfortunately will make the test take about 30 seconds longer, but I don't see another way to do it. We could maybe shave the wait_still_screen to one second... Signed-off-by: Adam Williamson --- tests/applications/help/help.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/applications/help/help.pm b/tests/applications/help/help.pm index d9961c37..dd39c20a 100644 --- a/tests/applications/help/help.pm +++ b/tests/applications/help/help.pm @@ -10,7 +10,12 @@ use utils; sub visit_section { my $section = shift; send_key_until_needlematch("help_section_$section", "down", 40, 1); - click_lastmatch(); + # we have to wait then re-assert, because the down movement is + # animated, so we may match while it's still animating and then + # when the animation is complete the section title may be in a + # different place to where we first saw it + wait_still_screen 2; + assert_and_click("help_section_$section"); assert_screen("help_section_content_$section"); assert_and_click("help_breadcrumbs_home"); assert_screen("help_main_screen");