Skip to main content
Glama
image.test.ts4.2 kB
import { describe, it, expect, vi } from 'vitest'; // Mock sharp module for testing without actual image processing vi.mock('sharp', () => ({ default: vi.fn(() => ({ metadata: vi.fn().mockResolvedValue({ width: 1080, height: 2340 }), resize: vi.fn().mockReturnThis(), jpeg: vi.fn().mockReturnThis(), png: vi.fn().mockReturnThis(), toBuffer: vi.fn().mockResolvedValue(Buffer.from('compressed_image')), })), })); describe('Image Utilities', () => { describe('compressScreenshot', () => { it('should compress image with default quality', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await compressScreenshot(input); // expect(result.compressed).toBe(true); // expect(result.format).toBe('jpeg'); expect(true).toBe(true); }); it('should respect quality parameter', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await compressScreenshot(input, { quality: 80 }); // expect(result.quality).toBe(80); expect(true).toBe(true); }); it('should return base64 encoded data', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await compressScreenshot(input); // expect(typeof result.data).toBe('string'); // Verify it's valid base64 // expect(() => Buffer.from(result.data, 'base64')).not.toThrow(); expect(true).toBe(true); }); it('should include image dimensions', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await compressScreenshot(input); // expect(result.width).toBeGreaterThan(0); // expect(result.height).toBeGreaterThan(0); expect(true).toBe(true); }); it('should calculate size in bytes', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await compressScreenshot(input); // expect(result.sizeBytes).toBeGreaterThan(0); expect(true).toBe(true); }); }); describe('resizeScreenshot', () => { it('should resize image to max dimension', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // const result = await resizeScreenshot(input, { maxDimension: 800 }); // expect(Math.max(result.width, result.height)).toBeLessThanOrEqual(800); expect(true).toBe(true); }); it('should maintain aspect ratio', async () => { // When implemented: // const input = Buffer.from('fake_png_data'); // 1080x2340 // const result = await resizeScreenshot(input, { maxDimension: 540 }); // Original ratio: 1080/2340 = 0.461 // Resized should maintain same ratio expect(true).toBe(true); }); }); describe('Screenshot format handling', () => { it('should detect PNG format', async () => { // PNG magic bytes: 89 50 4E 47 const pngMagic = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); // When implemented: // const format = detectImageFormat(pngMagic); // expect(format).toBe('png'); // Check PNG magic bytes expect(pngMagic[0]).toBe(0x89); expect(pngMagic[1]).toBe(0x50); // 'P' }); it('should detect JPEG format', async () => { // JPEG magic bytes: FF D8 FF const jpegMagic = Buffer.from([0xff, 0xd8, 0xff, 0xe0]); // When implemented: // const format = detectImageFormat(jpegMagic); // expect(format).toBe('jpeg'); expect(jpegMagic[0]).toBe(0xff); expect(jpegMagic[1]).toBe(0xd8); }); }); }); describe('Screenshot Data Structure', () => { it('should have correct structure', () => { const screenshotData = { data: 'base64_encoded_image_data', format: 'jpeg' as const, width: 1080, height: 2340, sizeBytes: 150000, compressed: true, quality: 50, }; expect(screenshotData.format).toBe('jpeg'); expect(screenshotData.compressed).toBe(true); expect(screenshotData.quality).toBe(50); }); });

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/abd3lraouf/specter-mcp'

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