From a98602373d6792b275893ff1907c10334ccfec25 Mon Sep 17 00:00:00 2001 From: Shaneeza Date: Fri, 21 Nov 2025 11:22:46 -0500 Subject: [PATCH 1/4] fix(GuideCue): streamline button focus test by removing unnecessary waits --- packages/guide-cue/src/GuideCue/GuideCue.spec.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx index 2d8a0d064e..826084daa1 100644 --- a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx +++ b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx @@ -373,17 +373,15 @@ describe('packages/guide-cue', () => { numberOfSteps: 2, currentStep: 1, }); - await act(async () => { - await waitForTimeout(timeout1); + + await waitFor(() => { + expect(getByRole('dialog')).toBeVisible(); // Checks visibility. If the dialog is visible, then the focus trap is in effect and the primary button is focused. }); const primaryButton = getByRole('button', { name: buttonTextDefault }); expect(primaryButton).toBeInTheDocument(); - - userEvent.tab(); - await waitFor(() => { - expect(primaryButton).toHaveFocus(); - }); + // This should be in focus when the guidecue is opened. + expect(primaryButton).toHaveFocus(); }); }); }); From fbacfa0a2017af3832c14d69c6bcb65ed60b13b6 Mon Sep 17 00:00:00 2001 From: Shaneeza Date: Fri, 21 Nov 2025 12:06:55 -0500 Subject: [PATCH 2/4] wip --- packages/guide-cue/src/GuideCue/GuideCue.spec.tsx | 2 +- packages/select/src/ListMenu/ListMenu.tsx | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx index 826084daa1..d73e1467b7 100644 --- a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx +++ b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx @@ -367,7 +367,7 @@ describe('packages/guide-cue', () => { await waitFor(() => expect(numOfButtons).toEqual(2)); }); - test('primary button is focusable for focus trap targeting', async () => { + test('primary button is focused for focus trap targeting', async () => { const { getByRole } = renderGuideCue({ open: true, numberOfSteps: 2, diff --git a/packages/select/src/ListMenu/ListMenu.tsx b/packages/select/src/ListMenu/ListMenu.tsx index 93ce193e32..c0797e91d1 100644 --- a/packages/select/src/ListMenu/ListMenu.tsx +++ b/packages/select/src/ListMenu/ListMenu.tsx @@ -41,6 +41,12 @@ const ListMenu = React.forwardRef( const ref = useForwardedRef(forwardedRef, null); + console.log('🚗', { + visibility: referenceElement?.current?.style.visibility, + display: referenceElement?.current?.style.display, + opacity: referenceElement?.current?.style.opacity, + }); + const availableSpace = useAvailableSpace(referenceElement, menuMargin); const maxHeightValue = !isUndefined(availableSpace) ? `${Math.min(availableSpace, maxMenuHeight)}px` From 9e79f8286ff0811ea0e5904477cd61cf9665d4a0 Mon Sep 17 00:00:00 2001 From: Shaneeza Date: Fri, 21 Nov 2025 16:06:42 -0500 Subject: [PATCH 3/4] Remove debug logging from ListMenu component --- packages/select/src/ListMenu/ListMenu.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/select/src/ListMenu/ListMenu.tsx b/packages/select/src/ListMenu/ListMenu.tsx index c0797e91d1..93ce193e32 100644 --- a/packages/select/src/ListMenu/ListMenu.tsx +++ b/packages/select/src/ListMenu/ListMenu.tsx @@ -41,12 +41,6 @@ const ListMenu = React.forwardRef( const ref = useForwardedRef(forwardedRef, null); - console.log('🚗', { - visibility: referenceElement?.current?.style.visibility, - display: referenceElement?.current?.style.display, - opacity: referenceElement?.current?.style.opacity, - }); - const availableSpace = useAvailableSpace(referenceElement, menuMargin); const maxHeightValue = !isUndefined(availableSpace) ? `${Math.min(availableSpace, maxMenuHeight)}px` From d4efa9d18866344df531a5e3d88b68e63ef3af3e Mon Sep 17 00:00:00 2001 From: Shaneeza Date: Fri, 21 Nov 2025 16:28:33 -0500 Subject: [PATCH 4/4] fix(GuideCue): update button focus test for clarity and accuracy --- .../guide-cue/src/GuideCue/GuideCue.spec.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx index d73e1467b7..6fbfa95415 100644 --- a/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx +++ b/packages/guide-cue/src/GuideCue/GuideCue.spec.tsx @@ -186,18 +186,19 @@ describe('packages/guide-cue', () => { expect(body).toBeInTheDocument(); }); - test('primary button is focusable for focus trap targeting', async () => { + test('primary button is focused when opened', async () => { const { getByRole } = renderGuideCue({ open: true, }); - const primaryButton = getByRole('button', { name: buttonTextDefault }); - expect(primaryButton).toBeInTheDocument(); - - userEvent.tab(); await waitFor(() => { - expect(primaryButton).toHaveFocus(); + expect(getByRole('dialog')).toBeVisible(); // Checks visibility. If the dialog is visible, then the focus trap is in effect and the primary button is focused. }); + + const primaryButton = getByRole('button', { name: buttonTextDefault }); + expect(primaryButton).toBeInTheDocument(); + // This should automatically be in focus when the guidecue is opened. + expect(primaryButton).toHaveFocus(); }); }); @@ -367,7 +368,7 @@ describe('packages/guide-cue', () => { await waitFor(() => expect(numOfButtons).toEqual(2)); }); - test('primary button is focused for focus trap targeting', async () => { + test('primary button is focused when opened', async () => { const { getByRole } = renderGuideCue({ open: true, numberOfSteps: 2, @@ -380,7 +381,7 @@ describe('packages/guide-cue', () => { const primaryButton = getByRole('button', { name: buttonTextDefault }); expect(primaryButton).toBeInTheDocument(); - // This should be in focus when the guidecue is opened. + // This should automatically be in focus when the guidecue is opened. expect(primaryButton).toHaveFocus(); }); });