From 9c1de8ebb7b9e00bc6afc9f2ed2978a003d9abd8 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Tue, 18 Jun 2019 16:57:29 +0200 Subject: Re-inject behavior scripts on site reload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #13. Event handler’s push() is async now. --- crocoite/test_browser.py | 54 ++++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 20 deletions(-) (limited to 'crocoite/test_browser.py') 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 (): -- cgit v1.2.3