From 5f607af109f9c49c83884599dd26bf25f67305a3 Mon Sep 17 00:00:00 2001 From: saurabhhhcodes <157192462+saurabhhhcodes@users.noreply.github.com> Date: Sun, 24 May 2026 13:55:10 +0530 Subject: [PATCH 1/2] fix: improve tool config accessibility flow --- frontend/src/pages/ToolConfig.tsx | 69 +++++++++++++--- .../unit/pages/ToolConfigDynamic.test.tsx | 81 +++++++++++++++++++ .../unit/pages/ToolConfigRouting.test.tsx | 2 +- 3 files changed, 139 insertions(+), 13 deletions(-) diff --git a/frontend/src/pages/ToolConfig.tsx b/frontend/src/pages/ToolConfig.tsx index 81bf096c..d1866f10 100644 --- a/frontend/src/pages/ToolConfig.tsx +++ b/frontend/src/pages/ToolConfig.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useState } from 'react' +import React, { useEffect, useMemo, useRef, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { motion } from 'framer-motion' import { @@ -62,6 +62,7 @@ export default function ToolConfig() { const [consentGranted, setConsentGranted] = useState(false) const [loading, setLoading] = useState(true) const [submitting, setSubmitting] = useState(false) + const fieldRefs = useRef>({}) useEffect(() => { let cancelled = false @@ -137,6 +138,10 @@ export default function ToolConfig() { const handleStartScan = async () => { if (!plugin || !schema || submitting) return if (hasValidationErrors) { + const firstInvalidField = schema.fields.find((field) => validationErrors[field.id]) + if (firstInvalidField) { + fieldRefs.current[firstInvalidField.id]?.focus() + } addToast('Fix highlighted scan parameters before starting the scan.', 'error') return } @@ -182,6 +187,8 @@ export default function ToolConfig() {