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