chore: squish waitFor method was customized (#272)

#262
This commit is contained in:
Vladimir Druzhinin 2023-11-07 16:05:43 +01:00 committed by GitHub
parent 791ff10114
commit 294119c08a
6 changed files with 19 additions and 68 deletions

View File

@ -1,17 +1,18 @@
import time
import squishtest # noqa
import configs
from . import server, context, objects_access, toplevel_window, aut, atomacos, mouse
from . import server, context, objects_access, toplevel_window, aut, mouse
from .squish_api import *
imports = {module.__name__: module for module in [
atomacos,
aut,
context,
objects_access,
mouse,
server,
toplevel_window
]}

View File

@ -1,60 +0,0 @@
import time
from copy import deepcopy
import configs.timeouts
import driver
if configs.system.IS_MAC:
from atomacos._a11y import _running_apps_with_bundle_id
import atomacos
BUNDLE_ID = 'im.Status.NimStatusClient'
# https://pypi.org/project/atomacos/
def attach_atomac(timeout_sec: int = configs.timeouts.UI_LOAD_TIMEOUT_SEC):
def from_bundle_id(bundle_id):
"""
Get the top level element for the application with the specified
bundle ID, such as com.vmware.fusion.
"""
apps = _running_apps_with_bundle_id(bundle_id)
if not apps:
raise ValueError(
"Specified bundle ID not found in " "running apps: %s" % bundle_id
)
return atomacos.NativeUIElement.from_pid(apps[-1].processIdentifier())
pid = driver.currentApplicationContext().pid
atomator = atomacos.getAppRefByPid(pid)
started_at = time.monotonic()
while not hasattr(atomator, 'AXMainWindow'):
time.sleep(1)
assert time.monotonic() - started_at < timeout_sec, f'Attach error: {BUNDLE_ID}'
return atomator
def find_object(object_name: dict):
_object_name = deepcopy(object_name)
if 'container' in _object_name:
parent = find_object(_object_name['container'])
del _object_name['container']
else:
return attach_atomac().windows()[0]
assert parent is not None, f'Object not found: {object_name["container"]}'
_object = parent.findFirst(**_object_name)
assert _object is not None, f'Object not found: {_object_name}'
return _object
def wait_for_object(object_name: dict, timeout_sec: int = configs.timeouts.UI_LOAD_TIMEOUT_SEC):
started_at = time.monotonic()
while True:
try:
return find_object(object_name)
except AssertionError as err:
if time.monotonic() - started_at > timeout_sec:
raise LookupError(f'Object: {object_name} not found. Error: {err}')

View File

@ -0,0 +1,12 @@
import time
import configs.timeouts
def waitFor(condition, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC) -> bool:
started_at = time.monotonic()
while not condition():
time.sleep(1)
if time.monotonic() - started_at > timeout_msec/1000:
return False
return True

View File

@ -15,12 +15,12 @@ class ColorSelectPopup(BasePopup):
@allure.step('Wait until appears {0}')
def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
self._hex_color_text_edit.wait_until_appears()
self._hex_color_text_edit.wait_until_appears(timeout_msec)
return self
@allure.step('Wait until hidden {0}')
def wait_until_hidden(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
self._hex_color_text_edit.wait_until_hidden()
self._hex_color_text_edit.wait_until_hidden(timeout_msec)
@allure.step('Select color {1}')
def select_color(self, value: str):

View File

@ -1,6 +1,5 @@
import allure
from gui.components.base_popup import BasePopup
from gui.elements.button import Button
from gui.elements.object import QObject
@ -19,4 +18,3 @@ class SigningPhrasePopup(QObject):
@allure.step('Verify if the signing phrase popup is visible')
def is_ok_got_it_button_visible(self):
return self._ok_got_it_button.is_visible

View File

@ -179,7 +179,7 @@ class SyncResultView(OnboardingView):
return device_synced_notifications
@allure.step('Wait until appears {0}')
def wait_until_appears(self, timeout_msec: int = configs.timeouts.UI_LOAD_TIMEOUT_MSEC):
def wait_until_appears(self, timeout_msec: int = 10000):
self._sign_in_button.wait_until_appears(timeout_msec)
return self