BV2263–BV2267 — abstention & runoff-reporting baselines¶
Five test cases capturing what BetterVoting does today, recorded 2026-08-02 against production, before any of the related fixes land. Each page has a live election, the exact ballots, a screenshot of the current behaviour, and the assertion to check after the fix.
The purpose is regression evidence: today's numbers are frozen and citable, so "did the fix work" becomes a diff rather than an argument.
| Case | What it shows | Election | Upstream |
|---|---|---|---|
| BV2263 | Two functionally identical races disagree on both electorate and winner, because one has an approved write-in | 43jp39 (closed) |
#1470 |
| BV2264 | NaN% in the runoff table when no voter prefers either finalist — and the pie renders empty, not NaN |
3d8qdr |
#1035 |
| BV2265 | A 33% winner crossing a majority line drawn at 27.8%, with a 44% bar longer than both | 3pfb7j |
#1471 |
| BV2266 | Five voters, results page reports that no votes were cast | p2qrv6 |
#1052, #1065 |
| BV2267 | A 5,5 ballot told at submit time that it abstained | p9pvc8 (0 ballots, re-runnable) |
#1053 |
Notes on how these were built¶
- BV2263 is closed; the rest are open so they can be re-read and, for BV2267, re-run. Reopening or re-voting in BV2264/3/4 would change the frozen numbers — treat them as read-only.
- BV2267 deliberately has zero ballots. The capture stops at the confirmation dialog without confirming, so anyone can reproduce the receipt from scratch.
- Screenshots were captured with Playwright at 2× scale, with the sticky header hidden so element shots
aren't overlapped. Script:
analysis/flat-scores-abstention/probe/. - Test IDs need sheet rows.
BV2263–BV2267were allocated as the next block after the highest id observed acrossstar-voting-library,bettervoting-qaand the upstream issue titles (BV2262). The Google Sheet is canonical and wasn't readable from here, so if any of these collide with an existing row, renumber the pages rather than the sheet.BV2263-2267-sheet-rows.tsvis paste-ready. - The live poll titles still read
BV-AB*— they were created before the ids were assigned, andPOST /Election/:id/editrefuses elections that have left draft, so the titles can't be corrected. Match them by election id, not by title.
One prediction these captures refuted¶
The analysis pages predicted NaN% on both the runoff table and the runoff pie chart. Only the table
shows it. Recharts draws no sectors when every value is zero, so the pie's label callback never runs and
the chart is simply blank — a different defect with a different fix. The upstream #1035 comment was
corrected after this capture. Worth remembering as the reason this repo's convention says to mark
source-derived expectations as predictions until a screenshot exists.