Skip to main content
Glama
test_timing.py4.86 kB
"""Timing tests to verify Cursor timeout requirements are met.""" import subprocess import time import pytest def test_frontend_cold_start_under_cursor_timeout(): """CRITICAL: Frontend must start under Cursor's ~60s timeout.""" # Clear cache to simulate first-time user subprocess.run(["uv", "cache", "clean", "claude-skills-mcp"], capture_output=True) print("\nTesting frontend cold start (cache cleared)...") start_time = time.time() result = subprocess.run( ["uvx", "claude-skills-mcp", "--help"], capture_output=True, text=True, timeout=60, # Cursor's timeout ) elapsed = time.time() - start_time print(f"Frontend startup time: {elapsed:.2f}s") print("Cursor timeout limit: 60s") print(f"Margin: {60 - elapsed:.2f}s") assert result.returncode == 0, f"Frontend failed: {result.stderr}" assert elapsed < 60, ( f"Frontend startup ({elapsed:.2f}s) exceeds Cursor timeout (60s)" ) assert elapsed < 10, ( f"Frontend startup ({elapsed:.2f}s) should be < 10s for good UX" ) print(f"✅ PASS: Frontend starts in {elapsed:.2f}s (well under 60s limit)") def test_frontend_warm_start_very_fast(): """Frontend warm start should be very fast (<5s).""" # Run once to ensure cached subprocess.run( ["uvx", "claude-skills-mcp", "--help"], capture_output=True, timeout=30 ) # Now test warm start print("\nTesting frontend warm start (cached)...") start_time = time.time() result = subprocess.run( ["uvx", "claude-skills-mcp", "--help"], capture_output=True, text=True, timeout=10, ) elapsed = time.time() - start_time print(f"Frontend warm startup time: {elapsed:.2f}s") assert result.returncode == 0 assert elapsed < 5, f"Frontend warm start ({elapsed:.2f}s) should be < 5s" print(f"✅ PASS: Frontend warm start is {elapsed:.2f}s") def test_backend_cold_start_time(): """Measure backend download time (happens in background, doesn't block Cursor).""" # Clear backend cache subprocess.run( ["uv", "cache", "clean", "claude-skills-mcp-backend"], capture_output=True ) print("\nTesting backend cold start (cache cleared)...") print("Note: This happens in BACKGROUND, doesn't block Cursor startup") start_time = time.time() result = subprocess.run( ["uvx", "claude-skills-mcp-backend", "--help"], capture_output=True, text=True, timeout=180, # Give plenty of time for download ) elapsed = time.time() - start_time print(f"Backend download + start time: {elapsed:.2f}s") assert result.returncode == 0, f"Backend failed: {result.stderr}" # Backend can be slow - it downloads in background print( f"✅ Backend downloads in {elapsed:.2f}s (in background, doesn't affect Cursor)" ) def test_backend_warm_start(): """Backend warm start should be faster.""" # Ensure cached subprocess.run( ["uvx", "claude-skills-mcp-backend", "--help"], capture_output=True, timeout=60 ) print("\nTesting backend warm start (cached)...") start_time = time.time() result = subprocess.run( ["uvx", "claude-skills-mcp-backend", "--help"], capture_output=True, text=True, timeout=30, ) elapsed = time.time() - start_time print(f"Backend warm startup time: {elapsed:.2f}s") assert result.returncode == 0 assert elapsed < 20, f"Backend warm start ({elapsed:.2f}s) should be reasonable" print(f"✅ PASS: Backend warm start is {elapsed:.2f}s") def test_package_sizes(): """Verify package sizes are as expected.""" from pathlib import Path # Find project root relative to this test file test_dir = Path(__file__).parent project_root = test_dir.parent.parent # Check frontend wheel size frontend_wheel = project_root / "packages/frontend/dist/claude_skills_mcp-1.0.5-py3-none-any.whl" if frontend_wheel.exists(): size_kb = frontend_wheel.stat().st_size / 1024 print(f"\nFrontend wheel size: {size_kb:.1f} KB") assert size_kb < 50, f"Frontend wheel ({size_kb:.1f} KB) should be < 50 KB" print(f"✅ Frontend is lightweight: {size_kb:.1f} KB") # Check backend wheel size backend_wheel = project_root / "packages/backend/dist/claude_skills_mcp_backend-1.0.6-py3-none-any.whl" if backend_wheel.exists(): size_kb = backend_wheel.stat().st_size / 1024 print( f"Backend wheel size: {size_kb:.1f} KB (source only, dependencies separate)" ) assert size_kb < 100, f"Backend wheel ({size_kb:.1f} KB) should be < 100 KB" print(f"✅ Backend source is {size_kb:.1f} KB") if __name__ == "__main__": pytest.main([__file__, "-v", "-s"])

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OrionLi545/claude-skills-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server