Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions test/gui/helpers/AppHelper.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ def native_click(self, **kwargs):

def native_double_click(self, **kwargs):
x, y = get_element_center_xy(self)
win_x, win_y = get_window_location()
if x < win_x:
x = x + win_x
if y < win_y:
y = y + win_y
pyautogui.doubleClick(x, y, **kwargs)


Expand Down
26 changes: 19 additions & 7 deletions test/gui/pageObjects/SyncConnectionWizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,14 +208,18 @@ def select_or_unselect_folders_to_sync(folders, select=True):
target_folder = parents.pop()

parent_element = None
parent_position = 0
for parent in parents:
if parent_element:
p_elements = parent_element.find_elements(By.NAME, parent)
else:
p_elements = app().find_elements(By.NAME, parent)
p_elements = app().find_elements(By.NAME, parent)
# select nested folders based on the position of the parent folder
for p_element in p_elements:
if p_element.get_attribute("checked") == 'true':
if (
p_element.get_attribute("checked") == 'true'
and p_element.rect["x"] > parent_position
):
parent_element = p_element
parent_position = p_element.rect["x"]
break
parent_element.native_double_click() # expand the folder
# retry once if the folder is not expanded
if parent_element.is_selected():
Expand All @@ -226,14 +230,22 @@ def select_or_unselect_folders_to_sync(folders, select=True):
if parent_element.is_selected():
raise AssertionError(f'Failed to expand folder: {parent}')

folder_element = app().find_element(By.NAME, target_folder)
folder_element = None
target_folders = app().find_elements(By.NAME, target_folder)
# select the folder that is inside the current parent position
for folder in target_folders:
if folder.rect["x"] > parent_position:
folder_element = folder
break
is_checked = folder_element.get_attribute("checked")
# return early if the folder is already in the expected state.
if is_checked == expected_state:
return

folder_element.native_click()
folder_element.native_send_keys(Keys.SPACE) # select the folder
if not folder_element.is_selected():
raise AssertionError(f"Failed to focus folder: {target_folder}")
folder_element.native_send_keys(Keys.SPACE) # toggle the folder selection

is_checked = folder_element.get_attribute("checked")
if is_checked != expected_state:
Expand Down
Loading