Log PRD site rendering evidence

This commit is contained in:
2026-05-09 03:23:39 -04:00
parent 8b02d7cdfd
commit 928bb3cfb0
3 changed files with 43 additions and 2 deletions
@@ -58,6 +58,7 @@ fn assert_web_surfaces_render(cases: &[LiveSiteCase]) -> Result<(), Box<dyn Erro
)?;
assert_prd_frame_is_ready(&frame, case);
log_prd_frame("web-surface", &frame, case);
store.finish(tab_id, WebSurfaceState::Ready(frame));
let Some(WebSurfaceState::Ready(frame)) = store.state(tab.id()) else {
return Err(format!("web surface state is not ready for {}", case.url).into());
@@ -84,6 +85,21 @@ fn assert_prd_frame_is_ready(frame: &WebSurfaceFrame, case: &LiveSiteCase) {
assert!(frame.sample_hash() > 0, "{}", case.url);
}
fn log_prd_frame(label: &str, frame: &WebSurfaceFrame, case: &LiveSiteCase) {
eprintln!(
"prd-live-site {label} url={} loaded={} title={} state={} size={}x{} content_pixels={} non_white_pixels={} sample_hash={}",
case.url,
frame.url_label(),
frame.title_label(),
frame.render_state(),
frame.size().width,
frame.size().height,
frame.content_pixel_count(),
frame.non_white_pixel_count(),
frame.sample_hash()
);
}
fn assert_render_state_is_open(state: &str, url: &str) {
assert!(matches!(state, "complete" | "loading"), "{url} state: {state}");
}
@@ -98,6 +98,8 @@ pub(super) fn snapshot_prd_site(
assert!(report_field_as_u64(&report, "sample_hash")? > 0, "{}", case.url);
assert_eq!(std::fs::metadata(&output_path)?.len(), size.width * size.height * 4);
log_prd_report(&report, case, size)?;
std::fs::remove_file(&output_path)?;
Ok(report)
}
@@ -343,6 +345,26 @@ fn assert_report_state_is_renderable(report: &serde_json::Value) -> Result<(), B
Ok(())
}
fn log_prd_report(
report: &serde_json::Value,
case: &PrdSiteCompatibilityCase,
size: FrameSize,
) -> Result<(), Box<dyn Error>> {
eprintln!(
"prd-live-site servo-sidecar url={} loaded={} title={} state={} size={}x{} content_pixels={} non_white_pixels={} sample_hash={}",
case.url,
report_field_as_text(report, "loaded_url")?,
report_field_as_text(report, "title")?,
report_field_as_text(report, "state")?,
size.width,
size.height,
report_field_as_u64(report, "content_pixel_count")?,
report_field_as_u64(report, "non_white_pixel_count")?,
report_field_as_u64(report, "sample_hash")?
);
Ok(())
}
fn report_field_as_text<'a>(
report: &'a serde_json::Value,
field: &'static str,