diff --git a/packages/@react-aria/tooltip/src/useTooltipTrigger.ts b/packages/@react-aria/tooltip/src/useTooltipTrigger.ts
index 5ccfb801b17..4fa5bd7ec1d 100644
--- a/packages/@react-aria/tooltip/src/useTooltipTrigger.ts
+++ b/packages/@react-aria/tooltip/src/useTooltipTrigger.ts
@@ -139,9 +139,9 @@ export function useTooltipTrigger(props: TooltipTriggerProps, state: TooltipTrig
'aria-describedby': state.isOpen ? tooltipId : undefined,
...mergeProps(focusableProps, hoverProps, {
onPointerDown: onPressStart,
- onKeyDown: onPressStart,
- tabIndex: undefined
- })
+ onKeyDown: onPressStart
+ }),
+ tabIndex: undefined
},
tooltipProps: {
id: tooltipId
diff --git a/packages/react-aria-components/test/Tooltip.test.js b/packages/react-aria-components/test/Tooltip.test.js
index 249124a234b..b958c419df6 100644
--- a/packages/react-aria-components/test/Tooltip.test.js
+++ b/packages/react-aria-components/test/Tooltip.test.js
@@ -312,4 +312,32 @@ describe('Tooltip', () => {
let tooltip = getByRole('tooltip');
expect(tooltip).toBeInTheDocument();
});
+
+ it('should not override child properties for excludeFromTabOrder', async () => {
+ let {getByRole} = render(
+
+
+ hello world
+
+ );
+
+ let button = getByRole('button');
+ expect(button).toHaveAttribute('tabindex', '-1');
+ });
+
+ it('should not override child properties', async () => {
+ let {getByRole} = render(
+
+
+ hello world
+
+ );
+
+ let button = getByRole('button');
+ expect(button).toHaveAttribute('tabindex', '0');
+ });
});