116 Commits

Author SHA1 Message Date
Samiya Caur 4454ae0a8a feat: add get_css_style tool (#2612)
Add `get_css_styles` tool which exposes matched styles and the CSS
cascade to empower accurate CSS debugging workflows.

It integrates `CssFormatter` into `McpPage` and `McpResponse`, adding
container query resolution and rule pagination support.

Co-authored-by: Samiya Caur <samiyac@chromium.org>
2026-09-11 07:51:16 +00:00
Jack Franklin d05cbc0511 fix(performance): prevent memory leak by scoping trace engine model per parse (#2720)
## Rationale

DevTools' `TraceEngine.TraceModel.Model` permanently retains parsed
traces in an internal recordings array (`#traces`). Calling
`engine.resetProcessor()` between runs only resets the underlying
processor and does not clear `#traces`.

Because `engine` was previously instantiated as a module-scoped
singleton, every performance trace recorded or parsed in a session
remained permanently held in heap memory for the lifetime of the
process.

## Changes

- In `src/processors/PerformanceTrace.ts`, instantiate
`DevTools.TraceEngine.TraceModel.Model.createWithAllHandlers()` per
invocation of `parseRawTraceBuffer()`.
- Remove the module-scoped `engine` singleton and the obsolete
`engine.resetProcessor()` call.
- Add a unit test in `tests/trace-processing/parse.test.ts` verifying
that consecutive trace parses construct isolated `Model` instances and
keep internal trace retention bounded at 1.
- Add a profiling regression scenario in
`scripts/profile/scenarios/performance_trace.ts` to guard against memory
retention across consecutive traces during `npm run test:memory`.
2026-09-10 15:37:28 +00:00
Nikolay Vitkov 401a1192b6 refactor: extract category config into a seprate file (#2652) 2026-09-03 15:45:45 +00:00
Joseph B d00e6f8239 feat: support configurable filesystem roots (#2605)
Fixes #2598

This lets people set filesystem roots through the MCP server or the
Chrome DevTools CLI. Multiple roots work together with any roots sent by
the MCP client, and temp directory access stays the same.

I added tests for the flags and root handling.

---------

Co-authored-by: Joseph B <289838966+joebasrawi@users.noreply.github.com>
Co-authored-by: Joseph B <joebasrawi@users.noreply.github.com>
2026-09-03 09:42:37 +00:00
Nikolay Vitkov 5463101120 docs: split the docs in separate files (#2600) 2026-09-02 07:14:54 +00:00
Michael Hablich 6a67552771 feat: Add cookie-debugging skill and improve network/pages tool descriptions (#2596)
#408
2026-09-01 12:55:06 +00:00
Alex Rudenko a78566ee7c feat: add an option to turn off js execution tools (#2627)
While we keep the evaluate script available by default since it is
useful for many users, we give an option to disable it.
2026-08-31 09:10:30 +00:00
Tolgahan Demirbaş 50a16fae69 feat: make pageId required for page-scoped tools by default (#1777)
Removes `--experimental-page-id-routing` making it the default behavior.
To go back to the previous behavior, pass `--pageIdRouting=false` when
starting the server.

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
Co-authored-by: Samiya Caur <samiyac@google.com>
2026-08-24 16:54:06 +00:00
Nikolay Vitkov 5d0283969c refactor: move config files out of bin (#2578) 2026-08-14 14:17:28 +00:00
Alex Rudenko c1ea5bf88f build: move devtools into third_party (#2558) 2026-08-12 11:19:50 +00:00
dependabot[bot] 9b9639edaf chore(deps): bump devtools-frontend from a4b4a54 to b89284c (#2550)
Bumps
[devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend)
from `a4b4a54` to `b89284c`.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b89284cbca3d602273b868f7183ddfc0e1e7c983"><code>b89284c</code></a>
AI Assistance: Add sources skill to v2 agent</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/12c836b0ae0204417547d834d48f9d3fca9331ec"><code>12c836b</code></a>
Update ScreencastView to track FrameNavigated events</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b12485948f157fd5de86865317e9b66aeeeb1552"><code>b124859</code></a>
Fix layering: Move AiCodeGen out of panels/common</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/922c4de3e13adcafd8be197710b2b384298a75ab"><code>922c4de</code></a>
Fix layering: Move TypeToAllowDialog out of panels/common</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/66f02c4703f20388d85e0e0e7f364a2d2e631c1b"><code>66f02c4</code></a>
Add getRetainedByContextSummary() to HeapSnapshot</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b20d97a596788469f750cae8adc0c0c1026d0608"><code>b20d97a</code></a>
Implement navigatedWithinDocument events</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/42d89998f6f034be0404f52fffc9606ae78209b0"><code>42d8999</code></a>
Remove resizer icon</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/c717554d7ed0ae40d0ee7ff69ab86ba1350cdecf"><code>c717554</code></a>
AIv2: support empty context in ListPageOrigins V2 tool</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/28731a26267ce6e3527ae015fe42ec6fe39a7c60"><code>28731a2</code></a>
AI: Implement getEventByKey and selectEventByKey tools for
performance</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a5e4620e81e8c9255bb6f730d8815c43794f3181"><code>a5e4620</code></a>
Add a setting to skip all pauses</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/a4b4a54b836da9774714e7ce7a8f748a537978e6...b89284cbca3d602273b868f7183ddfc0e1e7c983">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-08-11 16:18:24 +00:00
Alex Rudenko d016152503 test: detect memory leaks (#2551)
Adds an optional job to run leak detection.
2026-08-11 11:57:21 +00:00
Nikolay Vitkov 6e949e9359 chore: add command and remove recursive (#2532)
`--recursive` forces the pull of other submodules give we don't build
DevTools we don't need them

Ran `npm audit fix`
2026-08-10 12:12:50 +00:00
yulunz 71d897b27e chore: add a new profiler scenario for get_console_messages. (#2491)
To see the heap size increase the scenario has to be run with
warmup-iterations=0. I have made the number of iterations different by
scenario, unless they are overriden through the command line.

Once we have the fixes all merged, I will add an assert somewhere and
see if this can be added into the test suite.
2026-08-07 10:24:40 +00:00
yulunz 884c8dee7c chore: refactor the profiler into scenarios. (#2488)
This is mostly a refactor except:
- the url param is removed. The source map server is always turned on.
We can always manually connect the mcp server to an external site and
check for memory usage / leaks. Testing should be deterministic and not
rely on outside resources.
- the reports are now stored by scenario. Console still prints out
report for each scenario, alongside a final report giving a one line
summary per scenario.

Still a bit rough, but useful.
2026-08-07 09:41:23 +00:00
Nikolay Vitkov 72d825272f chore: use ESM instead of CJS (#2487)
Also remove the `.mjs` as we are in a module repo.
2026-08-07 07:31:54 +00:00
Alex Rudenko 011ac74b67 build: consume devtools-frontend as a submodule (#2481)
Adding devtools-frontend from github as a submodule with depth of 1 to
speed up checkouts. prepare.ts script should automatically pull the
right version.
2026-08-06 09:48:28 +00:00
Alex Rudenko d302a47716 chore: add a script to capture memory snapshots (#2464)
I did not catch a leak using the test sites.
 
Refs: https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/2456
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/2431
2026-08-05 11:16:25 +00:00
mehmet turac d5d91ee787 chore(deps-dev): update eslint to v10 (#2393)
Fixes #955

## Summary

- update ESLint and `@eslint/js` to v10
- replace the import lint plugin with an ESLint 10-compatible
implementation while preserving the existing import and Node protocol
checks
- update the local license rule for ESLint 10's rule-context properties
- align the supported Node.js versions with ESLint 10's engine
requirements
- preserve the current recommended-rule baseline during the major
upgrade

## Testing

- `npm ci`
- `npm run check-format`
- `npm run typecheck`
- `npm run test`
2026-07-29 11:30:10 +00:00
dependabot[bot] e2c19fed80 chore(deps-dev): bump chrome-devtools-frontend from 1.0.1661063 to 1.0.1664619 in the bundled-devtools group across 1 directory (#2386)
Bumps the bundled-devtools group with 1 update in the / directory:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1661063 to 1.0.1662965
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/69d83ee009fdf624e84ae922a579aee77cf0f071"><code>69d83ee</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/83caa60581c6fed8370cf8afaa6067447a357cc6"><code>83caa60</code></a>
Revert &quot;[ProdExcellence]: Fix XHRBreakpointsSidebarPane
test&quot;</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/3108a1d857828221f68e5c8c9a05e144064f7789"><code>3108a1d</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/3a75f2e1804b402a10950db28db033bfb1156adf"><code>3a75f2e</code></a>
[Ads Panel] Relocate 'Highlight ads' checkbox to the Ads panel</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/4c539fcb2244952aa86ef158022cbe0a720e6bcd"><code>4c539fc</code></a>
[global-state] Migrate ExtensionScope.test.ts to TestUniverse</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/65fd0498a382fe301ab3e1e197c75d0918d660dd"><code>65fd049</code></a>
[global-state] Pass TargetManager to ChangeManager constructor</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/04a5398f3be6378ba9af4adc0ddc721413040674"><code>04a5398</code></a>
[global-state] AiAgent2.ts - Pass TargetManager via constructor
dependency in...</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/052e32ed24542e1d05880da62acf3868635f4951"><code>052e32e</code></a>
Extend SourceView test before the UI eng vision migration</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d915e63ca3fd4bea4049725c1916bc91682516e5"><code>d915e63</code></a>
Edit &amp; Resend (2/5): Console originator</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/07342db2e5fa2cd844fec8fa23e3616cadbdf75e"><code>07342db</code></a>
Adopt UI eng vision in the IndexedDBViews</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1661063...v1.0.1662965">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
Co-authored-by: Mathias Bynens <mathias@qiwi.be>
2026-07-24 07:27:11 +00:00
Alex Rudenko 38dd346805 docs: fix showing defaults in configuration (#2234)
closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/2233
2026-06-19 09:48:30 +00:00
Alex Rudenko f8fb2a9236 test: drop node20 code in tests (#2146) 2026-05-27 11:12:22 +00:00
Alex Rudenko 329fbf1ac9 build: update expected npm publish output (#2140)
It appears the format has changed
https://github.com/ChromeDevTools/chrome-devtools-mcp/actions/runs/26453140812/job/77879380358?pr=2086
2026-05-26 15:13:45 +00:00
Samiya Caur 8e8e83e3f8 test: update all the eval scenarios to work with experimentalPageIdRouting flag (#2085)
Refs #2052 

This change updates all the eval scenarios so that they work with and
without experimentalPageIdRouting flag

Co-authored-by: Samiya Caur <samiyac@chromium.org>
2026-05-20 09:46:18 +00:00
Alex Rudenko 30dcd0ba96 docs: remove windows workaround and document Node LTS support (#2074)
Adds test coverage for 26, removes test coverage for 23 and 20.
2026-05-18 08:19:06 +00:00
dependabot[bot] 20021469dc chore(deps-dev): bump puppeteer from 24.43.0 to 25.0.2 in the bundled group across 1 directory (#2045)
Bumps the bundled group with 1 update in the / directory:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 24.43.0 to 25.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v25.0.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.1...puppeteer-core-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573">36527b8</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.0.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.1...puppeteer-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
<li>puppeteer-core bumped from 25.0.1 to 25.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer-core: v25.0.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.0...puppeteer-core-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440">f6fd7c2</a>)</li>
<li>roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df">84c46fe</a>)</li>
<li>roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb">872f778</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.0 to 3.0.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.0.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.0...puppeteer-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.1...puppeteer-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573">36527b8</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.0...puppeteer-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.0 to 3.0.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440">f6fd7c2</a>)</li>
<li>roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df">84c46fe</a>)</li>
<li>roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb">872f778</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.43.1...puppeteer-v25.0.0">25.0.0</a>
(2026-05-12)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>remove deprecated Puppeteer.product (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14977">#14977</a>)</li>
<li>bump min NodeJS to 22 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14973">#14973</a>)</li>
<li>return a Promise for executablePath, defaultArgs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14965">#14965</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/3aadc38c533caa8df87f381868291ede870883e2"><code>3aadc38</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14993">#14993</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573"><code>36527b8</code></a>
fix: update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/3ea7bd54b97965fb0e1b83a2c017720162785c92"><code>3ea7bd5</code></a>
fix: capitalize &quot;Chrome&quot; in troubleshooting.md (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14991">#14991</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ae72fdbec9720c982fc2ed818036d7be9b2aa1dc"><code>ae72fdb</code></a>
chore: Tiny punctuation update in troubleshooting.md (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14990">#14990</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/1597fde55de1e7b3c31032aa43dce0607b4307d3"><code>1597fde</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14982">#14982</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440"><code>f6fd7c2</code></a>
fix: enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/bf05fb9bf5bac997e365eda2e31c6067e5ec1677"><code>bf05fb9</code></a>
fix: update browsers to trigger release (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14984">#14984</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb"><code>872f778</code></a>
fix: roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df"><code>84c46fe</code></a>
fix: roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ee655d8292f37cc33f279746ef72613e5ccb5db8"><code>ee655d8</code></a>
chore(main): release ng-schematics 0.8.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14978">#14978</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.43.0...puppeteer-v25.0.2">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-05-17 06:34:22 +00:00
yulunz 3efd8c0194 chore: add sanity check to error enums (#2059)
This also caught and fixed an issue where the enum index is not
sequential :/

No error enums have been defined on the service side yet so it's
possible to modify the enum index directly.
2026-05-14 22:39:15 +00:00
yulunz 71ccdb0dbf chore: better organize telemetry utilities (#2057)
There is no behavior change. 

This groups utilities into two modules:
- `transformation.ts`: for any logic related to mutating / filtering of
the names, values of telemetry entries.
- `metricsRegistry.ts`: for any logic that related to the maintenance of
metrics.json files.
2026-05-14 05:33:40 +00:00
Piotr Paulski faac61d2f2 test: fix fill_form eval (#2011)
Improve fill_form eval by checking if fill_form was the only tool called
for the task and provide more descriptive failure messages.

Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-05-07 13:59:14 +00:00
Alex Rudenko 14938acd08 docs: remove token estimates (#2003)
since we include conditional tools in the reference, we cannot give
exact estimates since they depend on the configuration.
2026-05-06 09:21:54 +00:00
Alex Rudenko da0441d425 docs: extract WebMCP into its own category (#1993)
Extracting WebMCP tools into a separate category for better grouping in
the docs. This changes `--experimentalWebmcp` to
`--categoryExperimentalWebmcp` to align with other experimental
categories. Debugging category was not a good fit since the tools
provided by WebMCP are not necessarily used for debugging.

cc @beaufortfrancois
2026-05-05 12:50:42 +00:00
Nicholas Roscino 895fc65a1f docs: update generate-docs.ts tools output order (#1991)
Closes: #1932
2026-05-05 08:31:59 +00:00
Nicholas Roscino b2b3e99d67 feat(cli): generate commands for conditional tools (#1962)
This PR adds all tools in the CLI interface. When a tool is not enabled
the server responds with an error guiding the user on how to enable the
category or the experiment.

Closes:
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1933
2026-04-30 07:59:08 +00:00
Alex Rudenko 8cbdb8d494 fix(cli): re-generate cli correctly (#1969)
Regressed in
https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/1120
2026-04-28 14:18:39 +00:00
Piotr Paulski 21bc5b4476 test: add eval targeting fill_form use with select and checkbox elements (#1968)
This eval represents minimal reproduction scenario for #1942. Currently
fill_form is used in around 25% of the attempts.

It can also be used to reproduce #1941 with about 1:10 chance.

---------

Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-04-28 13:39:35 +00:00
yulunz cb6b724fdc chore: combine the update metrics scripts. (#1964)
This is a cleanup to merge the update metrics script together into one.
There is behavior change.
2026-04-28 05:59:57 +00:00
yulunz 7b3b4d306e chore: make json file for flag usage metrics append only (#1882)
This makes the flag_usage_metrics.json file append only. Parent: #1881
2026-04-27 20:12:49 +00:00
Piotr Paulski c9c1683b67 chore(deps-dev): bump chrome-devtools-frontend from 1.0.1613625 to 1.0.1616061 (#1952)
Closes #1908

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-04-24 19:40:09 +00:00
Alex Rudenko 82b67b07d3 refactor: add support for CLI sessionIds in tests (#1919)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1119
2026-04-22 08:15:36 +00:00
Nicholas Roscino 3ff21cf30d feat: support Chrome extensions debugging (#1922)
Adds ability to install, uninstall and reload extensions, trigger
extension actions and inspect extension pages, service workers and
content scripts. Specify `--categoryExtensions` to enable.

Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1173
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/96

---------

Co-authored-by: Mathias Bynens <mathias@qiwi.be>
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
2026-04-21 14:03:15 +00:00
Nicholas Roscino ec895f195a refactor: use puppeteer Extension API (#1911)
This PR refactor the extension usages using the new Puppeteer API.

Requires puppeteer release before merging
2026-04-20 14:38:48 +00:00
Alex Rudenko 0f29acf7cc chore: fix viewport eval (#1888) 2026-04-20 10:26:35 +00:00
yulunz 0a6aaa52eb chore: generate a json file for flag usage metrics (#1881)
This is the second most highly touched metric areas - so let's automate
this portion first. The approach is similar to what we have for tool
call args. The append-only logic will be added in the follow-up PR:
#1882
2026-04-17 18:50:31 +00:00
Alex Rudenko e102a43bab test: try things to reduce flakiness (#1879) 2026-04-16 15:35:34 +00:00
Nikolay Vitkov 6ba1816173 test: add debug logs when running GitHub actions in debug (#1878) 2026-04-16 12:50:27 +00:00
Alex Rudenko 028748663d chore: minor fixes to build and evals (#1875) 2026-04-16 11:59:06 +00:00
Nikolay Vitkov 764b9cf406 chore: some build and test fixes (#1861)
Under some cases one could not re-build correctly due to the directory
being remove.
And we can save some CPU cycles in test to disable the update checker.
2026-04-14 15:26:11 +00:00
Alex Rudenko 728d90208d test: speed up .only (#1846)
the node test framework runs not only tests respecting
`--test-concurrency=1` but also discovery of the tests (import of the
files). This makes the `npm run test:only` slow. This PR checks ahead of
times which files have .only and only tells the node test runner to
import those.
2026-04-10 10:46:52 +00:00
yulunz ed9e4dd17d chore: make tool_call_metrics.json append only against new changes. (#1778)
With this change new tools are added to the very back of the json file.
Any removed tools will receive a isDeprecated flag in the existing
entry. And the same with tool arguments.
2026-04-01 22:27:53 +00:00
yulunz bc8ef4bc16 chore: add a script to generate tool_call_metrics.json for telemetry. (#1257)
This adds a script that generates a json file that summarizes all tool
calls and arguments for each.

- The arguments run through the blocklist filtering so arguments
containing high entropy ids are filtered out (e.g. "uid", "msgid" etc).
- It uses existing functions from clearcut logger module to transform
the arg name and value (i.e. take the length of the string, take the
size of the array, and rename the string to be "string_length", and
array "array_count" etc).
- These functions from the clearcut logger module will be later used to
sanitize the params as we start to log them.

This doesn't include the append only / deprecation logic just yet (i.e.
it's doesn't handle the case when new tools are added / removed, or
arguments of the existing tools are modified). This will be added in
following PRs.

The parent PR is #1250.
2026-04-01 18:51:35 +00:00