46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
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")
|