82 lines
2.3 KiB
Python
82 lines
2.3 KiB
Python
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.")
|