Skip to content

fix: preserve underlying error message in input tool actions - #2792

Merged
samiyac merged 1 commit into
mainfrom
fix-tool-errors-and-lighthouse
Sep 21, 2026
Merged

samiyac merged 1 commit into
mainfrom
fix-tool-errors-and-lighthouse

Conversation

@Lightning00Blade

@Lightning00Blade Lightning00Blade commented Sep 21, 2026 •

Copy link
Copy Markdown
Collaborator

handleActionError previously rewrote every click/hover/fill/fill_form failure as "The element did not become interactive within the configured timeout", discarding the real cause. It now keeps that wording only for an actual Puppeteer TimeoutError and surfaces the underlying message otherwise, so e.g. selecting a missing option now reports Could not find option with text "...".

handleActionError previously rewrote every click/hover/fill/fill_form failure as 'The element did not become interactive within the configured timeout', discarding the real cause. It now keeps that wording only for an actual Puppeteer TimeoutError and surfaces the underlying error message otherwise (for example, when selecting a missing option).
@Lightning00Blade
Lightning00Blade force-pushed the fix-tool-errors-and-lighthouse branch from a4b5086 to d713739 Compare September 21, 2026 15:25
@Lightning00Blade Lightning00Blade changed the title fix: report real action failures and correct Lighthouse emulation fix: preserve underlying error message in input tool actions Sep 21, 2026
@Lightning00Blade
Lightning00Blade marked this pull request as ready for review September 21, 2026 15:51
@samiyac
samiyac added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit 6e47dbb Sep 21, 2026
31 of 34 checks passed
@samiyac
samiyac deleted the fix-tool-errors-and-lighthouse branch September 21, 2026 16:35
zamelee added a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
…ntion bound

Cherry-pick of upstream commit e98a3ca
(ConsoleCollector retention bound) onto fork main, bringing ChromeDevTools#2773 fix.

Why cherry-pick single commit:
- fork v1.7.0 = upstream v1.7.0 tag (commit 774d78f)
- upstream v1.7.0..HEAD: 178 commits, including ChromeDevTools#2408 SDK v2 + ChromeDevTools#2787 BrowserManager (large refactors)
- Tier 1 cherry-pick strategy (low-risk bug fixes first)

Other Tier 1 commits aborted:
- ChromeDevTools#2772 WaitForHelper timeout: conflict with fork's waitForHelperHelper() refactor (equivalent inlining)
- ChromeDevTools#2792 preserve input error message: needs puppeteer 25.10+ for TimeoutError export (fork is on 25.5.0)
- ChromeDevTools#2794 handle dialogs during input: same puppeteer version dep + input.ts already forked

Verification:
- PageCollector.ts source: 0 tsc errors
- tests/PageCollector.test.ts: passes via node --test
- build: tsc --noEmitOnError false + post-build.ts succeeds
- baseline tsc has 63 pre-existing errors (pnpm dual puppeteer-core paths) - not introduced by this commit

Next: Phase 2A (puppeteer 25.10.0 upgrade) before picking up ChromeDevTools#2792 / ChromeDevTools#2794.

Not for upstream PR per fork policy.
See tmp/code-backups/tier1-sync-handoff.md for full abort rationale.
zamelee pushed a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
…evTools#2792)

`handleActionError` previously rewrote every
`click`/`hover`/`fill`/`fill_form` failure as "The element did not
become interactive within the configured timeout", discarding the real
cause. It now keeps that wording only for an actual Puppeteer
`TimeoutError` and surfaces the underlying message otherwise, so e.g.
selecting a missing option now reports `Could not find option with text
"..."`.
zamelee added a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
…eDevTools#2792 TimeoutError import)

