In the Playwright tests for datasette-cluster-map I wanted to assert that two markers had been displayed on a Leaflet map.
Since the map can take a little while to load, I wanted to run an assertion that would keep trying for up to a deadline to see if those elements had become available.
Here's how to do that in a Playwright Python test:
from playwright.sync_api import expect
def test_markers_are_displayed(ds_server, page):
page.goto(ds_server + "/data/latitude_longitude")
# There should be two leaflet-marker-icons
expect(page.locator(".leaflet-marker-icon")).to_have_count(2)
The page
and ds_server
fixtures are explained in this TIL.
page.locator()
returns a Locator, described by Playwright's documentation as "the central piece of Playwright's auto-waiting and retry-ability".
Here's the documentation for to_have_count() - it takes an optional second timeout
floating point argument which defaults to 5.0 seconds.
Initially I tried using the page.locator(...).all()
method, but this doesn't wait for matching elements to become available.
Created 2024-01-13T10:23:14-08:00 · Edit