Skip to content

Commit 71e18f2

Browse files
committed
fix: reset page.redirect_url before browsing to prevent false errors … (#441)
* fix: reset page.redirect_url before browsing to prevent false errors in retry loops * chore: formatting unit test * chore: more formatting * chore: refactor reset of page.redirect_url
1 parent 62485f6 commit 71e18f2

3 files changed

Lines changed: 19 additions & 0 deletions

File tree

brozzler/model.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ def __str__(self):
445445
def note_redirect(self, url):
446446
self.redirect_url = url
447447

448+
def clear_redirect(self):
449+
self.redirect_url = None
450+
448451
def _calc_priority(self):
449452
if not self.url:
450453
return None

brozzler/worker.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,7 @@ def _on_service_worker_version_updated(chrome_msg):
580580
window_width=self._window_width,
581581
headless=self._headless,
582582
)
583+
page.clear_redirect()
583584
final_page_url, outlinks = browser.browse_page(
584585
page.url,
585586
extra_headers=site.extra_headers(page),

tests/test_brozzling.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,3 +398,18 @@ def test_network_monitoring(httpd):
398398
# 3 second request + 2 seconds idle = 5 seconds
399399
elapsed = time.time() - start
400400
assert 5 < elapsed < 6
401+
402+
403+
def test_chrome_error(httpd):
404+
chrome_exe = brozzler.suggest_default_chrome_exe()
405+
url = "http://nonexistent.invalid"
406+
worker = brozzler.BrozzlerWorker(None)
407+
site = brozzler.Site(None, {})
408+
page = brozzler.Page(None, {"url": url})
409+
with brozzler.Browser(chrome_exe=chrome_exe) as browser:
410+
with pytest.raises(brozzler.PageConnectionError):
411+
worker.brozzle_page(browser, site, page)
412+
assert page.redirect_url and page.redirect_url.startswith("chrome-error:")
413+
page.url = "http://localhost:%s/site1/" % httpd.server_port
414+
worker.brozzle_page(browser, site, page)
415+
assert not (page.redirect_url and page.redirect_url.startswith("chrome-error:"))

0 commit comments

Comments
 (0)