3
3
import asyncio
4
4
import logging
5
5
from contextlib import AsyncExitStack
6
- from threading import Thread
7
6
from types import TracebackType
8
7
from typing import Any , Callable
9
8
from urllib .parse import urlencode , urlunparse
16
15
from reactpy .config import REACTPY_TESTS_DEFAULT_TIMEOUT
17
16
from reactpy .core .component import component
18
17
from reactpy .core .hooks import use_callback , use_effect , use_state
19
- from reactpy .testing .common import GITHUB_ACTIONS
20
18
from reactpy .testing .logs import (
21
19
LogAssertionError ,
22
20
capture_reactpy_logs ,
@@ -121,7 +119,8 @@ async def __aenter__(self) -> BackendFixture:
121
119
self .log_records = self ._exit_stack .enter_context (capture_reactpy_logs ())
122
120
123
121
# 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 ())
125
124
await asyncio .sleep (1 )
126
125
127
126
return self
@@ -139,9 +138,8 @@ async def __aexit__(
139
138
msg = "Unexpected logged exception"
140
139
raise LogAssertionError (msg ) from logged_errors [0 ]
141
140
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 ()
145
143
146
144
async def restart (self ) -> None :
147
145
"""Restart the server"""
0 commit comments