Wait for complete live-site smoke frames

This commit is contained in:
2026-05-13 04:40:14 -04:00
parent 2302a53b39
commit 8238526cc1
@@ -205,16 +205,21 @@ fn wait_for_ready_frame(
case: &LiveSiteCase, case: &LiveSiteCase,
) -> Result<WebSurfaceFrame, String> { ) -> Result<WebSurfaceFrame, String> {
let started_at = Instant::now(); let started_at = Instant::now();
let mut last_error = None;
loop { loop {
if started_at.elapsed() >= LIVE_SITE_WAIT_TIMEOUT { 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)); store.tick(std::slice::from_ref(tab_id));
match store.state(tab_id) { match store.state(tab_id) {
Some(WebSurfaceState::Ready(frame)) => { 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()); return Ok(frame.clone());
} }
Some(WebSurfaceState::Failed { message, .. }) => { Some(WebSurfaceState::Failed { message, .. }) => {