diff --git a/src/tools/pages.ts b/src/tools/pages.ts index 895632bd3..5e5d3cef7 100644 --- a/src/tools/pages.ts +++ b/src/tools/pages.ts @@ -16,7 +16,7 @@ import { timeoutSchema, } from './ToolDefinition.js'; -export const listPages = definePageTool(args => { +export const listPages = defineTool(args => { return { name: 'list_pages', description: `Get a list of pages ${args?.categoryExtensions ? 'including extension service workers' : ''} open in the browser.`, diff --git a/tests/tools/pages.test.ts b/tests/tools/pages.test.ts index d278cd0a3..3fb5892b6 100644 --- a/tests/tools/pages.test.ts +++ b/tests/tools/pages.test.ts @@ -45,11 +45,21 @@ describe('pages', () => { describe('list_pages', () => { it('list pages', async () => { await withMcpContext(async (response, context) => { - await listPages().handler( - {params: {}, page: context.getSelectedMcpPage()}, - response, - context, - ); + await listPages().handler({params: {}}, response, context); + assert.ok(response.includePages); + }); + }); + it('list pages after selected page is closed', async () => { + await withMcpContext(async (response, context) => { + // Create a second page and select it. + const page2 = await context.newPage(); + assert.strictEqual(context.getSelectedMcpPage(), page2); + + // Close the selected page via puppeteer (simulating external close). + await page2.pptrPage.close(); + + // list_pages should still work even though the selected page is gone. + await listPages().handler({params: {}}, response, context); assert.ok(response.includePages); }); }); @@ -70,11 +80,7 @@ describe('pages', () => { const listPageDef = listPages({ categoryExtensions: true, } as ParsedArguments); - await listPageDef.handler( - {params: {}, page: context.getSelectedMcpPage()}, - response, - context, - ); + await listPageDef.handler({params: {}}, response, context); const result = await response.handle(listPageDef.name, context); const textContent = result.content.find(c => c.type === 'text') as { @@ -116,11 +122,7 @@ describe('pages', () => { const listPageDef = listPages({ categoryExtensions, } as ParsedArguments); - await listPageDef.handler( - {params: {}, page: context.getSelectedMcpPage()}, - response, - context, - ); + await listPageDef.handler({params: {}}, response, context); const result = await response.handle(listPageDef.name, context); const textContent = result.content.find(c => c.type === 'text') as { @@ -177,11 +179,7 @@ describe('pages', () => { const listPageDef = listPages({ categoryExtensions: true, } as ParsedArguments); - await listPageDef.handler( - {params: {}, page: context.getSelectedMcpPage()}, - response, - context, - ); + await listPageDef.handler({params: {}}, response, context); const result = await response.handle(listPageDef.name, context); const textContent = result.content.find(c => c.type === 'text') as {