#!/usr/bin/env python3 """ Test the consilium_roundtable component """ import gradio as gr import json from gradio_consilium_roundtable import consilium_roundtable def test_roundtable(): """Test the roundtable with different avatar formats""" with gr.Blocks() as demo: gr.Markdown("# Testing Consilium Roundtable Component") # Test 1: Emoji avatars test_state_emoji = { "participants": [ {"name": "Ueli", "avatar": "🇨🇭", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True}, {"name": "Sepp", "avatar": "🥨", "message": "Servus!", "is_thinking": False, "is_current_speaker": False}, {"name": "Karl", "avatar": "🏰", "message": "Grüß Gott!", "is_thinking": False, "is_current_speaker": False}, ], "current_speaker": "Ueli", "round": 1 } # Test 2: No avatars test_state_no_avatar = { "participants": [ {"name": "Ueli", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True}, {"name": "Sepp", "message": "Servus!", "is_thinking": False, "is_current_speaker": False}, {"name": "Karl", "message": "Grüß Gott!", "is_thinking": False, "is_current_speaker": False}, ], "current_speaker": "Ueli", "round": 1 } # Test 3: URL avatars test_state_url = { "participants": [ {"name": "Ueli", "avatar": "https://via.placeholder.com/50", "message": "Hallo!", "is_thinking": False, "is_current_speaker": True}, {"name": "Sepp", "avatar": "https://via.placeholder.com/50", "message": "Servus!", "is_thinking": False, "is_current_speaker": False}, ], "current_speaker": "Ueli", "round": 1 } gr.Markdown("## Test 1: Emoji Avatars") rt1 = consilium_roundtable( value=json.dumps(test_state_emoji), label="Emoji Avatars" ) gr.Markdown("## Test 2: No Avatars") rt2 = consilium_roundtable( value=json.dumps(test_state_no_avatar), label="No Avatars" ) gr.Markdown("## Test 3: URL Avatars") rt3 = consilium_roundtable( value=json.dumps(test_state_url), label="URL Avatars" ) # Button to update state update_btn = gr.Button("Update States") def update_all(): new_state = { "participants": [ {"name": "Test1", "avatar": "🎯", "message": "Updated!", "is_thinking": True, "is_current_speaker": False}, {"name": "Test2", "avatar": "🎨", "message": "Changed!", "is_thinking": False, "is_current_speaker": True}, ], "current_speaker": "Test2", "round": 2 } return json.dumps(new_state), json.dumps(new_state), json.dumps(new_state) update_btn.click( update_all, outputs=[rt1, rt2, rt3] ) return demo if __name__ == "__main__": print("Testing consilium_roundtable component...") demo = test_roundtable() demo.launch()