Skip to content
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

stress-test: add "afterframe" dependency #25560

Merged
merged 1 commit into from
Nov 7, 2022

Conversation

spmonahan
Copy link
Contributor

Current Behavior

stress-test has a function called requestPostAnimationFrame that allows us to measure the time between the start of the browser rendering a frame and the end. This is useful for measure style recalculation, layout and paint.

New Behavior

Drop requestPostAnimationFrame in favor of taking a dependency on afterframe, a library that does the same thing. This reduces the amount of code in the stress-test app itself and allows us to focus on the features of the tool itself.

Previously stress-test used a "requestPostAnimationFrame" function that
is used to measure from just before style recalc, layout and paint are
executed to just afterward.

This change drops that function in favor of taking a dependency on
afterframe, a library that does the same thing.
@codesandbox-ci
Copy link

codesandbox-ci bot commented Nov 7, 2022

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 922d1eb:

Sandbox Source
@fluentui/react 8 starter Configuration
@fluentui/react-components 9 starter Configuration

@size-auditor
Copy link

size-auditor bot commented Nov 7, 2022

Asset size changes

Size Auditor did not detect a change in bundle size for any component!

Baseline commit: 169e9b94b0cf741102596f106ed726d9402145cc (build)

@fabricteam
Copy link
Collaborator

Perf Analysis (@fluentui/react-components)

No significant results to display.

All results

Scenario Render type Master Ticks PR Ticks Iterations Status
Avatar mount 1266 1270 5000
Button mount 930 924 5000
FluentProvider mount 1485 1501 5000
FluentProviderWithTheme mount 572 572 10
FluentProviderWithTheme virtual-rerender 541 538 10
FluentProviderWithTheme virtual-rerender-with-unmount 580 588 10
MakeStyles mount 1963 1958 50000
SpinButton mount 2331 2344 5000

@fabricteam
Copy link
Collaborator

Perf Analysis (@fluentui/react-northstar)

Perf tests with no regressions
Scenario Current PR Ticks Baseline Ticks Ratio
RefMinimalPerf.default 196 185 1.06:1
CarouselMinimalPerf.default 372 354 1.05:1
LoaderMinimalPerf.default 274 261 1.05:1
HeaderSlotsPerf.default 683 659 1.04:1
ListMinimalPerf.default 475 456 1.04:1
TextAreaMinimalPerf.default 424 409 1.04:1
ButtonMinimalPerf.default 142 138 1.03:1
ItemLayoutMinimalPerf.default 980 956 1.03:1
SkeletonMinimalPerf.default 311 301 1.03:1
TableMinimalPerf.default 364 354 1.03:1
VideoMinimalPerf.default 629 609 1.03:1
AccordionMinimalPerf.default 115 113 1.02:1
AttachmentMinimalPerf.default 126 124 1.02:1
ChatDuplicateMessagesPerf.default 215 211 1.02:1
ChatMinimalPerf.default 638 627 1.02:1
LabelMinimalPerf.default 343 336 1.02:1
LayoutMinimalPerf.default 316 311 1.02:1
MenuButtonMinimalPerf.default 1350 1328 1.02:1
SegmentMinimalPerf.default 307 300 1.02:1
StatusMinimalPerf.default 617 606 1.02:1
TableManyItemsPerf.default 1574 1548 1.02:1
TooltipMinimalPerf.default 1889 1847 1.02:1
AlertMinimalPerf.default 220 217 1.01:1
AttachmentSlotsPerf.default 878 871 1.01:1
ButtonOverridesMissPerf.default 1021 1010 1.01:1
ChatWithPopoverPerf.default 286 284 1.01:1
DialogMinimalPerf.default 688 681 1.01:1
DividerMinimalPerf.default 313 310 1.01:1
EmbedMinimalPerf.default 2652 2633 1.01:1
FormMinimalPerf.default 330 328 1.01:1
GridMinimalPerf.default 304 301 1.01:1
HeaderMinimalPerf.default 315 312 1.01:1
ImageMinimalPerf.default 337 334 1.01:1
ListCommonPerf.default 526 522 1.01:1
PopupMinimalPerf.default 564 558 1.01:1
PortalMinimalPerf.default 137 136 1.01:1
SliderMinimalPerf.default 1242 1230 1.01:1
TextMinimalPerf.default 304 302 1.01:1
CustomToolbarPrototype.default 2176 2155 1.01:1
BoxMinimalPerf.default 300 301 1:1
ButtonSlotsPerf.default 422 421 1:1
CardMinimalPerf.default 461 461 1:1
CheckboxMinimalPerf.default 1533 1528 1:1
DropdownManyItemsPerf.default 535 534 1:1
InputMinimalPerf.default 857 857 1:1
MenuMinimalPerf.default 722 724 1:1
ProviderMergeThemesPerf.default 993 995 1:1
ProviderMinimalPerf.default 320 320 1:1
RadioGroupMinimalPerf.default 380 380 1:1
ReactionMinimalPerf.default 332 331 1:1
SplitButtonMinimalPerf.default 3276 3262 1:1
ToolbarMinimalPerf.default 791 792 1:1
TreeMinimalPerf.default 698 701 1:1
DropdownMinimalPerf.default 2153 2167 0.99:1
FlexMinimalPerf.default 256 259 0.99:1
ListNestedPerf.default 468 473 0.99:1
RosterPerf.default 1695 1710 0.99:1
IconMinimalPerf.default 578 583 0.99:1
AvatarMinimalPerf.default 162 165 0.98:1
AnimationMinimalPerf.default 458 473 0.97:1
DatepickerMinimalPerf.default 4506 4657 0.97:1
ListWith60ListItems.default 487 500 0.97:1
TreeWith60ListItems.default 119 123 0.97:1

