@@ -1769,6 +1769,53 @@ def list_agents(self):
17691769 assert "dotSrc" in response .json ()
17701770
17711771
1772+ def test_build_graph_image_returns_png_bytes ():
1773+ """Ensure legacy graph-image endpoint still returns a PNG for the dev UI."""
1774+ from google .adk .cli .adk_web_server import AdkWebServer
1775+
1776+ root_agent = DummyAgent (name = "dummy_agent" )
1777+ app_agent = App (name = "test_app" , root_agent = root_agent )
1778+
1779+ class Loader :
1780+
1781+ def load_agent (self , app_name ):
1782+ return app_agent
1783+
1784+ def list_agents (self ):
1785+ return [app_agent .name ]
1786+
1787+ adk_web_server = AdkWebServer (
1788+ agent_loader = Loader (),
1789+ session_service = AsyncMock (),
1790+ memory_service = MagicMock (),
1791+ artifact_service = MagicMock (),
1792+ credential_service = MagicMock (),
1793+ eval_sets_manager = MagicMock (),
1794+ eval_set_results_manager = MagicMock (),
1795+ agents_dir = "." ,
1796+ )
1797+
1798+ fast_api_app = adk_web_server .get_fast_api_app (
1799+ setup_observer = lambda _observer , _server : None ,
1800+ tear_down_observer = lambda _observer , _server : None ,
1801+ )
1802+
1803+ client = TestClient (fast_api_app )
1804+
1805+ with patch (
1806+ "google.adk.cli.agent_graph.get_agent_graph" ,
1807+ new = AsyncMock (return_value = b"png-bytes" ),
1808+ ) as mock_get_agent_graph :
1809+ response = client .get ("/dev/build_graph_image/test_app?dark_mode=true" )
1810+
1811+ assert response .status_code == 200
1812+ assert response .content == b"png-bytes"
1813+ assert response .headers ["content-type" ] == "image/png"
1814+ mock_get_agent_graph .assert_awaited_once_with (
1815+ root_agent , [], image = True , dark_mode = True
1816+ )
1817+
1818+
17721819def test_a2a_agent_discovery (test_app_with_a2a ):
17731820 """Test that A2A agents are properly discovered and configured."""
17741821 # This test mainly verifies that the A2A setup doesn't break the app
0 commit comments