"""Does time.sleep in Playwright's sync API delay event handlers? A neutral page, two ways of waiting."""
import time, sys
from playwright.sync_api import sync_playwright
from importlib.metadata import version; print("playwright", version("playwright"))
URL = sys.argv[1] if len(sys.argv) > 1 else "https://example.com/"
def trial(p, how):
    b = p.chromium.launch(); page = b.new_page()
    seen = []
    page.on("load", lambda: seen.append(("load", time.time())))
    page.on("requestfinished", lambda r: seen.append(("req", time.time())))
    t0 = time.time()
    page.goto(URL, wait_until="commit")          # returns before load
    t1 = time.time()
    if how == "sleep": time.sleep(5)
    else: page.wait_for_timeout(5000)
    after_wait = [(k, round(t - t0, 2)) for k, t in seen]
    page.title()                                    # any call into Playwright
    after_call = [(k, round(t - t0, 2)) for k, t in seen]
    b.close()
    return round(t1 - t0, 2), after_wait, after_call
with sync_playwright() as p:
    for how in ("sleep", "wait_for_timeout", "sleep", "wait_for_timeout"):
        g, a, c = trial(p, how)
        print(f"{how:17s} goto(commit) {g}s | seen when the wait ended: {a} | after one more call: {c}")