@fabricteam
Copy link
Collaborator

📊 Bundle size report

Unchanged fixtures
Package & Exports Size (minified/GZIP)
global-context
createContext
533 B
341 B
global-context
createContextSelector
554 B
348 B
priority-overflow
createOverflowManager
3.153 kB
1.299 kB
react-accordion
Accordion (including children components)
79.243 kB
24.436 kB
react-alert
Alert
84.771 kB
21.265 kB
react-avatar
Avatar
48.956 kB
13.883 kB
react-avatar
AvatarGroup
14.996 kB
6.013 kB
react-avatar
AvatarGroupItem
63.534 kB
17.979 kB
react-badge
Badge
22.646 kB
7.228 kB
react-badge
CounterBadge
23.536 kB
7.512 kB
react-badge
PresenceBadge
24.096 kB
7.09 kB
react-button
Button
36.85 kB
9.917 kB
react-button
CompoundButton
43.875 kB
11.134 kB
react-button
MenuButton
39.544 kB
10.816 kB
react-button
SplitButton
46.99 kB
12.201 kB
react-button
ToggleButton
52.535 kB
11.4 kB
react-card
Card - All
71.863 kB
20.939 kB
react-card
Card
67.641 kB
19.897 kB
react-card
CardFooter
8.607 kB
3.622 kB
react-card
CardHeader
9.782 kB
3.998 kB
react-card
CardPreview
8.708 kB
3.678 kB
react-combobox
Combobox (including child components)
76.153 kB
24.665 kB
react-combobox
Dropdown (including child components)
75.885 kB
24.635 kB
react-components
react-components: Button, FluentProvider & webLightTheme
62.941 kB
17.678 kB
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
189.907 kB
52.983 kB
react-components
react-components: FluentProvider & webLightTheme
33.446 kB
11.033 kB
react-dialog
Dialog (including children components)
83.147 kB
24.799 kB
react-divider
Divider
16.505 kB
5.925 kB
react-image
Image
10.826 kB
4.286 kB
react-infobutton
InfoButton
112.443 kB
34.387 kB
react-input
Input
24.428 kB
7.899 kB
react-label
Label
9.384 kB
3.883 kB
react-link
Link
11.852 kB
4.888 kB
react-menu
Menu (including children components)
117.089 kB
36.188 kB
react-menu
Menu (including selectable components)
120.158 kB
36.712 kB
react-overflow
hooks only
11.004 kB
4.188 kB
react-persona
Persona
54.074 kB
15.269 kB
react-popover
Popover
103.672 kB
31.871 kB
react-portal
Portal
10.495 kB
3.851 kB
react-portal-compat
PortalCompatProvider
5.857 kB
1.978 kB
react-positioning
usePositioning
19.826 kB
7.417 kB
react-progress
Progress
13.131 kB
5.039 kB
react-provider
FluentProvider
15.807 kB
5.909 kB
react-radio
Radio
36.436 kB
12.126 kB
react-radio
RadioGroup
14.294 kB
5.723 kB
react-select
Select
23.255 kB
7.954 kB
react-slider
Slider
32.108 kB
10.195 kB
react-spinbutton
SpinButton
45.826 kB
12.858 kB
react-spinner
Spinner
20.003 kB
6.449 kB
react-switch
Switch
33.398 kB
10.577 kB
react-text
Text - Default
11.828 kB
4.627 kB
react-text
Text - Wrappers
15.138 kB
5.064 kB
react-textarea
Textarea
25.687 kB
8.331 kB
react-theme
Single theme token import
69 B
89 B
react-theme
Teams: all themes
29.65 kB
6.444 kB
react-theme
Teams: Light theme
17.486 kB
5.057 kB
react-tooltip
Tooltip
42.032 kB
14.739 kB
react-utilities
SSRProvider
180 B
159 B
🤖 This report was generated against 169e9b94b0cf741102596f106ed726d9402145cc

