test(workspace): add simulation test for layout restoration
This commit is contained in:
@@ -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.")
|
||||
Reference in New Issue
Block a user