WC Mock tournament-aware mock for Firefox iOS / merino
Jump
Step
Live
Drag cursor or click track.
BASE
MATCHES
LIVE
TEAMS

Save / load scenario presets

Snapshots of clock + scores + slot overrides. Stored in presets/ as JSON; commit-able.


Randomise scores

Weighted toward realistic scorelines (most matches 0–3 goals per side). Knockouts can't end level — one side gets a bump.

Force status make the API return a chosen status instead of normal data

Request log last 200 hits per session · refreshes every 1s

TIME Δ FROM LAST ROUTE QUERY STATUS
No requests yet. Wire iOS to this session's URL and you should see them appear here.

What this tool does

Stands up the three merino routes the Firefox iOS World Cup feature consumes — /api/v1/wcs/matches, /api/v1/wcs/live, /api/v1/wcs/teams — driven by an in-memory tournament you can edit. Point the iOS app's World Cup: Override merino host setting at this server and the app sees whatever state you set up here.

Workflow at a glance

  1. Set the server clock. Drag the gold cursor on the timeline, click a tick to jump to a specific match's kickoff, or use the Jump/Step chip rows. The clock decides what's previous, current, next, or live on the API.
  2. Enter or randomise scores. Type scores into group matches on the Groups tab. Click knockout cards on the Bracket tab to enter their scores. Or flip on Auto-roll matches as clock advances and just scrub the timeline — the tool fills in plausible random results as you go.
  3. (Optional) Override bracket seedings. Drag a flag from the tray at the bottom of the Bracket tab onto any knockout slot to force a specific participant. Click the × override chip on the card to revert.
  4. (Optional) Save a preset. On the Presets tab. Six default scenarios ship with the tool; you can save your own to presets/*.json and commit them.

Timeline controls

  • Drag the gold cursor — scrub the server clock, posting on release. Snapped to the nearest 30 min.
  • Click anywhere on the track — jump the clock to that point.
  • Click a match tick — jump the clock to that exact kickoff (handy for live-state testing).
  • Hover a tick — tooltip with stage, kickoff, matchup, score.
  • Jump chips — go to named tournament points: Opening match, MD2, MD3, R32, R16, QF, SF, Final, or Real now (wall-clock current moment in the real world).
  • Step chips — increment / decrement: ±1 day, ±3 h, ±30 m, ±5 m, ±1 m. Use ±1 m to watch the FFI's live status flip on / off across the 110-min live window.
  • Live chips
    • → Next kickoff jumps the clock to the next match's kickoff time. The match instantly becomes live at 0' elapsed.
    • End current live advances the clock past the live window of every match currently in progress (so they become final — with auto-roll on, they get a random score; with auto-roll off they stay unscored).
    The small hint to the right of these chips says how many matches are currently live and when the next kickoff is.
  • Auto-roll behaviour — when enabled, the tool only fills scores for matches whose live window has fully ended. Mid-live matches stay unscored and report as live on the API, so the iOS app can render its live-tile UI as you scrub the timeline.

Abbreviations

CodeMeaning
SCHScheduled — kickoff in the future.
LIVEIn progress — kickoff has passed, within the ~110-min live window. Pulses red.
FTFull Time — final score recorded.
MD1 / MD2 / MD3Group-stage Matchday 1, 2, 3 (each team plays 3 matches in the group).
R32Round of 32 — first knockout round, 16 matches.
R16Round of 16 — 8 matches.
QFQuarterfinals — 4 matches.
SFSemifinals — 2 matches.
3RD PLACEThe bronze-medal playoff (losers of the two SFs).
A1L1Winner of Group A through Group L (12 groups total).
A2L2Runner-up of Group A through Group L.
T1T8The 8 best 3rd-placed teams (across the 12 groups, ranked by points → GD → GF). All 8 advance to R32.
W 87001Winner of match 87001 (used as a participant in a downstream knockout).
L 87029Loser of match 87029 (only used by the 3rd-place playoff).
TBDTo be decided — slot can't resolve yet (upstream result missing or override unset).
P / W / D / L / GF / GA / GD / PtsStandings: Played, Won, Drawn, Lost, Goals For, Goals Against, Goal Difference, Points.

Color legend

  • Mint — winner of a knockout match, or group standings position 1.
  • Cyan — scheduled / group position 2.
  • Gold — UI accent (clock cursor, override marker), group position 3 (best-3rd candidate).
  • Red — live match (pulsing).
  • Gray — past / eliminated.

Settings & toggles

  • Auto-roll matches as clock advances — when on, every time the clock moves any past unscored match (whose participants are resolvable) gets a random score. Lets you scrub the timeline and watch the bracket fill in automatically.
  • Reset scores — clears all scores and slot overrides. Confirmation prompt.
  • Window ± N days — how wide a window /matches returns matches over. Merino defaults to 10 (so ±10 days around the requested date land in the response). Set to 0 to see only the target day; bump up to see more context.

Presets tab

  • Default presets (sorted by progression):
    • 00-fresh-start — opening kickoff, nothing scored.
    • 01-md1-live — afternoon of June 11; half MD1 done, half live.
    • 02-end-of-groups — all 72 group games scored; knockouts populated.
    • 03-r32-complete — through R32, R16 fully resolved.
    • 04-final-night — everything done up to the Final, which is live at kickoff.
    • 05-underdog-run — Morocco runs to the Final and loses 0-2 to Mexico (Croatia-2018-style fairy tale).
  • Random scores — three buttons: fill unscored, group-stage only, or reroll everything. Weighted toward realistic scorelines; knockouts can't draw.
  • Save / load / delete — your own snapshots, persisted as presets/*.json next to the defaults.

API routes

GET /api/v1/wcs/matches?date=YYYY-MM-DD&teams=BRA,ARG&limit=N
GET /api/v1/wcs/live?teams=BRA,ARG
GET /api/v1/wcs/teams
  • date — defaults to the UTC day of the server clock.
  • teams — comma-separated 3-letter keys; matches include the team if it plays as home or away.
  • limit — cap each bucket (previous/current/next).

Point Firefox iOS's World Cup: Override merino host setting at .