- ';
+ $res .= '';
+ $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Everything').' '; } $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Unread').' '; $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Flagged').' '; $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Junk').' '; $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Trash').' '; $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Drafts').' '; @@ -1440,22 +1441,18 @@ protected function output() { $parts = explode('_', $src); array_pop($parts); $name = ucwords(implode(' ', $parts)); + $class = $this->html_safe($src); if (!$single) { - $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('All').' '; } @@ -1477,12 +1474,12 @@ class Hm_Output_settings_menu_start extends Hm_Output_Module { * Opens an unordered list */ protected function output() { - $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Home').' '; if ($this->format == 'HTML5') { @@ -1545,7 +1542,7 @@ class Hm_Output_settings_servers_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Servers').' '; $this->concat('formatted_folder_list', $res); @@ -1563,7 +1560,7 @@ class Hm_Output_settings_site_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Site').' '; $this->concat('formatted_folder_list', $res); @@ -1584,7 +1581,7 @@ protected function output() { } $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Save').' '; $this->concat('formatted_folder_list', $res); diff --git a/modules/core/site.css b/modules/core/site.css index 972fdb9b79..4d5f6b3828 100644 --- a/modules/core/site.css +++ b/modules/core/site.css @@ -33,7 +33,6 @@ a:hover { .folder_cell { vertical-align: top; height: 100%; - max-width: 15%; display: table-cell; padding: 0px; margin: 0px; @@ -50,11 +49,11 @@ a:hover { min-height: 100vh; } -.selected_menu, +.selected_menu { + background-color: var(--bs-primary-bg-subtle); +} .selected_menu a { color: var(--bs-link-color) !important; - font-weight: bold !important; - line-height: 1.25em; } form { @@ -369,9 +368,10 @@ button { margin-right: 20px; padding-right: 15px; padding-bottom: 40px; - min-width: 200px; + min-width: 300px; padding-top: 0px; min-height: 100vh; + padding-top: 20px; } .folders, @@ -381,14 +381,19 @@ button { margin-left: 10px; padding-right: 0px; } -.folders li, +.folders li { + padding: 0.5rem; + border-radius: var(--bs-border-radius); + transition: all linear 0.3s; + margin-bottom: 10px; +} .inner_list li { - padding: 4px; - padding-left: 10px; - padding-bottom: 0px; margin: 2px; white-space: nowrap; } +.inner_list li i { + margin-right: 0.25rem; +} .loading_folders { text-align: center; margin: 10px; @@ -444,19 +449,18 @@ button { cursor: pointer; padding-left: 25px; margin-top: 0px; - margin-right: -15px; - background: linear-gradient( - 180deg, - var(--bs-body-bg), - var(--bs-body-bg), - var(--bs-secondary-bg) - ) !important; border-bottom: solid 1px var(--bs-secondary-bg); - border-top: solid 1px var(--bs-secondary-bg); padding-top: 10px; font-size: 125%; letter-spacing: -1px; padding-bottom: 10px; + transition: border-bottom-color 0.3s linear; +} +.src_name > i { + transition: transform 0.3s; +} +.src_name[aria-expanded="true"] { + border-bottom-color: transparent; } .main_menu { padding-top: 20px; @@ -717,9 +721,6 @@ button { .search_terms { padding-left: 5px; } -.folder_list .search_terms { - width: 100%; -} .search_content { display: table; table-layout: fixed; @@ -933,13 +934,9 @@ div.unseen, } .mobile .folder_cell { display: block; - max-width: 96%; - width: 96%; padding: 0px !important; } .mobile .folder_list { - padding: 0px !important; - font-size: 130%; margin-right: 0px; width: 100%; } @@ -1396,3 +1393,14 @@ nav .menu-toggle { body { overflow-x: hidden; } + +.menu-icon { + font-size: 1rem; + margin-right: 0.5rem; +} + +.app-logo { + height: 3rem; + margin-bottom: 1rem; + padding-left: 1rem; +} diff --git a/modules/core/site.js b/modules/core/site.js index 5e98d9718e..7b17caccf4 100644 --- a/modules/core/site.js +++ b/modules/core/site.js @@ -1269,19 +1269,17 @@ var Hm_Folders = { folder_list_events: function() { $('.imap_folder_link').on("click", function() { return expand_imap_folders($(this)); }); - $('.src_name').on("click", function() { - var class_name = $(this).data('source'); - var icon_element = $(this).find('.bi'); - Hm_Utils.toggle_section(class_name); - setTimeout(() => { - var target_element = document.querySelector(class_name); - var is_visible = Hm_Utils.is_element_visible(target_element); - if (is_visible) { - icon_element.removeClass('bi-chevron-down').addClass('bi-chevron-up'); - } else { - icon_element.removeClass('bi-chevron-up').addClass('bi-chevron-down'); - } - }, 0); + $('.src_name').on('click', function() { + + let transformValue = ''; + if ($(this).attr('aria-expanded') == 'true') { + transformValue = 'rotate(180deg)'; + + } else { + transformValue = 'rotate(0deg)'; + } + + $(this).find('i').css('transform', transformValue); }); $('.update_message_list').on("click", function(e) { var text = e.target.innerHTML; @@ -1309,7 +1307,7 @@ var Hm_Folders = { $('.folder_list').find('*').removeClass('selected_menu'); if (path) { if (page == 'message_list' || page == 'message') { - $("[data-id='"+Hm_Utils.clean_selector(path)+"']").addClass('selected_menu'); + $("[data-id='"+Hm_Utils.clean_selector(path)+"']").closest('li').addClass('selected_menu'); $('.menu_'+Hm_Utils.clean_selector(path)).addClass('selected_menu'); } else { diff --git a/modules/developer/modules.php b/modules/developer/modules.php index a2bcd23ae0..505f501baf 100644 --- a/modules/developer/modules.php +++ b/modules/developer/modules.php @@ -127,7 +127,7 @@ class Hm_Output_developer_doc_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Dev').' '; if ($this->format == 'HTML5') { @@ -149,7 +149,7 @@ class Hm_Output_info_page_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Info').' '; if ($this->format == 'HTML5') { diff --git a/modules/feeds/modules.php b/modules/feeds/modules.php index 7d01cdb0fd..4ee95ed3ad 100644 --- a/modules/feeds/modules.php +++ b/modules/feeds/modules.php @@ -793,7 +793,7 @@ protected function output() { if(count($this->get('feeds', array())) > 1) { $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('All'); $res .= ' '; @@ -802,14 +802,14 @@ protected function output() { $res .= '
- '. ''; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->html_safe($folder).' '; } } $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Add a feed').' '; if ($res) { @@ -873,7 +873,7 @@ protected function output() { class Hm_Output_start_feed_settings extends Hm_Output_Module { protected function output() { return '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('History').' '; if ($this->format == 'HTML5') { diff --git a/modules/imap_folders/modules.php b/modules/imap_folders/modules.php index 7e1197586f..4e926b7d4c 100644 --- a/modules/imap_folders/modules.php +++ b/modules/imap_folders/modules.php @@ -796,7 +796,7 @@ protected function output() { if ($this->get('imap_support')) { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Folders').' '; if ($this->format == 'HTML5') { diff --git a/modules/keyboard_shortcuts/modules.php b/modules/keyboard_shortcuts/modules.php index 6225acf979..797bbed57b 100644 --- a/modules/keyboard_shortcuts/modules.php +++ b/modules/keyboard_shortcuts/modules.php @@ -212,7 +212,7 @@ protected function output() { if ($this->get('shortcuts_enabled')) { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Shortcuts').' '; if ($this->format == 'HTML5') { diff --git a/modules/pgp/modules.php b/modules/pgp/modules.php index a1cdaf71d2..1d56df97f7 100644 --- a/modules/pgp/modules.php +++ b/modules/pgp/modules.php @@ -211,7 +211,7 @@ class Hm_Output_pgp_settings_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ' '; + $res .= ' '; } $res .= $this->trans('PGP').' '; if ($this->format == 'HTML5') { diff --git a/modules/profiles/modules.php b/modules/profiles/modules.php index 14e2204a2c..bbce3f587a 100644 --- a/modules/profiles/modules.php +++ b/modules/profiles/modules.php @@ -195,7 +195,7 @@ class Hm_Output_profile_page_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Profiles').' '; if ($this->format == 'HTML5') { diff --git a/modules/smtp/modules.php b/modules/smtp/modules.php index d819d106be..4f6d38c002 100644 --- a/modules/smtp/modules.php +++ b/modules/smtp/modules.php @@ -948,7 +948,7 @@ class Hm_Output_sent_folder_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Sent').' '; $this->concat('formatted_folder_list', $res); @@ -1484,7 +1484,7 @@ class Hm_Output_compose_page_link extends Hm_Output_Module { protected function output() { $res = '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Compose').' '; diff --git a/modules/tags/modules.php b/modules/tags/modules.php index e1e0973caa..dd63ae1064 100644 --- a/modules/tags/modules.php +++ b/modules/tags/modules.php @@ -365,7 +365,7 @@ protected function output() { } $res .= '
- '; if (!$this->get('hide_folder_icons')) { - $res .= ''; + $res .= ''; } $res .= $this->trans('Add label').' '; $this->append('folder_sources', array('tags_folders', $res)); diff --git a/tests/phpunit/modules/core/output_modules.php b/tests/phpunit/modules/core/output_modules.php index 41b71454e9..fa0fc71da7 100644 --- a/tests/phpunit/modules/core/output_modules.php +++ b/tests/phpunit/modules/core/output_modules.php @@ -18,7 +18,7 @@ public function test_search_from_folder_list() { $test->run(); $test->rtype = 'AJAX'; $res = $test->run(); - $this->assertEquals('
- Unread
- Flagged
- Junk
- Trash
- Drafts '), $res->output_response); + $this->assertEquals(array('
- Unread
- Flagged
- Junk
- Trash
- Drafts '), $res->output_response); $test->rtype = 'AJAX'; $res = $test->run(); - $this->assertEquals(array('folder_sources' => array(array('email_folders', 'baz')), 'formatted_folder_list' => '
- Unread
- Flagged
- Junk
- Trash
- Drafts '), $res->output_response); + $this->assertEquals(array('folder_sources' => array(array('email_folders', 'baz')), 'formatted_folder_list' => '
- Unread
- Flagged
- Junk
- Trash
- Drafts '), $res->output_response); } /** * @preserveGlobalState disabled @@ -905,10 +905,10 @@ public function test_email_menu_content() { $this->assertEquals(array('
- Home '), $res->output_response); + $this->assertEquals(array('
- Home '), $res->output_response); $test->rtype = 'AJAX'; $res = $test->run(); - $this->assertEquals(array('formatted_folder_list' => '
- Home '), $res->output_response); + $this->assertEquals(array('formatted_folder_list' => '
- Home '), $res->output_response); } /** * @preserveGlobalState disabled @@ -941,7 +941,7 @@ public function test_save_form() { public function test_settings_servers_link() { $test = new Output_Test('settings_servers_link', 'core'); $res = $test->run(); - $this->assertEquals(array('formatted_folder_list' => '
- Servers '), $res->output_response); + $this->assertEquals(array('formatted_folder_list' => '
- Servers '), $res->output_response); } /** * @preserveGlobalState disabled @@ -950,7 +950,7 @@ public function test_settings_servers_link() { public function test_settings_site_link() { $test = new Output_Test('settings_site_link', 'core'); $res = $test->run(); - $this->assertEquals(array('formatted_folder_list' => '
- Site '), $res->output_response); + $this->assertEquals(array('formatted_folder_list' => '
- Site '), $res->output_response); } /** * @preserveGlobalState disabled @@ -959,7 +959,7 @@ public function test_settings_site_link() { public function test_settings_save_link() { $test = new Output_Test('settings_save_link', 'core'); $res = $test->run(); - $this->assertEquals(array('formatted_folder_list' => '
- Save '), $res->output_response); + $this->assertEquals(array('formatted_folder_list' => '
- Save '), $res->output_response); $test->handler_response = array('single_server_mode' => true); $res = $test->run(); $this->assertEquals(array('single_server_mode' => 1), $res->output_response); diff --git a/tests/phpunit/modules/core/output_modules_debug.php b/tests/phpunit/modules/core/output_modules_debug.php index 9103ceed94..47905b3775 100644 --- a/tests/phpunit/modules/core/output_modules_debug.php +++ b/tests/phpunit/modules/core/output_modules_debug.php @@ -83,9 +83,9 @@ static function router_module_list_provider() { public function test_main_menu_start_debug() { $test = new Output_Test('main_menu_start', 'core'); $res = $test->run(); - $this->assertEquals(array('
- ';
if ($this->format == 'HTML5') {
return $res;
}
@@ -1354,33 +1355,33 @@ protected function output() {
if ($total_accounts > 1) {
$res .= '
'.$this->trans($name).
+ $res .= '
'.$this->trans($name).
'
';
+ $class .= ' collapse';
}
- if ($single) {
- $res .= 'html_safe($src).'">
- ';
+ $res .= '
- ';
if ($name == 'Email' && count($this->get('imap_servers', array())) > 1) {
$res .= '
'.$this->trans('Settings').
+ $res = '
'.$this->trans('Settings').
'
'.
- '- ';
+ '
- ';
$res .= '
Main
- '), $res->output_response);
+ $this->assertEquals(array('
- '), $res->output_response);
$test->rtype = 'AJAX';
$res = $test->run();
- $this->assertEquals(array('formatted_folder_list' => '
Main
- '), $res->output_response);
+ $this->assertEquals(array('formatted_folder_list' => '
- '), $res->output_response);
}
/**
* @preserveGlobalState disabled
@@ -865,10 +865,10 @@ public function test_main_menu_content() {
$test = new Output_Test('main_menu_content', 'core');
$test->handler_response = array('folder_sources' => array(array('email_folders', 'baz')));
$res = $test->run();
- $this->assertEquals(array('
- baz
Email
- baz
Email
- baz
Email
- baz
Email
- baz
Settings
Settings
Settings
Settings
Main Debug
- '), $res->output_response);
+ $this->assertEquals(array('Debug
- '), $res->output_response);
$test->rtype = 'AJAX';
$res = $test->run();
- $this->assertEquals(array('formatted_folder_list' => '
Main Debug
- '), $res->output_response);
+ $this->assertEquals(array('formatted_folder_list' => 'Debug
- '), $res->output_response);
}
}
diff --git a/tests/selenium/base.py b/tests/selenium/base.py
index 2852fccf82..2d37b6ec78 100644
--- a/tests/selenium/base.py
+++ b/tests/selenium/base.py
@@ -136,7 +136,7 @@ def wait_on_class(self, class_name, timeout=30):
self.wait(By.CLASS_NAME, class_name)
def wait_with_folder_list(self):
- self.wait(By.CLASS_NAME, "main_menu")
+ self.wait(By.CLASS_NAME, "main")
def wait_on_sys_message(self, timeout=30):
wait = WebDriverWait(self.driver, timeout)
@@ -153,6 +153,16 @@ def wait_for_navigation_to_complete(self, timeout=30):
lambda driver: get_current_navigations_request_entries_length() > navigation_length
)
+ def wait_for_settings_to_expand(self):
+ print(" - waiting for the settings section to expand...")
+ WebDriverWait(self.driver, 10).until(lambda x: self.by_class('settings').is_displayed())
+
+ def click_when_clickable(self, el):
+ print(" - waiting for element to be clickable")
+ WebDriverWait(self.driver, 10).until(
+ exp_cond.element_to_be_clickable(el)
+ ).click()
+
def safari_workaround(self, timeout=1):
if self.browser == 'safari':
print(" - waiting {0} extra second for Safari".format(timeout))
diff --git a/tests/selenium/folder_list.py b/tests/selenium/folder_list.py
index e020a6d30d..60001fa6ed 100644
--- a/tests/selenium/folder_list.py
+++ b/tests/selenium/folder_list.py
@@ -14,10 +14,11 @@ def __init__(self):
WebTest.__init__(self)
self.login(USER, PASS)
self.wait_with_folder_list()
+ self.load()
def reload_folder_list(self):
- main_menu = self.by_class('main_menu')
- assert main_menu.text.startswith('Main')
+ main_menu = self.by_class('main')
+ assert main_menu.is_displayed()
self.by_class('update_message_list').click()
self.safari_workaround(3)
# update_message_list triggers site reload, so we explicitly wait for element to become stale
@@ -25,14 +26,14 @@ def reload_folder_list(self):
ignored_exceptions=(NoSuchElementException,StaleElementReferenceException,)
# And once it is stale, we can now wait for it to become available again as the page contents are loaded again.
main_menu = WebDriverWait(self.driver, 10,ignored_exceptions=ignored_exceptions).until(
- EC.presence_of_element_located((By.CLASS_NAME, 'main_menu'))
+ EC.presence_of_element_located((By.CLASS_NAME, 'main'))
)
- main_menu = self.by_class('main_menu')
+ main_menu = self.by_class('main')
#and finally perform our test on the actual, refreshed element.
- assert main_menu.text.startswith('Main')
+ assert main_menu.is_displayed()
def expand_section(self):
- self.by_css('[data-source=".settings"]').click()
+ self.by_css('[data-bs-target=".settings"]').click()
list_item = self.by_class('menu_home')
list_item.find_element(By.TAG_NAME, 'a').click()
self.wait_with_folder_list()
@@ -40,9 +41,13 @@ def expand_section(self):
assert self.by_class('content_title').text == 'Home'
def collapse_section(self):
- self.by_css('[data-source=".main"]').click()
- list_item = self.by_class('menu_unread')
+ list_item = self.by_class('menu_settings')
link = list_item.find_element(By.TAG_NAME, 'a')
+ self.by_css('[data-bs-target=".settings"]').click()
+ assert link.is_displayed() == True
+ self.by_css('[data-bs-target=".settings"]').click()
+ # Wait for the transition to complete
+ WebDriverWait(self.driver, 10).until(lambda x: not link.is_displayed())
assert link.is_displayed() == False
def hide_folders(self):
@@ -59,8 +64,8 @@ def hide_folders(self):
def show_folders(self):
folder_toggle = self.by_class('folder_toggle')
self.driver.execute_script("arguments[0].click();", folder_toggle)
- self.wait(By.CLASS_NAME, 'main_menu')
- self.by_css('[data-source=".settings"]').click()
+ self.wait(By.CLASS_NAME, 'main')
+ self.by_css('[data-bs-target=".settings"]').click()
list_item = self.by_class('menu_home')
a_tag = list_item.find_element(By.TAG_NAME, 'a')
self.driver.execute_script("arguments[0].scrollIntoView(true);", a_tag)
@@ -68,7 +73,6 @@ def show_folders(self):
self.wait_with_folder_list()
self.wait_for_navigation_to_complete()
assert self.by_class('content_title').text == 'Home'
- self.by_css('[data-source=".main"]').click()
if __name__ == '__main__':
diff --git a/tests/selenium/login.py b/tests/selenium/login.py
index e032bb10ff..70413344e9 100644
--- a/tests/selenium/login.py
+++ b/tests/selenium/login.py
@@ -44,6 +44,7 @@ def good_login(self):
assert self.by_class('content_title') != None
def good_logout(self):
+ self.load()
self.logout()
self.wait()
assert self.by_class('sys_messages').text == 'Session destroyed on logout'
diff --git a/tests/selenium/pages.py b/tests/selenium/pages.py
index a5663315a1..173d5375b5 100644
--- a/tests/selenium/pages.py
+++ b/tests/selenium/pages.py
@@ -95,7 +95,7 @@ def history(self):
assert self.by_class('content_title').text == 'Message history'
def home(self):
- self.by_css('[data-source=".settings"]').click()
+ self.by_css('[data-bs-target=".settings"]').click()
list_item = self.by_class('menu_home')
list_item.find_element(By.TAG_NAME, 'a').click()
self.wait_with_folder_list()
diff --git a/tests/selenium/profiles.py b/tests/selenium/profiles.py
index 9fe5bea15a..00fcdfa87d 100644
--- a/tests/selenium/profiles.py
+++ b/tests/selenium/profiles.py
@@ -2,6 +2,7 @@
from selenium.webdriver.common.by import By
from runner import test_runner
from settings import SettingsHelpers
+from selenium.webdriver.support.ui import WebDriverWait
class ProfileTest(SettingsHelpers):
@@ -12,7 +13,8 @@ def __init__(self):
def load_profile_page(self):
self.load()
- self.by_css('[data-source=".settings"]').click()
+ self.by_css('[data-bs-target=".settings"]').click()
+ WebDriverWait(self.driver, 10).until(lambda x: self.by_class('settings').is_displayed())
list_item = self.by_class('menu_profiles')
list_item.find_element(By.TAG_NAME, 'a').click()
self.wait_with_folder_list()
diff --git a/tests/selenium/send.py b/tests/selenium/send.py
index 779dbd0d3e..c1816231ab 100644
--- a/tests/selenium/send.py
+++ b/tests/selenium/send.py
@@ -13,6 +13,7 @@ def __init__(self):
self.wait_with_folder_list()
def load_compose_page(self):
+ self.load()
list_item = self.by_class('menu_compose')
link = list_item.find_element(By.TAG_NAME, 'a').click()
self.wait_with_folder_list()
diff --git a/tests/selenium/servers.py b/tests/selenium/servers.py
index de2cdbe7f8..17c2a8dc0f 100644
--- a/tests/selenium/servers.py
+++ b/tests/selenium/servers.py
@@ -17,9 +17,10 @@ def toggle_server_section(self, name):
def load_servers_page(self):
self.wait_with_folder_list()
- self.by_css('[data-source=".settings"]').click()
+ self.by_css('[data-bs-target=".settings"]').click()
+ self.wait_for_settings_to_expand()
list_item = self.by_class('menu_servers')
- list_item.find_element(By.TAG_NAME, 'a').click()
+ self.click_when_clickable(list_item.find_element(By.TAG_NAME, 'a'))
self.wait_with_folder_list()
self.wait_for_navigation_to_complete()
assert self.by_class('content_title').text == 'Servers'
diff --git a/tests/selenium/settings.py b/tests/selenium/settings.py
index 0a8f20c008..30794bc421 100644
--- a/tests/selenium/settings.py
+++ b/tests/selenium/settings.py
@@ -31,9 +31,10 @@ def save_settings(self):
def settings_section(self, section):
if not self.by_class('settings').is_displayed():
- self.by_css('[data-source=".settings"]').click()
+ self.by_css('[data-bs-target=".settings"]').click()
+ self.wait_for_settings_to_expand()
list_item = self.by_class('menu_settings')
- list_item.find_element(By.TAG_NAME, 'a').click()
+ self.click_when_clickable(list_item.find_element(By.TAG_NAME, 'a'))
self.wait_with_folder_list()
self.wait_for_navigation_to_complete()
if not self.by_class(section).is_displayed():
@@ -84,10 +85,11 @@ def __init__(self):
self.wait()
def load_settings_page(self):
- self.wait_on_class('main_menu')
- self.by_css('[data-source=".settings"]').click()
+ self.wait_on_class('main')
+ self.by_css('[data-bs-target=".settings"]').click()
+ self.wait_for_settings_to_expand()
list_item = self.by_class('menu_settings')
- list_item.find_element(By.TAG_NAME, 'a').click()
+ self.click_when_clickable(list_item.find_element(By.TAG_NAME, 'a'))
self.wait_with_folder_list()
self.wait_for_navigation_to_complete()
assert self.by_class('content_title').text == 'Site Settings'
diff --git a/tests/selenium/tags.py b/tests/selenium/tags.py
index ebd724df6d..f0148a16e9 100644
--- a/tests/selenium/tags.py
+++ b/tests/selenium/tags.py
@@ -11,7 +11,7 @@ def __init__(self):
self.wait()
def load_tag_page(self):
- self.by_css('[data-source=".tags_folders"]').click()
+ self.by_css('[data-bs-target=".tags_folders"]').click()
list_item = self.by_class('tags_add_new')
list_item.find_element(By.TAG_NAME, 'a').click()
self.wait_with_folder_list()