Skip to content

Commit 3a4bc61

Browse files
committed
Run test webserver within main async loop
1 parent ee2d44f commit 3a4bc61

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/reactpy/testing/backend.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ async def __aenter__(self) -> BackendFixture:
121121
self.log_records = self._exit_stack.enter_context(capture_reactpy_logs())
122122

123123
# Wait for the server to start
124-
Thread(target=self.webserver.run, daemon=True).start()
124+
self.webserver.config.setup_event_loop()
125+
self.webserver_task = asyncio.create_task(self.webserver.serve())
125126
await asyncio.sleep(1)
126127

127128
return self
@@ -139,9 +140,8 @@ async def __aexit__(
139140
msg = "Unexpected logged exception"
140141
raise LogAssertionError(msg) from logged_errors[0]
141142

142-
await asyncio.wait_for(
143-
self.webserver.shutdown(), timeout=90 if GITHUB_ACTIONS else 5
144-
)
143+
await self.webserver.shutdown()
144+
self.webserver_task.cancel()
145145

146146
async def restart(self) -> None:
147147
"""Restart the server"""

tests/test_asgi/test_standalone.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import asyncio
12
from collections.abc import MutableMapping
23

34
import pytest
@@ -155,8 +156,8 @@ def sample():
155156
async with DisplayFixture(backend=server, driver=page) as new_display:
156157
await new_display.show(sample)
157158
url = f"http://{server.host}:{server.port}"
158-
response = request(
159-
"HEAD", url, timeout=REACTPY_TESTS_DEFAULT_TIMEOUT.current
159+
response = await asyncio.to_thread(
160+
request, "HEAD", url, timeout=REACTPY_TESTS_DEFAULT_TIMEOUT.current
160161
)
161162
assert response.status_code == 200
162163
assert response.headers["content-type"] == "text/html; charset=utf-8"

0 commit comments

Comments
 (0)