@@ -250,6 +250,7 @@ defmodule Codex.Realtime.SessionTest do
250250 :ok = Session . subscribe ( session , self ( ) )
251251 :ok = Session . send_message ( session , "first" )
252252 :ok = MockWebSocket . clear_sent_messages ( mock_ws )
253+ drain_websocket_sent_messages ( )
253254
254255 :ok = Session . send_message ( session , "second" )
255256
@@ -272,9 +273,7 @@ defmodule Codex.Realtime.SessionTest do
272273 )
273274
274275 assert_receive { :session_event , % Events.AgentEndEvent { } }
275-
276- messages = MockWebSocket . get_sent_messages ( mock_ws )
277- assert Enum . any? ( messages , & ( & 1 [ "type" ] == "response.create" ) )
276+ assert_receive { :websocket_sent , % { "type" => "response.create" } }
278277
279278 Session . close ( session )
280279 end
@@ -306,6 +305,7 @@ defmodule Codex.Realtime.SessionTest do
306305 :ok = Session . subscribe ( session , self ( ) )
307306 :ok = Session . send_message ( session , "start" )
308307 :ok = MockWebSocket . clear_sent_messages ( mock_ws )
308+ drain_websocket_sent_messages ( )
309309
310310 tool_call =
311311 ModelEvents . tool_call (
@@ -316,17 +316,18 @@ defmodule Codex.Realtime.SessionTest do
316316 )
317317
318318 send ( session , { :model_event , tool_call } )
319- Process . sleep ( 50 )
320319
321- messages = MockWebSocket . get_sent_messages ( mock_ws )
322-
323- assert Enum . any? ( messages , fn msg ->
324- msg [ "type" ] == "conversation.item.create" and
325- get_in ( msg , [ "item" , "type" ] ) == "function_call_output" and
326- get_in ( msg , [ "item" , "call_id" ] ) == "call_overlap"
327- end )
320+ assert_receive { :websocket_sent ,
321+ % {
322+ "type" => "conversation.item.create" ,
323+ "item" => % {
324+ "type" => "function_call_output" ,
325+ "call_id" => "call_overlap"
326+ }
327+ } } ,
328+ 1_000
328329
329- refute Enum . any? ( messages , & ( & 1 [ "type" ] == "response.create" ) )
330+ refute_receive { :websocket_sent , % { "type" => "response.create" } } , 50
330331
331332 send (
332333 session ,
@@ -338,9 +339,7 @@ defmodule Codex.Realtime.SessionTest do
338339 )
339340
340341 assert_receive { :session_event , % Events.AgentEndEvent { } }
341-
342- messages = MockWebSocket . get_sent_messages ( mock_ws )
343- assert Enum . any? ( messages , & ( & 1 [ "type" ] == "response.create" ) )
342+ assert_receive { :websocket_sent , % { "type" => "response.create" } }
344343
345344 Session . close ( session )
346345 end
@@ -1130,4 +1129,12 @@ defmodule Codex.Realtime.SessionTest do
11301129 false
11311130 end
11321131 end
1132+
1133+ defp drain_websocket_sent_messages do
1134+ receive do
1135+ { :websocket_sent , _message } -> drain_websocket_sent_messages ( )
1136+ after
1137+ 0 -> :ok
1138+ end
1139+ end
11331140end
0 commit comments