Follow-up to #1484, which added a per-file coverage gate for the CLI and TUI.
Context
#1484 brought the TUI's non-React logic under the coverage gate (server resolution, file logger, tab metadata, and the form/URL helpers under src/utils/). The TUI's React/Ink surface was deferred as a documented interim exclusion in clients/tui/vitest.config.ts:
src/App.tsx (~1878 lines)
src/components/**/*.tsx (~16 Ink components: tabs, modals, per-capability tabs)
src/hooks/** (useSelectableList — needs a React renderer)
These need an Ink renderer (e.g. ink-testing-library) to exercise, which is a sizable, separate effort.
Goal
- Add
ink-testing-library (or equivalent) and write render/interaction tests for the Ink components, App.tsx, and useSelectableList.
- Remove the corresponding entries from the
exclude list in clients/tui/vitest.config.ts as each area reaches the gate (lines ≥ 90, statements ≥ 85, functions ≥ 80, branches ≥ 50).
- Goal end-state: the whole
clients/tui/src tree is under the gate with no React-surface exclusions.
Acceptance criteria
Follow-up to #1484, which added a per-file coverage gate for the CLI and TUI.
Context
#1484 brought the TUI's non-React logic under the coverage gate (server resolution, file logger, tab metadata, and the form/URL helpers under
src/utils/). The TUI's React/Ink surface was deferred as a documented interim exclusion inclients/tui/vitest.config.ts:src/App.tsx(~1878 lines)src/components/**/*.tsx(~16 Ink components: tabs, modals, per-capability tabs)src/hooks/**(useSelectableList— needs a React renderer)These need an Ink renderer (e.g.
ink-testing-library) to exercise, which is a sizable, separate effort.Goal
ink-testing-library(or equivalent) and write render/interaction tests for the Ink components,App.tsx, anduseSelectableList.excludelist inclients/tui/vitest.config.tsas each area reaches the gate (lines ≥ 90, statements ≥ 85, functions ≥ 80, branches ≥ 50).clients/tui/srctree is under the gate with no React-surface exclusions.Acceptance criteria
App.tsxare exercised under coverage instrumentation.clients/tui/vitest.config.tsare removed.