test(trip-cluster): Playwright UI — grid nav, lightbox, cluster switching, approve

This commit is contained in:
2026-06-27 17:35:58 +02:00
parent edf0735098
commit c4ff5bcb06
3 changed files with 114 additions and 0 deletions
@@ -0,0 +1,45 @@
def _open(page, base_url):
page.goto(base_url)
page.wait_for_selector(".photo-card")
def test_grid_arrow_navigation_moves_focus_ring(base_url, page):
# Venice (2 photos) is high-confidence; click it to load its detail.
_open(page, base_url)
page.click("text=Venice")
page.wait_for_selector(".photo-card")
cards = page.query_selector_all(".photo-card")
assert len(cards) == 2
page.keyboard.press("ArrowRight")
# second card gains the focus ring class
assert "ring-4" in (page.query_selector_all(".photo-card")[1].get_attribute("class"))
def test_lightbox_opens_and_closes(base_url, page):
_open(page, base_url)
page.click("text=Venice")
page.wait_for_selector(".photo-card")
page.keyboard.press("ArrowRight")
page.keyboard.press("Enter")
assert page.is_visible("#lb")
page.keyboard.press("Escape")
page.wait_for_selector("#lb", state="hidden")
def test_cluster_switching_with_brackets(base_url, page):
_open(page, base_url)
page.click("text=Venice")
page.wait_for_selector(".photo-card")
page.keyboard.press("]") # move to the next cluster
page.wait_for_function(
"document.querySelectorAll('.photo-card').length === 1") # Rome has 1 photo
def test_approve_updates_status(base_url, page):
_open(page, base_url)
page.click("text=Venice")
page.wait_for_selector("#cluster-name")
page.once("dialog", lambda d: d.accept()) # no dialog expected, but be safe
page.click("text=Approve (A)")
page.wait_for_selector("text=approved")
assert "approved" in page.inner_text("body")