diff --git a/src/resources/console.ts b/src/resources/console.ts index 14533f4..ab361cb 100644 --- a/src/resources/console.ts +++ b/src/resources/console.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import type { Resource, ResourceResult } from './resource'; +import type { Resource } from './resource'; export const console: Resource = { schema: { @@ -24,14 +24,12 @@ export const console: Resource = { }, read: async (context, uri) => { - const result: ResourceResult[] = []; - for (const message of await context.ensureConsole()) { - result.push({ - uri, - mimeType: 'text/plain', - text: `[${message.type().toUpperCase()}] ${message.text()}`, - }); - } - return result; + const messages = await context.ensureConsole(); + const log = messages.map(message => `[${message.type().toUpperCase()}] ${message.text()}`).join('\n'); + return [{ + uri, + mimeType: 'text/plain', + text: log + }]; }, }; diff --git a/tests/basic.spec.ts b/tests/basic.spec.ts index 6ae03ff..a20bbb2 100644 --- a/tests/basic.spec.ts +++ b/tests/basic.spec.ts @@ -331,3 +331,35 @@ test.describe('test browser_select_option', () => { })); }); }); + +test('browser://console', async ({ server }) => { + await server.send({ + jsonrpc: '2.0', + id: 2, + method: 'tools/call', + params: { + name: 'browser_navigate', + arguments: { + url: 'data:text/html,', + }, + }, + }); + + const response = await server.send({ + jsonrpc: '2.0', + id: 3, + method: 'resources/read', + params: { + uri: 'browser://console', + }, + }); + expect(response).toEqual(expect.objectContaining({ + result: expect.objectContaining({ + contents: [{ + uri: 'browser://console', + mimeType: 'text/plain', + text: '[LOG] Hello, world!\n[ERROR] Error', + }], + }), + })); +});