Skip to content

Conversation

dmytrokirpa
Copy link
Contributor

@dmytrokirpa dmytrokirpa commented Aug 5, 2025

This PR takes care of React 19 e2e integration test failures for the Menu component. The other 5 failures are being sorted out in a separate PR (#34985) since they don’t need any changes to the component runtime.

Previous Behavior

In React 19, MenuTrigger components were automatically focusing themselves when mounted or after re-renders, breaking accessibility expectations and failing e2e tests:

  • "should not automatically focus itself when mounted"
  • "should not focus itself after re-render"

Root Cause

React 19 changed the timing of effect execution, causing the focus restoration logic in useMenu.tsx to trigger inappropriately when menus were closed but had never been opened.

New Behavior

Added a hasBeenOpenedRef to track whether the menu has ever been opened. Focus restoration now only occurs when:

  1. It's not the first mount (!firstMount)
  2. The menu was previously opened (hasBeenOpenedRef.current)
  3. The active element is the document body

Testing

# React 19
yarn nx e2e:integration react-19-tests-v9 -- --spec "../../packages/react-components/react-menu/library/src/components/Menu/Menu.cy.tsx"

# React 18
yarn nx e2e:integration react-18-tests-v9 -- --spec "../../packages/react-components/react-menu/library/src/components/Menu/Menu.cy.tsx"

# React 17
yarn nx e2e:integration react-17-tests-v9 -- --spec "../../packages/react-components/react-menu/library/src/components/Menu/Menu.cy.tsx"

Related Issue(s)

Copy link

github-actions bot commented Aug 5, 2025

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
react-charts
AreaChart
378.14 kB
114.991 kB
378.182 kB
115.003 kB
42 B
12 B
react-charts
DeclarativeChart
610.968 kB
173.909 kB
611.01 kB
173.922 kB
42 B
13 B
react-charts
DonutChart
294.276 kB
87.979 kB
294.318 kB
87.992 kB
42 B
13 B
react-charts
FunnelChart
287.535 kB
85.474 kB
287.577 kB
85.486 kB
42 B
12 B
react-charts
GanttChart
362.438 kB
108.908 kB
362.48 kB
108.923 kB
42 B
15 B
react-charts
GaugeChart
310.651 kB
92.021 kB
310.693 kB
92.035 kB
42 B
14 B
react-charts
GroupedVerticalBarChart
363.116 kB
108.89 kB
363.158 kB
108.902 kB
42 B
12 B
react-charts
HeatMapChart
360.704 kB
109.24 kB
360.746 kB
109.254 kB
42 B
14 B
react-charts
HorizontalBarChart
294.95 kB
86.744 kB
294.992 kB
86.756 kB
42 B
12 B
react-charts
Legends
234.737 kB
69.425 kB
234.779 kB
69.438 kB
42 B
13 B
react-charts
LineChart
381.564 kB
114.964 kB
381.606 kB
114.979 kB
42 B
15 B
react-charts
ScatterChart
363.247 kB
109.083 kB
363.289 kB
109.098 kB
42 B
15 B
react-charts
VerticalBarChart
401.759 kB
115.624 kB
401.801 kB
115.636 kB
42 B
12 B
react-charts
VerticalStackedBarChart
372.058 kB
111.179 kB
372.1 kB
111.192 kB
42 B
13 B
react-components
react-components: Accordion, Button, FluentProvider, Image, Menu, Popover
236.519 kB
68.472 kB
236.561 kB
68.485 kB
42 B
13 B
react-components
react-components: entire library
1.275 MB
321.208 kB
1.275 MB
321.216 kB
42 B
8 B
react-menu
Menu (including children components)
164.994 kB
49.945 kB
165.036 kB
49.963 kB
42 B
18 B
react-menu
Menu (including selectable components)
167.976 kB
50.541 kB
168.018 kB
50.556 kB
42 B
15 B
Unchanged fixtures
Package & Exports Size (minified/GZIP)
react-avatar
Avatar
48.518 kB
15.508 kB
react-avatar
AvatarGroup
19.235 kB
7.617 kB
react-avatar
AvatarGroupItem
62.662 kB
19.727 kB
react-breadcrumb
@fluentui/react-breadcrumb - package
114.212 kB
31.517 kB
react-charts
HorizontalBarChartWithAxis
63 B
83 B
react-charts
SankeyChart
198.471 kB
60.992 kB
react-charts
Sparkline
91.115 kB
28.688 kB
react-components
react-components: Button, FluentProvider & webLightTheme
68.79 kB
19.902 kB
react-components
react-components: FluentProvider & webLightTheme
43.624 kB
14.255 kB
react-datepicker-compat
DatePicker Compat
226.614 kB
64.087 kB
react-dialog
Dialog (including children components)
102.445 kB
30.622 kB
react-overflow
hooks only
12.832 kB
4.828 kB
react-persona
Persona
55.409 kB
17.389 kB
react-popover
Popover
132.198 kB
41.134 kB
react-portal-compat
PortalCompatProvider
8.386 kB
2.624 kB
react-table
DataGrid
161.217 kB
45.579 kB
react-table
Table (Primitives only)
41.978 kB
13.573 kB
react-table
Table as DataGrid
131.476 kB
36.341 kB
react-table
Table (Selection only)
69.846 kB
19.704 kB
react-table
Table (Sort only)
68.489 kB
19.321 kB
react-tag-picker
@fluentui/react-tag-picker - package
188.272 kB
56.449 kB
react-tags
InteractionTag
14.561 kB
5.865 kB
react-tags
Tag
29.907 kB
9.699 kB
react-tags
TagGroup
83.089 kB
24.555 kB
react-teaching-popover
TeachingPopover
102.747 kB
30.737 kB
react-timepicker-compat
TimePicker
109.913 kB
36.335 kB
react-tree
FlatTree
149.112 kB
42.659 kB
react-tree
PersonaFlatTree
149.868 kB
42.777 kB
react-tree
PersonaTree
146.125 kB
41.639 kB
react-tree
Tree
145.375 kB
41.503 kB
🤖 This report was generated against f5381f57d8ad4b4aac52f72e54cdae3daa7b3bcb

Copy link

github-actions bot commented Aug 5, 2025

Pull request demo site: URL

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.

1 participant