11version : 2.1
22
3+ orbs :
4+ code-infra : https://raw.githubusercontent.com/mui/mui-public/refs/heads/ci-orb/.circleci/orbs/code-infra.yaml
5+
36parameters :
47 browserstack-force :
58 description : Whether to force browserstack usage. We have limited resources on browserstack so the pipeline might decide to skip browserstack if this parameter isn't set to true.
@@ -65,83 +68,22 @@ default-context: &default-context
6568 context :
6669 - org-global
6770
68- commands :
69- install_js :
70- parameters :
71- playwright :
72- description : If playwright should be installed.
73- type : boolean
74- default : false
75- react-version :
76- description : The version of React to use.
77- type : string
78- default : << pipeline.parameters.react-version >>
79- material-ui-version :
80- description : The version of material-ui to use.
81- type : string
82- default : << pipeline.parameters.material-ui-version >>
83- steps :
84- - when :
85- condition : << parameters.playwright >>
86- steps :
87- - run :
88- name : Install pnpm package manager
89- command : corepack enable
90- - when :
91- condition :
92- not : << parameters.playwright >>
93- steps :
94- - run :
95- name : Install pnpm package manager
96- # See https://stackoverflow.com/a/73411601
97- command : corepack enable --install-directory ~/bin
98- - run :
99- name : View install environment
100- command : |
101- node --version
102- pnpm --version
103-
104- - run :
105- name : Install js dependencies
106- command : |
107- args=""
108- if [ -n "$REACT_VERSION" ] && [ "$REACT_VERSION" != "stable" ]; then
109- args="react@$REACT_VERSION"
110- fi
111- if [ -n "$MATERIAL_UI_VERSION" ] && [ "$MATERIAL_UI_VERSION" != "stable" ]; then
112- args="$args @mui/material@$MATERIAL_UI_VERSION"
113- fi
114- if [ -n "$args" ]; then
115- pnpm dlx @mui/internal-code-infra@canary set-version-overrides --pkg $args
116- else
117- pnpm install
118- fi
119-
12071jobs :
12172 checkout :
12273 << : *default-job
12374 steps :
12475 - checkout
125- - install_js
76+ - code-infra/install-deps
12677 - run :
12778 name : Should not have any git not staged
12879 command : git add -A && git diff --exit-code --staged
129- - run :
130- name : ' `pnpm dedupe` was run?'
131- command : |
132- # #target-branch-reference
133- if [[ $(git diff --name-status master | grep pnpm-lock) == "" ]];
134- then
135- echo "No changes to dependencies detected. Skipping..."
136- else
137- pnpm dedupe --check
138- fi
80+
13981 test_unit :
14082 << : *default-job
14183 steps :
14284 - checkout
143- - install_js :
144- react-version : << parameters.react-version >>
85+ - code-infra/install-deps :
86+ package-overrides : react@ << parameters.react-version >>
14587 - run :
14688 name : Test JSDOM
14789 command : pnpm test:unit:jsdom
15496 resource_class : large
15597 steps :
15698 - checkout
157- - install_js :
158- playwright : true
159- react-version : << parameters.react-version >>
99+ - code-infra/install-deps :
100+ package-overrides : react@<< parameters.react-version >>
101+ browsers : true
160102 - when :
161103 condition :
162104 not :
@@ -180,50 +122,22 @@ jobs:
180122 PLAYWRIGHT_SERVER_WS : ' ws://127.0.0.1:9050/mui-browser'
181123 command : |
182124 node ./scripts/playwrightLaunchServer.mjs & pnpm test:unit:browser --coverage
183- - run :
184- name : Check coverage generated
185- command : |
186- if ! [[ -s coverage/lcov.info ]]
187- then
188- exit 1
189- fi
190- - run :
191- name : Coverage
192- command : |
193- curl -Os https://uploader.codecov.io/latest/linux/codecov
194- chmod +x codecov
195- ./codecov -t ${CODECOV_TOKEN} -Z -F "$REACT_VERSION-browser"
125+ - code-infra/upload-coverage :
126+ key : browser
196127 - store_test_results :
197128 path : test-results
198129 test_lint :
199130 << : *default-job
200131 steps :
201132 - checkout
202- - install_js
203- - run :
204- name : ESLint
205- command : pnpm eslint:ci
206- - run :
207- name : Stylelint
208- command : pnpm stylelint
209- - run :
210- name : Lint Markdown
211- command : pnpm markdownlint
133+ - code-infra/install-deps
134+ - code-infra/run-linters
212135 test_static :
213136 << : *default-job
214137 steps :
215138 - checkout
216- - install_js
217- - run :
218- name : ' `pnpm prettier` changes committed?'
219- command : |
220- # #target-branch-reference
221- if [[ $(git diff --name-status master | grep pnpm-lock) == "" ]];
222- then
223- pnpm prettier --check
224- else
225- pnpm exec prettier --check . --ignore-path .lintignore
226- fi
139+ - code-infra/install-deps
140+ - code-infra/check-static-changes
227141 - run :
228142 name : Generate PropTypes
229143 command : pnpm proptypes
@@ -281,7 +195,7 @@ jobs:
281195 << : *default-job
282196 steps :
283197 - checkout
284- - install_js
198+ - code-infra/install-deps
285199 - run :
286200 name : Transpile TypeScript demos
287201 command : pnpm docs:typescript:formatted --disable-cache
@@ -299,9 +213,9 @@ jobs:
299213 - image : mcr.microsoft.com/playwright:v1.55.1-noble
300214 steps :
301215 - checkout
302- - install_js :
303- playwright : true
304- react-version : << parameters.react-version >>
216+ - code-infra/install-deps :
217+ browsers : true
218+ package-overrides : react@ << parameters.react-version >>
305219 - run :
306220 name : Run e2e tests
307221 command : pnpm test:e2e
@@ -311,8 +225,8 @@ jobs:
311225 - image : mcr.microsoft.com/playwright:v1.55.1-noble
312226 steps :
313227 - checkout
314- - install_js :
315- playwright : true
228+ - code-infra/install-deps :
229+ browsers : true
316230 - run :
317231 name : pnpm test:e2e-website
318232 command : pnpm test:e2e-website
@@ -322,37 +236,18 @@ jobs:
322236 << : *default-job
323237 steps :
324238 - checkout
325- - install_js :
326- react-version : << parameters.react-version >>
327- - run :
328- name : prepare danger on PRs
329- command : pnpm danger ci
330- environment :
331- DANGER_COMMAND : prepareBundleSizeReport
332- - run :
333- name : Build packages
334- command : pnpm release:build
335- - run :
336- name : create and upload a size snapshot
337- command : |
338- export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_ARTIFACTS
339- export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_ARTIFACTS
340- export AWS_REGION=$AWS_REGION_ARTIFACTS
341- pnpm size:snapshot
342- - run :
343- name : Run danger on PRs
344- command : pnpm danger ci --fail-on-errors
345- environment :
346- DANGER_COMMAND : reportBundleSize
239+ - code-infra/install-deps :
240+ package-overrides : react@<< parameters.react-version >>
241+ - code-infra/test-package
347242 test_regressions :
348243 << : *default-job
349244 docker :
350245 - image : mcr.microsoft.com/playwright:v1.55.1-noble
351246 steps :
352247 - checkout
353- - install_js :
354- playwright : true
355- react-version : << parameters.react-version >>
248+ - code-infra/install-deps :
249+ browsers : true
250+ package-overrides : react@ << parameters.react-version >>
356251 - run :
357252 name : Install ffmpeg
358253 command : apt update && apt upgrade -y && apt install ffmpeg -y
0 commit comments