@@ -216,18 +216,21 @@ async def test_execute_many_success():
216216 """Test execute_many returns ordered command results."""
217217 mock_ws = MockWebSocket ()
218218
219- # Queue responses in reverse order to verify request multiplexing.
220- mock_ws .queue_message ({"id" : 2 , "result" : {"result" : {"type" : "number" , "value" : 2 }}})
221- mock_ws .queue_message ({"id" : 1 , "result" : {"result" : {"type" : "number" , "value" : 1 }}})
222-
223219 with patch ('cdp.connection.websockets.connect' , new_callable = AsyncMock ) as mock_connect :
224220 mock_connect .return_value = mock_ws
225221
226222 async with CDPConnection ("ws://localhost:9222/test" ) as conn :
227- results = await conn .execute_many ([
223+ task = asyncio . create_task ( conn .execute_many ([
228224 runtime .evaluate (expression = "1" ),
229225 runtime .evaluate (expression = "2" ),
230- ])
226+ ]))
227+ await asyncio .sleep (0.05 )
228+
229+ # Queue responses in reverse order to verify request multiplexing.
230+ mock_ws .queue_message ({"id" : 2 , "result" : {"result" : {"type" : "number" , "value" : 2 }}})
231+ mock_ws .queue_message ({"id" : 1 , "result" : {"result" : {"type" : "number" , "value" : 1 }}})
232+
233+ results = await task
231234
232235 assert len (results ) == 2
233236 assert isinstance (results [0 ][0 ], runtime .RemoteObject )
@@ -242,21 +245,24 @@ async def test_execute_many_return_exceptions():
242245 """Test execute_many can collect exceptions instead of raising."""
243246 mock_ws = MockWebSocket ()
244247
245- # First command succeeds, second command fails.
246- mock_ws .queue_message ({"id" : 1 , "result" : {"result" : {"type" : "number" , "value" : 1 }}})
247- mock_ws .queue_message ({"id" : 2 , "error" : {"code" : - 32602 , "message" : "Invalid params" }})
248-
249248 with patch ('cdp.connection.websockets.connect' , new_callable = AsyncMock ) as mock_connect :
250249 mock_connect .return_value = mock_ws
251250
252251 async with CDPConnection ("ws://localhost:9222/test" ) as conn :
253- results = await conn .execute_many (
252+ task = asyncio . create_task ( conn .execute_many (
254253 [
255254 runtime .evaluate (expression = "1" ),
256255 page .navigate (url = "https://example.com" ),
257256 ],
258257 return_exceptions = True ,
259- )
258+ ))
259+ await asyncio .sleep (0.05 )
260+
261+ # First command succeeds, second command fails.
262+ mock_ws .queue_message ({"id" : 1 , "result" : {"result" : {"type" : "number" , "value" : 1 }}})
263+ mock_ws .queue_message ({"id" : 2 , "error" : {"code" : - 32602 , "message" : "Invalid params" }})
264+
265+ results = await task
260266
261267 assert len (results ) == 2
262268 assert isinstance (results [0 ][0 ], runtime .RemoteObject )
@@ -269,14 +275,18 @@ async def test_execute_many_return_exceptions():
269275async def test_execute_many_raises_first_exception_by_default ():
270276 """Test execute_many raises command errors by default."""
271277 mock_ws = MockWebSocket ()
272- mock_ws .queue_message ({"id" : 1 , "error" : {"code" : - 32000 , "message" : "Command failed" }})
273278
274279 with patch ('cdp.connection.websockets.connect' , new_callable = AsyncMock ) as mock_connect :
275280 mock_connect .return_value = mock_ws
276281
277282 async with CDPConnection ("ws://localhost:9222/test" ) as conn :
278283 with pytest .raises (CDPCommandError ) as exc_info :
279- await conn .execute_many ([page .navigate (url = "https://example.com" )])
284+ task = asyncio .create_task (
285+ conn .execute_many ([page .navigate (url = "https://example.com" )])
286+ )
287+ await asyncio .sleep (0.05 )
288+ mock_ws .queue_message ({"id" : 1 , "error" : {"code" : - 32000 , "message" : "Command failed" }})
289+ await task
280290 assert exc_info .value .code == - 32000
281291
282292
0 commit comments