Upstream commit 6e74ab7 (ChromeDevTools#2792) introduces import { TimeoutError } from
'puppeteer-core', which is exported starting from puppeteer 25.10.0.
Fork v1.7.0 baseline shipped puppeteer 25.5.0 which lacks this export,
so cherry-pick of ChromeDevTools#2792 requires bumping the dep first.

This commit upgrades:
- puppeteer: 25.5.0 -> 25.11.0 (matches upstream HEAD)
- puppeteer-core: follows via pnpm overrides (\)

Verified after bump:
- puppeteer 25.11.0 exports TimeoutError + ScreenRecorder (Tier 3 chatgpt
  v2 fallback + ../../../third_party/index.ts both compile)
- fork's own fillSafe / Tier 3 / experimentalInteropTools / type_text
  Shift+Enter all retained (input.ts 1117 lines, 8 fillSafe refs)

Followed by commit 022f353 (ChromeDevTools#2792 preserve input error message).
ChromeDevTools#2794 (handle dialogs during input) was attempted but conflicted with
fork input.ts changes and was reset --hard (see tmp/code-backups/phase2a-handoff.md).

pnpm-lock.yaml regenerated via pnpm install --ignore-scripts
(ignored-build-dependencies skip per AGENTS.md §14.4).

Not for upstream PR per fork policy.
zamelee added a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
…pgrade

Brings upstream Tier 1 fix ChromeDevTools#2792 (preserve underlying error message in
input tool actions) plus the prerequisite puppeteer 25.5.0 -> 25.11.0
bump (TimeoutError / ScreenRecorder exports need puppeteer >= 25.10.0).

What landed:
- src/third_party/index.ts: +TimeoutError export (upstream ChromeDevTools#2792)
- src/tools/input.ts: handleActionError rewrite keeps original message
  when error is not Puppeteer TimeoutError
- tests/tools/input.test.ts: new test case 'reports why filling out a
  select failed'
- package.json: puppeteer 25.5.0 -> 25.11.0 (matches upstream HEAD)

What was attempted then aborted:
- ChromeDevTools#2794 (handle dialogs during input) - fork's fillSafe + Tier 3 +
  type_text Shift+Enter hybrid injection (1117 lines) was wholesale
  replaced by upstream's 617-line bare version via --theirs, dropping
  all fork-specific features. Reset --hard restored fork state.
  See tmp/code-backups/phase2a-handoff.md for manual-merge recipe.

Tier 1 cherry-pick status (cherry-picked across 3 PRs):
- ChromeDevTools#2773 ConsoleCollector retention bound: in main since commit c3dbf82
- ChromeDevTools#2792 preserve input error message: this merge
- ChromeDevTools#2772 WaitForHelper timout: skipped (equivalent refactor conflict)
- ChromeDevTools#2794 dialogs during input: aborted (fork-fillSafe collision)

Verification (per AGENTS.md §14.3):
- src/tools/input.ts: 1117 lines, fillSafe (8 refs) + Tier 3 chatgptv2
  (14 refs) + TimeoutError (2 refs, from ChromeDevTools#2792) all present
- src/third_party/index.ts: 0 tsc errors
- build artifact fresh 9/23: build/src/bin/chrome-devtools-mcp.js
- tsc --noEmitOnError false: 71 errors total (baseline 63 + 8 from
  upstream imports; no fork-side regressions)
- fork fixture: retained fillSafe + upload_file Tier 3 + type_text
  Shift+Enter behavior

Not for upstream PR per fork policy.
zamelee added a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
Append-only fork release notes for chrome-devtools-mcp-v1.7.1 tag (commit
d94f061). Documents Tier 1 cherry-picks from upstream v1.7.0..v1.9.0:

- ChromeDevTools#2773 ConsoleCollector retention bound (c3dbf82)
- ChromeDevTools#2792 preserve underlying error message in input tool actions (022f353)
- Prerequisite puppeteer 25.5.0 -> 25.11.0 upgrade (6032407)
- ChromeDevTools#2772 WaitForHelper timout skipped (equivalent refactor)
- ChromeDevTools#2794 dialogs during input aborted (fork-fillSafe collision)

Also covers prior fork docs additions in v1.7.0 -> v1.7.1:
- docs/mcp-server-config.md: 3 MCP server config + global mcp_optional_startup_grace_ms
- docs/troubleshooting.md: INPUT tool namespace collision (Computer Use plugin)

Upstream CHANGELOG.md is left untouched (release-please bot managed).

Not for upstream PR per fork policy.
zamelee added a commit to zamelee/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
Lockfile updated via \pnpm add -D puppeteer@25.11.0\ (not
\pnpm install --ignore-scripts\ which leaves lockfile in mixed state).

Aligns with package.json puppeteer bump in 6032407 (prerequisite for
upstream ChromeDevTools#2792 TimeoutError import).

Verification:
- pnpm install --frozen-lockfile should now succeed
- puppeteer-core: 25.11.0 (single copy in lockfile)
- TimeoutError export available from puppeteer-core (required by
  src/third_party/index.ts re-export from 022f353)

Not for upstream PR per fork policy.
pull Bot pushed a commit to oogalieboogalie/chrome-devtools-mcp that referenced this pull request Sep 23, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.10.0](ChromeDevTools/chrome-devtools-mcp@chrome-devtools-mcp-v1.9.0...chrome-devtools-mcp-v1.10.0)
(2026-09-23)


### 🎉 Features

* add css formatter class
([ChromeDevTools#2707](ChromeDevTools#2707))
([f0b5fa4](ChromeDevTools@f0b5fa4))
* add get_css_style tool
([ChromeDevTools#2612](ChromeDevTools#2612))
([4454ae0](ChromeDevTools@4454ae0))
* **performance:** chunked trace buffer parser for large recordings
([ChromeDevTools#2721](ChromeDevTools#2721))
([23b9a48](ChromeDevTools@23b9a48))
* set default pageSize and pageIdx for get_css_styles tool
([ChromeDevTools#2799](ChromeDevTools#2799))
([dc9d14d](ChromeDevTools@dc9d14d))
* support config file
([ChromeDevTools#2661](ChromeDevTools#2661))
([314a5fa](ChromeDevTools@314a5fa))
* **telemetry:** persist date of the last tool call.
([ChromeDevTools#2705](ChromeDevTools#2705))
([c54a493](ChromeDevTools@c54a493))
* **telemetry:** recording a sanitized version of the client name
([ChromeDevTools#2757](ChromeDevTools#2757))
([55fbc57](ChromeDevTools@55fbc57))
* **telemetry:** report hermes client usage.
([ChromeDevTools#2703](ChromeDevTools#2703))
([fb47e6c](ChromeDevTools@fb47e6c))
* update css formatter class to add AtRule, PositionTryRule,
PropertyRule, FunctionRule
([ChromeDevTools#2717](ChromeDevTools#2717))
([d4a0620](ChromeDevTools@d4a0620))
* update css formatter class to add inherited rules
([ChromeDevTools#2715](ChromeDevTools#2715))
([3d7e7bb](ChromeDevTools@3d7e7bb))
* update css formatter class to add matched rules
([ChromeDevTools#2713](ChromeDevTools#2713))
([8c8616f](ChromeDevTools@8c8616f))
* update css formatter class to add pseudo element
([ChromeDevTools#2716](ChromeDevTools#2716))
([df1469a](ChromeDevTools@df1469a))
* update css formatter to add keyframes rules
([ChromeDevTools#2718](ChromeDevTools#2718))
([cdc365c](ChromeDevTools@cdc365c))


### 🛠️ Fixes

* bound ConsoleCollector retention per navigation
([ChromeDevTools#2773](ChromeDevTools#2773))
([e98a3ca](ChromeDevTools@e98a3ca))
* **cli:** forward explicit false options on start
([ChromeDevTools#2702](ChromeDevTools#2702))
([d9a8cb6](ChromeDevTools@d9a8cb6))
* **config:** preserve raw values for config coercion
([ChromeDevTools#2747](ChromeDevTools#2747))
([906c83b](ChromeDevTools@906c83b))
* don't log Puppeteer logs to file unless requested
([ChromeDevTools#2743](ChromeDevTools#2743))
([4fbfbc4](ChromeDevTools@4fbfbc4))
* explain launch failures caused by running as root
([ChromeDevTools#2634](ChromeDevTools#2634))
([9d29223](ChromeDevTools@9d29223))
* handle JavaScript dialogs opened during input tool actions
([ChromeDevTools#2794](ChromeDevTools#2794))
([266112b](ChromeDevTools@266112b))
* **performance:** prevent memory leak by scoping trace engine model per
parse
([ChromeDevTools#2720](ChromeDevTools#2720))
([d05cbc0](ChromeDevTools@d05cbc0))
* preserve console history across same-document navigations
([ChromeDevTools#2676](ChromeDevTools#2676))
([aa25562](ChromeDevTools@aa25562))
* preserve underlying error message in input tool actions
([ChromeDevTools#2792](ChromeDevTools#2792))
([6e47dbb](ChromeDevTools@6e47dbb))
* set emulatedUserAgent and use finalDisplayedUrl in lighthouse_audit
([ChromeDevTools#2795](ChromeDevTools#2795))
([941f82a](ChromeDevTools@941f82a))
* timout in WaitForHelper.ts
([ChromeDevTools#2772](ChromeDevTools#2772))
([dc1d055](ChromeDevTools@dc1d055))


### 📄 Documentation

* add FLUJO client configuration
([ChromeDevTools#2690](ChromeDevTools#2690))
([65a679e](ChromeDevTools@65a679e))
* fix categories not being configured correclty
([ChromeDevTools#2807](ChromeDevTools#2807))
([2250cdc](ChromeDevTools@2250cdc))
* fix defaults for non-boolean values
([ChromeDevTools#2744](ChromeDevTools#2744))
([342d243](ChromeDevTools@342d243))
* update page routing option name
([ChromeDevTools#2748](ChromeDevTools#2748))
([8939965](ChromeDevTools@8939965))
* update SKILL for chrome-devtools to use get_css_styles tool
([ChromeDevTools#2760](ChromeDevTools#2760))
([421011e](ChromeDevTools@421011e))


### 🏗️ Refactor

* disable tools instead of not registering them
([ChromeDevTools#2636](ChromeDevTools#2636))
([b455469](ChromeDevTools@b455469))
* extract browser in a BrowserManager class
([ChromeDevTools#2787](ChromeDevTools#2787))
([3228f44](ChromeDevTools@3228f44))
* migrate the MCP SDK to v2
([ChromeDevTools#2408](ChromeDevTools#2408))
([da3c406](ChromeDevTools@da3c406))
* move comments formatting to CommentFormatter class
([ChromeDevTools#2719](ChromeDevTools#2719))
([e3cded0](ChromeDevTools@e3cded0))
* prepare for SDK v2
([ChromeDevTools#2771](ChromeDevTools#2771))
([61780c7](ChromeDevTools@61780c7))
* simplify our gen scritps
([ChromeDevTools#2793](ChromeDevTools#2793))
([5068584](ChromeDevTools@5068584))
* unify call type and ensure typesafety
([ChromeDevTools#2659](ChromeDevTools#2659))
([882f93e](ChromeDevTools@882f93e))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants