inspector/clients/tui/__tests__
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 4fa00d1cfd feat: report a skill-name collision across the listing (#2248)
SEP-2640: hosts MUST NOT assume name uniqueness, and when two entries in one
listing collide on `name` a host MUST disambiguate them rather than silently
discarding or preferring one.

`checkSkillConformance` structurally cannot see this — it takes one entry and
a collision is a property of the pair — so `checkSkillNameCollisions` walks
the listing and returns a finding per colliding entry, each naming the
others. All three clients merge it into the entry's own findings, so it
carries through the header badge, the CLI report and the TUI row marks with
no new surface.

**It is a `warning`, not an `error`,** and that is the severity split doing
its job. The obligation is on the *consumer*: a server may legitimately
publish two skills with the same name under different paths, and the SEP's
own `acme/billing/refunds` example is exactly that shape. Calling it an error
would tell a conforming author their catalog is invalid. `--verify` therefore
still exits 0 for a collision.

In the web screen it renders as a banner directly under the Conformance
header and is filtered out of the findings list, the same treatment
`dynamic-resources` gets: it changes how everything below it should be read,
and stating one fact twice reads as two findings.

Fixed while adding it: an entry whose only finding was a banner one rendered
an EMPTY findings container instead of "no structural issues", because the
list's presence was decided on the unfiltered set while its contents were
filtered. `listedIssues` is now derived once and used for both.

The fixture gains `acme/reports` + `globex/reports`, both fully conforming
and sharing the name `reports` — also the only fixture with a multi-segment
skill path, which nothing else exercised. Eight skills over four pages now,
and the integration test walks the cursor to exhaustion rather than asserting
a fixed page count, so a future fixture does not require editing it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ND46Ci64DC3tzBy9aG81Nc
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-09-07 19:02:18 -04:00
..
helpers fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
App.test.tsx fix: address Copilot review round 1 on #2248 2026-09-07 18:43:58 -04:00
AuthTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
DetailsModal.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
HistoryTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
InfoTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
logger.test.ts test: raise per-file coverage gate to 90 across all clients (closes #1271) (#1532) 2026-06-27 15:26:03 -04:00
NotificationsTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
oauthDisplay.test.ts Guided-auth removal, OAuth smoke testing, and TUI/CLI support (#1531) 2026-06-29 15:35:51 -04:00
oauthMessageTone.test.ts fix(auth): read enumerated issuers exactly, and stop the TUI tone going stale (#2144) 2026-08-28 02:58:04 -04:00
openUrl.test.ts test(cli,tui): add in-process source coverage gates (#1484) (#1502) 2026-06-20 15:05:58 -04:00
promptArgsToForm.test.ts test(cli,tui): add in-process source coverage gates (#1484) (#1502) 2026-06-20 15:05:58 -04:00
PromptsTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
PromptTestModal.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
renderTui.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
RequestsTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
ResourcesTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
ResourceTestModal.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
schemaToForm.test.ts fix: decline a union branch requiring a name it never declares (#2224) 2026-09-06 12:59:52 -04:00
SelectableItem.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
setup.ts test(tui): extend coverage gate to Ink components + App.tsx (closes #1501) (#1538) 2026-06-29 08:19:12 -04:00
SkillsTab.test.tsx feat: report a skill-name collision across the listing (#2248) 2026-09-07 19:02:18 -04:00
Tabs.test.tsx feat: Skills extension phase 3 — CLI, TUI, directory reads, frontmatter check 2026-09-07 18:10:37 -04:00
ToolsTab.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
ToolTestModal.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00
tsupConfig.test.ts chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
tui-servers.test.ts Guided-auth removal, OAuth smoke testing, and TUI/CLI support (#1531) 2026-06-29 15:35:51 -04:00
tui.test.ts Fixed tab naming to correspond to the web client. (#1780) 2026-07-25 20:11:52 -04:00
tuiOAuth.test.ts test(cli,tui): typecheck the __tests__ dirs (#1791) (#1799) 2026-07-27 12:05:35 -04:00
uriTemplateToForm.test.ts fix: dedupe a repeated name in a group, and name every unmet requirement 2026-08-17 00:33:52 -04:00
useSelectableList.test.tsx fix: strip ANSI from TUI test frames so FORCE_COLOR cannot break assertions (#2207) 2026-09-06 20:00:15 -04:00