Skip to content

[RFC] Move to a more modular structure for tests in code and CI #13882

Open
@JCQuintas

Description

@JCQuintas

What's the problem?

As teams, features and tests grow, the tests and CI workflows will keep getting slower.
Our current unit tests take 18 minutes to complete.

But our teams are mostly independent from each other, changes in Pickers don't affect Charts.
Which means we can divide possibly long running tasks into smaller ones, more focused on the components that did change in the PRs.

This would also allow us to divide the tests and configurations in our current test folder into more specialised ones. Only catering for the needs of a single library or goal. Eg: Charts tests don't need Date manipulation, but might require SVG-DOM support. Or a playwright test doesn't need any dependency from mocha, since it can run all tests by itself.

What are the requirements?

  • Faster start-to-finish pipelines
    • Pipelines should only runs on PRs that change their related component or global libs.
      • Changes to packages/x-grid* run pipelines related to x-grid
      • Changes to docs/package.json run pipelines related to docs
      • Changes to package.json run all pipelines
  • Standalone test packages/projects/folders for each team/library or goal.
    • Eg: team/lib: grid/treeview/etc, goal: performance/unit/etc
    • We can have folders named e2e-grid, unit-pickers, performance-charts, etc.

What are our options?

An option would be to try to divide and parallelise the current unit tests by filtering the folders. But it wouldn't solve folder structure and organisation.

Proposed solution

Resources and benchmarks

No response

Search keywords:

Metadata

Metadata

Assignees

Labels

MUI XRFCRequest For Commentsscope: code-infraSpecific to the core-infra product

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions