Skip to main content
Glama

MCPControl

index.test.ts3.69 kB
import { describe, it, expect, vi, beforeEach } from 'vitest'; import { AutoHotkeyProvider } from './index.js'; // Mock child_process module properly vi.mock('child_process', () => ({ execSync: vi.fn(), exec: vi.fn(), spawn: vi.fn(), fork: vi.fn(), execFile: vi.fn(), })); describe('AutoHotkeyProvider', () => { let provider: AutoHotkeyProvider; beforeEach(() => { provider = new AutoHotkeyProvider(); }); it('should create an instance with all required automation interfaces', () => { expect(provider).toBeDefined(); expect(provider.keyboard).toBeDefined(); expect(provider.mouse).toBeDefined(); expect(provider.screen).toBeDefined(); expect(provider.clipboard).toBeDefined(); }); it('should implement KeyboardAutomation interface', () => { expect(provider.keyboard).toBeDefined(); expect(provider.keyboard.typeText).toBeDefined(); expect(provider.keyboard.pressKey).toBeDefined(); expect(provider.keyboard.pressKeyCombination).toBeDefined(); expect(provider.keyboard.holdKey).toBeDefined(); }); it('should implement MouseAutomation interface', () => { expect(provider.mouse).toBeDefined(); expect(provider.mouse.moveMouse).toBeDefined(); expect(provider.mouse.clickMouse).toBeDefined(); expect(provider.mouse.doubleClick).toBeDefined(); expect(provider.mouse.getCursorPosition).toBeDefined(); expect(provider.mouse.scrollMouse).toBeDefined(); expect(provider.mouse.dragMouse).toBeDefined(); expect(provider.mouse.clickAt).toBeDefined(); }); it('should implement ScreenAutomation interface', () => { expect(provider.screen).toBeDefined(); expect(provider.screen.getScreenSize).toBeDefined(); expect(provider.screen.getActiveWindow).toBeDefined(); expect(provider.screen.focusWindow).toBeDefined(); expect(provider.screen.resizeWindow).toBeDefined(); expect(provider.screen.repositionWindow).toBeDefined(); expect(provider.screen.getScreenshot).toBeDefined(); }); it('should implement ClipboardAutomation interface', () => { expect(provider.clipboard).toBeDefined(); expect(provider.clipboard.getClipboardContent).toBeDefined(); expect(provider.clipboard.setClipboardContent).toBeDefined(); expect(provider.clipboard.hasClipboardText).toBeDefined(); expect(provider.clipboard.clearClipboard).toBeDefined(); }); }); describe('AutoHotkeyProvider - Factory Integration', () => { beforeEach(() => { // Mock the factory module to avoid keysender ELF header issue vi.doMock('../factory.js', () => ({ createAutomationProvider: vi.fn().mockImplementation((config: any) => { if (config?.provider === 'autohotkey' || config?.providers) { return new AutoHotkeyProvider(); } return {}; }), })); }); it('should be available through the factory', async () => { const { createAutomationProvider } = await import('../factory.js'); const provider = createAutomationProvider({ provider: 'autohotkey' }); expect(provider).toBeDefined(); expect(provider).toBeInstanceOf(AutoHotkeyProvider); }); it('should support modular configuration', async () => { const { createAutomationProvider } = await import('../factory.js'); const provider = createAutomationProvider({ providers: { keyboard: 'autohotkey', mouse: 'autohotkey', screen: 'autohotkey', clipboard: 'autohotkey', }, }); expect(provider).toBeDefined(); expect(provider.keyboard).toBeDefined(); expect(provider.mouse).toBeDefined(); expect(provider.screen).toBeDefined(); expect(provider.clipboard).toBeDefined(); }); });

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/claude-did-this/MCPControl'

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