Skip to main content
Glama

Chrome DevTools MCP

Official
PageCollector.test.ts3.1 kB
/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import {describe, it} from 'node:test'; import assert from 'assert'; import {Browser, Frame, Page, PageEvents} from 'puppeteer-core'; import {PageCollector} from '../src/PageCollector.js'; import {getMockRequest} from './utils.js'; function getMockPage(): Page { const listeners: Record<keyof PageEvents, (data: unknown) => void> = {}; const mainFrame = {} as Frame; return { on(eventName, listener) { listeners[eventName] = listener; }, emit(eventName, data) { listeners[eventName]?.(data); }, mainFrame() { return mainFrame; }, } as Page; } function getMockBrowser(): Browser { const pages = [getMockPage()]; return { pages() { return Promise.resolve(pages); }, on(_type, _handler) {}, } as Browser; } describe('PageCollector', () => { it('works', async () => { const browser = getMockBrowser(); const page = (await browser.pages())[0]; const request = getMockRequest(); const collector = new PageCollector(browser, (page, collect) => { page.on('request', req => { collect(req); }); }); await collector.init(); page.emit('request', request); assert.equal(collector.getData(page)[0], request); }); it('clean up after navigation', async () => { const browser = getMockBrowser(); const page = (await browser.pages())[0]; const mainFrame = page.mainFrame(); const request = getMockRequest(); const collector = new PageCollector(browser, (page, collect) => { page.on('request', req => { collect(req); }); }); await collector.init(); page.emit('request', request); assert.equal(collector.getData(page)[0], request); page.emit('framenavigated', mainFrame); assert.equal(collector.getData(page).length, 0); }); it('does not clean up after sub frame navigation', async () => { const browser = getMockBrowser(); const page = (await browser.pages())[0]; const request = getMockRequest(); const collector = new PageCollector(browser, (page, collect) => { page.on('request', req => { collect(req); }); }); await collector.init(); page.emit('request', request); page.emit('framenavigated', {} as Frame); assert.equal(collector.getData(page).length, 1); }); it('clean up after navigation and be able to add data after', async () => { const browser = getMockBrowser(); const page = (await browser.pages())[0]; const mainFrame = page.mainFrame(); const request = getMockRequest(); const collector = new PageCollector(browser, (page, collect) => { page.on('request', req => { collect(req); }); }); await collector.init(); page.emit('request', request); assert.equal(collector.getData(page)[0], request); page.emit('framenavigated', mainFrame); assert.equal(collector.getData(page).length, 0); page.emit('request', request); assert.equal(collector.getData(page).length, 1); }); });

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/ChromeDevTools/chrome-devtools-mcp'

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