diff --git a/packages/svelte/src/compiler/compile/utils/a11y.js b/packages/svelte/src/compiler/compile/utils/a11y.js
index 563d5bfb64..74a679b543 100644
--- a/packages/svelte/src/compiler/compile/utils/a11y.js
+++ b/packages/svelte/src/compiler/compile/utils/a11y.js
@@ -14,7 +14,8 @@ const non_interactive_roles = new Set(
// aria-activedescendant, thus in practice we treat it as a widget.
// focusable tabpanel elements are recommended if any panels in a set contain content where the first element in the panel is not focusable.
// 'generic' is meant to have no semantic meaning.
- !['toolbar', 'tabpanel', 'generic'].includes(name) &&
+ // 'cell' is treated as CellRole by the AXObject which is interactive, so we treat 'cell' it as interactive as well.
+ !['toolbar', 'tabpanel', 'generic', 'cell'].includes(name) &&
!role.superClass.some((classes) => classes.includes('widget'))
);
})
diff --git a/packages/svelte/test/validator/samples/a11y-no-interactive-element-to-noninteractive-role/input.svelte b/packages/svelte/test/validator/samples/a11y-no-interactive-element-to-noninteractive-role/input.svelte
index 47dec07d63..6729890c59 100644
--- a/packages/svelte/test/validator/samples/a11y-no-interactive-element-to-noninteractive-role/input.svelte
+++ b/packages/svelte/test/validator/samples/a11y-no-interactive-element-to-noninteractive-role/input.svelte
@@ -21,37 +21,37 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+