diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index e16c1842ed7b18c410150c3a746c478b0600dd49..468d5eef16e4f404aba1629e729aa20a0b320d75 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -52,19 +52,28 @@ def verifyChecked(objectName): return object def ensureChecked(objectName, shouldBeChecked = True, timeout=20000): - object = waitForObject(objectName, timeout) - # synchronize to avoid false positives - waitFor('object.checked == shouldBeChecked', 1000) - if object.checked ^ shouldBeChecked: - clickButton(object) if shouldBeChecked: + targetState = Qt.Checked state = "checked" else: + targetState = Qt.Unchecked state = "unchecked" + widget = waitForObject(objectName, timeout) + try: + # needed for transition Qt::PartiallyChecked -> Qt::Checked -> Qt::Unchecked + clicked = 0 + while not waitFor('widget.checkState() == targetState', 1000) and clicked < 2: + clickButton(widget) + clicked += 1 + test.verify(waitFor("widget.checkState() == targetState", 1000)) + except: + # widgets not derived from QCheckbox don't have checkState() + if not waitFor('widget.checked == shouldBeChecked', 1000): + clickButton(widget) + test.verify(waitFor("widget.checked == shouldBeChecked", 1000)) test.log("New state for QCheckBox: %s" % state, str(objectName)) - test.verify(waitFor("object.checked == shouldBeChecked", 1000)) - return object + return widget # verify that an object is in an expected enable state. Returns the object. # param objectSpec specifies the object to check. It can either be a string determining an object