[test](trx-frontend-http): serve a realistic decoder registry to the smoke test #35

Merged
sjg merged 1 commits from test/decoder-fixture into main 2026-08-03 17:58:14 +02:00
Owner

The blind spot

The fixture answered /decoders with an empty list, which hid most of the application from the only test that runs it in a browser. The decoder sub-tabs, their panels, the decode toggles and the bookmark decoder checkboxes are all built from that registry, so the run exercised three of thirteen sub-tabs and none of the decoder UI.

I only found this by intercepting the route from a throwaway probe — nothing in the suite could see it.

Effect

before after
Digital modes sub-tabs rendered 3 13
Bookmark decoder checkboxes built 0 11

Those checkboxes matter: their construction was changed in the bookmark host-contract fix (bmOptionalEl, because the strict lookup threw on registry-built elements) and no test reached them. They are now built on every browser run.

Eleven decoders, covering the modes the real registry spans. The run still reports no runtime errors, so the decoder UI constructs cleanly against it.

What it exposes

At 1100px the decoder sub-tab bar hides 195px of itself — no scrollbar, no fade, roughly two decoders unreachable. The same silent truncation the top strip had, one level down:

1440px   13 tabs, nothing hidden
1100px   13 tabs, 195px hidden
 900px   13 tabs,  80px hidden

No assertion for that here, deliberately — it would fail until the truncation is fixed. This PR is the fixture change alone, so the fix lands separately against a test that can actually see it.

Correction

I earlier described Digital modes as a two-level nav anomaly. That was wrong: three pages use .sub-tab-bar — Digital modes (13), Settings (4), About (2). It is a consistent pattern, and the problem is the count, not the structure.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz

## The blind spot The fixture answered `/decoders` with an empty list, which hid most of the application from the only test that runs it in a browser. The decoder sub-tabs, their panels, the decode toggles and the bookmark decoder checkboxes are **all built from that registry**, so the run exercised three of thirteen sub-tabs and none of the decoder UI. I only found this by intercepting the route from a throwaway probe — nothing in the suite could see it. ## Effect | | before | after | | --- | --- | --- | | Digital modes sub-tabs rendered | 3 | **13** | | Bookmark decoder checkboxes built | 0 | **11** | Those checkboxes matter: their construction was changed in the bookmark host-contract fix (`bmOptionalEl`, because the strict lookup threw on registry-built elements) and **no test reached them**. They are now built on every browser run. Eleven decoders, covering the modes the real registry spans. The run still reports no runtime errors, so the decoder UI constructs cleanly against it. ## What it exposes At 1100px the decoder sub-tab bar hides **195px of itself** — no scrollbar, no fade, roughly two decoders unreachable. The same silent truncation the top strip had, one level down: ``` 1440px 13 tabs, nothing hidden 1100px 13 tabs, 195px hidden 900px 13 tabs, 80px hidden ``` **No assertion for that here**, deliberately — it would fail until the truncation is fixed. This PR is the fixture change alone, so the fix lands separately against a test that can actually see it. ## Correction I earlier described Digital modes as a two-level nav anomaly. That was wrong: three pages use `.sub-tab-bar` — Digital modes (13), Settings (4), About (2). It is a consistent pattern, and the problem is the count, not the structure. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz
sjg added 1 commit 2026-08-03 17:48:58 +02:00
[test](trx-frontend-http): serve a realistic decoder registry to the smoke test
CI / lint (pull_request) Successful in 2m18s
CI / test (pull_request) Successful in 7m25s
CI / frontend (pull_request) Successful in 2m10s
CI / reuse (pull_request) Successful in 3s
CI / lint (push) Successful in 2m17s
CI / test (push) Successful in 7m26s
CI / frontend (push) Successful in 2m12s
CI / reuse (push) Successful in 3s
b252717f6b
The fixture answered /decoders with an empty list, which hid most of the
application from the only test that runs it in a browser.  The decoder
sub-tabs, their panels, the decode toggles and the bookmark decoder
checkboxes are all built from that registry, so the run exercised three
of thirteen sub-tabs and none of the decoder UI.  Finding this needed
route interception, because nothing in the suite could see it.

Serve eleven decoders covering the modes the real registry spans.  The
run now builds 13 sub-tabs and 11 bookmark decoder checkboxes — the same
checkboxes whose construction a recent fix changed without any test
reaching them — and still reports no runtime errors.

It also makes an existing fault observable: at 1100px the decoder
sub-tab bar hides 195px of itself with no scrollbar or fade, the same
silent truncation the top strip had.  No assertion for it here, since
that would fail until the truncation is fixed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz
Signed-off-by: Stan Grams <sjg@haxx.space>
sjg merged commit b252717f6b into main 2026-08-03 17:58:14 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sjg/trx-rs#35