Wait for complete live-site smoke frames
This commit is contained in:
@@ -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, .. }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user