Skip to content

Fix UAT navigation, schedules and result displays - #97

Merged
coder13 merged 3 commits into
betafrom
codex/fix-results-timezone-ui
Nov 3, 2026
Merged

coder13 merged 3 commits into
betafrom
codex/fix-results-timezone-ui

Conversation

@coder13

@coder13 coder13 commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

Follow-up to merged WCIF v2 PR #95, targeting beta. This PR remains draft; no merge or production deployment is included.

  • Use venue timezones consistently in group choosers, weekdays and date boundaries; keep intentional five-minute rounding.
  • Fix competition search keyboard selection, real ARIA options, accessible navigation links, missing-person/round recovery, loading states and no-match feedback.
  • Restore scroll per history entry using sessionStorage only. Back/Forward and reload preserve positions across actual page panes and delayed content; fresh navigation starts at the top. No time limit or history-entry eviction within the session.
  • Label result dialogs, move/trap/restore keyboard focus, and refresh open details from current results. Name personal bookmark controls and expose their state. Keep condensed WCIF placeholders in a loading state instead of falsely reporting missing activities.
  • Make main and personal schedule day toggles keyboard-accessible. Keep each competition/person's collapse state isolated and preserve independent multi-day toggles and automatic past-day collapse.
  • Use distinct stored result roster entries for fallback qualification. Honor actual next-round participant rosters, keep incomplete estimates provisional, and preserve authoritative WCA Live values/flags, including blank Live rows.
  • Preserve linked-round ranks and component values, stable identity, source precedence, strict thresholds and elimination/tie rules.
  • Correct null-result, FMC single/average and multi-blind threshold captions. Render Help formatting and repeated Escape dismissal correctly.

Validation at current head

Published head: fb8ac2fcff6a966b4981e06ffed2825f4513b8e0.
Verified source tree: 34d1d8a557564c6506641790ad4b6a45c811449f.

  • Full Jest: 62 suites, 413 tests and 2 snapshots passed.
  • TypeScript passed.
  • Full ESLint: zero errors, the same 3 pre-existing warnings.
  • Production and Storybook builds passed, with existing bundle warnings.
  • Timezone regressions also passed in America/Los_Angeles: 2 suites, 19 tests.
  • Independent source audit: 50 assertions including 2,240 deterministic roster cases, 79 captured public-WCIF next-participant comparisons, real English captions, and a separate 89-test rerun.
  • Independent scroll audit: 18 probes passed, including history/query isolation, reload, 305-entry retention, delayed content, user cancellation, pane ownership, StrictMode and cleanup. A separate 11-test layout rerun passed.
  • Exact-head GitHub Test, Lint and Type Check workflows succeeded; Netlify deploy preview succeeded.
  • First fresh browser UAT covered 17 real competitions, with 15 five-hub sweeps, and found four further issues: saved expanded days reset on reload, dialog focus/name, personal bookmark name/state, and false missing activities during placeholder loading. These are fixed in this candidate.
  • Fresh final-head Chromium UAT found no unresolved reproduced application defect in the tested scope: 18 real competitions, including 15 full Groups/Events/Schedule/Rankings/Results hub sweeps, all four prior browser findings closed, and repeated keyboard/navigation/error journeys passed.
  • Scroll browser checks passed for distinct history entries/query URLs, Back/Forward, fresh navigation, same-session reload, root and nested competition/person pages, desktop and 500px layouts, and deep WC2025 asynchronous restoration. Exact examples: 11,415px after WC2025 reload; 7,744px after result-page Back; 782px narrow results after Back/reload.
  • Detailed linked rounds, DNF/DNS/ties, FMC/multi-blind formatting, blind seeding, venue-local date/time, large results and empty states passed. No application-origin console warnings/errors were observed in this final pass.
  • This completes two fix/UAT cycles plus the newly requested scroll requirement. This is bounded acceptance evidence, not a claim that every possible flow is bug-free.

Scope and coverage limits

Stored snapshots cannot reveal every current organizer action. They use next-round participant data when available, otherwise estimate qualification; incomplete snapshots are conservatively provisional rather than claiming WCA Live's exact clinching simulation. Group assignments do not count as result-roster participation. Unknown linked identities suppress unsafe inference; unresolved target identities retain unmatched estimates as provisional. WCA Live remains authoritative, and only the selected Live round is fetched.

Synthetic null/FMC/multi-blind and partial-roster cases are covered by source tests and built Storybook fixtures. The permitted cloud browser cannot reach the executor's localhost, so local fixture browser assertions are not claimed. The final public-preview pass tested real competitions separately from those synthetic checks. Full browser-process restart/session expiry was not controllable: a new tab in the same running browser did not establish an isolated session. Session-only storage and fresh-session cases are verified by source/unit tests; Back/Forward and same-session reload are verified in the actual browser. Authentication, private organizer data, real mobile hardware/touch, cross-browser/screen-reader operation, offline recovery and forced network failures remain outside this browser coverage. A normal service-worker update prompt was successfully exercised during the loop, not a complete offline/cache-recovery audit.

References

@netlify

netlify Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for competition-groups ready!

Name Link
🔨 Latest commit fb8ac2f
🔍 Latest deploy log https://app.netlify.com/projects/competition-groups/deploys/6aea0e80561b4aae73f9a4e5
😎 Deploy Preview https://deploy-preview-97--competition-groups.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 62
Accessibility: 93
Best Practices: 100
SEO: 96
PWA: 90
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

Resolve keyboard selection, recovery states, day controls and persisted collapse state. Align stored advancement with actual participant rosters and conservative provisional flags, and format event-aware threshold captions.

Validated source tree: 5e88075 (342 tests; type, lint, production and Storybook builds).
@coder13 coder13 changed the title Fix venue times, fallback qualification and Help UI Fix UAT navigation, schedules and result displays Nov 3, 2026
Preserve explicit schedule choices, name and contain result dialogs, keep open result details current, label personal bookmarks, and distinguish condensed loading data from missing content.

Remember each history entry's scroll position with sessionStorage, including nested panes, Back/Forward, reload and delayed content. Cancel deferred restoration after user input or newer navigation.

Verified source tree: 34d1d8a. 413 tests; type/lint/build/Storybook; independent 50 advancement and 18 scroll probes.
@coder13
coder13 marked this pull request as ready for review November 3, 2026 17:24
@coder13
coder13 merged commit 48846bd into beta Nov 3, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant