test(trip-cluster): Playwright UI — grid nav, lightbox, cluster switching, approve
This commit is contained in:
@@ -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")
|
||||
Reference in New Issue
Block a user