diff --git a/crates/ely_app/src/shell/web_surface_live_site_tests.rs b/crates/ely_app/src/shell/web_surface_live_site_tests.rs index 81d4d15..ba6b6f3 100644 --- a/crates/ely_app/src/shell/web_surface_live_site_tests.rs +++ b/crates/ely_app/src/shell/web_surface_live_site_tests.rs @@ -205,16 +205,21 @@ fn wait_for_ready_frame( case: &LiveSiteCase, ) -> Result { let started_at = Instant::now(); + let mut last_error = None; loop { if started_at.elapsed() >= LIVE_SITE_WAIT_TIMEOUT { - return Err(format!("timed out rendering {}", case.url)); + return Err(last_error.unwrap_or_else(|| format!("timed out rendering {}", case.url))); } store.tick(std::slice::from_ref(tab_id)); match store.state(tab_id) { Some(WebSurfaceState::Ready(frame)) => { - validate_prd_frame(frame, case, 0)?; + if let Err(error) = validate_prd_frame(frame, case, 0) { + last_error = Some(error); + thread::sleep(LIVE_SITE_WAIT_INTERVAL); + continue; + } return Ok(frame.clone()); } Some(WebSurfaceState::Failed { message, .. }) => {