Skip to content

[test][scheduler] Add the Scheduler benchmarks to test/benchmark #24137

Open

Description

@rita-codes

Summary

Add the Scheduler to test/benchmark once #24028 lands, so its benchmarks run in a real browser with the benchmark CLI of @mui/internal-benchmark, compared against a baseline commit and reported on the dashboard.

Why

The Scheduler benchmarks (packages/x-scheduler-internals*/src/**/*.bench.ts) are pure-function microbenchmarks run with vitest bench in jsdom. They don't run in CI, they aren't compared against a baseline (the October comparisons in #23961, #23962, #23963, #23964 and #23984 were done by hand), and they don't measure what users actually experience: mounting a view, scrolling, dragging. A browser run with the production build is more representative, and test/benchmark gives us the baseline comparison and the dashboard for free.

Scope

  • test/benchmark/src/scheduler/<Component>/ with scenarios.tsx + <Component>.bench.tsx, following the charts layout, and a src/smoke/scheduler.bench.tsx with one case per component for pull requests.
  • Component scenarios we don't measure today: Event Calendar month view with 1,000 events (system and display timezone), Week view with recurring events, Event Timeline with 10,000 events and a scroll gesture, a drag interaction.
  • Port the existing pure-function benches (day grid, time axis, dependency engine, store, recurring edits) to benchmark(), and remove bench:jsdom if nothing else uses it.
  • Add @mui/x-scheduler, @mui/x-scheduler-premium and their peers to test/benchmark/package.json.
  • Extend the CI job: include packages/x-scheduler* in the change gate, run scheduler/ on master, and run the scheduler files on pull requests that touch the scheduler packages.
  • Event datasets generated inside the benchmarks (no imports from docs/), and a license key in the Premium pages so the watermark doesn't add a render.

Notes

Activity

  1. added
    scope: schedulerChanges related to the scheduler.
    on holdThere is a blocker, we need to wait.
    type: enhancementIt’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature.
    on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    on holdThere is a blocker, we need to wait.scope: schedulerChanges related to the scheduler.testtype: enhancementIt’s an improvement, but we can’t make up our mind whether it's a bug fix or a new feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions