Skip to content

Commit 50adf24

Browse files
committed
fix(tests): enable waiting for profile name input in server setup
1 parent 94d82e7 commit 50adf24

File tree

3 files changed

+54
-12
lines changed

3 files changed

+54
-12
lines changed

tests/selenium/folder_list.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,22 @@ def reload_folder_list(self):
2121
assert main_menu.is_displayed()
2222
self.by_class('update_message_list').click()
2323
self.safari_workaround(3)
24-
# update_message_list triggers site reload, so we explicitly wait for element to become stale
25-
WebDriverWait(self.driver, 20).until(EC.staleness_of(main_menu))
26-
ignored_exceptions=(NoSuchElementException,StaleElementReferenceException,)
27-
# And once it is stale, we can now wait for it to become available again as the page contents are loaded again.
28-
main_menu = WebDriverWait(self.driver, 10,ignored_exceptions=ignored_exceptions).until(
29-
EC.presence_of_element_located((By.CLASS_NAME, 'main'))
30-
)
24+
# update_message_list triggers AJAX reload, so we wait for the spinner to disappear
25+
# and then wait for the folder list to be updated
26+
try:
27+
# Wait for spinner to appear and then disappear (indicating AJAX completion)
28+
WebDriverWait(self.driver, 10).until(
29+
lambda driver: len(driver.find_elements(By.CLASS_NAME, "spinner-border")) > 0
30+
)
31+
WebDriverWait(self.driver, 10).until(
32+
lambda driver: len(driver.find_elements(By.CLASS_NAME, "spinner-border")) == 0
33+
)
34+
except:
35+
# If spinner doesn't appear, just wait a bit for the AJAX to complete
36+
import time
37+
time.sleep(2)
38+
39+
# Verify the main menu is still displayed after the reload
3140
main_menu = self.by_class('main')
3241
assert main_menu.is_displayed()
3342

tests/selenium/login.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ def good_logout(self):
5353
self.logout()
5454
self.wait()
5555
self.safari_workaround()
56-
self.wait_on_class('sys_messages')
57-
sys_messages = self.by_class('sys_messages')
58-
assert sys_messages is not None
56+
self.wait_on_class('login_form')
57+
# debugging line
58+
print('debugging line')
59+
print(self.by_class('login_form'))
60+
assert self.by_class('login_form') != None
5961

6062
if __name__ == '__main__':
6163

tests/selenium/servers.py

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,39 @@ def load_servers_page(self):
3131
def server_stmp_and_imap_add(self):
3232
self.toggle_server_section('server_config')
3333
self.wait_on_class('imap-jmap-smtp-btn')
34-
self.by_id('add_new_server_button').click()
35-
# self.wait_on_class('srv_setup_stepper_profile_name')
34+
35+
# Wait for the add button to be clickable (combines presence and clickability)
36+
add_button = WebDriverWait(self.driver, 10).until(
37+
EC.element_to_be_clickable((By.ID, "add_new_server_button"))
38+
)
39+
40+
# Scroll the button into view before clicking
41+
self.driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", add_button)
42+
sleep(0.5)
43+
44+
try:
45+
add_button.click()
46+
print("Normal click succeeded")
47+
except Exception as e:
48+
print(f"Normal click failed: {e}. Trying JavaScript click...")
49+
self.driver.execute_script("arguments[0].click();", add_button)
50+
51+
# Wait for the form to appear after clicking
52+
try:
53+
WebDriverWait(self.driver, 10).until(
54+
EC.any_of(
55+
EC.presence_of_element_located((By.ID, 'srv_setup_stepper_profile_name')),
56+
EC.presence_of_element_located((By.NAME, 'srv_setup_stepper_profile_name'))
57+
)
58+
)
59+
print("Server setup form appeared")
60+
except Exception as e:
61+
print(f"Server setup form did not appear: {e}")
62+
# Debug: print current page state
63+
print("Current URL:", self.driver.current_url)
64+
print("Page title:", self.driver.title)
65+
raise e
66+
3667
name = self.by_id('srv_setup_stepper_profile_name')
3768
name.send_keys('Test')
3869
email = self.by_name('srv_setup_stepper_email')

0 commit comments

Comments
 (0)