diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-06-04 13:17:34 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-06-04 14:00:42 +0200 |
commit | 4839b7ca3b5a730edf90ebebc749db145efec098 (patch) | |
tree | 584a651a353aabae13f996c62ed54767f3fe1434 /uitest | |
parent | 191a5bc8bce278d93d8e52d83771fcf59a0fbe9f (diff) |
Fix UITests that use File Open dialog to load documents
It relied upon the component being loaded before the next
Python code line is executed. OTOH, UITest.load_file uses
EventListener to wait for the OnLoad event, which should
be reused in all such cases.
This moves the waiting code to a dedicated context manager,
and modifies UITest.load_file to use it. Respective tests
using the File dialog also use the new manager to wrap the
action starting the loading process.
Change-Id: Ic6eb0533b06e0ccc63dffc2ddc0e91d8159cae4a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116693
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'uitest')
-rw-r--r-- | uitest/uitest/test.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/uitest/uitest/test.py b/uitest/uitest/test.py index b96bcdf1bc30..cfa9b83e5a1c 100644 --- a/uitest/uitest/test.py +++ b/uitest/uitest/test.py @@ -7,6 +7,7 @@ import time import threading +from contextlib import contextmanager from uitest.config import DEFAULT_SLEEP from uitest.config import MAX_WAIT from uitest.uihelper.common import get_state_as_dict @@ -72,10 +73,10 @@ class UITest(object): time_ += DEFAULT_SLEEP time.sleep(DEFAULT_SLEEP) - def load_file(self, url): - desktop = self.get_desktop() + @contextmanager + def wait_until_component_loaded(self): with EventListener(self._xContext, "OnLoad") as event: - component = desktop.loadComponentFromURL(url, "_default", 0, tuple()) + yield time_ = 0 while time_ < MAX_WAIT: if event.executed: @@ -83,10 +84,14 @@ class UITest(object): if len(frames) == 1: self.get_desktop().setActiveFrame(frames[0]) time.sleep(DEFAULT_SLEEP) - return component + break time_ += DEFAULT_SLEEP time.sleep(DEFAULT_SLEEP) + def load_file(self, url): + with self.wait_until_component_loaded(): + return self.get_desktop().loadComponentFromURL(url, "_default", 0, tuple()) + def execute_dialog_through_command(self, command, printNames=False): with EventListener(self._xContext, "DialogExecute", printNames=printNames) as event: if not self._xUITest.executeDialog(command): |