Closed Bug 2045922 Opened 5 months ago Closed 5 months ago

Sports widget: show the next round's decided fixtures while the current round is still active

Categories

(Firefox for Android :: Homepage, enhancement)

All
Android
enhancement

Tracking

()

VERIFIED FIXED
153 Branch
Tracking Status
firefox152 --- verified
firefox153 --- verified

People

(Reporter: skhan, Assigned: skhan)

References

Details

(Whiteboard: [fxdroid][group3][world-cup-phase2])

Attachments

(1 file, 2 external files)

Right now the bracket-wide (no-team) sports widget pager shows only one round at a time: the active round, plus the always-pinned Final / Third-Place cards.

As the knockout bracket fills in we should also surface the immediate next round's fixtures as soon as they are decided. While the group stage is the active round, Round of 32 fixtures should start appearing the moment one side is set (rendered as "Team vs TBD"); a fixture with neither side decided stays hidden so the pager doesn't fill with "TBD vs TBD" placeholders. The same applies as each subsequent round becomes active.

The previous round still drops out of the pager only when the new round goes live (unchanged active-round behavior).

Confirmed this behavior with :eduardo, our UX/UI person

Implemented in SportsWidgetMiddleware.buildCards (no-team path) via a new nextRound() helper and an isFullyTbd() check (both sides null); covered by new cases in SportsWidgetMiddlewareTest.

The bracket-wide (no-team) pager previously showed only one round at a time:
the active round plus the always-pinned Final / Third-Place cards. As the
knockout bracket fills in, surface the immediate next round's fixtures too, as
soon as they are decided.

In the no-team branch of buildCards, also keep matches of the next round (the
lowest-ordinal round above the active one present in the response) whose teams
aren't both undetermined. A fixture appears the moment one side is set, rendered
as the known team vs "TBD"; fixtures with neither side decided are withheld so
the pager doesn't fill with "TBD vs TBD" placeholders. The previous round still
drops out only when the new round goes live (active-round logic unchanged).

Adds nextRound() and isFullyTbd() helpers and SportsWidgetMiddlewareTest
coverage for the one-side-decided, all-TBD, and immediate-next-round-only cases.

Assignee: nobody → skhan
Status: NEW → ASSIGNED

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: During the 2026 World Cup, the bracket-wide (no team selected) sports widget would keep showing only the current round. Users wouldn't see the next round's fixtures as they get decided — e.g. Round-of-32 matchups appearing during the group stage as each qualifier is set. This reduces the widget's value precisely during the knockout phase the feature is built for.
  • Code covered by automated testing?: yes
  • Fix verified in Nightly?: no
  • Needs manual QE testing?: yes
  • Steps to reproduce for manual QE testing: 1. Enable the Homepage Sports Widget and turn on the debug drawer's mock World Cup server.
  1. Drive the mock data to a group-stage-active state where some Round-of-32 fixtures have one side decided and others have neither side decided.
  2. With no team selected, confirm the pager shows the decided R32 fixtures as "Team vs TBD" alongside the active group-stage cards, and does not show fixtures where both sides are still TBD.
  3. Advance the mock so an R32 match goes live; confirm the group stage drops out and R32 becomes the active round.
  • Risk associated with taking this patch: low
  • Explanation of risk level: Isolated to the Fenix sports-widget card-building logic (SportsWidgetMiddleware.buildCards, no-team branch) and gated behind the World Cup sports-widget feature, so it can't affect anything outside the widget. It only adds the next round's decided fixtures to the no-team pager via two small pure helpers (nextRound(), isFullyTbd()); the active-round/disposal behavior is unchanged. Well covered by unit tests.
  • String changes made/needed?: No
  • Is Android affected?: yes
Attachment #9595715 - Flags: approval-mozilla-beta?
Flags: qe-verify+

The bracket-wide (no-team) pager previously showed only one round at a time:
the active round plus the always-pinned Final / Third-Place cards. As the
knockout bracket fills in, surface the immediate next round's fixtures too, as
soon as they are decided.

In the no-team branch of buildCards, also keep matches of the next round (the
lowest-ordinal round above the active one present in the response) whose teams
aren't both undetermined. A fixture appears the moment one side is set, rendered
as the known team vs "TBD"; fixtures with neither side decided are withheld so
the pager doesn't fill with "TBD vs TBD" placeholders. The previous round still
drops out only when the new round goes live (active-round logic unchanged).

Adds nextRound() and isFullyTbd() helpers and SportsWidgetMiddlewareTest
coverage for the one-side-decided, all-TBD, and immediate-next-round-only cases.

Original Revision: https://phabricator.services.mozilla.com/D305417

Pushed by skhan@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/97b8054d2013 https://hg.mozilla.org/integration/autoland/rev/18a3d3170b16 Show the next round's decided fixtures in the sports widget while the current round is active r=android-reviewers,moyin
Flags: in-testsuite+
Attachment #9595715 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Status: ASSIGNED → RESOLVED
Closed: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → 153 Branch

This implementation is confirmed to be working on Firefox for Android 153 (2026-06-10) and Firefox 152 RC under Oppo Find X3 Neo (Android 11) and Samsung S24 Ultra (Android 16) but there have been found another 3 follow-up issues: Bug 2046721, Bug 2046732, Bug 2046729.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: