From d0120ef56c0ec11c60a87d719cd24567a024ff3c Mon Sep 17 00:00:00 2001 From: Min RK Date: Mon, 24 Mar 2025 13:11:33 +0100 Subject: [PATCH 1/2] don't keep waiting for log messages after we've received what we expect avoids potential race waiting for an element on he progress page after navigating away --- jupyterhub/tests/browser/test_browser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jupyterhub/tests/browser/test_browser.py b/jupyterhub/tests/browser/test_browser.py index f604f5cc..d954597a 100644 --- a/jupyterhub/tests/browser/test_browser.py +++ b/jupyterhub/tests/browser/test_browser.py @@ -291,7 +291,8 @@ async def test_spawn_pending_progress( "Spawning server...", f"Server ready at {app.base_url}user/{urlname}/", ] - while not user.spawner.ready: + logs_list = [] + while not user.spawner.ready and len(logs_list) < len(expected_messages): logs_list = [ await log.text_content() for log in await browser.locator("div.progress-log-event").all() From 470d7624a3df47bfd8360f00c5105c3f3ad9fcf5 Mon Sep 17 00:00:00 2001 From: Min RK Date: Mon, 24 Mar 2025 13:11:53 +0100 Subject: [PATCH 2/2] show timestamps in captured logs for easier debugging of timelines --- pytest.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pytest.ini b/pytest.ini index 308a464b..8b52c688 100644 --- a/pytest.ini +++ b/pytest.ini @@ -11,6 +11,9 @@ asyncio_default_fixture_loop_scope = module # jupyter_server plugin is incompatible with notebook imports addopts = -p no:jupyter_server -m 'not browser' --color yes --durations 10 --verbose +log_format = %(asctime)s %(levelname)s %(filename)s:%(lineno)s %(message)s +log_date_format = %H:%M:%S + python_files = test_*.py markers = gen_test: marks an async tornado test