-
Notifications
You must be signed in to change notification settings - Fork 2.9k
feat(scripts-bundle-size-auditor): refactor test-bundles app into a generic CLI tool that enables faster CI #28231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(scripts-bundle-size-auditor): refactor test-bundles app into a generic CLI tool that enables faster CI #28231
Conversation
41f2b63 to
852d3cf
Compare
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit d5f2cdb:
|
📊 Bundle size reportUnchanged fixtures
|
Perf Analysis (
|
| Scenario | Current PR Ticks | Baseline Ticks | Ratio |
|---|---|---|---|
| AccordionMinimalPerf.default | 86 | 78 | 1.1:1 |
| ButtonSlotsPerf.default | 325 | 300 | 1.08:1 |
| PortalMinimalPerf.default | 88 | 82 | 1.07:1 |
| SkeletonMinimalPerf.default | 208 | 195 | 1.07:1 |
| AnimationMinimalPerf.default | 306 | 290 | 1.06:1 |
| HeaderMinimalPerf.default | 214 | 202 | 1.06:1 |
| ChatWithPopoverPerf.default | 196 | 186 | 1.05:1 |
| SegmentMinimalPerf.default | 201 | 191 | 1.05:1 |
| AvatarMinimalPerf.default | 111 | 107 | 1.04:1 |
| ButtonMinimalPerf.default | 94 | 90 | 1.04:1 |
| CarouselMinimalPerf.default | 274 | 264 | 1.04:1 |
| DialogMinimalPerf.default | 461 | 445 | 1.04:1 |
| GridMinimalPerf.default | 194 | 186 | 1.04:1 |
| InputMinimalPerf.default | 538 | 519 | 1.04:1 |
| ListNestedPerf.default | 329 | 315 | 1.04:1 |
| MenuButtonMinimalPerf.default | 988 | 951 | 1.04:1 |
| ProviderMinimalPerf.default | 207 | 199 | 1.04:1 |
| StatusMinimalPerf.default | 398 | 384 | 1.04:1 |
| CardMinimalPerf.default | 312 | 304 | 1.03:1 |
| ChatDuplicateMessagesPerf.default | 158 | 154 | 1.03:1 |
| PopupMinimalPerf.default | 360 | 348 | 1.03:1 |
| SliderMinimalPerf.default | 758 | 739 | 1.03:1 |
| ToolbarMinimalPerf.default | 539 | 525 | 1.03:1 |
| AttachmentMinimalPerf.default | 86 | 84 | 1.02:1 |
| ProviderMergeThemesPerf.default | 674 | 658 | 1.02:1 |
| TextMinimalPerf.default | 201 | 198 | 1.02:1 |
| AttachmentSlotsPerf.default | 645 | 638 | 1.01:1 |
| BoxMinimalPerf.default | 196 | 194 | 1.01:1 |
| RosterPerf.default | 1565 | 1543 | 1.01:1 |
| SplitButtonMinimalPerf.default | 2265 | 2244 | 1.01:1 |
| ButtonOverridesMissPerf.default | 650 | 650 | 1:1 |
| ChatMinimalPerf.default | 451 | 451 | 1:1 |
| HeaderSlotsPerf.default | 466 | 466 | 1:1 |
| ImageMinimalPerf.default | 227 | 227 | 1:1 |
| ItemLayoutMinimalPerf.default | 704 | 704 | 1:1 |
| ListWith60ListItems.default | 373 | 372 | 1:1 |
| RadioGroupMinimalPerf.default | 269 | 269 | 1:1 |
| TableManyItemsPerf.default | 1121 | 1125 | 1:1 |
| TableMinimalPerf.default | 232 | 233 | 1:1 |
| TextAreaMinimalPerf.default | 285 | 284 | 1:1 |
| CustomToolbarPrototype.default | 1503 | 1501 | 1:1 |
| TreeWith60ListItems.default | 87 | 87 | 1:1 |
| AlertMinimalPerf.default | 156 | 157 | 0.99:1 |
| DatepickerMinimalPerf.default | 3858 | 3890 | 0.99:1 |
| DropdownManyItemsPerf.default | 399 | 404 | 0.99:1 |
| EmbedMinimalPerf.default | 1853 | 1864 | 0.99:1 |
| MenuMinimalPerf.default | 500 | 507 | 0.99:1 |
| RefMinimalPerf.default | 114 | 115 | 0.99:1 |
| TreeMinimalPerf.default | 483 | 487 | 0.99:1 |
| CheckboxMinimalPerf.default | 1137 | 1158 | 0.98:1 |
| DropdownMinimalPerf.default | 1429 | 1453 | 0.98:1 |
| FlexMinimalPerf.default | 156 | 159 | 0.98:1 |
| LayoutMinimalPerf.default | 204 | 208 | 0.98:1 |
| ListCommonPerf.default | 393 | 402 | 0.98:1 |
| ReactionMinimalPerf.default | 211 | 215 | 0.98:1 |
| TooltipMinimalPerf.default | 1252 | 1282 | 0.98:1 |
| DividerMinimalPerf.default | 204 | 210 | 0.97:1 |
| LabelMinimalPerf.default | 220 | 227 | 0.97:1 |
| LoaderMinimalPerf.default | 190 | 195 | 0.97:1 |
| VideoMinimalPerf.default | 420 | 431 | 0.97:1 |
| FormMinimalPerf.default | 219 | 229 | 0.96:1 |
| IconMinimalPerf.default | 387 | 402 | 0.96:1 |
| ListMinimalPerf.default | 304 | 329 | 0.92:1 |
Perf Analysis (
|
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| Avatar | mount | 594 | 574 | 5000 | |
| Button | mount | 297 | 303 | 5000 | |
| Field | mount | 1029 | 1010 | 5000 | |
| FluentProvider | mount | 635 | 646 | 5000 | |
| FluentProviderWithTheme | mount | 75 | 73 | 10 | |
| FluentProviderWithTheme | virtual-rerender | 61 | 58 | 10 | |
| FluentProviderWithTheme | virtual-rerender-with-unmount | 72 | 71 | 10 | |
| InfoButton | mount | 14 | 11 | 5000 | |
| MakeStyles | mount | 845 | 880 | 50000 | |
| Persona | mount | 1619 | 1597 | 5000 | |
| SpinButton | mount | 1276 | 1320 | 5000 |
Perf Analysis (
|
| Scenario | Render type | Master Ticks | PR Ticks | Iterations | Status |
|---|---|---|---|---|---|
| BaseButton | mount | 618 | 633 | 5000 | |
| Breadcrumb | mount | 1650 | 1665 | 1000 | |
| Checkbox | mount | 1694 | 1696 | 5000 | |
| CheckboxBase | mount | 1460 | 1481 | 5000 | |
| ChoiceGroup | mount | 2964 | 2961 | 5000 | |
| ComboBox | mount | 653 | 645 | 1000 | |
| CommandBar | mount | 6113 | 6232 | 1000 | |
| ContextualMenu | mount | 11742 | 11980 | 1000 | |
| DefaultButton | mount | 728 | 771 | 5000 | |
| DetailsRow | mount | 2160 | 2198 | 5000 | |
| DetailsRowFast | mount | 2174 | 2212 | 5000 | |
| DetailsRowNoStyles | mount | 2041 | 1999 | 5000 | |
| Dialog | mount | 2727 | 2799 | 1000 | |
| DocumentCardTitle | mount | 218 | 238 | 1000 | |
| Dropdown | mount | 1968 | 2005 | 5000 | |
| FocusTrapZone | mount | 1125 | 1153 | 5000 | |
| FocusZone | mount | 1068 | 1045 | 5000 | |
| GroupedList | mount | 41270 | 41256 | 2 | |
| GroupedList | virtual-rerender | 19766 | 19628 | 2 | |
| GroupedList | virtual-rerender-with-unmount | 49889 | 50205 | 2 | |
| GroupedListV2 | mount | 235 | 216 | 2 | |
| GroupedListV2 | virtual-rerender | 206 | 198 | 2 | |
| GroupedListV2 | virtual-rerender-with-unmount | 225 | 231 | 2 | |
| IconButton | mount | 1118 | 1093 | 5000 | |
| Label | mount | 330 | 335 | 5000 | |
| Layer | mount | 2703 | 2688 | 5000 | |
| Link | mount | 391 | 387 | 5000 | |
| MenuButton | mount | 939 | 930 | 5000 | |
| MessageBar | mount | 21467 | 21449 | 5000 | |
| Nav | mount | 1947 | 1937 | 1000 | |
| OverflowSet | mount | 784 | 773 | 5000 | |
| Panel | mount | 1814 | 1742 | 1000 | |
| Persona | mount | 721 | 722 | 1000 | |
| Pivot | mount | 848 | 847 | 1000 | |
| PrimaryButton | mount | 839 | 824 | 5000 | |
| Rating | mount | 4601 | 4567 | 5000 | |
| SearchBox | mount | 916 | 885 | 5000 | |
| Shimmer | mount | 1885 | 1829 | 5000 | |
| Slider | mount | 1328 | 1322 | 5000 | |
| SpinButton | mount | 2850 | 2875 | 5000 | |
| Spinner | mount | 393 | 386 | 5000 | |
| SplitButton | mount | 1827 | 1780 | 5000 | |
| Stack | mount | 404 | 408 | 5000 | |
| StackWithIntrinsicChildren | mount | 859 | 893 | 5000 | |
| StackWithTextChildren | mount | 2620 | 2637 | 5000 | |
| SwatchColorPicker | mount | 6149 | 6074 | 5000 | |
| TagPicker | mount | 1422 | 1456 | 5000 | |
| Text | mount | 369 | 375 | 5000 | |
| TextField | mount | 940 | 939 | 5000 | |
| ThemeProvider | mount | 837 | 841 | 5000 | |
| ThemeProvider | virtual-rerender | 581 | 588 | 5000 | |
| ThemeProvider | virtual-rerender-with-unmount | 1265 | 1258 | 5000 | |
| Toggle | mount | 607 | 619 | 5000 | |
| buttonNative | mount | 194 | 184 | 5000 |
🕵 fluentuiv9 No visual regressions between this PR and main |
…-auditor as replacememnt for test-bundles app
…nd --report-path arg per package
…undle-size-auditor cli
…ake webpack config creation more straightforward
8c3ebb1 to
21718f4
Compare
…ed by bundle-size-auditor cli
…Config to replace need of 'packageName' which doenst provide any context on caller site
…e sizeauditor gathers metadata
Asset size changes
Baseline commit: 9b5b3f33ad05e2dce6457c72b9e5ffa352033e47 (build) |
🕵 FluentUI-v0 No visual regressions between this PR and main |
🕵 fluentuiv8 No visual regressions between this PR and main |
TristanWatanabe
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚢
Previous Behavior
v8 and v0 use size-auditor which lives in
apps/test-bundles. This cannot be easily configured nor run on CI only if particular packages have been affected, thus consuming unnecessary resources.New Behavior
bundle-size-auditor CLI
apps/test-bundlesis replaced with genereic CLI tool calledbundle-size-auditorThis tool is used within react and react-northstar packages for all bundle-size related processing which produces metadata that we sent to lightrail service for auditing capabilities.
See the tool Readme for more info
Usage:
yarn lage bundle-size-auditor --to @fluentui/reactor on CI only for affected packages
yarn lage bundle-size-auditor --since=origin/masterCI
bundle size setup for v8,v0 is simplified to one command
yarn lage bundle-size-auditor --since=origin/masterRelated Issue(s)
SizeAuditortomonosize#27933