diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2019-06-18 13:41:53 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2019-06-18 13:41:53 +0200 |
commit | b4669705fa8e581c17bbe0ca0c7cf4fadbd3deb8 (patch) | |
tree | b64aa972023caed27ab5158e4e49aecb008a4bdf /crocoite/test_browser.py | |
parent | c33431e6c5ccf5c0b274e2ed9c21ddf776759b67 (diff) | |
download | crocoite-b4669705fa8e581c17bbe0ca0c7cf4fadbd3deb8.tar.gz crocoite-b4669705fa8e581c17bbe0ca0c7cf4fadbd3deb8.tar.bz2 crocoite-b4669705fa8e581c17bbe0ca0c7cf4fadbd3deb8.zip |
Fix idle state tracking race condition
Closes #16. Expose SiteLoader’s page idle changes through events and
move state tracking into controller event handler. Relies on tracking
time instead of asyncio event, which is more reliable.
Diffstat (limited to 'crocoite/test_browser.py')
-rw-r--r-- | crocoite/test_browser.py | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/crocoite/test_browser.py b/crocoite/test_browser.py index 6341bd6..713c434 100644 --- a/crocoite/test_browser.py +++ b/crocoite/test_browser.py @@ -32,9 +32,9 @@ import hypothesis.strategies as st from hypothesis.provisional import domains import pytest -from .browser import RequestResponsePair, SiteLoader, VarChangeEvent, Request, \ +from .browser import RequestResponsePair, SiteLoader, Request, \ UnicodeBody, ReferenceTimestamp, Base64Body, UnicodeBody, Request, \ - Response, NavigateError + Response, NavigateError, PageIdle from .logger import Logger, Consumer from .devtools import Crashed, Process @@ -79,29 +79,6 @@ async def test_invalidurl (loader): else: pytest.skip (f'host {host} resolved to {resolved}') -@pytest.mark.asyncio -async def test_varchangeevent (): - e = VarChangeEvent (True) - assert e.get () == True - - # no change at all - w = asyncio.ensure_future (e.wait ()) - finished, pending = await asyncio.wait ([w], timeout=0.1) - assert not finished and pending - - # no change - e.set (True) - finished, pending = await asyncio.wait ([w], timeout=0.1) - assert not finished and pending - - # changed - e.set (False) - await asyncio.sleep (0.1) # XXX: is there a yield() ? - assert w.done () - ret = w.result () - assert ret == False - assert e.get () == ret - timestamp = st.one_of ( st.integers(min_value=0, max_value=2**32-1), st.floats (min_value=0, max_value=2**32-1), @@ -365,7 +342,10 @@ async def test_integration_item (loader, golden): await loader.navigate (golden.url) it = loader.__aiter__ () - item = await it.__anext__ () + while True: + item = await it.__anext__ () + if isinstance (item, RequestResponsePair): + break # we do not know this in advance item.request.initiator = None @@ -385,3 +365,9 @@ async def test_integration_item (loader, golden): finally: await runner.cleanup () +def test_page_idle (): + for v in (True, False): + idle = PageIdle (v) + assert bool (idle) == v + + |