Alex Rudenko
c06f4522ee
refactor: merge emulate tools into one ( #494 )
...
Merges emulateCpu and emulateNetwork into a single tool to reduce token
consumption. Changes descriptions to be more concise.
2025-10-30 08:50:36 +00:00
dependabot[bot]
e5653b0516
chore(deps-dev): bump the bundled group with 2 updates ( #490 )
...
Bumps the bundled group with 2 updates:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend )
and [puppeteer](https://github.com/puppeteer/puppeteer ).
Updates `chrome-devtools-frontend` from 1.0.1534717 to 1.0.1536371
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/f9114c7810effda21b986fedddf791fb41a53bf8 "><code>f9114c7</code></a>
Update Chrome (for Testing) PIN</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/420b33e69a9639a0b2fa82b4a1aa888782a68c75 "><code>420b33e</code></a>
[RPP] In trace_app, ignore frames not in the primary main frame</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/02e471449f14ca98d0c03391e5400489fbbb1fcd "><code>02e4714</code></a>
Add option for Tooltip to be triggered by both <code>hover</code> and
<code>click</code></li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a53e59d6e84dd432d9e791dc9c73aad37fc34c85 "><code>a53e59d</code></a>
Restructure BFCache view to make adopting UI eng vision easier</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/02896d3ce1b19e97443a29e4e3435bc275beea40 "><code>02896d3</code></a>
Add placeholder for Keybind recording</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b8c6a36a03db91b39f24b1939d8e1b7077bf2776 "><code>b8c6a36</code></a>
[Console Insights Teasers] Update KnownContextValues</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/ddf2fedafe978ef2e740e01d1591f7d7a2e48591 "><code>ddf2fed</code></a>
Roll browser-protocol</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/ffaf345e9503ac3c51b0f76431a379194a13a540 "><code>ffaf345</code></a>
Add unit test for Widget.focus() behavior</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a8f58dd5654817064975d239376cd855a3de229e "><code>a8f58dd</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d8a5a9140f7fc25563c442bbcf001b4892c550ce "><code>d8a5a91</code></a>
Make setDefaultFocusedElement use autofocus attribute</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1534717...v1.0.1536371 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `puppeteer` from 24.26.1 to 24.27.0
<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: v24.27.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.26.1...puppeteer-core-v24.27.0 ">24.27.0</a>
(2025-10-29)</h2>
<h3>🎉 Features</h3>
<ul>
<li>add window options to newPage() (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14363 ">#14363</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/1d4f48d80760231bc765f26e4648b4d0c6de66f4 ">1d4f48d</a>)</li>
<li>roll to Chrome 142.0.7444.59 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14381 ">#14381</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/54d504db0515f150b97862aa1415008dcfe9fcfa ">54d504d</a>)</li>
<li>support ignoreCache in page.reload() (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14365 ">#14365</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/3794e8f0136f6e25c27bab5b6e89723fd9b6a239 ">3794e8f</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Firefox 144.0.2 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14382 ">#14382</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/122f56ec6d5a71e48e3e4f00cae2e097bb8d2ce8 ">122f56e</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>fix api-extractor warnings (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14370 ">#14370</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/538c480a2b485b1ae9b4d25645b0b99e53967855 ">538c480</a>)</li>
</ul>
<h2>puppeteer: v24.27.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.26.1...puppeteer-v24.27.0 ">24.27.0</a>
(2025-10-29)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 142.0.7444.59 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14381 ">#14381</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/54d504db0515f150b97862aa1415008dcfe9fcfa ">54d504d</a>)</li>
</ul>
<h3>♻️ Chores</h3>
<ul>
<li>extract things required for ESM migration (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14369 ">#14369</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c38313c4ebde082573409d1dfb358534673f42f4 ">c38313c</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 24.26.1 to 24.27.0</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</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-v24.26.1...puppeteer-v24.27.0 ">24.27.0</a>
(2025-10-29)</h2>
<h3>🎉 Features</h3>
<ul>
<li>add window options to newPage() (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14363 ">#14363</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/1d4f48d80760231bc765f26e4648b4d0c6de66f4 ">1d4f48d</a>)</li>
<li>roll to Chrome 142.0.7444.59 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14381 ">#14381</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/54d504db0515f150b97862aa1415008dcfe9fcfa ">54d504d</a>)</li>
<li>support ignoreCache in page.reload() (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14365 ">#14365</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/3794e8f0136f6e25c27bab5b6e89723fd9b6a239 ">3794e8f</a>)</li>
</ul>
<h3>♻️ Chores</h3>
<ul>
<li>extract things required for ESM migration (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14369 ">#14369</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c38313c4ebde082573409d1dfb358534673f42f4 ">c38313c</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 24.26.1 to 24.27.0</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Firefox 144.0.2 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14382 ">#14382</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/122f56ec6d5a71e48e3e4f00cae2e097bb8d2ce8 ">122f56e</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>fix api-extractor warnings (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14370 ">#14370</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/538c480a2b485b1ae9b4d25645b0b99e53967855 ">538c480</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f73ebcde308687cd3f8d44596371a02c86626fd6 "><code>f73ebcd</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14378 ">#14378</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/122f56ec6d5a71e48e3e4f00cae2e097bb8d2ce8 "><code>122f56e</code></a>
fix: roll to Firefox 144.0.2 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14382 ">#14382</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/54d504db0515f150b97862aa1415008dcfe9fcfa "><code>54d504d</code></a>
feat: roll to Chrome 142.0.7444.59 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14381 ">#14381</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/a851dec9b2982dcbe1abc039879c1317a29a7ffd "><code>a851dec</code></a>
chore: expose backendNodeId in a11y snapshot (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14379 ">#14379</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/06f48d784a0912becd74df5e21ce0a79dfe05c7b "><code>06f48d7</code></a>
build: remove test server from release-please (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14377 ">#14377</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d94bbd14278d9de13e660dbfc95177d52b783542 "><code>d94bbd1</code></a>
chore(deps): bump the all group with 3 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14374 ">#14374</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/b84b188c53d0d599fa98e8df6ec3d89e8f68a40b "><code>b84b188</code></a>
build: fix default config (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14376 ">#14376</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/97e2528ec77475c9379012acda3d36847d34d17b "><code>97e2528</code></a>
chore(deps-dev): bump the dev-dependencies group with 7 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14373 ">#14373</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/26ef878cbd8aa1d01a5fe3b533e04d987ee2b615 "><code>26ef878</code></a>
chore(deps): bump node from <code>2bb201f</code> to <code>23c24e8</code>
in /docker in the all grou...</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/784d5ad02aa475d6c9deedd658552d156e8c6a69 "><code>784d5ad</code></a>
build(deps): bump mime to v4 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14372 ">#14372</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.26.1...puppeteer-v24.27.0 ">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-29 08:18:31 +00:00
Nikolay Vitkov
376f57c972
test: use html helper ( #478 )
2025-10-27 12:32:47 +00:00
Alex Rudenko
b0ce08ae2c
feat: support saving snapshots to file ( #463 )
...
Refs https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/153
---------
Co-authored-by: Nikolay Vitkov <34244704+Lightning00Blade@users.noreply.github.com >
2025-10-24 09:20:14 +00:00
Alex Rudenko
d177087981
feat: support page reload ( #462 )
...
- merges navigation tools into a single tool.
- adds reload functionality.
- in a follow-up we will add options to reload.
2025-10-24 09:00:04 +00:00
Alex Rudenko
b427392392
feat: add a press_key tool ( #458 )
...
Press key can be used to test shortcuts and individual key presses.
2025-10-23 16:18:58 +00:00
dependabot[bot]
12eb494466
chore(deps-dev): bump chrome-devtools-frontend from 1.0.1524741 to 1.0.1531367 in the chrome-devtools-frontend group ( #429 )
...
Bumps the chrome-devtools-frontend group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend ).
Updates `chrome-devtools-frontend` from 1.0.1524741 to 1.0.1531367
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/6f4312a899ff0af345ba1a51ba719d0c0a1bf5d2 "><code>6f4312a</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/03ffc0b5fc5f07fdde976d2ad47670138bf5cca7 "><code>03ffc0b</code></a>
Update Chrome (for Testing) PIN</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a717fef99f53ea02dbc91867206546800ae52f69 "><code>a717fef</code></a>
[RPP] Actually hide Workspaces in trace app</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/9ac40d2b0c7d7cf9d6493905df1a72dd4b90803b "><code>9ac40d2</code></a>
Increase performance tests timeout</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/ca1486a6501f6926009969c0c1aa3a577ec93210 "><code>ca1486a</code></a>
Create throttling/blocking conditions from the context menu</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/19213823907008766d5759b8b25feca602ea93fa "><code>1921382</code></a>
[Console Insights Teasers] Add error state</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/2678dc3548a7fbb9aa80455ffa0dc13fd0714e86 "><code>2678dc3</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/db045b91de4fa65c651bda1968ad882f78160a26 "><code>db045b9</code></a>
[Console Insights Teasers] Handle slowness</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a95ceaf384f7917fe9e3a2aac3d10000a8f14fc6 "><code>a95ceaf</code></a>
Fix console sidebar filter selection</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a32c47b13d74ba38f478f3369d57bf9647a458b1 "><code>a32c47b</code></a>
Support individual request throttling in the request blocking panel</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1524741...v1.0.1531367 ">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by [GitHub Actions](<a
href="https://www.npmjs.com/~GitHub ">https://www.npmjs.com/~GitHub </a>
Actions), a new releaser for chrome-devtools-frontend since your current
version.</p>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
---------
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 >
2025-10-22 13:02:29 +02:00
Nikolay Vitkov
70cd290986
chore: rename options to includePreserved<Data> ( #455 )
2025-10-22 10:54:12 +00:00
Nikolay Vitkov
4c65f59cf9
fix: retrieve data correctly with fewer than 3 navigations ( #451 )
...
Also adds test for navigation
2025-10-21 16:53:30 +00:00
Nikolay Vitkov
165cf9c70b
feat: expose previous navigations to the MCP ( #419 )
...
We should consider changing the order of element shown in the from the
collectors to be show newest first rather then the current oldest first
approach.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/88
2025-10-21 12:25:08 +00:00
Nikolay Vitkov
053f1f830d
fix: allow evaluating in Frames ( #443 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/439
2025-10-21 10:36:09 +02:00
Nikolay Vitkov
b6b42ecb99
fix: pageerror for non-error types ( #442 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/432
2025-10-20 17:43:37 +02:00
Alex Rudenko
5c871c3bd9
refactor: cleanup data fetching ( #441 )
...
Drive-by: fixed extra newline
2025-10-20 13:05:05 +00:00
Alex Rudenko
962ac88445
chore: improve console message format ( #440 )
...
I checked Puppeteer implementation and it computes the text based on all
args so we should treat the first arg in a special way. Also, changes
the format to print count of args in the list and full args in the
details only.
2025-10-20 14:49:09 +02:00
Alina Varkki
92055933dc
feat: tool to get a verbose single console message ( #435 )
2025-10-20 11:18:41 +02:00
Nikolay Vitkov
5a062ce373
test: stabilize test locally ( #418 )
...
Locally the test `with full page resulting in a large screenshot` would
fail semi consistently.
With what I think is just things not getting loaded fully, so scroll to
the bottom to fix that.
2025-10-20 08:41:08 +00:00
Alina Varkki
15d942c4f3
feat: add filters and pagination to the console messages tool ( #387 )
...
In the next pr, we will add ids to messages and another tool to get more
details by id
2025-10-15 18:22:15 +02:00
Nikolay Vitkov
579819b5e7
feat: use stable id for network request querying ( #382 )
...
Provides stable id when selecting a network request, this should fix
issues with multiple same places and long URL selection.
2025-10-14 14:35:15 +02:00
Alina Varkki
207137edd6
fix: add an option value to the snapshot ( #362 )
...
Fixes #185
The standard selector value is not included in the AXNode, so add it
separately.
2025-10-13 13:25:48 +02:00
Mithun Gowda B
0624029e0f
fix: improve navigate_page_history error messages ( #321 )
2025-10-13 09:46:09 +02:00
Jack Franklin
2d4484a123
fix: ordering of information in performance trace summary ( #334 )
...
Fixes a bug where the output contained "this is a high level summary"
before then outputting the call frame / network format information
before then outputting the trace summary.
With this commit, we now output the summary & insights before ending
with the format information.
2025-10-10 12:52:16 +00:00
iamitesh
139ce60781
feat: Add offline network emulation support to emulate_network command ( #326 )
...
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/320
Issue:
It would be very useful to have the ability to simulate offline network
conditions directly through the MCP emulate_network command, similar to
how it's possible in DevTools.
Currently, the command doesn’t support an Offline state, which limits
testing for PWA and offline-first web applications. Adding this option
would make it easier to automate and validate offline behavior through
MCP scripts or tools that rely on this API.
Solution
- Add 'Offline' option to throttlingOptions for simulating offline
network conditions
- Update emulate_network tool to handle offline mode with proper network
conditions
- Update documentation to include offline option and usage instructions
- Add test coverage for offline network emulation functionality
- Enable testing of PWA and offline-first web applications through MCP
2025-10-10 09:22:16 +02:00
leslie liu
8200194c80
fix: guard performance_stop_trace when tracing inactive ( #295 )
...
PR Description
- Fix the stop-trace guard to call context.isRunningPerformanceTrace()
so we skip page.tracing.stop() when nothing is recording, avoiding the
Puppeteer error that bubbled up
to users.
- Extend the “does nothing” test to stub tracing.stop() and assert it
stays untouched, guaranteeing the guard path is covered.
2025-10-07 12:04:41 +00:00
Nikolay Vitkov
2714158eb3
docs: fix typos ( #260 )
...
This also implements the suggestion from
https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/244
but that includes other parts that I am not sure we would want for now.
2025-10-02 16:59:09 +02:00
Nikolay Vitkov
73f0aecd8a
fix(network): show only selected request ( #236 )
2025-10-01 14:12:41 +02:00
Coquinate
03e02a2d76
feat(screenshot): add WebP format support with quality parameter ( #220 )
...
## Summary
This PR adds WebP format support to the screenshot tool, providing
superior compression compared to JPEG while maintaining image quality.
## Problem
Currently, the Chrome DevTools MCP only supports PNG and JPEG formats
for screenshots. This leads to:
- Missing out on WebP's superior compression (25-34% better than JPEG at
equivalent quality)
- Larger file sizes than necessary for AI assistants with image size
limits
- No access to a modern format that offers both better compression and
transparency support
- Bug: `saveTemporaryFile` always saved files with `.png` extension
regardless of the specified format
## Solution
Added WebP as a supported format in the screenshot tool schema and
extended the quality parameter to work with WebP (0-100 range, same as
JPEG). Also fixed the file extension bug in `saveTemporaryFile`.
## Changes
- ✅ Added `webp` to screenshot format enum alongside `png` and `jpeg`
- ✅ Extended quality parameter description to include WebP support
- ✅ Updated `saveTemporaryFile` to properly handle WebP MIME type and
file extension
- ✅ Fixed bug where all screenshots were saved as `.png` regardless of
format
- ✅ Updated type definitions in `ToolDefinition.ts` for WebP support
- ✅ Updated documentation via `npm run docs`
## Testing
Puppeteer 24.22.3 (used by this project) has full WebP support including
quality parameter. Expected compression improvements based on WebP
benchmarks:
- **PNG (baseline):** 128 KB
- **JPEG quality 50:** 84 KB (34% reduction vs PNG)
- **WebP quality 50:** ~60 KB (53% reduction vs PNG, 29% better than
JPEG)
- **WebP quality 75:** ~90 KB (optimal quality/size balance)
All existing tests pass (131/131).
## Impact
This change is **backward compatible** - WebP is an optional format that
doesn't affect existing PNG/JPEG usage. It particularly helps with:
- AI assistants that have image size limits
- Reducing bandwidth when capturing many screenshots
- Providing transparency support with better compression than PNG
- Offering a modern, universally-supported image format (Chrome,
Firefox, Safari, Edge)
## Example Usage
```javascript
// High quality WebP
await take_screenshot({
format: 'webp',
quality: 85,
fullPage: false
})
// Optimized for size
await take_screenshot({
format: 'webp',
quality: 50, // ~29% smaller than JPEG quality 50
fullPage: true
})
```
## Checklist
- [x] Code follows conventional commits
- [x] Documentation updated with `npm run docs`
- [x] All tests passing (131/131)
- [x] Backward compatible
- [x] Bug fix included (file extension handling)
- [ ] CLA signed (will complete if needed)
Fixes #[issue-number] (if applicable)
---------
Co-authored-by: aberemia24 <aberemia@gmail.com >
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2025-10-01 10:11:04 +02:00
James Doyle
f03072698d
feat(screenshot): adds ability to output screenshot to a specific pat… ( #172 )
...
…h. Closes #152 . Closes #153
2025-09-30 19:56:46 +02:00
Alina Varkki
ce356f2565
fix: snapshot does not capture Iframe content ( #217 )
...
Closes : #186
2025-09-30 09:38:08 +02:00
Alex Rudenko
d9f77f8509
fix: do not error if the dialog was already handled ( #208 )
...
users report that the MCP client gets stuck if the dialog was closed
manually as the MCP state never updates.
2025-09-29 13:53:25 +00:00
Jack Franklin
869dd4273e
fix: add data format information to trace summary ( #166 )
...
This CL adds the descriptions of the call frame format and the network
request format to the summary so that as the AI sees these responses it
can fully parse them.
2025-09-26 14:12:00 +01:00
Jack Franklin
2dbdd2de4f
chore: roll latest chrome-devtools-frontend ( #163 )
...
This includes a better fix for the circular dependency problem and makes
the changes in the MCP server based on the upstream DevTools
implementation changes.
2025-09-26 09:44:03 +01:00
Jack Franklin
b2e1e3944c
fix: roll latest DevTools to handle Insight errors ( #149 )
...
This commit updates DevTools to the latest release. This most
importantly includes a fix for #124 and other reported issues where
Insights that were actually errors were not handled correctly. They are
now formatted correctly on the DevTools side and now will not break
performance traces in the MCP server.
2025-09-25 18:25:35 +02:00
Nikolay Vitkov
15277541d8
chore: add additional EsLint rule ( #147 )
2025-09-25 17:20:01 +02:00
Oz Tamir
4c909bb8d7
feat: Add pagination list_network_requests ( #145 )
...
## Summary
This PR enhances the `list_network_requests` tool with pagination
support to handle large numbers of network requests efficiently. See
[this
issue](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/136 ).
## Motivation
In my experience, the `list_network_requests` tool frequently hits LLM
token limits on pages with many requests, making it unusable for modern
web applications. I wanted to add pagination to allow agents to be more
flexible and manage token limits on their own.
## Changes
### Pagination Support
- Added `pageSize` parameter to limit requests per call
- Added `pageToken` parameter for navigation between pages
- Added pagination metadata in responses (nextPageToken,
previousPageToken, startIndex, endIndex, total)
### Implementation Details
- **New utility**: `src/utils/pagination.ts` - generic pagination
function
- **Enhanced McpResponse**: Added pagination options to
`setIncludeNetworkRequests()`
- **Updated network tool**: Added pagination parameters to schema
- **Offset-based pagination**: Uses numeric tokens, handles invalid
tokens gracefully
## Testing
- Comprehensive test coverage for pagination scenarios
- Tests for first page, subsequent pages, invalid tokens, and edge cases
- All existing tests continue to pass
## Backward Compatibility
- If no pagination parameters are provided, the MCP will return all
requests (same as before)
2025-09-25 16:26:43 +02:00
Alex Rudenko
44cfc8f945
fix: avoid reporting page close errors as errors ( #127 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/125
2025-09-25 10:40:51 +00:00
Alex Rudenko
adfcecf987
fix: validate and report incompatible Node versions ( #113 )
...
Ref https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/92
2025-09-24 14:45:27 +02:00
Alex Rudenko
0ca2434a29
fix: forbid closing the last page ( #90 )
...
McpContext currently assumes that there is a page. Eventually we might
support closing the browser by closing the last page but right now we do
not really have responses that indicate that the browser was closed. So
this PR helps the LLM understand that it is okay to keep the last page
running (and there are platform-specific differences as to what happens
if the last page is closed).
Ref https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/87
2025-09-24 07:23:53 +00:00
Jack Franklin
e8fb30c1bf
fix: rework performance parsing & error handling ( #75 )
...
This PR tidies up the code around performance parsing and what we
respond with from our tools. It introduces the ability to have no
Insights from a trace (relatively rare, but can happen), and also adds
more information to the output in the event that something went wrong.
Previously we just logged errors, but if we respond with them here that
will also help users report issues and increase the chances that we can
debug them.
2025-09-23 15:42:35 +02:00
Alex Rudenko
91d83c4190
test: fix shell for windows tests ( #72 )
2025-09-23 09:37:22 +02:00
Nikolay Vitkov
1e8662f068
fix(emulation): correctly report info for selected page ( #63 )
...
Previously if one page was setting emulation all were reporting it.
2025-09-22 16:03:47 +02:00
Jack Franklin
b830b436f9
chore: roll devtools-frontend and update snapshots ( #59 )
2025-09-22 09:29:21 +00:00
Jack Franklin
21e175b862
feat: add performance_analyze_insight tool. ( #42 )
2025-09-17 12:25:40 +00:00
Alex Rudenko
c663f4d7f9
feat: support script evaluate arguments ( #40 )
...
This change allows clients to pass snapshot elements as arguments.
2025-09-16 17:44:53 +02:00
Alex Rudenko
014a8bc52e
feat: validate uids ( #37 )
...
- generate snapshot IDs.
- change uid to be a string.
- validate that uid is not coming from a stale snapshot.
2025-09-16 11:54:35 +00:00
Alex Rudenko
3fcea791eb
chore: roll puppeteer ( #25 )
...
This should solve flakiness related to multiple browser instances.
2025-09-15 16:12:13 +02:00
Alex Rudenko
e5e0616433
chore: switch to spec and clean up deps ( #17 )
2025-09-15 11:18:32 +02:00
Alex Rudenko
31a0bdce26
feat: initial version
2025-09-11 12:46:05 +02:00