diff options
| author | Rasmus Magnell <rasmus@personalkollen.se> | 2022-09-24 12:21:11 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-10-12 10:21:17 +0200 |
| commit | c4aac2ac1e469f0dc27b4dce230c7b29add617ba (patch) | |
| tree | 13d34aa7679023c65b132740277a80007f0485bb /tests/admin_views/test_nav_sidebar.py | |
| parent | 7c9d0c31d5c1ec75df9cb173914b8e752017c205 (diff) | |
Fixed #34042 -- Improved accessibility of admin's navigation sidebar.
Diffstat (limited to 'tests/admin_views/test_nav_sidebar.py')
| -rw-r--r-- | tests/admin_views/test_nav_sidebar.py | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/tests/admin_views/test_nav_sidebar.py b/tests/admin_views/test_nav_sidebar.py index 3cb20e4068..e9b367b63b 100644 --- a/tests/admin_views/test_nav_sidebar.py +++ b/tests/admin_views/test_nav_sidebar.py @@ -43,21 +43,29 @@ class AdminSidebarTests(TestCase): def test_sidebar_not_on_index(self): response = self.client.get(reverse("test_with_sidebar:index")) self.assertContains(response, '<div class="main" id="main">') - self.assertNotContains(response, '<nav class="sticky" id="nav-sidebar">') + self.assertNotContains( + response, '<nav class="sticky" id="nav-sidebar" aria-label="Sidebar">' + ) def test_sidebar_disabled(self): response = self.client.get(reverse("test_without_sidebar:index")) - self.assertNotContains(response, '<nav class="sticky" id="nav-sidebar">') + self.assertNotContains( + response, '<nav class="sticky" id="nav-sidebar" aria-label="Sidebar">' + ) def test_sidebar_unauthenticated(self): self.client.logout() response = self.client.get(reverse("test_with_sidebar:login")) - self.assertNotContains(response, '<nav class="sticky" id="nav-sidebar">') + self.assertNotContains( + response, '<nav class="sticky" id="nav-sidebar" aria-label="Sidebar">' + ) def test_sidebar_aria_current_page(self): url = reverse("test_with_sidebar:auth_user_changelist") response = self.client.get(url) - self.assertContains(response, '<nav class="sticky" id="nav-sidebar">') + self.assertContains( + response, '<nav class="sticky" id="nav-sidebar" aria-label="Sidebar">' + ) self.assertContains( response, '<a href="%s" aria-current="page">Users</a>' % url ) @@ -80,7 +88,9 @@ class AdminSidebarTests(TestCase): def test_sidebar_aria_current_page_missing_without_request_context_processor(self): url = reverse("test_with_sidebar:auth_user_changelist") response = self.client.get(url) - self.assertContains(response, '<nav class="sticky" id="nav-sidebar">') + self.assertContains( + response, '<nav class="sticky" id="nav-sidebar" aria-label="Sidebar">' + ) # Does not include aria-current attribute. self.assertContains(response, '<a href="%s">Users</a>' % url) self.assertNotContains(response, "aria-current") @@ -146,16 +156,15 @@ class SeleniumTests(AdminSeleniumTestCase): ) self.assertEqual(toggle_button.tag_name, "button") self.assertEqual(toggle_button.get_attribute("aria-label"), "Toggle navigation") - for link in self.selenium.find_elements(By.CSS_SELECTOR, "#nav-sidebar a"): - self.assertEqual(link.get_attribute("tabIndex"), "0") - filter_input = self.selenium.find_element(By.CSS_SELECTOR, "#nav-filter") - self.assertEqual(filter_input.get_attribute("tabIndex"), "0") + nav_sidebar = self.selenium.find_element(By.ID, "nav-sidebar") + self.assertEqual(nav_sidebar.get_attribute("aria-expanded"), "true") + self.assertTrue(nav_sidebar.is_displayed()) toggle_button.click() - # Hidden sidebar is not reachable via keyboard navigation. - for link in self.selenium.find_elements(By.CSS_SELECTOR, "#nav-sidebar a"): - self.assertEqual(link.get_attribute("tabIndex"), "-1") - filter_input = self.selenium.find_element(By.CSS_SELECTOR, "#nav-filter") - self.assertEqual(filter_input.get_attribute("tabIndex"), "-1") + + # Hidden sidebar is not visible. + nav_sidebar = self.selenium.find_element(By.ID, "nav-sidebar") + self.assertEqual(nav_sidebar.get_attribute("aria-expanded"), "false") + self.assertFalse(nav_sidebar.is_displayed()) main_element = self.selenium.find_element(By.CSS_SELECTOR, "#main") self.assertNotIn("shifted", main_element.get_attribute("class").split()) @@ -189,16 +198,14 @@ class SeleniumTests(AdminSeleniumTestCase): toggle_button = self.selenium.find_element( By.CSS_SELECTOR, "#toggle-nav-sidebar" ) - # Hidden sidebar is not reachable via keyboard navigation. - for link in self.selenium.find_elements(By.CSS_SELECTOR, "#nav-sidebar a"): - self.assertEqual(link.get_attribute("tabIndex"), "-1") - filter_input = self.selenium.find_element(By.CSS_SELECTOR, "#nav-filter") - self.assertEqual(filter_input.get_attribute("tabIndex"), "-1") + # Hidden sidebar is not visible. + nav_sidebar = self.selenium.find_element(By.ID, "nav-sidebar") + self.assertEqual(nav_sidebar.get_attribute("aria-expanded"), "false") + self.assertFalse(nav_sidebar.is_displayed()) toggle_button.click() - for link in self.selenium.find_elements(By.CSS_SELECTOR, "#nav-sidebar a"): - self.assertEqual(link.get_attribute("tabIndex"), "0") - filter_input = self.selenium.find_element(By.CSS_SELECTOR, "#nav-filter") - self.assertEqual(filter_input.get_attribute("tabIndex"), "0") + nav_sidebar = self.selenium.find_element(By.ID, "nav-sidebar") + self.assertEqual(nav_sidebar.get_attribute("aria-expanded"), "true") + self.assertTrue(nav_sidebar.is_displayed()) self.assertEqual( self.selenium.execute_script( "return localStorage.getItem('django.admin.navSidebarIsOpen')" |
