BV2285b — three elections are listed, the filter matches none, the page says there are none¶
Baseline capture — recorded before any fix. Actual result is what BetterVoting does today (2026-08-15, local build of
mainat7bc75a82). When #1525 is fixed, re-run these steps and Expected after the fix is the assertion.
Purpose¶
Reproduce #1525 on the one page that needs no login, so the defect can be checked by anyone in under a minute.
This is the evidence case for the family. Its sibling BV2285a covers the same defect on /manage, where the copy is worse but a login is required.
Prerequisites¶
- Any build where
/browselists at least two elections. - No login needed.
Master data¶
Three open, public elections — see the family index. The only property that matters: no election ID appears anywhere in any title, so a query that matches an ID cannot accidentally match title text.
Steps¶
- Open
/browse. - Confirm the pager reads
1–3 of 3and three rows are listed. - Type
zzzinto the Election Title filter. (Any string matching no title will do.)
Expected result¶
The table reports that the filter matched nothing. The page does not make a claim about whether open elections exist, because it has three of them loaded.
Actual result — today¶

No open elections at this time
0–0 of 0
Three open elections are loaded in the page at that moment. Clearing the filter brings all three back without a refetch.
What is wrong¶
The sentence is false, and it is false in the specific way that misleads: a user searching for something is told the collection is empty rather than that their query matched nothing. On /manage the same code path adds a CREATE ELECTION button to the false claim — see BV2285a.
Expected after the fix¶
Filtered-to-zero and genuinely-empty are distinguishable on screen. The exact wording is not asserted here — it has not been approved — only that:
- the filtered case does not assert the collection is empty;
- the filtered case does not offer a create/new action;
- the genuinely-empty case is unchanged (BV2285c).
Provenance¶
| Claim | How established |
|---|---|
Three rows before the filter, zero after, 0–0 of 0 |
executed — local stack, three seeded open elections, Playwright drove the real filter box |
| The rows are filtered rather than refetched | executed — clearing the box restores all three with no network request |
emptyContent renders on the filtered row set |
read from EnhancedTable.tsx:625, and consistent with the above |
Related¶
#1525 · BV2285 index · BV2285a · BV2285c · issues/1525-…