Repository navigation
fix: preserve underlying error message in input tool actions - #2792
Merged
Merged
Conversation
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
force-pushed
the
fix-tool-errors-and-lighthouse
branch
from
September 21, 2026 15:25
a4b5086 to
d713739
Compare
Lightning00Blade
marked this pull request as ready for review
September 21, 2026 15:51
samiyac
approved these changes
Sep 21, 2026
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
handleActionErrorpreviously rewrote everyclick/hover/fill/fill_formfailure as "The element did not become interactive within the configured timeout", discarding the real cause. It now keeps that wording only for an actual PuppeteerTimeoutErrorand surfaces the underlying message otherwise, so e.g. selecting a missing option now reportsCould not find option with text "...".