From fa0f57e534b10cbecd69cd56422196d3f9669af8 Mon Sep 17 00:00:00 2001 From: Logan Johnson Date: Fri, 28 Aug 2026 14:03:47 -0400 Subject: [PATCH] Handle background heartbeat in wake replay fixture Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson --- .../src/workflow_wake_recovery_tests.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/buzz-acp/src/workflow_wake_recovery_tests.rs b/crates/buzz-acp/src/workflow_wake_recovery_tests.rs index d64d1efb9a..07c736ef9d 100644 --- a/crates/buzz-acp/src/workflow_wake_recovery_tests.rs +++ b/crates/buzz-acp/src/workflow_wake_recovery_tests.rs @@ -97,7 +97,7 @@ async fn exhausted_authority_failure_replays_exact_wake_and_verifies_before_disp ) .await .unwrap(); - let initial = next_test_frame(&mut server).await; + let initial = next_data_frame(&mut server).await; let frame = json!(["EVENT", channel_sub_id(channel), wake]).to_string(); server .send(Message::Text(frame.clone().into())) @@ -126,7 +126,7 @@ async fn exhausted_authority_failure_replays_exact_wake_and_verifies_before_disp ) .await .unwrap(); - let replay = next_test_frame(&mut server).await; + let replay = next_data_frame(&mut server).await; assert_eq!(replay[0], "REQ"); assert_eq!(replay[1], initial[1]); assert_eq!(replay[2]["kinds"], json!([KIND_WORKFLOW_MENTION_WAKE])); @@ -166,3 +166,17 @@ async fn exhausted_authority_failure_replays_exact_wake_and_verifies_before_disp http_server.await.unwrap(); harness.shutdown().await; } + +async fn next_data_frame(server: &mut WebSocketStream) -> Value { + timeout(Duration::from_secs(2), async { + loop { + match server.next().await.expect("websocket open").expect("frame") { + Message::Text(text) => return serde_json::from_str(&text).expect("JSON frame"), + Message::Ping(payload) => server.send(Message::Pong(payload)).await.expect("pong"), + other => panic!("unexpected frame {other:?}"), + } + } + }) + .await + .expect("data frame before timeout") +}