فهرست منبع

fix(test): fix WebSocket status format and add fast test speed

- WebSocket returns {'type': 'status_update', 'data': {...}}
  Tests now check message.get("data") for status fields
- Add autouse fixture to set speed=500 for faster integration tests
- Restores original speed after each test

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
tuanchris 1 هفته پیش
والد
کامیت
56cef98223
3فایلهای تغییر یافته به همراه37 افزوده شده و 8 حذف شده
  1. 21 0
      tests/integration/conftest.py
  2. 8 4
      tests/integration/test_hardware.py
  3. 8 4
      tests/integration/test_playlist.py

+ 21 - 0
tests/integration/conftest.py

@@ -70,3 +70,24 @@ def serial_connection(hardware_port):
     conn = serial.Serial(hardware_port, baudrate=115200, timeout=2)
     yield conn
     conn.close()
+
+
+@pytest.fixture(autouse=True)
+def fast_test_speed(run_hardware):
+    """Set speed to 500 for faster integration tests.
+
+    This fixture runs automatically for all integration tests.
+    Restores original speed after the test.
+    """
+    if not run_hardware:
+        yield
+        return
+
+    from modules.core.state import state
+
+    original_speed = state.speed
+    state.speed = 500  # Fast speed for tests
+
+    yield
+
+    state.speed = original_speed  # Restore original speed

+ 8 - 4
tests/integration/test_hardware.py

@@ -409,11 +409,15 @@ class TestWebSocketConnection:
         # Connect to WebSocket
         with client.websocket_connect("/ws/status") as websocket:
             # Should receive initial status
-            data = websocket.receive_json()
+            message = websocket.receive_json()
 
-            # Verify status structure
-            assert "is_running" in data or "current_file" in data, \
-                f"Unexpected status format: {data}"
+            # Status format is {'type': 'status_update', 'data': {...}}
+            assert message.get("type") == "status_update", \
+                f"Expected type='status_update', got: {message}"
+
+            data = message.get("data", {})
+            assert "is_running" in data, \
+                f"Expected 'is_running' in data, got: {data.keys()}"
 
             print(f"Received WebSocket status: {data}")
 

+ 8 - 4
tests/integration/test_playlist.py

@@ -458,13 +458,17 @@ class TestWebSocketStatus:
             client = TestClient(app)
 
             with client.websocket_connect("/ws/status") as websocket:
-                data = websocket.receive_json()
+                message = websocket.receive_json()
 
+                # Status format is {'type': 'status_update', 'data': {...}}
+                assert message.get("type") == "status_update", \
+                    f"Expected type='status_update', got: {message}"
+
+                data = message.get("data", {})
                 print(f"WebSocket status: {data}")
 
-                # Should reflect running state
-                # The exact fields depend on your broadcast_status implementation
-                assert isinstance(data, dict), "Status should be a dict"
+                # Should have expected status fields
+                assert "is_running" in data, f"Expected 'is_running' in data"
 
             loop.run_until_complete(pattern_manager.stop_actions())