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); assert_prd_frame_is_ready(&frame, case);
log_prd_frame("web-surface", &frame, case);
store.finish(tab_id, WebSurfaceState::Ready(frame)); store.finish(tab_id, WebSurfaceState::Ready(frame));
let Some(WebSurfaceState::Ready(frame)) = store.state(tab.id()) else { let Some(WebSurfaceState::Ready(frame)) = store.state(tab.id()) else {
return Err(format!("web surface state is not ready for {}", case.url).into()); 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); 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) { fn assert_render_state_is_open(state: &str, url: &str) {
assert!(matches!(state, "complete" | "loading"), "{url} state: {state}"); 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!(report_field_as_u64(&report, "sample_hash")? > 0, "{}", case.url);
assert_eq!(std::fs::metadata(&output_path)?.len(), size.width * size.height * 4); 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)?; std::fs::remove_file(&output_path)?;
Ok(report) Ok(report)
} }
@@ -343,6 +345,26 @@ fn assert_report_state_is_renderable(report: &serde_json::Value) -> Result<(), B
Ok(()) 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>( fn report_field_as_text<'a>(
report: &'a serde_json::Value, report: &'a serde_json::Value,
field: &'static str, field: &'static str,
+5 -2
View File
@@ -1,5 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
cargo test -p ely_app --features live-site-smoke --all-targets -- --test-threads=1 echo "Verifying PRD live sites through the GPUI web surface adapter"
cargo test -p ely_servo_host --features servo-engine --test sidecar -- --test-threads=1 cargo test -p ely_app --features live-site-smoke --all-targets -- --test-threads=1 --nocapture
echo "Verifying PRD live sites through Servo sidecar RGBA snapshots"
cargo test -p ely_servo_host --features servo-engine --test sidecar -- --test-threads=1 --nocapture