@fabricteam
Copy link
Collaborator

Perf Analysis (@fluentui/react)

No significant results to display.

All results

Scenario Render type Master Ticks PR Ticks Iterations Status
BaseButton mount 1210 1199 5000
Breadcrumb mount 2844 2827 1000
Checkbox mount 2640 2648 5000
CheckboxBase mount 2386 2347 5000
ChoiceGroup mount 4277 4260 5000
ComboBox mount 1173 1188 1000
CommandBar mount 9422 9345 1000
ContextualMenu mount 10883 10707 1000
DefaultButton mount 1362 1374 5000
DetailsRow mount 3404 3417 5000
DetailsRowFast mount 3385 3366 5000
DetailsRowNoStyles mount 3230 3226 5000
Dialog mount 2951 2959 1000
DocumentCardTitle mount 592 579 1000
Dropdown mount 3131 3185 5000
FocusTrapZone mount 1937 1938 5000
FocusZone mount 1907 1948 5000
GroupedList mount 1851 2059 2
GroupedList virtual-rerender 1100 1121 2
GroupedList virtual-rerender-with-unmount 1611 1621 2
GroupedListV2 mount 555 564 2
GroupedListV2 virtual-rerender 551 550 2
GroupedListV2 virtual-rerender-with-unmount 578 567 2
IconButton mount 1792 1798 5000
Label mount 751 747 5000
Layer mount 4226 4203 5000
Link mount 855 860 5000
MenuButton mount 1597 1623 5000
MessageBar mount 2350 2341 5000
Nav mount 3083 3057 1000
OverflowSet mount 1401 1420 5000
Panel mount 2585 2488 1000
Persona mount 1262 1254 1000
Pivot mount 1529 1506 1000
PrimaryButton mount 1480 1506 5000
Rating mount 6977 6980 5000
SearchBox mount 1489 1491 5000
Shimmer mount 2884 2924 5000
Slider mount 2118 2119 5000
SpinButton mount 4276 4282 5000
Spinner mount 826 832 5000
SplitButton mount 2806 2835 5000
Stack mount 857 859 5000
StackWithIntrinsicChildren mount 2345 2333 5000
StackWithTextChildren mount 5020 5020 5000
SwatchColorPicker mount 9448 9524 5000
TagPicker mount 2344 2325 5000
TeachingBubble mount 74904 78101 5000
Text mount 815 814 5000
TextField mount 1544 1565 5000
ThemeProvider mount 1434 1436 5000
ThemeProvider virtual-rerender 1125 1144 5000
ThemeProvider virtual-rerender-with-unmount 1992 1989 5000
Toggle mount 1146 1140 5000
buttonNative mount 538 543 5000

