[Libreoffice-commits] core.git: sc/qa uitest/uitest

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 23 21:16:59 UTC 2021


 sc/qa/uitest/calc_tests9/tdf57841.py |    2 +-
 uitest/uitest/test.py                |    7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

New commits:
commit 39605d175bc0fe52c904d4b41a184d7e2691f2dc
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Wed Jun 23 16:11:27 2021 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Wed Jun 23 23:16:11 2021 +0200

    Introduce wait_for_top_focus_window to fix UITest_calc_tests9
    
    ...which I had seen hang at least once, and after a manual `kill -9` of the hung
    soffice.bin process (still yielding in UI loop from within executing a dialog),
    it failed with
    
    > ======================================================================
    > ERROR: test_tdf57841 (tdf57841.Tdf57841)
    > ----------------------------------------------------------------------
    > Traceback (most recent call last):
    >   File "sc/qa/uitest/calc_tests9/tdf57841.py", line 27, in test_tdf57841
    >     self.assertEqual('true', get_state_as_dict(xDialog.getChild("tab"))['Selected'])
    > uno.com.sun.star.uno.RuntimeException: Could not find child with id: tab vcl/source/uitest/uiobject.cxx:467
    
    (The subtle difference in naming is that wait_for_top_focus_window waits
    indefinitely, while its sister wait_until_* functions (like
    wait_until_child_is_available) can time out.  There is no good reason here to
    allow for timing out.)
    
    Change-Id: I3e4dc68871f42d64160d8e411fe9a661bbaec192
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117739
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/sc/qa/uitest/calc_tests9/tdf57841.py b/sc/qa/uitest/calc_tests9/tdf57841.py
index 0eb2d260b699..995fab2647de 100644
--- a/sc/qa/uitest/calc_tests9/tdf57841.py
+++ b/sc/qa/uitest/calc_tests9/tdf57841.py
@@ -23,7 +23,7 @@ class Tdf57841(UITestCase):
         xOpenBtn = xOpenDialog.getChild("open")
         xOpenBtn.executeAction("CLICK", tuple())
 
-        xDialog = self.xUITest.getTopFocusWindow()
+        xDialog = self.ui_test.wait_for_top_focus_window('TextImportCsvDialog')
         self.assertEqual('true', get_state_as_dict(xDialog.getChild("tab"))['Selected'])
         self.assertEqual('true', get_state_as_dict(xDialog.getChild("comma"))['Selected'])
         self.assertEqual('true', get_state_as_dict(xDialog.getChild("semicolon"))['Selected'])
diff --git a/uitest/uitest/test.py b/uitest/uitest/test.py
index 723878a34e3c..29af1e0899c2 100644
--- a/uitest/uitest/test.py
+++ b/uitest/uitest/test.py
@@ -49,6 +49,13 @@ class UITest(object):
             if component is not None:
                 return component
 
+    def wait_for_top_focus_window(self, id):
+        while True:
+            win = self._xUITest.getTopFocusWindow()
+            if get_state_as_dict(win)['ID'] == id:
+                return win
+            time.sleep(DEFAULT_SLEEP)
+
     def wait_until_child_is_available(self, childName):
         time_ = 0
         xChild = None


More information about the Libreoffice-commits mailing list