Skip to content

Add /wpt/runs page with the latest completed WPT run per browser - #33

Merged
nicoburns merged 10 commits into
mainfrom
devin/1790700434-wpt-runs-page
Sep 29, 2026
Merged

nicoburns merged 10 commits into
mainfrom
devin/1790700434-wpt-runs-page

Conversation

@nicoburns

@nicoburns nicoburns commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds a /wpt/runs page, similar to https://wpt.fyi/runs. It shows the latest wpt.fyi master run for each browser on the WPT comparison page, newest first by when it was added to wpt.fyi (created_at). A "Latest runs" link sits before "Focus areas" on /wpt.

  • Channels: reuses wpt_compare::PRODUCTS minus HIDDEN_PRODUCTS (Chrome Canary, Firefox Nightly, Safari TP, Ladybird, Servo), so the two pages can't drift apart.
  • Request: a single api/runs?label=master&max-count=5&product=…&product=… request, where max-count applies to each product. aligned isn't set. The latest run is picked by created_at rather than time_start, because a run that started earlier can finish later.
  • Columns: browser, with its version underneath, and a link to the results; WPT commit; start time; run duration; time added to wpt.fyi; and upload delay (created_at − time_end).
  • Refreshing:
    • A background task started in main refreshes WPT_RUNS_CACHE on startup and then every hour, whether or not anyone visits.
    • Page loads also refresh it in the background once the data is more than 5 minutes old, via get_or_refresh(FRESH_FOR, Duration::MAX). Visitors never wait on a refresh.
    • load_wpt_runs only ever runs one refresh at a time, using a module-level REFRESH_LOCK.
  • "Refreshing data…" indicator: shown next to "Updated N ago" when refreshing is true:
    refreshing: wpt_runs::is_refreshing() || entry.cached_at.elapsed() > FRESH_FOR
    is_refreshing() checks whether REFRESH_LOCK is held. The stale check covers the moment just after get_or_refresh starts a background refresh, before that refresh has taken the lock.

In-progress runs, which need GITHUB_TOKEN, are split out into #34, which is stacked on top of this PR.

Testing

  • cargo clippy --all-targets: no new warnings. The only warning is the existing one in src/downloads.rs.
  • Ran locally and loaded /wpt/runs: 5 rows from live wpt.fyi data. A cold load took about 0.46s. After a restart, the first request was served from cache in about 1ms ("Updated just now") because of the startup refresh.
  • Tested the indicator in a temporary build with FRESH_FOR set to 3s. Loads of stale data showed "Refreshing data…", and it disappeared once the refresh finished.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/94bf6cad086a43818116ad129df06999
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/94bf6cad086a43818116ad129df06999?variant=devin-insiders
Requested by: @nicoburns

@staging-devin-ai-integration

Copy link
Copy Markdown

I'll fix CI failures and address comments from users with write access that start with 'Devin'.

  • Disable automatic comment, CI, and merge conflict monitoring

@staging-devin-ai-integration staging-devin-ai-integration Bot changed the title Add /wpt/runs page with the latest and in-progress WPT runs per browser Add /wpt/runs page with the latest completed WPT run per browser Sep 29, 2026
@staging-devin-ai-integration
staging-devin-ai-integration Bot added this pull request to stack #35 September 29, 2026 19:37
@nicoburns
nicoburns merged commit 99e4161 into main Sep 29, 2026
2 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