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');
+ });
+ }}
+/>