@spmonahan spmonahan merged commit b3213e6 into microsoft:master Nov 7, 2022
sunilsurana added a commit to sunilsurana/fluentuifork1 that referenced this pull request Nov 12, 2022
* stress-test: add "afterframe" dependency (microsoft#25560)

Previously stress-test used a "requestPostAnimationFrame" function that
is used to measure from just before style recalc, layout and paint are
executed to just afterward.

This change drops that function in favor of taking a dependency on
afterframe, a library that does the same thing.

* Fix: Update tabs to remain the same size between unselected and selected states (microsoft#25542)

* Add support to keep tabs from changing size when selected

* Update for naming and tests

* Rename update

* Update packages/react-components/react-tabs/src/components/TabList/TabList.types.ts

Co-authored-by: Sean Monahan <[email protected]>

Co-authored-by: Sean Monahan <[email protected]>

* chore: Add reduced-motion documentation to Spinner (microsoft#25561)

* chore: Add reduced-motion documentation to Spinner

* change file

* chore: Add documentation to Progress about reduced-motion (microsoft#25563)

* chore: Add documentation to Progress about reduced-motion

* change file

* stress-test: disable CSS transitions on injected styles (microsoft#25559)

This addresses an issue where Firefox's style recalculation measurement
becomes unstable when controls under test have CSS transitions.

Specifically, our test injects styles that update the background color
of selected controls and many Fluent controls transition the background
color for different states like "hover" and "focus".

With transitions running Firefox will sometimes include the transition
time in the style recalc measurement and sometimes not. Additionally,
Chromium browsers never include the transition time in the measurement.

Disabling transitions ensures measurement behavior is consistent in
Firefox and in alignment with the behavior of Chromium browsers.

* docs(rfcs): add triage automation rfc (microsoft#24817)

* chore: update beachball ignore list to apply to new project structure (microsoft#25531)

* bugfix(react-switch): adds line-height=0 to switch indicator slot (microsoft#25507)

* chore: add both options to useArrowNavigationGroup (microsoft#25568)

* chore: add both options to useArrowNavigationGroup

* chore: add changes

* chore: update api

* chore(vr-tests-v9): Convert Dialog and Image VR tests to CSF (microsoft#25527)

* chore: toolbar a11y improvements (microsoft#25562)

* feat: create vertical example

* chore: add navigation arrows for vertical scenario

* chore: add labels for all toolbar stories

* chore: update tooltip example

* chore: update radio example

* chore: update toolbar stories examples

* chore: add changes

* chore: use both in toolbar arrow key nav

* chore: update snapshot

* chore(react-dialog): migrate to new package structure (microsoft#25523)

Co-authored-by: Oleksandr Fediashov <[email protected]>

* chore(react-overflow): migrate to new package structure (microsoft#25524)

* Expand @fluentui/react root index file's export *s to uncover and fix duplicate exports. (microsoft#25545)

* expanding index.

* change.

* Replacing with inline deprecation exclusions.

* setting export * to warning.

* change.

* moving rules around.

* fix: v9 form controls with underline should have underline-specific disabled styling (microsoft#25543)

Updates disabled form styling for Input, Select, Spinbutton, Combobox, and Dropdown

* docs(public-docsite-v9): Adding a basic setup section to the SSR docs (microsoft#25564)

* applying package updates

* update regex

* updatE

* Update azure-pipelines.vrt-baseline.yml for Azure Pipelines

* Update azure-pipelines.vrt-baseline.yml for Azure Pipelines

* chore(deps): bump loader-utils from 2.0.0 to 2.0.3 (microsoft#25567)

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.0 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](webpack/loader-utils@v2.0.0...v2.0.3)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: migrate @types/node to 14 to align with our supported node version (microsoft#25510)

* chore(deps): resolve only to 1 @types/node version to mitigate global leaks and api-generation errors

* fix(bundle-size): fix type errors exposed by node 14 typings

* fix(tools): fix type errors exposed by node 14 typings

* fix(typings): fix type errors exposed by node 14 typings

* revert:  use resolution for @types/node

* chore(ts-minbar-test-react): use @types/node 14 explicitly

* generate changefiles

* chore: dedupe deps

* fix(scripts): fix type errors exposed by node 14 typings

* test: replace deprecated module.parent with require.main within isConformance

* generate changefiles

* test(react): clean up persona-coin test and use isConformant without side-effects

* fix(storybook): fix theme picker current selection (microsoft#25533)

* update

* chore(vr-tests-v9): Convert Accordion VR tests to CSF (microsoft#25525)

* fix: Update Avatar active ring color to match base color (microsoft#25497)

* RFC: Field Package Layout (microsoft#25380)

* Feature: Added large tab size to react-tabs (microsoft#25577)

* Added large tab size

* yarn change

* Update vr-tests

* Code review fix

* feat(react-infobutton): Adding size prop, HCM styles, and updating styles to match design spec (microsoft#25519)

* updating styles and adding size prop

* updating comment

* adding requested changes

* fix: Adding expanded styles for MenuButtons and making various other styling fixes for Button components (microsoft#25521)

* fix: Adding expanded styles for MenuButtons and making various other styling fixes for Button components.

* Adding change file.

* Addressing PR feedback.

Co-authored-by: KHMakoto <[email protected]>

* chore: Clean up Field tests and story imports in preparation of moving to individual packages (microsoft#25594)

* Remove custom `isConformant` function for Field tests, and instead inline the customizations in each call to `isConformant`
* Disable the `exported-top-level` test because the components will be exported as e.g. `InputField_unstable` from the component packages.
* Change the stories to import from `@fluentui/react-components/unstable`, instead of the individual package.
* Rename the `FieldComponent` type to `FieldControl` to correspond to the `control` slot name.

* Tabs icon toggle (microsoft#25597)

* Added regular filled icon toggling

* yarn change

* chore: Refactor Field components into the base component's package (microsoft#25593)

Move Field components into their respective packages, as discussed in RFC microsoft#25380

* Update Component Implementation Epic template (microsoft#25480)

* update to use vrscreenshotdiff beta

* change lock file

* update package version

* applying package updates

* update pr pipeline to add v8

* PR to add tasks in pipeline for v9 VRT integration (microsoft#25606)

* fix: create valid export maps (microsoft#25558)

* generate changefiles

* chore(deps): bump socket.io-parser from 4.0.4 to 4.0.5 (microsoft#25604)

Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](socketio/socket.io-parser@4.0.4...4.0.5)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(react-dialog): removes unnecessary union case for DialogOpenChangeData (microsoft#25504)

* templatize

* update

* templatize

* updatE

* refactor(scripts): remove deprecated exec abstractions (microsoft#25569)

* fix(scripts): make eslint run again on pre-commit (microsoft#25537)

* feat(react-components): Move AvatarGroup to stable (microsoft#25005)

* update

* update version

* run partial tests

* update

* update

* update

* update

* update

* update

* updatE

* updatE

* update version

* update lock file

* update name

* update version

* add quotes

* docs: refactor Text documentation and add missing guidance for presets/alignment (microsoft#25587)

Fixes microsoft#24341
Fixes microsoft#25548

* update

* package version

* fix(react-menu): remove unwanted aria attributes on context menu (microsoft#25615)

* fix(react-menu): remove unwanted aria attributes on context menu

* chore: updates trigger selector for cypress tests

* remove unwanted param

* update

* applying package updates

* convert

* checkpoint

* add regex

* change convert script

* updates

* update sw version

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Sean Monahan <[email protected]>
Co-authored-by: Geoff Cox (Microsoft) <[email protected]>
Co-authored-by: tomi-msft <[email protected]>
Co-authored-by: Martin Hochel <[email protected]>
Co-authored-by: Bernardo Sunderhus <[email protected]>
Co-authored-by: chajun <[email protected]>
Co-authored-by: Tristan Watanabe <[email protected]>
Co-authored-by: Oleksandr Fediashov <[email protected]>
Co-authored-by: David Zearing <[email protected]>
Co-authored-by: Sarah Higley <[email protected]>
Co-authored-by: Esteban Munoz Facusse <[email protected]>
Co-authored-by: Fluent UI Build <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tudor Popa <[email protected]>
Co-authored-by: Ben Howell <[email protected]>
Co-authored-by: Makoto Morimoto <[email protected]>
Co-authored-by: KHMakoto <[email protected]>
Co-authored-by: Marcos Moura <[email protected]>
NotWoods pushed a commit to NotWoods/fluentui that referenced this pull request Nov 18, 2022
Previously stress-test used a "requestPostAnimationFrame" function that
is used to measure from just before style recalc, layout and paint are
executed to just afterward.

This change drops that function in favor of taking a dependency on
afterframe, a library that does the same thing.
Hotell pushed a commit to Hotell/fluentui that referenced this pull request Feb 9, 2023
Previously stress-test used a "requestPostAnimationFrame" function that
is used to measure from just before style recalc, layout and paint are
executed to just afterward.

This change drops that function in favor of taking a dependency on
afterframe, a library that does the same thing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants