Skip to main content
Glama

Playwright MCP Server

by pvinis
console.test.ts4.12 kB
import { ConsoleLogsTool } from '../../../tools/browser/console.js'; import { ToolContext } from '../../../tools/common/types.js'; import { jest } from '@jest/globals'; // Mock the server const mockServer = { sendMessage: jest.fn() }; // Mock context const mockContext = { server: mockServer } as ToolContext; describe('ConsoleLogsTool', () => { let consoleLogsTool: ConsoleLogsTool; beforeEach(() => { jest.clearAllMocks(); consoleLogsTool = new ConsoleLogsTool(mockServer); }); test('should register console messages', () => { consoleLogsTool.registerConsoleMessage('log', 'Test log message'); consoleLogsTool.registerConsoleMessage('error', 'Test error message'); consoleLogsTool.registerConsoleMessage('warning', 'Test warning message'); const logs = consoleLogsTool.getConsoleLogs(); expect(logs.length).toBe(3); expect(logs[0]).toContain('Test log message'); expect(logs[1]).toContain('Test error message'); expect(logs[2]).toContain('Test warning message'); }); test('should retrieve console logs with type filter', async () => { consoleLogsTool.registerConsoleMessage('log', 'Test log message'); consoleLogsTool.registerConsoleMessage('error', 'Test error message'); consoleLogsTool.registerConsoleMessage('warning', 'Test warning message'); const args = { type: 'error' }; const result = await consoleLogsTool.execute(args, mockContext); expect(result.isError).toBe(false); expect(result.content[0].text).toContain('Retrieved 1 console log(s)'); expect(result.content[1].text).toContain('Test error message'); expect(result.content[1].text).not.toContain('Test log message'); expect(result.content[1].text).not.toContain('Test warning message'); }); test('should retrieve console logs with search filter', async () => { consoleLogsTool.registerConsoleMessage('log', 'Test log message'); consoleLogsTool.registerConsoleMessage('error', 'Test error with [special] characters'); consoleLogsTool.registerConsoleMessage('warning', 'Another warning message'); const args = { search: 'special' }; const result = await consoleLogsTool.execute(args, mockContext); expect(result.isError).toBe(false); expect(result.content[0].text).toContain('Retrieved 1 console log(s)'); expect(result.content[1].text).toContain('Test error with [special] characters'); expect(result.content[1].text).not.toContain('Test log message'); expect(result.content[1].text).not.toContain('Another warning message'); }); test('should retrieve console logs with limit', async () => { for (let i = 0; i < 10; i++) { consoleLogsTool.registerConsoleMessage('log', `Test log message ${i}`); } const args = { limit: 5 }; const result = await consoleLogsTool.execute(args, mockContext); expect(result.isError).toBe(false); expect(result.content[0].text).toContain('Retrieved 5 console log(s)'); // The actual implementation might only show the first log in the content // Just verify that at least one log message is present const logText = result.content[1].text as string; expect(logText).toContain('Test log message'); }); test('should clear console logs when requested', async () => { consoleLogsTool.registerConsoleMessage('log', 'Test log message'); consoleLogsTool.registerConsoleMessage('error', 'Test error message'); const args = { clear: true }; const result = await consoleLogsTool.execute(args, mockContext); expect(result.isError).toBe(false); expect(result.content[0].text).toContain('Retrieved 2 console log(s)'); // Logs should be cleared after retrieval const logs = consoleLogsTool.getConsoleLogs(); expect(logs.length).toBe(0); }); test('should handle no logs', async () => { const args = {}; const result = await consoleLogsTool.execute(args, mockContext); expect(result.isError).toBe(false); expect(result.content[0].text).toContain('No console logs matching the criteria'); }); });

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/pvinis/mcp-playwright-stealth'

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