mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-08 03:08:29 +02:00
Improve announcements after navigation (#1015)
This commit is contained in:
72
bookmarks/tests_e2e/e2e_test_a11y_navigation_focus.py
Normal file
72
bookmarks/tests_e2e/e2e_test_a11y_navigation_focus.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from django.urls import reverse
|
||||
from playwright.sync_api import sync_playwright, expect
|
||||
|
||||
from bookmarks.tests_e2e.helpers import LinkdingE2ETestCase
|
||||
|
||||
|
||||
class A11yNavigationFocusTest(LinkdingE2ETestCase):
|
||||
def test_initial_page_load_focus(self):
|
||||
with sync_playwright() as p:
|
||||
# First page load should keep focus on the body
|
||||
page = self.open(reverse("linkding:bookmarks.index"), p)
|
||||
focused_tag = page.evaluate("document.activeElement?.tagName")
|
||||
self.assertEqual("BODY", focused_tag)
|
||||
|
||||
page.goto(self.live_server_url + reverse("linkding:bookmarks.archived"))
|
||||
focused_tag = page.evaluate("document.activeElement?.tagName")
|
||||
self.assertEqual("BODY", focused_tag)
|
||||
|
||||
page.goto(self.live_server_url + reverse("linkding:settings.general"))
|
||||
focused_tag = page.evaluate("document.activeElement?.tagName")
|
||||
self.assertEqual("BODY", focused_tag)
|
||||
|
||||
# Bookmark form views should focus the URL input
|
||||
page.goto(self.live_server_url + reverse("linkding:bookmarks.new"))
|
||||
focused_tag = page.evaluate(
|
||||
"document.activeElement?.tagName + '|' + document.activeElement?.name"
|
||||
)
|
||||
self.assertEqual("INPUT|url", focused_tag)
|
||||
|
||||
def test_page_navigation_focus(self):
|
||||
bookmark = self.setup_bookmark()
|
||||
|
||||
with sync_playwright() as p:
|
||||
page = self.open(reverse("linkding:bookmarks.index"), p)
|
||||
|
||||
# Subsequent navigation should move focus to main content
|
||||
self.reset_focus()
|
||||
self.navigate_menu("Bookmarks", "Active")
|
||||
focused = page.locator("main:focus")
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
self.reset_focus()
|
||||
self.navigate_menu("Bookmarks", "Archived")
|
||||
focused = page.locator("main:focus")
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
self.reset_focus()
|
||||
self.navigate_menu("Settings", "General")
|
||||
focused = page.locator("main:focus")
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
# Bookmark form views should focus the URL input
|
||||
self.reset_focus()
|
||||
self.navigate_menu("Add bookmark")
|
||||
focused = page.locator("input[name='url']:focus")
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
# Opening details modal should move focus to close button
|
||||
self.navigate_menu("Bookmarks", "Active")
|
||||
self.open_details_modal(bookmark)
|
||||
focused = page.locator(".modal button.close:focus")
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
# Closing modal should move focus back to the bookmark item
|
||||
page.keyboard.press("Escape")
|
||||
focused = self.locate_bookmark(bookmark.title).locator(
|
||||
"a.view-action:focus"
|
||||
)
|
||||
expect(focused).to_be_visible()
|
||||
|
||||
def reset_focus(self):
|
||||
self.page.evaluate("document.activeElement.blur()")
|
Reference in New Issue
Block a user