Skip to content

TUI real-terminal smoke test self-skips in CI — regressions ship with zero CI signal #2408

Closed

Description

@CloneOfAlex

Which version line?

v2 — current (@modelcontextprotocol/inspector@latest)

Which client?

TUI

Inspector version

2.7.0 (git tag) — static code-review finding, not run locally

Node version

N/A — static code review, no live run performed

Operating system (and browser, for the web client)

N/A — static code review

Transport

Not applicable / never connected

MCP server under inspection

N/A — this is a static code-review finding against the 2.7.0 tag's source and CI config (docs/quality-gate.md), not a live reproduction against a running MCP server.

Steps to reproduce

Found via static review of the 2.7.0 tag source (docs/quality-gate.md), not a live run.

  1. docs/quality-gate.md states that smoke:tui self-skips under process.env.CI because Ink needs a real TTY.
  2. It only runs "for real" during npm run local:gate on a developer's own machine.
  3. Confirmed this is the documented, intentional behavior — not a flake.

I have not attempted to push a TUI regression through CI to watch it slip through live; flagging based on the documented gap itself.

Expected behavior

The TUI smoke test runs against a real PTY in CI (e.g. via node-pty or a similar terminal emulator driving scripted key sequences), so a TUI regression is caught before merge/release regardless of whether a contributor happened to run local:gate locally.

Actual behavior

smoke:tui self-skips whenever process.env.CI is set, so CI runs currently give zero signal on TUI regressions; the only real execution path is a developer manually running npm run local:gate.

Suggested fix: run the TUI smoke test in CI against a real PTY instead of relying on local:gate as the only real execution path. By the project's own docs, this is the largest gap between what's tested and what ships.

Logs, errors, or screenshots

No response

Already prototyped a fix?

No response

Before you submit

  • I searched existing issues and this is not a duplicate.
  • This is not a security vulnerability report (those go through the private advisory process).

Activity

  1. added
    v2Issues and PRs for v2
    choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior change
    and removed
    bugSomething isn't working
    on Sep 18, 2026
  2. cliffhall commented on Sep 18, 2026

    @cliffhall
    Member

    Triage: Priority Low (total 5)

    • Severity 3 — a CI signal gap, partially covered: smoke:tui does run for real in the mandatory npm run local:gate, so the surface is not unguarded, only unguarded in CI
    • Urgency 2 — wanted eventually
    • Bonuses: none

    Labels applied at triage: v2, chore (CI/test tooling, not a product defect) — replacing the form's static bug.

    Board: #28, Status Incoming (awaiting maintainer review — no milestone yet).

  3. added this to the v2.9.0 milestone on Sep 23, 2026
  4. self-assigned this
    on Sep 24, 2026
  5. cliffhall commented on Sep 24, 2026

    @cliffhall
    Member

    Shipped in #2489 (merged to v2/main as 56ba766). smoke:tui now runs for real in GitHub CI — first runner pass: rendered "MCP Servers" at 434ms and survived 2000ms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions