inspector/clients/web/src/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall b70aed6914 test(fix): probe a single-source route when waiting for the dead transport
Review feedback on #1987: `waitForDeadTransport` polled `/api/mcp/send`,
which answers `transport_error` from two branches — the `isTransportDead()`
short-circuit and the `catch` around a rejected `send()`. Only the first
implies the transport is marked dead, so the stop condition could not tell
them apart from the response alone.

That was safe in practice: `StdioClientTransport.send` rejects only when
`_process` is undefined, and the transport clears `_process` and calls
`onclose` in one synchronous block, so the `catch` branch is not observable
before `markTransportDead()` has run (confirmed empirically — 0/25 probes
returned early). But the safety rested on an SDK-internal ordering this test
neither states nor controls, and if it changed the send test would silently
cover the `catch` branch instead of the short-circuit it names — a regression
with no failing run attached to it.

Poll `/api/mcp/auth-state` instead. For a session connected without an
authState there is no auth provider, so `setAuthState` always throws and
`transport_error` there has exactly one source: the dead-transport
short-circuit. The route never awaits a transport response, so it cannot
hang either. Same cost, exact condition, no dependence on SDK internals.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WLYmVPVLdeYpE6aMTUsCks
2026-08-12 01:10:03 -04:00
..
core Merge pull request #1946 from modelcontextprotocol/v2/fix/firefox-sse-stream-hang 2026-08-11 11:22:34 -04:00
fixtures Thread cacheMode through managed list refresh via SDK cache-aware verbs (#1721) (#1723) 2026-07-19 01:06:31 -04:00
integration test(fix): probe a single-source route when waiting for the dead transport 2026-08-12 01:10:03 -04:00
PreviewAnnotations.stories.tsx chore(storybook): derive the primary shade from the theme in the guard 2026-08-10 23:54:44 -04:00
renderWithMantine.tsx test(web): settle real-timer Transitions so the coverage gate can't leak 'window is not defined' (#1786) (#1793) 2026-07-26 15:49:33 -04:00
scrollAreaStoryAssertions.ts refactor(web): rename "History" tab/feature to "Protocol" (#1623) 2026-07-09 19:04:54 -04:00
setup.ts test(web): settle real-timer Transitions so the coverage gate can't leak 'window is not defined' (#1786) (#1793) 2026-07-26 15:49:33 -04:00