mirror of
https://github.com/trycua/computer.git
synced 2025-12-31 18:40:04 -06:00
- Add separate test directories for all 7 packages (core, agent, computer, computer-server, mcp-server, pylume, som) - Create 30+ unit tests with mocks for external dependencies (liteLLM, PostHog, Computer) - Add conftest.py fixtures for each package to enable isolated testing - Implement GitHub Actions CI workflow with matrix strategy to test each package independently - Add TESTING.md with comprehensive testing guide and architecture documentation - Follow SOLID principles: SRP, Vertical Slice Architecture, and Testability as Design Signal Note: - No API keys required for unit tests
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""Pytest configuration and shared fixtures for computer-server package tests.
|
|
|
|
This file contains shared fixtures and configuration for all computer-server tests.
|
|
Following SRP: This file ONLY handles test setup/teardown.
|
|
"""
|
|
|
|
import pytest
|
|
from unittest.mock import Mock, AsyncMock, patch
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_websocket():
|
|
"""Mock WebSocket connection for testing.
|
|
|
|
Use this fixture to test WebSocket logic without real connections.
|
|
"""
|
|
websocket = AsyncMock()
|
|
websocket.send = AsyncMock()
|
|
websocket.recv = AsyncMock()
|
|
websocket.close = AsyncMock()
|
|
|
|
return websocket
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_computer_interface():
|
|
"""Mock computer interface for server tests.
|
|
|
|
Use this fixture to test server logic without real computer operations.
|
|
"""
|
|
interface = AsyncMock()
|
|
interface.screenshot = AsyncMock(return_value=b"fake_screenshot")
|
|
interface.left_click = AsyncMock()
|
|
interface.type = AsyncMock()
|
|
interface.key = AsyncMock()
|
|
|
|
return interface
|
|
|
|
|
|
@pytest.fixture
|
|
def disable_telemetry(monkeypatch):
|
|
"""Disable telemetry for tests.
|
|
|
|
Use this fixture to ensure no telemetry is sent during tests.
|
|
"""
|
|
monkeypatch.setenv("CUA_TELEMETRY_DISABLED", "1")
|