diff --git a/codex-rs/core/tests/suite/realtime_conversation.rs b/codex-rs/core/tests/suite/realtime_conversation.rs index 4a9d557c6a..745439ebf3 100644 --- a/codex-rs/core/tests/suite/realtime_conversation.rs +++ b/codex-rs/core/tests/suite/realtime_conversation.rs @@ -2110,19 +2110,26 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() -> skip_if_no_network!(Ok(())); - let server = start_websocket_server(vec![ - vec![], - vec![vec![json!({ - "type": "session.updated", - "session": { "id": "sess_env", "instructions": "backend prompt" } - })]], - ]) + // Startup prewarm can reconnect after the empty connection closes. Keep its + // Responses requests from consuming the realtime session's scripted reply. + let startup_server = start_websocket_server(vec![vec![]]).await; + let server = start_websocket_server(vec![vec![vec![json!({ + "type": "session.updated", + "session": { "id": "sess_env", "instructions": "backend prompt" } + })]]]) .await; - let mut builder = test_codex().with_auth(CodexAuth::create_dummy_chatgpt_auth_for_testing()); - let test = builder.build_with_websocket_server(&server).await?; + let mut builder = test_codex() + .with_auth(CodexAuth::create_dummy_chatgpt_auth_for_testing()) + .with_config({ + let realtime_base_url = server.uri().to_string(); + move |config| { + config.experimental_realtime_ws_base_url = Some(realtime_base_url); + } + }); + let test = builder.build_with_websocket_server(&startup_server).await?; assert!( - server + startup_server .wait_for_handshakes(/*expected*/ 1, Duration::from_secs(2)) .await ); @@ -2174,8 +2181,9 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() -> .await; assert_eq!(session_updated, "sess_env"); + assert_eq!(server.handshakes().len(), 1); assert_eq!( - server.handshakes()[1].header("authorization").as_deref(), + server.handshakes()[0].header("authorization").as_deref(), Some("Bearer env-realtime-key") ); @@ -2186,6 +2194,7 @@ async fn conversation_start_uses_openai_env_key_fallback_with_chatgpt_auth() -> }) .await; + startup_server.shutdown().await; server.shutdown().await; Ok(()) }