You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(ui): decompose EEST test names with global raw/decomposed toggle (#229)
## Summary
EEST test names like
`test_tx_context.py__test_call_frame_context_ops[fork_Amsterdam-benchmark_test-opcode_ORIGIN-benchmark_90M].txt`
(and the newer
`benchmark/compute/instruction/test_system.py::test_selfdestruct_created[fork_Osaka-blockchain_test_engine_x-value_bearing_False-benchmark-gas-value_10M]`
form) now render as readable chips wherever a test name is shown, with a
global toggle to fall back to raw.
## What's new
- **Parser** (`utils/eestName.ts`) — pure `parseEESTName` lifts
well-known fields (file, fn, fork, opcode, gas, optional path) and keeps
everything else as `{key,value}` chips or free-form labels. Handles both
`__` and `::` separators, optional path prefix, and the rare
`]_<N>M.txt` trailing-gas form. Drops noisy markers (`benchmark_test`,
`blockchain_test_engine_x`, standalone `benchmark` / `gas`) and
run-id-style numeric paths.
- **Toggle** in the page header (next to theme) — `decomposed` (default)
↔ `raw`. Persists via `?names=raw` URL search param + localStorage.
- **`<TestName>` component** — chip view (file › fn + gas/opcode/fork
chips + params/labels), `compact` variant for tight cells, optional
`showRawBelow` to render `Test name:` + raw on a muted second line.
- **Wirings** — Tests table, run-detail Performance Heatmap (tooltip +
modal), Live heatmap (inherits), suite-detail Performance Heatmap (row
labels + tooltip), suite-detail Opcode Heatmap (tooltip), comparison
table, comparison detail modal.
- **Structured search** (`utils/eestNameFilter.ts`, `testNameMatches`) —
every filter input now supports `key:value` terms alongside free text.
Recognized keys: `opcode`, `fork`, `gas`/`benchmark`, `file`,
`fn`/`function`, `path`, `label`. Anything else (e.g. `mem_size:1024`)
hits parsed params. Multiple terms are AND. Each input has the same hint
placeholder + tooltip cheat-sheet. Wired into TestsTable, both heatmaps,
the opcode heatmap, the comparison page filter, and the sticky filter
bar; suite-detail TestHeatmap regex mode is preserved.
## Test plan
- [x] Toggle in the header flips chips ↔ raw across every test-name
display, persists across navigation, and the `?names=raw` URL is
shareable.
- [x] Chips wrap onto a new line under `<file› <fn>` in the tests table;
long single chips (e.g. `return_data_style:ReturnDataStyle.IDENTITY`)
wrap inside their pill instead of overflowing the heatmap tooltip.
- [ ] Filter `opcode:ORIGIN gas:90M` narrows tests in the tests table,
run-detail heatmap, suite-detail heatmap (text mode), opcode heatmap,
and comparison pages.
- [ ] Run-detail and compare modals show decomposed name + `TEST NAME:`
label + raw + copy icon next to the raw line.
- [ ] In raw mode, the name column in the tests table no longer
overflows neighbouring columns.
placeholder={testFilterRegex ? 'Regex...' : 'Filter or e.g. opcode:ORIGIN'}
80
+
title={testFilterRegex
81
+
? 'Regex against the raw test name.'
82
+
: 'Free text matches the raw name. Or filter by extracted fields:\nopcode:ORIGIN gas:90M fork:Amsterdam file:tx_context fn:codecopy path:compute label:LOG1\nUnrecognized keys hit params: mem_size:1024 code_size:0\nMultiple terms are AND.'}
@@ -308,10 +309,11 @@ export function TestsTable({
308
309
)}
309
310
<input
310
311
type="text"
311
-
placeholder="Search tests..."
312
+
placeholder="Search… or e.g. opcode:ORIGIN gas:90M"
313
+
title={`Free text matches anywhere in the raw name. Or filter by extracted fields:\nopcode:ORIGIN gas:90M fork:Amsterdam file:tx_context fn:codecopy path:compute label:LOG1\nUnrecognized keys hit params: mem_size:1024 code_size:0\nMultiple terms are AND.`}
0 commit comments