From 1428004808efc1acbf1f76904b275acdc980e3d2 Mon Sep 17 00:00:00 2001 From: viggy <70774793+vignesh191@users.noreply.github.com> Date: Sat, 16 May 2026 03:00:46 -0700 Subject: [PATCH] webui : [ChatFormActionAdd][a11y] fix accessibility issues in add menu trigger and items (#22736) * fix tab order on attach button, and dont focus on disabled mennu item * add a11y tests --- .../ChatFormActionAddDropdown.svelte | 99 ++++++++++++------- .../ChatFormActionsAdd.svelte | 6 +- .../ChatScreenForm.a11y.stories.svelte | 50 ++++++++++ 3 files changed, 114 insertions(+), 41 deletions(-) create mode 100644 tools/ui/tests/stories/ChatScreenForm.a11y.stories.svelte diff --git a/tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddDropdown.svelte b/tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddDropdown.svelte index e053e6f83..a6bb0fc2a 100644 --- a/tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddDropdown.svelte +++ b/tools/ui/src/lib/components/app/chat/ChatForm/ChatFormActions/ChatFormActionAdd/ChatFormActionAddDropdown.svelte @@ -1,11 +1,14 @@ + + { + const textarea = await canvas.findByRole('textbox'); + await userEvent.clear(textarea); + await userEvent.type(textarea, 'What is the meaning of life?'); + + const trigger = await canvas.findByRole('button', { name: ATTACHMENT_TOOLTIP_TEXT }); + + trigger.focus(); + await expect(trigger).toHaveFocus(); + + await userEvent.tab(); + + await expect(trigger).not.toHaveFocus(); + }} +/> + + { + const trigger = await canvas.findByRole('button', { name: ATTACHMENT_TOOLTIP_TEXT }); + + trigger.focus(); + await userEvent.keyboard('{Enter}'); + await screen.findByRole('menu'); + + await waitFor(() => { + expect(document.activeElement).toHaveTextContent('Text Files'); + }); + }} +/>