Skip to main content
Glama

MCPControl

screenshot.test.ts3.66 kB
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { getScreenshot } from './screenshot'; import { createAutomationProvider } from '../providers/factory'; // Mock the factory module vi.mock('../providers/factory', () => ({ createAutomationProvider: vi.fn(), })); describe('Screenshot Functions', () => { beforeEach(() => { vi.resetAllMocks(); }); afterEach(() => { vi.restoreAllMocks(); vi.clearAllMocks(); }); describe('getScreenshot', () => { it('should delegate to provider and return screenshot data on success', async () => { // Setup mock provider const mockProvider = { screen: { getScreenshot: vi.fn().mockResolvedValue({ success: true, message: 'Screenshot captured successfully', content: [ { type: 'image', data: 'test-image-data-base64', mimeType: 'image/png', }, ], }), }, }; // Make createAutomationProvider return our mock vi.mocked(createAutomationProvider).mockReturnValue(mockProvider as any); // Execute const result = await getScreenshot(); // Verify expect(createAutomationProvider).toHaveBeenCalledTimes(1); expect(mockProvider.screen.getScreenshot).toHaveBeenCalledTimes(1); expect(result).toEqual({ success: true, message: 'Screenshot captured successfully', content: [ { type: 'image', data: 'test-image-data-base64', mimeType: 'image/png', }, ], }); }); it('should pass options to provider when specified', async () => { // Setup mock provider const mockProvider = { screen: { getScreenshot: vi.fn().mockResolvedValue({ success: true, message: 'Screenshot captured successfully', content: [ { type: 'image', data: 'test-image-data-base64', mimeType: 'image/jpeg', }, ], }), }, }; // Make createAutomationProvider return our mock vi.mocked(createAutomationProvider).mockReturnValue(mockProvider as any); // Options to pass const options = { region: { x: 100, y: 100, width: 800, height: 600 }, format: 'jpeg' as const, }; // Execute const result = await getScreenshot(options); // Verify expect(createAutomationProvider).toHaveBeenCalledTimes(1); expect(mockProvider.screen.getScreenshot).toHaveBeenCalledWith(options); expect(result).toEqual({ success: true, message: 'Screenshot captured successfully', content: [ { type: 'image', data: 'test-image-data-base64', mimeType: 'image/jpeg', }, ], }); }); it('should return error response when provider throws an error', async () => { // Setup mock provider that throws const mockProvider = { screen: { getScreenshot: vi.fn().mockImplementation(() => { throw new Error('Capture failed'); }), }, }; // Make createAutomationProvider return our mock vi.mocked(createAutomationProvider).mockReturnValue(mockProvider as any); // Execute const result = await getScreenshot(); // Verify expect(result).toEqual({ success: false, message: 'Failed to capture screenshot: Capture failed', }); }); }); });

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