Alex Rudenko
1f593c3ccc
Merge branch 'main' into orkon/diff
2026-02-18 14:03:25 +01:00
Alex Rudenko
d2bc489e43
fix: check that combobox is actually a select element before filling out options ( #979 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/975
2026-02-18 09:17:33 +00:00
Alex Rudenko
0d9f422201
fix: handle network request pagination correctly ( #980 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/970
2026-02-17 11:29:27 +00:00
Alex Rudenko
9e1f9ac696
refactor: rename files to have more consistent style ( #935 )
...
rename files to match the style in the rest of the code.
2026-02-11 09:30:41 +00:00
Alex Rudenko
d59bca4ddf
test: add tests for more a11y attributes ( #934 )
...
I think this covers all a11y attributes from CDP + we have now verbose
vs non-verbose mode.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/363
2026-02-11 09:03:10 +00:00
Simon Zünd
8e2380b434
fix: console formatter hides frames from ignored scripts ( #927 )
...
This PR wires up the default DevTools ignore listing to hide frames from
third party scripts in stack traces. By default, we ignore:
* Scripts with `/node_modules/` in their URL or where the URL starts
with `node:/`
* Scripts that are marked as ignore listed in the source map
* Content scripts from extensions
The PR adds both, unit tests and an e2e test. This is because we allow
the unit test to pass a mocked ignore checker, where-as the e2e uses the
real DevTools one.
2026-02-10 07:24:09 +00:00
Simon Zünd
caea23a7cf
fix: limit stack traces to 50 lines ( #923 )
...
This PR refactors the stack trace formatting logic a bit: We split the
`formatStackTrace` function into 2: One for the top-level stack trace
and the rest for the recursive ones. We also return lines separately so
we can slice the result later.
2026-02-09 12:06:04 +00:00
dependabot[bot]
011726d7a2
chore(deps-dev): bump puppeteer from 24.36.1 to 24.37.2 in the bundled group ( #909 )
...
Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer ).
Updates `puppeteer` from 24.36.1 to 24.37.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: v24.37.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.37.1...puppeteer-core-v24.37.2 ">24.37.2</a>
(2026-02-06)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>improve ConsoleMessage text() results (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14662 ">#14662</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/0bb4703fed0e6fcd7b40899d1b81a54d4b5c48c7 ">0bb4703</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>document signal option in Page waitFor methods (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14648 ">#14648</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/771b8854d779e04279aa2063cf97df214e7e983d ">771b885</a>)</li>
</ul>
<h2>puppeteer: v24.37.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.37.1...puppeteer-v24.37.2 ">24.37.2</a>
(2026-02-06)</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>puppeteer-core bumped from 24.37.1 to 24.37.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer-core: v24.37.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.37.0...puppeteer-core-v24.37.1 ">24.37.1</a>
(2026-02-05)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Chrome 145.0.7632.46 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14653 ">#14653</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d2a55914bee23a57098631f8c7cc8571d68c54ab ">d2a5591</a>)</li>
<li>roll to Firefox 147.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14658 ">#14658</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ad5cee0a575e298ef1dd07ed4d7cba455950c524 ">ad5cee0</a>)</li>
</ul>
<h2>puppeteer: v24.37.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.37.0...puppeteer-v24.37.1 ">24.37.1</a>
(2026-02-05)</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</li>
</ul>
</li>
</ul>
<!-- 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-v24.37.1...puppeteer-v24.37.2 ">24.37.2</a>
(2026-02-06)</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>puppeteer-core bumped from 24.37.1 to 24.37.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>improve ConsoleMessage text() results (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14662 ">#14662</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/0bb4703fed0e6fcd7b40899d1b81a54d4b5c48c7 ">0bb4703</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>document signal option in Page waitFor methods (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14648 ">#14648</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/771b8854d779e04279aa2063cf97df214e7e983d ">771b885</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.37.0...puppeteer-v24.37.1 ">24.37.1</a>
(2026-02-05)</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>puppeteer-core bumped from 24.37.0 to 24.37.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Chrome 145.0.7632.46 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14653 ">#14653</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d2a55914bee23a57098631f8c7cc8571d68c54ab ">d2a5591</a>)</li>
<li>roll to Firefox 147.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14658 ">#14658</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ad5cee0a575e298ef1dd07ed4d7cba455950c524 ">ad5cee0</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.36.1...puppeteer-v24.37.0 ">24.37.0</a>
(2026-02-04)</h2>
<h3>🎉 Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/b163ce4593a8f014b86d67d53825fbeb679045ca "><code>b163ce4</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14663 ">#14663</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/dea54fe9ca6e03f77dda80ec329bce32a20deb5c "><code>dea54fe</code></a>
test: increase protocol timeout in waittask test (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14649 ">#14649</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/771b8854d779e04279aa2063cf97df214e7e983d "><code>771b885</code></a>
docs: document signal option in Page waitFor methods (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14648 ">#14648</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/0bb4703fed0e6fcd7b40899d1b81a54d4b5c48c7 "><code>0bb4703</code></a>
fix: improve ConsoleMessage text() results (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14662 ">#14662</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/af557b44a92bb99a76c7a93ac47fd875e323acd9 "><code>af557b4</code></a>
chore(deps): bump webpack from 5.98.0 to 5.105.0 in /website (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14661 ">#14661</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/edeca3546c339360bb586af731bf9141f9290ed6 "><code>edeca35</code></a>
chore: Increase timeout values for Windows and other platforms (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14659 ">#14659</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f0e14f0f5019fafb6cff80038bf10fb75a9de17e "><code>f0e14f0</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14656 ">#14656</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ad5cee0a575e298ef1dd07ed4d7cba455950c524 "><code>ad5cee0</code></a>
fix: roll to Firefox 147.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14658 ">#14658</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d2a55914bee23a57098631f8c7cc8571d68c54ab "><code>d2a5591</code></a>
fix: roll to Chrome 145.0.7632.46 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14653 ">#14653</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f59d6426be688f8b46da6ef34738208ca2216727 "><code>f59d642</code></a>
chore(deps): update chromium-bidi (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14655 ">#14655</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.36.1...puppeteer-v24.37.2 ">compare
view</a></li>
</ul>
</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 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 >
2026-02-06 13:06:29 +00:00
Alex Rudenko
f407c0e342
chore: stabilize versions in the license snapshot ( #911 )
2026-02-06 12:50:54 +00:00
Alex Rudenko
6d0eb491fd
test: add a console error object test ( #910 )
2026-02-06 12:50:27 +00:00
Simon Zünd
05b01ecaba
feat: include Error.cause chain for uncaught errors and logged Errors ( #906 )
2026-02-06 11:57:33 +00:00
Simon Zünd
9b90564888
chore: implement formatting for Error.cause messages ( #905 )
...
A follow-up PR will add actual `cause` property resolving of remote
`Error` objects.
2026-02-06 11:28:40 +00:00
Simon Zünd
ffa00dab1b
feat: show message and stack trace in details when console.log'ging Error objects ( #902 )
...
This PR improves the `get_console_message` tool when logging `Error`
objects. We use the existing `getExceptionDetails` CDP command to
retrieve the structured stack trace, we'll then source map.
Example:
```js
try {
compute();
} catch (e) {
console.log('Compute failed', e);
}
```
Before:
```txt
### Arguments
Arg #0 : Compute failed
Arg #1 : {}
```
After:
```txt
### Arguments
Arg #0 : Compute failed
Arg #1 : ComputeError: Invariant violation
at compute (foo.ts:1:20)
at <anonymous> (main.ts:2:8)
Note: line and column numbers use 1-based indexing
```
---------
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com >
2026-02-06 09:38:27 +00:00
Simon Zünd
1fad330bad
chore: implement formatting of Error console.log arguments ( #901 )
...
This PR implements formatting for `SymbolizedError` objects that are
part of "resolved arguments". A follow-up PR will handle the actual
conversion of `Error` remote objects to `SymbolizedError`s.
2026-02-06 08:25:38 +00:00
Simon Zünd
f4cfd4664e
chore: introduce SymbolizedError class ( #890 )
...
The "SymbolizedError" class represents a fully resolved error: The stack
trace is fully resolved and (in the future), the full `Error.cause`
chain is also fully resolved.
We'll use the `SymbolizedError` for both "uncaught exceptions" as well
as when logging `Error` objects to the console (e.g. `console.log(new
Error())`. This means the `resolvedArgs` array in `ConsoleFormatter`
will contain one `SymbolizedError` instance for every `Error` object
logged.
2026-02-05 07:57:21 +00:00
Paul Irish
b747f9d74a
feat: Integrate CrUX data into performance trace summaries ( #733 )
...
We upgrade the performance trace tools to include real-user experience
data from the Chrome User Experience Report (CrUX).
https://developer.chrome.com/docs/crux
https://developer.chrome.com/docs/crux/methodology
### Deets
* When a trace is stopped, the server now extracts the primary
navigation URLs from the trace (determined by insightSets).
* It calls the public CrUX API to fetch field metrics (LCP, INP, CLS)
for each unique URL/Origin.
* The formatting of crux data is handled by upstream TraceFormatter, but
it looks like this:
```md
Metrics (field / real users):
- LCP: 2595 ms (scope: url)
- LCP breakdown:
- TTFB: 1273 ms (scope: url)
- Load delay: 86 ms (scope: url)
- Load duration: 451 ms (scope: url)
- Render delay: 786 ms (scope: url)
- INP: 140 ms (scope: url)
- CLS: 0.06 (scope: url)
- The above data is from CrUX–Chrome User Experience Report. It's how the page performs for real users.
- The values shown above are the p75 measure of all real Chrome users
- The scope indicates if the data came from the entire origin, or a specific url
- Lab metrics describe how this specific page load performed, while field metrics are an aggregation of results from real-world users. Best practice is to prioritize metrics that are bad in field data. Lab metrics may be better or worse than fields metrics depending on the developer's machine, network, or the actions performed while tracing.
```
**Privacy Considerations:**
* Updates the server README to inform users that performance analysis tools may send trace URLs to the Google CrUX API.
* Adds a notification message to the server startup logs regarding the CrUX API interaction.
Doc: go/crux-in-bifrost
Fixes b/446630695
---------
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com >
2026-02-05 07:27:15 +00:00
dependabot[bot]
247a41951d
chore(deps-dev): bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 ( #888 )
...
Bumps
[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk )
from 1.25.3 to 1.26.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/modelcontextprotocol/typescript-sdk/releases "><code>@modelcontextprotocol/sdk</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.26.0</h2>
<p>Addresses "Sharing server/transport instances can leak
cross-client response data" in this GHSA <a
href="https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-345p-7cg4-v4c7 ">https://github.com/modelcontextprotocol/typescript-sdk/security/advisories/GHSA-345p-7cg4-v4c7 </a></p>
<h2>What's Changed</h2>
<ul>
<li>chore: bump v1.25.3 for backport fixes by <a
href="https://github.com/pcarleton "><code>@pcarleton</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1412 ">modelcontextprotocol/typescript-sdk#1412</a></li>
<li>fix(deps): resolve npm audit vulnerabilities and bump dependencies
(v1.x backport) by <a
href="https://github.com/samuv "><code>@samuv</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1382 ">modelcontextprotocol/typescript-sdk#1382</a></li>
<li>Fix <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1430 ">#1430</a>:
Client Credentials providers scopes support (backported) by <a
href="https://github.com/NSeydoux "><code>@NSeydoux</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1442 ">modelcontextprotocol/typescript-sdk#1442</a></li>
<li>chore: bump version to 1.26.0 by <a
href="https://github.com/pcarleton "><code>@pcarleton</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1479 ">modelcontextprotocol/typescript-sdk#1479</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/samuv "><code>@samuv</code></a> made
their first contribution in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1382 ">modelcontextprotocol/typescript-sdk#1382</a></li>
<li><a href="https://github.com/NSeydoux "><code>@NSeydoux</code></a>
made their first contribution in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1442 ">modelcontextprotocol/typescript-sdk#1442</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.3...v1.26.0 ">https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.3...v1.26.0 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/fe9c07b465871394c7069207c86513df9c1194a4 "><code>fe9c07b</code></a>
chore: bump version to 1.26.0 (<a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1479 ">#1479</a>)</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/4f01e7e0708e1a85ccc7dbf39e850005f2d9ff03 "><code>4f01e7e</code></a>
fix: add non-null assertions for optional setupServer fields in stateful
test</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/a05be176cabeae1f933b676e3ce024bf02e2314d "><code>a05be17</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/50d9fa3cd12e807e7963bcb9e1548786d3d5d941 "><code>50d9fa3</code></a>
Fix <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1430 ">#1430</a>:
Client Credentials providers scopes support (backported) (<a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1442 ">#1442</a>)</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/aa81a66556fb4434d8a6d1b70f7ac9fc40b5d325 "><code>aa81a66</code></a>
fix(deps): resolve npm audit vulnerabilities and bump dependencies (v1.x
back...</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/6aba0659654e1ff0699844524595922a61e44cb9 "><code>6aba065</code></a>
chore: bump v1.25.3 for backport fixes (<a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1412 ">#1412</a>)</li>
<li>See full diff in <a
href="https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.3...v1.26.0 ">compare
view</a></li>
</ul>
</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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ChromeDevTools/chrome-devtools-mcp/network/alerts ).
</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 >
2026-02-05 07:07:37 +00:00
Alex Rudenko
3d6e59dda4
fix: accidental extra typing in the fill tool ( #886 )
...
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/881
2026-02-04 09:34:17 +00:00
Simon Zünd
7e1ec81fb6
fix: use 1-based line/column and fix wasm offsets in stack frames ( #884 )
...
`UILocation.linkText` does the right thing when formatting a location,
e.g. a wasm location will be formatted as `foo.wasm:0x95`.
2026-02-04 08:15:27 +00:00
Simon Zünd
ecef712e70
feat: include source-mapped stack trace for uncaught errors ( #876 )
...
Note that we replace the existing "pageerror" handler with our new
`UncaughtError` handler. The latter has a structured stack trace
attached which we can source map via DevTools.
This regresses the current functionality slightly, as we lose
"pageerror"s for workers and oopif.
2026-02-03 12:24:23 +00:00
Simon Zünd
a08f550b28
chore: implement formatting for UncaughtError ( #875 )
2026-02-03 11:42:18 +00:00
Simon Zünd
b5369a6c13
chore: include target ID in UncaughtError ( #873 )
2026-02-03 10:03:06 +00:00
Simon Zünd
67d4b7aab6
chore: emit UncaughtError events for Runtime.exceptionThrown ( #871 )
...
Follow-up PRs will implement formatting of `UncaughtError`s and actually
collecting them.
2026-02-03 08:52:49 +00:00
Alex Rudenko
a0aeb97693
fix: respect custom timeouts in navigate tools ( #865 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/863
2026-01-30 09:40:48 +00:00
Alex Rudenko
c0435a2d53
fix: disable usage statistics when CI or CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS env is set ( #862 )
...
When CI or CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS env variables are
set, we override the set cli args and disable the usage statistics.
2026-01-30 07:58:45 +00:00
Alex Rudenko
5a23a8c201
feat: support testing light and dark mode ( #858 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/130
2026-01-28 13:57:54 +00:00
Gustav Ernberg von Heijne
d845ad4858
feat: Add ability to inject script to run on page load ( #568 )
...
Adds a parameter "initScript" to be used to inject a script into the
page load before other scripts execute.
[Page.evaluateOnNewDocument](https://pptr.dev/api/puppeteer.page.evaluateonnewdocument )
See #567
---------
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-01-28 12:29:33 +00:00
Alex Rudenko
7e279f1b67
feat: enable usage statistics by default with opt-out ( #855 )
...
## **Usage statistics**
Google collects usage statistics (such as tool invocation success rates,
latency, and environment information) to improve the reliability and
performance of Chrome DevTools MCP.
Data collection is **enabled by default**. You can opt-out by passing
the `--no-usage-statistics` flag when starting the server:
```json
"args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"]
```
Google handles this data in accordance with the [Google Privacy
Policy](https://policies.google.com/privacy ).
Google's collection of usage statistics for Chrome DevTools MCP is
independent from the Chrome browser's usage statistics. Opting out of
Chrome metrics does not automatically opt you out of this tool, and
vice-versa.
The code determining statistics that are collected is in here
https://github.com/ChromeDevTools/chrome-devtools-mcp/tree/main/src/telemetry .
2026-01-28 10:18:10 +00:00
dependabot[bot]
65e186e80b
chore(deps-dev): bump puppeteer from 24.36.0 to 24.36.1 in the bundled group ( #854 )
...
Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer ).
Updates `puppeteer` from 24.36.0 to 24.36.1
<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.36.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.36.0...puppeteer-core-v24.36.1 ">24.36.1</a>
(2026-01-27)</h2>
<h3>♻️ Chores</h3>
<ul>
<li>improve TargetManager code (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14602 ">#14602</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/2c1e0025594ee28e5ddff318eb91307941eaa3a0 ">2c1e002</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 2.11.1 to 2.11.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v24.36.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.36.0...puppeteer-v24.36.1 ">24.36.1</a>
(2026-01-27)</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 2.11.1 to 2.11.2</li>
<li>puppeteer-core bumped from 24.36.0 to 24.36.1</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.36.0...puppeteer-v24.36.1 ">24.36.1</a>
(2026-01-27)</h2>
<h3>♻️ Chores</h3>
<ul>
<li>improve TargetManager code (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14602 ">#14602</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/2c1e0025594ee28e5ddff318eb91307941eaa3a0 ">2c1e002</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 2.11.1 to 2.11.2</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/5d820f2872cdec366fbf6069d03ebc094d8b97f2 "><code>5d820f2</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14601 ">#14601</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/2c1e0025594ee28e5ddff318eb91307941eaa3a0 "><code>2c1e002</code></a>
refactor: improve TargetManager code (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14602 ">#14602</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/306fa41d544efe5142e0dbc7a8c3b1a365dc079a "><code>306fa41</code></a>
chore(deps): update site deps (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14608 ">#14608</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f09b945e5f6259967a914e5ba4a25c95f4483fe7 "><code>f09b945</code></a>
chore(deps-dev): bump the dev-dependencies group across 1 directory with
15 u...</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/7d9eaa1778c18b9aef8ecff02d3c5de6c87df70a "><code>7d9eaa1</code></a>
chore(deps): bump the all group across 1 directory with 5 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14605 ">#14605</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/34b1635c87342682ae1deac03242795c097a4b34 "><code>34b1635</code></a>
test: fix ng-schematics tests (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14606 ">#14606</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/c95d1bfd4be847d07f81b4a8c819786d3f51534d "><code>c95d1bf</code></a>
fix: typo in the config path in getConfigHomeLinux (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14600 ">#14600</a>)</li>
<li>See full diff in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.36.0...puppeteer-v24.36.1 ">compare
view</a></li>
</ul>
</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: Alex Rudenko <alexrudenko@chromium.org >
2026-01-28 09:01:13 +00:00
Alex Rudenko
85d008ac3a
chore: merge licenses for all dependencies in one file ( #849 )
2026-01-27 18:37:31 +00:00
Ergün Erdoğmuş
210bacdb04
chore: Implement ClearcutSender HTTP transport for telemetry disabled by default ( #805 )
...
This PR completes the telemetry system by implementing the transport
layer for `ClearcutSender`. It enables actual HTTP communication with
the Clearcut backend, handling event batching, rate limiting, and
reliable delivery, including robust shutdown handling.
**Key Changes:**
* **HTTP Transport**: Implemented `fetch`-based transport sending `POST`
requests to the Clearcut HTTP server.
* **Event Batching**: Events are now buffered and flushed periodically
(default: 15 minutes) or on shutdown.
* **Reliability & Rate Limiting**:
* **Server-Side Backoff**: Respects `next_request_wait_millis` from
server responses to handle rate limiting dynamically.
* **Transient Error Retries**: Failed requests (5xx, 429) result in
events being requeued for the next flush.
* **Request Timeouts**: Enforced 30s timeout on requests to prevent
hanging processes.
* **Session Rotation**: Automatically rotates session IDs every 24
hours.
* **Safety & Stability**:
* **Buffer Overflow Protection**: Caps the buffer at 1000 events to
prevent memory leaks, dropping oldest events if necessary.
* **Optimistic Removal**: Prevents race conditions and duplicate events
during shutdown by optimistically removing events from the buffer before
sending.
* **Testing Improvements**:
* **E2E Robustness**: Updated E2E tests to use a mock web server instead
of relying on the logger to log specific lines.
**Implementation Roadmap:**
These changes finalize the planned telemetry architecture:
1. **CLI & Opt-out Mechanism
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/757 ))**
2. **Logger Scaffolding & Integration
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/758 ))**
3. **Persistence Layer
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/766 ))**
4. **Watchdog Process Architecture
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/769 ))**
5. **Transport, Batching & Retries (This PR):**
* Finalized `ClearcutSender` with HTTP transport, batching, and
server-directed backoff strategies.
---------
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-01-27 14:18:33 +00:00
Alex Rudenko
695817f6d6
fix: make request and response handling more robust ( #846 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/842
2026-01-27 12:35:47 +00:00
Alex Rudenko
dc43ede1f2
fix: improve error handling for console messages ( #844 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/838
2026-01-27 12:27:10 +00:00
Natasha Gorshunova
569894d486
chore: Implement reload_extension tool ( #847 )
...
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org >
2026-01-27 11:13:03 +00:00
adam jones
d7568881ba
feat: add background parameter to new_page tool ( #837 )
...
## Summary
- Add `background` boolean parameter to the `new_page` tool
- When set to `true`, the new page opens in the background without
bringing it to the front
- Uses Puppeteer's existing `background` option for `browser.newPage()`
Fixes #826
---------
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com >
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-01-26 16:06:59 +00:00
Alex Rudenko
849c59071c
chore: add structured content for rest of tools ( #836 )
...
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/689
2026-01-26 14:01:35 +00:00
Natasha Gorshunova
4ad781fee6
chore: implement list_extensions tool for local unpacked extensions ( #819 )
...
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org >
Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com >
2026-01-26 10:37:13 +00:00
Alex Rudenko
4b8e9f2875
feat: allow skipping snapshot generation for input tools ( #821 )
...
Input tools have snapshots not re-generated by default now with an
option to opt-in to get a snapshot.
Refs: https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/726
2026-01-23 13:43:00 +00:00
Ergün Erdoğmuş
cdb00fc8cc
chore: implement bucketized latency reporting for tool invocations ( #822 )
2026-01-23 13:00:42 +00:00
Alex Rudenko
d73aba393d
feat: snapshot diff
2026-01-22 20:42:10 +01:00
Alex Rudenko
a6cd2cd3f2
fix: re-use node ids across snapshots ( #814 )
...
previously, Chrome DevTools MCP was strictly requiring the client to use
the latest snapshot. This change updates the behavior to be more
lenient. Previously issued uids will be recognized if the underlying
backend Id (loaderId + backendNodeId) still exists.
Related https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/726
2026-01-22 14:25:39 +00:00
dependabot[bot]
a7a559efd8
chore(deps-dev): bump the bundled group with 3 updates ( #812 )
...
Bumps the bundled group with 3 updates:
[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk ),
[core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js )
and [puppeteer](https://github.com/puppeteer/puppeteer ).
Updates `@modelcontextprotocol/sdk` from 1.25.2 to 1.25.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/modelcontextprotocol/typescript-sdk/releases "><code>@modelcontextprotocol/sdk</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.25.3</h2>
<h2>What's Changed</h2>
<ul>
<li>[v1.x backport] Use correct schema for client sampling validation
when tools are present by <a
href="https://github.com/olaservo "><code>@olaservo</code></a> in <a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1407 ">modelcontextprotocol/typescript-sdk#1407</a></li>
<li>fix: prevent Hono from overriding global Response object (v1.x) by
<a href="https://github.com/mattzcarey "><code>@mattzcarey</code></a> in
<a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/pull/1411 ">modelcontextprotocol/typescript-sdk#1411</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.2...v1.25.3 ">https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.2...v1.25.3 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/ced75351af16850ea82fca478b921abc4a5385e4 "><code>ced7535</code></a>
1.25.3</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/6e8f7e1a43a819ae230373c62b82228dafd892c6 "><code>6e8f7e1</code></a>
fix: prevent Hono from overriding global Response object (v1.x) (<a
href="https://redirect.github.com/modelcontextprotocol/typescript-sdk/issues/1411 ">#1411</a>)</li>
<li><a
href="https://github.com/modelcontextprotocol/typescript-sdk/commit/12ae856cee6ca58499cce24e80f650e78a0c7610 "><code>12ae856</code></a>
[v1.x backport] Use correct schema for client sampling validation when
tools ...</li>
<li>See full diff in <a
href="https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.2...v1.25.3 ">compare
view</a></li>
</ul>
</details>
<br />
Updates `core-js` from 3.47.0 to 3.48.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/zloirock/core-js/blob/master/CHANGELOG.md ">core-js's
changelog</a>.</em></p>
<blockquote>
<h3><a
href="https://github.com/zloirock/core-js/releases/tag/v3.48.0 ">3.48.0 -
2026.01.21</a></h3>
<ul>
<li>Changes <a
href="https://github.com/zloirock/core-js/compare/v3.47.0...v3.48.0 ">v3.47.0...v3.48.0</a>
(126 commits)</li>
<li><a href="https://github.com/tc39/proposal-upsert "><code>Map</code>
upsert proposal</a>:
<ul>
<li>Built-ins:
<ul>
<li><code>Map.prototype.getOrInsert</code></li>
<li><code>Map.prototype.getOrInsertComputed</code></li>
<li><code>WeakMap.prototype.getOrInsert</code></li>
<li><code>WeakMap.prototype.getOrInsertComputed</code></li>
</ul>
</li>
<li>Moved to stable ES, <a
href="https://github.com/tc39/proposals/commit/131e53d6c9e658c6439831a167ed3f7897daf160 ">January
2026 TC39 meeting</a></li>
<li>Added <code>es.</code> namespace modules, <code>/es/</code> and
<code>/stable/</code> namespaces entries</li>
</ul>
</li>
<li>Use <code>CreateDataProperty</code> /
<code>CreateDataPropertyOrThrow</code> in some missed cases, <a
href="https://redirect.github.com/zloirock/core-js/issues/1497 ">#1497</a></li>
<li>Minor fix / optimization in the <code>RegExp</code> constructor (NCG
and <code>dotAll</code>) polyfill</li>
<li>Added some more workarounds for a Safari < 13 bug with silent
ignore of non-writable array <code>.length</code></li>
<li>Added detection of a Webkit <a
href="https://bugs.webkit.org/show_bug.cgi?id=297532 ">bug</a>:
<code>Iterator.prototype.flatMap</code> throws on iterator without
<code>return</code> method</li>
<li>Added detection of a V8 ~ Chromium < 144 <a
href="https://issues.chromium.org/issues/454630441 ">bug</a>:
<code>Uint8Array.prototype.setFromHex</code> throws an error on
length-tracking views over ResizableArrayBuffer</li>
<li>Compat data improvements:
<ul>
<li><a href="https://github.com/tc39/proposal-upsert "><code>Map</code>
upsert proposal</a> features marked as <a
href="https://issues.chromium.org/issues/434977728#comment4 ">shipped in
V8 ~ Chrome 145</a></li>
<li><a href="https://github.com/tc39/proposal-joint-iteration ">Joint
iteration proposal</a> features marked as <a
href="https://bugzilla.mozilla.org/show_bug.cgi?id=2003333#c8 ">shipped
in FF148</a></li>
<li><a
href="https://github.com/tc39/proposal-iterator-sequencing "><code>Iterator.concat</code></a>
marked as shipped in Bun 1.3.7</li>
<li>Added <a
href="https://github.com/mozilla/rhino/releases/tag/Rhino1_9_0_Release ">Rhino
1.9.0</a> compat data</li>
<li>Added <a
href="https://github.com/denoland/deno/releases/tag/v2.6.0 ">Deno 2.6</a>
compat data mapping</li>
<li>Added Opera Android <a
href="https://forums.opera.com/topic/87267/opera-for-android-93 ">93</a>
and <a
href="https://forums.opera.com/topic/87678/opera-for-android-94 ">94</a>
compat data mapping</li>
<li>Added Electron 41 compat data mapping</li>
<li><code>Iterator.prototype.flatMap</code> marked as supported from
Safari 26.2 and Bun 1.2.21 because of a <a
href="https://bugs.webkit.org/show_bug.cgi?id=297532 ">bug</a>: throws on
iterator without <code>return</code> method</li>
<li><code>Uint8Array.prototype.setFromHex</code> marked as supported
from V8 ~ Chromium 144 because of a <a
href="https://issues.chromium.org/issues/454630441 ">bug</a>: throws an
error on length-tracking views over ResizableArrayBuffer</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zloirock/core-js/commit/5d657da9e5ab5ac2f1657ba81821ecc50960b3ad "><code>5d657da</code></a>
v3.48.0</li>
<li><a
href="https://github.com/zloirock/core-js/commit/5644e73d977a0fc2e3bc9354aed678a4ce6ee0b1 "><code>5644e73</code></a>
Add bug detection for <code>Uint8Array.prototype.setFromHex</code></li>
<li><a
href="https://github.com/zloirock/core-js/commit/804a10e6e54e03c1e426b0788bae1282dface839 "><code>804a10e</code></a>
Merge pull request <a
href="https://github.com/zloirock/core-js/tree/HEAD/packages/core-js/issues/1501 ">#1501</a>
from zloirock/flat-map-fix</li>
<li><a
href="https://github.com/zloirock/core-js/commit/45d7fe314e97d65eff26ceb9b6ae1849c856bb20 "><code>45d7fe3</code></a>
Add bug detection to Iterator flatMap method</li>
<li><a
href="https://github.com/zloirock/core-js/commit/efd9c2f14c2cd4d26a4893a60ab8ef5313de0c26 "><code>efd9c2f</code></a>
move <code>Map</code> upsert proposal to stable ES</li>
<li><a
href="https://github.com/zloirock/core-js/commit/dcb938dc68ff4ef957095712be2f3d7cc3985caa "><code>dcb938d</code></a>
update the year and normalize the copyright wording</li>
<li><a
href="https://github.com/zloirock/core-js/commit/5454a5d20f468dd4556441c85cbecd437adb40c3 "><code>5454a5d</code></a>
add some more workarounds for a Safari < 13 bug with silent ignore of
non-wri...</li>
<li><a
href="https://github.com/zloirock/core-js/commit/73d4b6c4f5c729aad6ff1be7648f8a51a0aed38a "><code>73d4b6c</code></a>
add some more <code>createProperty</code> cases</li>
<li><a
href="https://github.com/zloirock/core-js/commit/9c89290d70612e6ac9f7ebf6215f63dc71965693 "><code>9c89290</code></a>
fix: spec compliance for Array.prototype.flat and flatMap</li>
<li><a
href="https://github.com/zloirock/core-js/commit/e3774ce67d77fe3bd5f89aa36488ef5ebbb0ba35 "><code>e3774ce</code></a>
fix: use createProperty in Array.prototype.filter</li>
<li>Additional commits viewable in <a
href="https://github.com/zloirock/core-js/commits/v3.48.0/packages/core-js ">compare
view</a></li>
</ul>
</details>
<br />
Updates `puppeteer` from 24.35.0 to 24.36.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.36.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.35.0...puppeteer-core-v24.36.0 ">24.36.0</a>
(2026-01-22)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 144.0.7559.96 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14587 ">#14587</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/35eaf7c21e0256453cde6d57692cacfba48cc1e3 ">35eaf7c</a>)</li>
<li>roll to Firefox 147.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14559 ">#14559</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/63dd0e401f67ebc2c831e93d60fdbf23fa15fb53 ">63dd0e4</a>)</li>
<li><strong>webdriver:</strong> use
<code>emulation.setClientHintsOverride</code> (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14588 ">#14588</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d63dafde50d1f07e4c39b2ca53b7e7907109791e ">d63dafd</a>)</li>
<li><strong>webdriver:</strong> use
<code>emulation.setTouchOverride</code> (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14566 ">#14566</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/e7268395411f6d02861c014a3ace2e3327e84d43 ">e726839</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>HTTPResponse.text() method expected to throw when content is
malformed (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14450 ">#14450</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d967f6ce3bbe4bdc9303303b97f9b4f33743105b ">d967f6c</a>)</li>
<li>roll to Firefox 147.0.1 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14574 ">#14574</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c9bdb7a8e3c47965fa4abbccc0eb9ac06deb9d39 ">c9bdb7a</a>)</li>
</ul>
<h2>puppeteer: v24.36.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.35.0...puppeteer-v24.36.0 ">24.36.0</a>
(2026-01-22)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 144.0.7559.96 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14587 ">#14587</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/35eaf7c21e0256453cde6d57692cacfba48cc1e3 ">35eaf7c</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 24.35.0 to 24.36.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.35.0...puppeteer-v24.36.0 ">24.36.0</a>
(2026-01-22)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 144.0.7559.96 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14587 ">#14587</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/35eaf7c21e0256453cde6d57692cacfba48cc1e3 ">35eaf7c</a>)</li>
<li>roll to Firefox 147.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14559 ">#14559</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/63dd0e401f67ebc2c831e93d60fdbf23fa15fb53 ">63dd0e4</a>)</li>
<li><strong>webdriver:</strong> use
<code>emulation.setClientHintsOverride</code> (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14588 ">#14588</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d63dafde50d1f07e4c39b2ca53b7e7907109791e ">d63dafd</a>)</li>
<li><strong>webdriver:</strong> use
<code>emulation.setTouchOverride</code> (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14566 ">#14566</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/e7268395411f6d02861c014a3ace2e3327e84d43 ">e726839</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 24.35.0 to 24.36.0</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>HTTPResponse.text() method expected to throw when content is
malformed (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14450 ">#14450</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d967f6ce3bbe4bdc9303303b97f9b4f33743105b ">d967f6c</a>)</li>
<li>roll to Firefox 147.0.1 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14574 ">#14574</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/c9bdb7a8e3c47965fa4abbccc0eb9ac06deb9d39 ">c9bdb7a</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/c5fdc0c57ddc736439ed8f20a2ccc24647a896ff "><code>c5fdc0c</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14558 ">#14558</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/514ef71fec32686446a2465dba9565ca88800f89 "><code>514ef71</code></a>
test: skip a flaky test (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14599 ">#14599</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d63dafde50d1f07e4c39b2ca53b7e7907109791e "><code>d63dafd</code></a>
feat(webdriver): use <code>emulation.setClientHintsOverride</code> (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14588 ">#14588</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/e7d3d0e51458da194e9b9c04f4a5112d9b59463b "><code>e7d3d0e</code></a>
chore(deps): bump lock to upgrade vulnerable tar package (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14598 ">#14598</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/a51345c0aa6fadab942f8ee49cbf1ba9b8fec7c5 "><code>a51345c</code></a>
test: mark flaky tests (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14597 ">#14597</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/fd05d808006f85d571c7cbfad4edb8ae2de14d9c "><code>fd05d80</code></a>
chore(deps-dev): bump lodash from 4.17.21 to 4.17.23 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14595 ">#14595</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f6f8e0e0933d538c22fc632453e2c171bfc1216c "><code>f6f8e0e</code></a>
chore(deps): bump lodash from 4.17.21 to 4.17.23 in /website (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14596 ">#14596</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/35eaf7c21e0256453cde6d57692cacfba48cc1e3 "><code>35eaf7c</code></a>
feat: roll to Chrome 144.0.7559.96 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14587 ">#14587</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/a63847d707db3b948267078bbaf44dbd87023d7e "><code>a63847d</code></a>
test: update expectations (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14589 ">#14589</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/de6df06114bda9fbdb7a176a5d9f93543d7f6450 "><code>de6df06</code></a>
test: make test more robust (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14592 ">#14592</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.35.0...puppeteer-v24.36.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>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org >
2026-01-22 12:35:34 +00:00
Alex Rudenko
fbd22ce869
chore: structured performance responses ( #809 )
...
This PR moves formatting out of the tools and to the McpResponse.
Drive-by: clears up past trace results.
2026-01-22 10:01:59 +00:00
Alex Rudenko
b0d041a0b2
chore: structured content for console ( #804 )
2026-01-22 06:53:03 +00:00
Alex Rudenko
feee900a4c
chore: create a console formatter class ( #802 )
...
This cleans up the McpResponse and helps with returning the structured
content.
2026-01-21 10:04:20 +00:00
Alex Rudenko
a8169676f9
feat: support device viewport and user agent emulation ( #798 )
...
This PR adds two emulation attributes `viewport` and `userAgent` that
allow emulating a mobile or a different desktop device.
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/272
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/619
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/410
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/280
(the recommended way is to emulate via the MCP server instead of a
parallel DevTools session)
2026-01-20 14:07:57 +00:00
Simon Zünd
a3a00210a3
feat: include stack trace in 'get_console_message' tool ( #740 )
...
This is the stack trace of the console message itself. If the argument
is an Error object or an "Error.stack" like string we don't do anything
special (yet).
The stack trace is source mapped if source maps are available.
The function matches the target ID of the console message to the
`SDK.Target` of DevTools. The only oddity is that DevTools works in a
lazy manor: It creates stack traces upfront and as source maps come in,
stack traces get updated. This does not work for the MCP server.
Instead, we wait for script parsed events and source maps to attach
before creating the stack trace. Since this could take potentially a
while, we guard it with a time out.
2026-01-20 09:58:29 +00:00
Alex Rudenko
c29d097b92
chore: extract issue formatter in preparation to structured content ( #794 )
...
This makes it easier to add JSON-format as the output for issues.
Console formatter will be changed next.
2026-01-20 07:03:30 +00:00
Natasha Gorshunova
24d15a9375
chore: Implement uninstall_extension tool ( #796 )
...
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org >
2026-01-20 07:01:10 +00:00
Ergün Erdoğmuş
fb920c0677
chore: Prefix logged enum flag values with their snake_case name ( #799 )
2026-01-20 07:00:59 +00:00