diff options
Diffstat (limited to 'crocoite/test_browser.py')
-rw-r--r-- | crocoite/test_browser.py | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/crocoite/test_browser.py b/crocoite/test_browser.py index 713c434..7084214 100644 --- a/crocoite/test_browser.py +++ b/crocoite/test_browser.py @@ -34,7 +34,7 @@ import pytest from .browser import RequestResponsePair, SiteLoader, Request, \ UnicodeBody, ReferenceTimestamp, Base64Body, UnicodeBody, Request, \ - Response, NavigateError, PageIdle + Response, NavigateError, PageIdle, FrameNavigated from .logger import Logger, Consumer from .devtools import Crashed, Process @@ -336,33 +336,47 @@ async def test_integration_item (loader, golden): runner = web.AppRunner(app) await runner.setup() site = web.TCPSite(runner, serverUrl.host, serverUrl.port) - await site.start() + try: + await site.start() + except Exception as e: + pytest.skip (e) + haveReqResp = False + haveNavigated = False try: await loader.navigate (golden.url) it = loader.__aiter__ () while True: - item = await it.__anext__ () - if isinstance (item, RequestResponsePair): + try: + item = await asyncio.wait_for (it.__anext__ (), timeout=1) + except asyncio.TimeoutError: break - - # we do not know this in advance - item.request.initiator = None - item.request.headers = None - item.remoteIpAddress = None - item.protocol = None - item.resourceType = None - - if item.response: - assert item.response.statusText is not None - item.response.statusText = None - - del item.response.headers['server'] - del item.response.headers['content-length'] - del item.response.headers['date'] - assert item == golden + # XXX: can only check the first req/resp right now (due to redirect) + if isinstance (item, RequestResponsePair) and not haveReqResp: + # we do not know this in advance + item.request.initiator = None + item.request.headers = None + item.remoteIpAddress = None + item.protocol = None + item.resourceType = None + + if item.response: + assert item.response.statusText is not None + item.response.statusText = None + + del item.response.headers['server'] + del item.response.headers['content-length'] + del item.response.headers['date'] + assert item == golden + haveReqResp = True + elif isinstance (item, FrameNavigated): + # XXX: can’t check this, because of the redirect + #assert item.url == golden.url + haveNavigated = True finally: + assert haveReqResp + assert haveNavigated await runner.cleanup () def test_page_idle (): |