feat(workspace): implement contextual auto-switch layout based on MMA active tier
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import pytest
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src")))
|
||||
|
||||
from src import api_hook_client
|
||||
|
||||
@pytest.mark.integration
|
||||
def test_auto_switch_sim(live_gui):
|
||||
client = api_hook_client.ApiHookClient()
|
||||
assert client.wait_for_server(timeout=15), "Hook server did not start"
|
||||
|
||||
# Reset layout and save a test profile for Tier 3
|
||||
client.set_value('show_windows', {'Diagnostics': True})
|
||||
client.push_event('custom_callback', {'callback': 'save_workspace_profile', 'args': ['Tier3Profile', 'project']})
|
||||
time.sleep(1)
|
||||
|
||||
# Reset layout to something else
|
||||
client.set_value('show_windows', {'Diagnostics': False})
|
||||
|
||||
# Enable auto switch and bind
|
||||
client.set_value('ui_auto_switch_layout', True)
|
||||
client.set_value('ui_tier_layout_bindings', {'Tier 1': '', 'Tier 2': '', 'Tier 3': 'Tier3Profile', 'Tier 4': ''})
|
||||
|
||||
# Send mma_state_update event to trigger Tier 2
|
||||
# Since we can't send raw asyncio events easily via ApiHookClient without a dedicated endpoint,
|
||||
# we can simulate it by setting the active_tier via the Hook API if it triggers the logic,
|
||||
# OR we can just inject an event into the app's event queue via custom_callback.
|
||||
|
||||
def trigger_tier(tier):
|
||||
# Inject mma_state_update task directly via hook API
|
||||
client.push_event("mma_state_update", {"status": "running", "active_tier": tier})
|
||||
|
||||
# First Tier 2
|
||||
trigger_tier('Tier 2 (Tech Lead)')
|
||||
time.sleep(1)
|
||||
assert client.get_value('show_windows').get('Diagnostics', False) == False
|
||||
|
||||
# Then Tier 3
|
||||
trigger_tier('Tier 3 (Worker): task-1')
|
||||
time.sleep(1)
|
||||
|
||||
# Verify
|
||||
assert client.get_value('show_windows').get('Diagnostics', False) == True
|
||||
|
||||
print("Contextual auto-switch simulation PASSED.")
|
||||
Reference in New Issue
Block a user