33import asyncio
44import logging
55from contextlib import AsyncExitStack
6- from threading import Thread
76from types import TracebackType
87from typing import Any , Callable
98from urllib .parse import urlencode , urlunparse
1615from reactpy .config import REACTPY_TESTS_DEFAULT_TIMEOUT
1716from reactpy .core .component import component
1817from reactpy .core .hooks import use_callback , use_effect , use_state
19- from reactpy .testing .common import GITHUB_ACTIONS
2018from reactpy .testing .logs import (
2119 LogAssertionError ,
2220 capture_reactpy_logs ,
@@ -121,7 +119,8 @@ async def __aenter__(self) -> BackendFixture:
121119 self .log_records = self ._exit_stack .enter_context (capture_reactpy_logs ())
122120
123121 # Wait for the server to start
124- Thread (target = self .webserver .run , daemon = True ).start ()
122+ self .webserver .config .setup_event_loop ()
123+ self .webserver_task = asyncio .create_task (self .webserver .serve ())
125124 await asyncio .sleep (1 )
126125
127126 return self
@@ -139,9 +138,8 @@ async def __aexit__(
139138 msg = "Unexpected logged exception"
140139 raise LogAssertionError (msg ) from logged_errors [0 ]
141140
142- await asyncio .wait_for (
143- self .webserver .shutdown (), timeout = 90 if GITHUB_ACTIONS else 5
144- )
141+ await self .webserver .shutdown ()
142+ self .webserver_task .cancel ()
145143
146144 async def restart (self ) -> None :
147145 """Restart the server"""
0 commit comments