def load_search_page(self): list_item = self.by_class('menu_search') link = list_item.find_element_by_tag_name('a').click() self.wait_with_folder_list() assert self.by_class('content_title').text.startswith('Search') def keyword_search(self): terms = self.by_id('search_terms') terms.send_keys('test') self.by_class('search_update').click() self.wait_with_folder_list() sleep(1) table = self.by_class('message_table_body') assert len(table.find_elements_by_tag_name('tr')) > 0 def reset_search(self): self.by_class('search_reset').click() self.wait_with_folder_list() sleep(1) assert self.by_id('search_terms').get_attribute('value') == '' table = self.by_class('message_table_body') assert len(table.find_elements_by_tag_name('tr')) == 0 if __name__ == '__main__': print("SEARCH TEST") test_runner(SearchTest, ['load_search_page', 'keyword_search', 'reset_search'])
self.wait_with_folder_list() assert self.by_class('sys_messages').text == 'Message Sent' def view_message_list(self): list_item = self.by_class('menu_unread') list_item.find_element_by_tag_name('a').click() self.wait_on_class('unseen') assert self.by_class('mailbox_list_title').text == 'Unread' subject = self.by_class('unseen') link = subject.find_element_by_tag_name('a') assert link.text == 'Test' def view_message_detail(self): subject = self.by_class('unseen') link = subject.find_element_by_tag_name('a').click() self.wait_on_class('header_subject') detail_subject = self.by_class('header_subject') header = detail_subject.find_element_by_tag_name('th') assert header.text == 'Test' if __name__ == '__main__': print("SEND TEST") test_runner(SendTest, [ 'load_compose_page', 'compose_message', 'view_message_list', 'view_message_detail' ])
self.change_val(hidden_el, 'asdf') self.login(USER, PASS) self.wait() assert self.by_class('login_form') != None def good_login(self): self.load() self.login(USER, PASS) self.wait_with_folder_list() assert self.by_class('content_title') != None def good_logout(self): self.logout() self.wait() assert self.by_class('sys_messages').text == 'Session destroyed on logout' if __name__ == '__main__': print("LOGIN TESTS") test_runner(LoginTests, [ 'bad_login_values', 'missing_password', 'missing_username', 'missing_username_and_password', 'bad_login_key', 'good_login', 'good_logout' ])
class InlineMsgTests(SettingsHelpers): def __init__(self): WebTest.__init__(self) self.login(USER, PASS) self.wait_with_folder_list() def set_inline_message_test(self): self.checkbox_test('general_setting', 'inline_message', False, 'inline_message') def navigate_msg_test(self): self.by_css('[data-source=".email_folders"]').click() allmsgs = self.by_class('menu_email') allmsgs.find_element_by_tag_name('a').click() self.wait_on_class('checkbox_cell') body = self.by_class('message_table_body') subject = body.find_element_by_class_name('subject') subject.find_element_by_tag_name('a').click() self.wait_on_class('header_subject') detail_subject = self.by_class('header_subject') header = detail_subject.find_element_by_tag_name('th') assert header.text.startswith('Test') if __name__ == '__main__': print("INLINE MSG TESTS") test_runner(InlineMsgTests, ['set_inline_message_test', 'navigate_msg_test', 'logout'])
from base import WebTest, USER, PASS from runner import test_runner from selenium.common.exceptions import ElementNotVisibleException class SettingsTests(WebTest): def __init__(self): WebTest.__init__(self) self.login(USER, PASS) self.rest() def general_settings(self): self.by_css('[data-source=".settings"]').click() list_item = self.by_class('menu_settings') list_item.find_element_by_tag_name('a').click() self.by_css('[data-target=".general_setting"]').click() self.by_name('smtp_auto_bcc').click() self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") self.by_name('save_settings').click() self.rest() self.by_css('[data-source=".settings"]').click() assert self.by_class('sys_messages').text == 'Settings updated' if __name__ == '__main__': print "SETTINGS TESTS" test_runner(SettingsTests, [ 'logout' ])
#!/usr/bin/python from base import WebTest, USER, PASS from runner import test_runner from selenium.common.exceptions import ElementNotVisibleException class SettingsTests(WebTest): def __init__(self): WebTest.__init__(self) self.login(USER, PASS) self.rest() def general_settings(self): self.by_css('[data-source=".settings"]').click() list_item = self.by_class("menu_settings") list_item.find_element_by_tag_name("a").click() self.by_css('[data-target=".general_setting"]').click() self.by_name("smtp_auto_bcc").click() self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") self.by_name("save_settings").click() self.rest() self.by_css('[data-source=".settings"]').click() assert self.by_class("sys_messages").text == "Settings updated" if __name__ == "__main__": print "SETTINGS TESTS" test_runner(SettingsTests, [])
list_item.find_element_by_tag_name('a').click() self.rest() assert self.by_class('content_title').text == 'Change Password' def profiles(self): list_item = self.by_class('menu_profiles') list_item.find_element_by_tag_name('a').click() self.rest() assert self.by_class('content_title').text == 'Profiles' if __name__ == '__main__': print "PAGE TESTS" test_runner(PageTests, [ 'search', 'combined_inbox', 'unread', 'flagged', 'contacts', 'compose', 'calendar', 'history', 'home', 'servers', 'site', 'save', 'password', 'profiles', 'logout', ])
list_item = self.by_class('menu_search') link = list_item.find_element_by_tag_name('a').click() self.wait_with_folder_list() assert self.by_class('content_title').text.startswith('Search') def keyword_search(self): terms = self.by_id('search_terms') terms.send_keys('test') self.by_class('search_update').click(); self.wait_with_folder_list() sleep(1) table = self.by_class('message_table_body') assert len(table.find_elements_by_tag_name('tr')) > 0 def reset_search(self): self.by_class('search_reset').click() self.wait_with_folder_list() sleep(1) assert self.by_id('search_terms').get_attribute('value') == '' table = self.by_class('message_table_body') assert len(table.find_elements_by_tag_name('tr')) == 0 if __name__ == '__main__': print("SEARCH TEST") test_runner(SearchTest, [ 'load_search_page', 'keyword_search', 'reset_search' ])
link = list_item.find_element_by_tag_name('a') assert link.is_displayed() == False def hide_folders(self): self.by_class('hide_folders').click() list_item = self.by_class('menu_home') link = list_item.find_element_by_tag_name('a'); assert link.is_displayed() == False self.wait() def show_folders(self): self.by_class('folder_toggle').click() list_item = self.by_class('menu_home') list_item.find_element_by_tag_name('a').click() self.wait() assert self.by_class('content_title').text == 'Home' self.by_css('[data-source=".main"]').click() if __name__ == '__main__': print "FOLDER LIST TESTS" test_runner(FolderListTests, [ 'reload_folder_list', 'expand_section', 'collapse_section', 'hide_folders', 'show_folders', 'logout' ])
assert '*****@*****.**' in self.by_class('profile_details').text def edit_profile(self): table = self.by_class('profile_details') table.find_element_by_tag_name('a').click() self.wait_with_folder_list() name = self.by_name('profile_name') name.send_keys('New Name') self.by_class('profile_update').click() self.wait_with_folder_list() assert 'New Name' in self.by_class('profile_details').text def del_profile(self): table = self.by_class('profile_details') table.find_element_by_tag_name('a').click() self.wait_with_folder_list() self.by_name('profile_delete').click() self.wait_on_sys_message() assert self.by_class('sys_messages').text == 'Profile Deleted' if __name__ == '__main__': print("PROFIILE TEST") test_runner(ProfileTest, [ 'load_profile_page', 'add_profile', 'edit_profile', 'del_profile' ])
WebTest.__init__(self) self.login(USER, PASS) self.wait_with_folder_list() def set_inline_message_test(self): self.checkbox_test('general_setting', 'inline_message', False, 'inline_message') def navigate_msg_test(self): self.by_css('[data-source=".email_folders"]').click() allmsgs = self.by_class('menu_email') allmsgs.find_element_by_tag_name('a').click() self.wait_on_class('checkbox_cell') body = self.by_class('message_table_body') subject = body.find_element_by_class_name('subject') subject.find_element_by_tag_name('a').click() self.wait_on_class('header_subject') detail_subject = self.by_class('header_subject') header = detail_subject.find_element_by_tag_name('th') assert header.text.startswith('Test') if __name__ == '__main__': print("INLINE MSG TESTS") test_runner(InlineMsgTests, [ 'set_inline_message_test', 'navigate_msg_test', 'logout' ])
self.nav_to_page(Keys.META + 'c', 'Contacts', 'content_title') def nav_to_compose(self): self.nav_to_page(Keys.META + 's', 'Compose', 'content_title') def toggle_folders(self): el = self.by_tag('body') el.send_keys(Keys.META + 't') try: self.by_class('folder_list').click() #assert False == True except ElementNotVisibleException: pass el.send_keys(Keys.META + 't') if __name__ == '__main__': print("KEYBOARD SHORTCUT TESTS") test_runner(KeyboardShortcutTests, [ 'nav_to_history', 'nav_to_contacts', 'nav_to_everything', 'nav_to_flagged', 'nav_to_unread', 'nav_to_compose', 'toggle_folders', 'logout' ])
test_runner(SettingsTests, [ # general options 'list_style_test', 'start_page_test', 'tz_test', 'theme_test', 'imap_per_page_test', 'mail_format_test', 'auto_bcc_test', 'keyboard_shortcuts_test', 'inline_message_test', 'no_folder_icons_test', 'msg_list_icons_test', 'msg_part_icons_test', 'simple_msg_parts_test', 'text_only_test', 'disable_delete_prompt_test', 'no_password_save_test', # unread options 'unread_since_test', 'unread_max_per_source_test', 'unread_exclude_github_test', 'unread_exclude_wp_test', 'unread_exclude_feed_test', # flagged options 'flagged_since_test', 'flagged_max_per_source_test', # everything options 'all_since_test', 'all_max_per_source_test', # all E-mail options 'all_email_since_test', 'all_email_max_per_source_test', # feed options 'feeds_since_test', 'feeds_max_per_source_test', # sent options 'sent_since_test', 'sent_max_per_source_test', # github options 'github_since_test', 'github_max_per_source_test', # exit 'logout' ])
self.login(USER, PASS) self.rest() assert self.by_class('content_title') == None def good_login(self): self.load() self.login(USER, PASS) self.rest() assert self.by_class('err') == None assert self.by_class('content_title') != None def good_logout(self): self.logout() self.rest() assert self.by_class('sys_messages').text == 'Session destroyed on logout' if __name__ == '__main__': print "LOGIN TESTS" test_runner(LoginTests, [ 'bad_login_values', 'missing_password', 'missing_username', 'missing_username_and_password', 'bad_login_key', 'good_login', 'good_logout' ])
from base import WebTest, USER, PASS from runner import test_runner from selenium.common.exceptions import ElementNotVisibleException class SettingsTests(WebTest): def __init__(self): WebTest.__init__(self) self.login(USER, PASS) self.rest() def general_settings(self): self.by_css('[data-source=".settings"]').click() list_item = self.by_class('menu_settings') list_item.find_element_by_tag_name('a').click() self.by_css('[data-target=".general_setting"]').click() self.by_name('smtp_auto_bcc').click() self.driver.execute_script( "window.scrollTo(0, document.body.scrollHeight);") self.by_name('save_settings').click() self.rest() self.by_css('[data-source=".settings"]').click() assert self.by_class('sys_messages').text == 'Settings updated' if __name__ == '__main__': print "SETTINGS TESTS" test_runner(SettingsTests, [])
list_item = self.by_class('menu_unread') link = list_item.find_element_by_tag_name('a') assert link.is_displayed() == False def hide_folders(self): self.by_class('hide_folders').click() list_item = self.by_class('menu_home') link = list_item.find_element_by_tag_name('a'); assert link.is_displayed() == False def show_folders(self): self.by_class('folder_toggle').click() list_item = self.by_class('menu_home') list_item.find_element_by_tag_name('a').click() self.wait_with_folder_list() assert self.by_class('content_title').text == 'Home' self.by_css('[data-source=".main"]').click() if __name__ == '__main__': print("FOLDER LIST TESTS") test_runner(FolderListTests, [ #'reload_folder_list', 'expand_section', 'collapse_section', 'hide_folders', 'show_folders', 'logout' ])
self.by_id('imap_notls').click() self.by_name('submit_imap_server').click() self.wait_on_sys_message() assert self.by_class('sys_messages').text == 'Added server!' def imap_confirm(self): user = self.by_id('imap_user_' + IMAP_ID) user.send_keys('testuser') passw = self.by_id('imap_pass_' + IMAP_ID) passw.send_keys('testuser') self.by_class('test_imap_connect').click() self.wait_on_sys_message() assert self.by_class( 'sys_messages' ).text == 'Successfully authenticated to the IMAP server' self.toggle_server_section('imap') if __name__ == '__main__': print("SERVERS TEST") test_runner( ServersTest, [ 'load_servers_page', 'smtp_add', 'smtp_del', 'imap_add', #'imap_confirm' ])
if self.mod_active('profiles'): return list_item = self.by_class('menu_profiles') list_item.find_element_by_tag_name('a').click() self.rest() assert self.by_class('content_title').text == 'Profiles' if __name__ == '__main__': print "PAGE TESTS" test_runner(PageTests, [ 'search', 'combined_inbox', 'unread', 'sent', 'flagged', 'contacts', 'compose', 'calendar', 'history', 'home', 'servers', 'site', 'folders', 'save', 'password', 'profiles', 'logout', ])
addr = self.by_name('new_imap_address') addr.send_keys('localhost') port = self.by_name('new_imap_port') port.clear() port.send_keys(143) self.by_id('imap_notls').click() self.by_name('submit_imap_server').click() self.wait_on_sys_message() assert self.by_class('sys_messages').text == 'Added server!' def imap_confirm(self): user = self.by_id('imap_user_'+IMAP_ID) user.send_keys('testuser') passw = self.by_id('imap_pass_'+IMAP_ID) passw.send_keys('testuser') self.by_class('test_imap_connect').click() self.wait_on_sys_message() assert self.by_class('sys_messages').text == 'Successfully authenticated to the IMAP server' self.toggle_server_section('imap') if __name__ == '__main__': print("SERVERS TEST") test_runner(ServersTest, [ 'load_servers_page', 'smtp_add', 'smtp_del', 'imap_add', 'imap_confirm' ])