test(workspace): add simulation test for layout restoration

This commit is contained in:
2026-05-05 21:09:58 -04:00
parent eab1945035
commit 41bc8bb597
+81
View File
@@ -0,0 +1,81 @@
import pytest
import time
import sys
import os
from pathlib import Path
# Ensure project root is in path for imports
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_workspace_profiles_restoration(live_gui):
"""
Verifies that workspace profiles can save and restore UI state.
1. Sets a field (ui_separate_tier1) to True.
2. Saves a workspace profile.
3. Resets the field to False.
4. Loads the workspace profile.
5. Verifies the field is restored to True.
"""
client = api_hook_client.ApiHookClient()
assert client.wait_for_server(timeout=20), "Hook server did not start"
# Ensure we are in a clean state
print("Ensuring clean state (ui_separate_tier1=False)...")
client.set_value('ui_separate_tier1', False)
time.sleep(1.0)
# 1. Set a field that is captured in workspace profiles
print("Setting ui_separate_tier1 to True...")
client.set_value('ui_separate_tier1', True)
# Wait for settle
time.sleep(1.0)
# Verify it is set
val_before = client.get_value('ui_separate_tier1')
print(f"Value before save: {val_before}")
assert val_before is True
# 2. Save workspace profile
print("Saving workspace profile 'test_restore'...")
# Using push_event to trigger custom_callback
client.push_event("custom_callback", {
"callback": "save_workspace_profile",
"args": ["test_restore", "project"]
})
# Wait for save to complete and profiles to reload in the controller
time.sleep(2.0)
# 3. Change the field
print("Changing ui_separate_tier1 to False...")
client.set_value('ui_separate_tier1', False)
# Wait for settle
time.sleep(1.0)
# Verify it is changed
val_mid = client.get_value('ui_separate_tier1')
print(f"Value after change: {val_mid}")
assert val_mid is False
# 4. Load the profile
print("Loading workspace profile 'test_restore'...")
client.push_event("custom_callback", {
"callback": "load_workspace_profile",
"args": ["test_restore"]
})
# Wait for load to apply
time.sleep(2.0)
# 5. Verify restoration
restored_value = client.get_value('ui_separate_tier1')
print(f"Restored value: {restored_value}")
assert restored_value is True
print("Workspace profile restoration test PASSED.")