Skip to content

[ESLint 1/10] Fix safe-mechanical (sonarjs) + jsx-a11y warnings - #30989

Open
ShaileshParmar11 wants to merge 2 commits into
mainfrom
ShaileshParmar11/eslint-01-mechanical-a11y
Open

[ESLint 1/10] Fix safe-mechanical (sonarjs) + jsx-a11y warnings#30989
ShaileshParmar11 wants to merge 2 commits into
mainfrom
ShaileshParmar11/eslint-01-mechanical-a11y

Conversation

@ShaileshParmar11

@ShaileshParmar11 ShaileshParmar11 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Fixes #30978. Part of epic #30977.

Stacked PR 1 of 10 — base branch main. This is the base of the stack. The diff here contains only the safe-mechanical (sonarjs) + jsx-a11y changes.

⚠️ Stacked, not independent — this PR merges after #the one below it in the stack; GitHub auto-retargets the base to main as each lands. See epic #30977 for the full approach and reviewer caveats.

Behavior-preserving lint cleanup. Verified: target rule(s) → 0, no new warnings (git-stash ESLint before/after), 0 new tsc signatures vs baseline.

🤖 Generated with Claude Code


Reviewer notes — intentional lint suppressions (why disable, not "fix")

Where a rule can be truly fixed, it is: clickable <div>/<span>s become real interactive elements (role + tabIndex + keyboard activation), labels get associated with controls, etc. A small number of jsx-a11y rules are resolved with eslint-disable-next-line … -- <reason> on purpose, because the rule is a false-positive or the accessible "fix" would be fake or worse:

  • jsx-a11y/no-autofocus — used only where an input is autofocused when a modal / dropdown / inline editor opens (e.g. embed-link popup, math-equation editor, search boxes). That is correct, expected focus management; the rule targets disorienting page-load autofocus, not focus-on-open. The ref + useEffect(() => ref.current?.focus()) alternative behaves identically and merely evades the rule — so the documented disable is the clearer expression of intent, not a shortcut.
  • jsx-a11y/media-has-caption (<video> / <audio>) — the media is user-uploaded, so there is no caption track to attach; an empty <track> would be a misleading fake fix. This is the standard accepted exception for user-generated media (the elements still get aria-label={fileName}).
  • jsx-a11y/no-noninteractive-element-interactions (<img onError>)onError is an image-load lifecycle event, not a user interaction; the rule mis-classifies it, and the load-error handling cannot be removed.

Every suppression carries an inline -- <reason> so intent is visible at the call site. Suppression is never used to get past a rule where a genuine accessible fix exists.


🔒 Lint ratchet — rules promoted to error (team-wide CI policy change)

This PR doesn't just clear the jsx-a11y + safe-mechanical sonarjs backlog to zero — it locks it in. eslint.config.mjs promotes those cleared rules from warnerror, so CI now blocks any new violation instead of letting the backlog silently grow back. Without this, a "0 warnings" cleanup regresses within weeks (rules stay warn, CI stays green on new violations).

Rules promoted: all jsx-a11y rules in the backlog block (control-has-associated-label, click-events-have-key-events, no-static-element-interactions, label-has-for, no-autofocus, interactive-supports-focus, mouse-events-have-key-events, media-has-caption, alt-text, anchor-*, no-noninteractive-*, …) + safe-mechanical sonarjs (no-collapsible-if, no-duplicated-branches, no-identical-functions, no-extra-arguments, no-redundant-jump, no-redundant-boolean, prefer-object-literal). exhaustive-deps, no-duplicate-string, and cognitive-complexity stay warn — each is promoted by its own PR later in the stack once cleared.

⚠️ Maintainers: this changes CI behavior for everyone — a new a11y/safe-mechanical violation in any PR will now fail lint (error), not just warn. This is intentional and matches the repo's stated intent (jsx-a11y "runs at error … with a measured zero backlog"). Flagging explicitly for sign-off.

Rebase note: rebased onto latest main (57 commits ahead) and re-swept 49 violations main introduced after the wave (same behavior-preserving fixes). react-flow/drag interactions and cross-scope no-identical-functions are kept as documented eslint-disable … -- <reason> suppressions, matching the wave's policy. Verified: eslint shows 0 errors for the promoted rules across all of src, and the 26 touched files' test suites pass (350 tests).

@ShaileshParmar11
ShaileshParmar11 requested a review from a team as a code owner August 5, 2026 06:24
Copilot AI review requested due to automatic review settings August 5, 2026 06:24
@greptile-apps

greptile-apps Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review (286 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

✅ PR checks passed

The linked issue has a description and all required Shipping project fields set. Thanks!

@github-actions github-actions Bot added safe to test Add this label to run secure Github workflows on PRs UI UI specific issues labels Aug 5, 2026
@ShaileshParmar11 ShaileshParmar11 changed the title [ESLint 2/10] Fix safe-mechanical (sonarjs) + jsx-a11y warnings [ESLint 1/10] Fix safe-mechanical (sonarjs) + jsx-a11y warnings Aug 5, 2026
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

⚠️ UI Checkstyle passed — lint findings in changed files

🔍 ESLint findings in this PR's files — 0 error(s), 598 warning(s)

Errors block the build. Warnings do not yet — they are rules whose backlog is still
being worked down, listed so this PR does not add to it. See docs/ui-code-quality-gate.md.

0 error(s), 598 warning(s) across 135 changed file(s).

Count Rule
236 react-hooks/exhaustive-deps
76 sonarjs/cyclomatic-complexity
64 sonarjs/no-duplicate-string
30 sonarjs/expression-complexity
25 react/no-array-index-key
24 sonarjs/cognitive-complexity
23 sonarjs/no-nested-conditional
21 openmetadata-imports/no-lower-layer-page-imports
20 @typescript-eslint/no-non-null-assertion
19 openmetadata-imports/no-circular-imports
All findings
Location Rule Message
🟡 src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx:89:9 react-hooks/exhaustive-deps The 'onUpdate' function makes the dependencies of useCallback Hook (at line 98) change on every render. Move it inside the useCallback callback. Alternatively,
🟡 src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx:127:6 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'defaultValue' and 'post.message'. Either include them or remove the dependency array.
🟡 src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.test.tsx:110:9 sonarjs/no-clear-text-protocols Using http protocol is insecure. Use https instead.
🟡 src/components/ActivityFeed/TaskFeedCard/TaskFeedCard.component.tsx:62:23 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 12 which is greater than 10 authorized.","cost":2,"secondaryLocations":[{"line":62,"column":22,"endLine":62,"endColumn"
🟡 src/components/ActivityFeed/TaskFeedCard/TaskFeedCard.component.tsx:102:6 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array.
🟡 src/components/ActivityFeed/TaskFeedCard/TaskFeedCard.component.tsx:142:5 react-hooks/exhaustive-deps React Hook useMemo has missing dependencies: 'handleTaskLinkClick', 't', and 'taskColumnName'. Either include them or remove the dependency array.
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:60:9 react-hooks/exhaustive-deps The 'selectedOptions' logical expression could make the dependencies of useCallback Hook (at line 95) change on every render. To fix this, wrap the initializati
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:117:29 react-hooks/exhaustive-deps React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:164:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'destinationNumber' and 't'. Either include them or remove the dependency array.
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:179:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'fieldName' and 'form'. Either include them or remove the dependency array.
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:194:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'fieldName' and 'form'. Either include them or remove the dependency array.
🟡 src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx:199:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'debouncedOnSearch'. Either include it or remove the dependency array.
🟡 src/components/Alerts/DestinationFormItemV2/TeamAndUserSelectItemV2/TeamAndUserSelectItemV2.tsx:44:9 react-hooks/exhaustive-deps The 'selectedOptions' logical expression could make the dependencies of useCallback Hook (at line 75) change on every render. To fix this, wrap the initializati
🟡 src/components/Alerts/DestinationFormItemV2/TeamAndUserSelectItemV2/TeamAndUserSelectItemV2.tsx:44:9 react-hooks/exhaustive-deps The 'selectedOptions' logical expression could make the dependencies of useCallback Hook (at line 85) change on every render. To fix this, wrap the initializati
🟡 src/components/Alerts/DestinationFormItemV2/TeamAndUserSelectItemV2/TeamAndUserSelectItemV2.tsx:176:17 sonarjs/no-nested-conditional Extract this nested ternary operation into an independent statement.
🟡 src/components/BlockEditor/BlockEditor.tsx:42:1 openmetadata-imports/no-internal-barrel-imports Import the internal module directly instead of its index barrel so unrelated siblings do not enter the bundle graph.
🟡 src/components/BlockEditor/BlockEditor.tsx:145:11 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 3 times.
🟡 src/components/BlockEditor/BlockEditor.tsx:243:8 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'isPopoverOpenRef'. Either include it or remove the dependency array.
🟡 src/components/BlockEditor/Extensions/image/EmbedLinkElement/EmbedLinkElement.tsx:44:6 react-hooks/exhaustive-deps React Hook useEffect has a missing dependency: 'form'. Either include it or remove the dependency array.
🟡 src/components/BlockEditor/Extensions/slash-command/renderItems.ts:18:1 openmetadata-imports/no-circular-imports This runtime import participates in a circular dependency. Extract the shared type/constant/utility or invert the dependency.
🟡 src/components/Certification/Certification.component.tsx:118:9 react-hooks/exhaustive-deps The 'handleScroll' function makes the dependencies of useMemo Hook (at line 215) change on every render. Move it inside the useMemo callback. Alternatively, wra
🟡 src/components/Certification/Certification.component.tsx:185:21 sonarjs/no-nested-conditional Extract this nested ternary operation into an independent statement.
🟡 src/components/Certification/Certification.component.tsx:251:6 react-hooks/exhaustive-deps React Hook useEffect has missing dependencies: 'currentCertificate' and 'getCertificationData'. Either include them or remove the dependency array. If 'setSelec
🟡 src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.test.tsx:172:51 sonarjs/no-nested-functions Refactor this code to not nest functions more than 4 levels deep.
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:30:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:34:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:127:6 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 'currentPageType'. Either include it or remove the dependency array.
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:248:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'activeKey', 'currentPage', 'items', and 'updateCurrentPage'. Either include them or remove the dependency arra
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:313:5 react-hooks/exhaustive-deps React Hook useMemo has a missing dependency: 'getWidgetFromLayout'. Either include it or remove the dependency array.
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:344:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'activeKey', 'currentPage', 'items', and 'updateCurrentPage'. Either include them or remove the dependency arra
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:369:5 react-hooks/exhaustive-deps React Hook useCallback has missing dependencies: 'activeKey', 'currentPage', 'currentPageType', 'items', and 'updateCurrentPage'. Either include them or remove
🟡 src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx:408:18 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 3 times.
🟡 src/components/DataAssets/DataAssetAsyncSelectList/DataAssetAsyncSelectList.tsx:237:6 react-hooks/exhaustive-deps React Hook useCallback has a missing dependency: 'loadOptions'. Either include it or remove the dependency array.
🟡 src/components/DataAssets/DataAssetAsyncSelectList/DataAssetAsyncSelectList.tsx:246:6 react-hooks/exhaustive-deps React Hook useMemo has an unnecessary dependency: 'mode'. Either exclude it or remove the dependency array.
🟡 src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx:43:18 sonarjs/cognitive-complexity Refactor this function to reduce its Cognitive Complexity from 19 to the 15 allowed.
🟡 src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx:43:18 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 14 which is greater than 10 authorized.","cost":4,"secondaryLocations":[{"line":43,"column":17,"endLine":43,"endColumn"
🟡 src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx:95:4 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 15 which is greater than 10 authorized.","cost":5,"secondaryLocations":[{"line":95,"column":3,"endLine":95,"endColumn":
🟡 src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx:233:56 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 3 times.
🟡 src/components/DataContract/ContractDetailFormTab/ContractDetailFormTab.test.tsx:21:24 @typescript-eslint/no-explicit-any Unexpected any. Specify a different type.
🟡 src/components/DataContract/ODCSImportModal/ODCSImportModal.test.tsx:130:44 sonarjs/no-nested-functions Refactor this code to not nest functions more than 4 levels deep.
🟡 src/components/DataContract/ODCSImportModal/ODCSImportModal.test.tsx:231:40 sonarjs/no-nested-functions Refactor this code to not nest functions more than 4 levels deep.
🟡 src/components/DataInsight/DataInsightSummary.tsx:31:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.
🟡 src/components/DataInsight/DataInsightSummary.tsx:70:5 react-hooks/exhaustive-deps React Hook useMemo has an unnecessary dependency: 'chartFilter'. Either exclude it or remove the dependency array.
🟡 src/components/DataInsight/DataInsightSummary.tsx:75:5 react-hooks/exhaustive-deps React Hook useMemo has an unnecessary dependency: 'chartFilter'. Either exclude it or remove the dependency array.
🟡 src/components/DataInsight/DataInsightSummary.tsx:146:16 openmetadata-imports/no-api-calls-in-iteration Avoid issuing one API request per item. Fetch at the data owner, use a bulk endpoint, or use useQueries with an intentional concurrency policy.
🟡 src/components/DataInsight/DataInsightSummary.tsx:177:6 react-hooks/exhaustive-deps React Hook useEffect has missing dependencies: 'fetchEntitiesChartData', 'fetchMostActiveUser', and 'fetchWebChartData'. Either include them or remove the depen
🟡 src/components/DataQuality/AddDataQualityTest/components/ParameterForm.tsx:79:5 sonarjs/cyclomatic-complexity {"message":"Function has a complexity of 20 which is greater than 10 authorized.","cost":10,"secondaryLocations":[{"line":79,"column":4,"endLine":79,"endColumn"
🟡 src/components/DataQuality/AddDataQualityTest/components/ParameterForm.tsx:109:27 sonarjs/no-duplicate-string Define a constant instead of duplicating this literal 4 times.
🟡 src/components/DataQuality/AddDataQualityTest/components/ParameterForm.tsx:292:37 sonarjs/no-nested-functions Refactor this code to not nest functions more than 4 levels deep.
🟡 src/components/DataQuality/AddDataQualityTest/components/ParameterForm.tsx:337:25 react/no-unstable-nested-components Do not define components during render. React will see a new component type on every render and destroy the entire subtree’s DOM nodes and state (https://reactj

… and 548 more. Run make ui-checkstyle-changed locally for the full list.


Fix locally (fast - only checks files changed in this branch):

make ui-checkstyle-changed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is part of the frontend ESLint-zero epic and applies behavior-preserving lint cleanups for sonarjs safe-mechanical rules (collapsing nested conditionals / removing redundant returns) and jsx-a11y warnings (adding aria-labels, roles, and keyboard handlers), with associated test/mock updates.

Changes:

  • Consolidated/flattened conditional logic to satisfy sonarjs “safe mechanical” warnings.
  • Addressed jsx-a11y warnings across UI + tests (aria-labels, roles, tabIndex, keyboard activation patterns).
  • Updated various test mocks to provide accessible attributes and avoid invalid anchor patterns.

Reviewed changes

Copilot reviewed 265 out of 265 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
openmetadata-ui/src/main/resources/ui/src/utils/WorkflowNodeConfigUtils.ts Collapses redundant subtype conditionals (sonarjs).
openmetadata-ui/src/main/resources/ui/src/utils/TeamUtils.ts Makes “no return value” explicit with undefined.
openmetadata-ui/src/main/resources/ui/src/utils/TaskEntityFetchUtils.ts Combines identical breadcrumb branches.
openmetadata-ui/src/main/resources/ui/src/utils/Suggestion/SuggestionUtils.tsx Removes redundant return; at end of function.
openmetadata-ui/src/main/resources/ui/src/utils/ServiceInsightsWidgets.tsx Adds aria-label on “learn more” link and imports t.
openmetadata-ui/src/main/resources/ui/src/utils/IngestionWorkflowUtils.ts Removes nested if by moving emptiness checks into guard.
openmetadata-ui/src/main/resources/ui/src/utils/IngestionUtils.tsx Adds aria-labels to documentation links.
openmetadata-ui/src/main/resources/ui/src/utils/GlossaryPureUtils.ts Collapses nested conditional (sonarjs).
openmetadata-ui/src/main/resources/ui/src/utils/ExploreUtils.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/utils/EntityUtilClassBase.ts Merges DASHBOARD_DATA_MODEL FQN parsing case with similar types.
openmetadata-ui/src/main/resources/ui/src/utils/EntityLineageNodeUtils.ts Collapses nested checks for upstream/downstream traversal.
openmetadata-ui/src/main/resources/ui/src/utils/DataQuality/FormFieldDocs.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/utils/DataInsightPureUtils.ts Removes redundant return; in map callback.
openmetadata-ui/src/main/resources/ui/src/utils/DataContract/DataContractUtils.ts Removes duplicate DATA_PRODUCT case (same as default).
openmetadata-ui/src/main/resources/ui/src/utils/DataAssetsHeaderTypeUtils.ts Collapses nested conditionals for children counting.
openmetadata-ui/src/main/resources/ui/src/utils/DataAssetsHeader.utils.tsx Collapses nested conditionals for children counting.
openmetadata-ui/src/main/resources/ui/src/utils/DataAssetsHeader.utils.test.tsx Replaces constant-false branch with named variable.
openmetadata-ui/src/main/resources/ui/src/utils/CuratedAssetsPureUtils.ts Collapses nested must_not validation (sonarjs).
openmetadata-ui/src/main/resources/ui/src/utils/APIUtils.test.js Replaces stepwise object mutation with object literal.
openmetadata-ui/src/main/resources/ui/src/services/WorkflowValidationService.ts Removes redundant OnDemand schedule branch (same outcome).
openmetadata-ui/src/main/resources/ui/src/pages/TaskFormSettingsPage/TaskFormSettingsPage.test.tsx Adds aria-label to mocked textarea for a11y.
openmetadata-ui/src/main/resources/ui/src/pages/TagsPage/TagsPage.test.tsx Adds aria-label to mocked inputs.
openmetadata-ui/src/main/resources/ui/src/pages/TagsPage/TagsForm.test.tsx Fixes label/input association in mock.
openmetadata-ui/src/main/resources/ui/src/pages/TagsPage/TagFormDrawer.test.tsx Adds aria-label to close button mock.
openmetadata-ui/src/main/resources/ui/src/pages/TagsPage/ClassificationFormDrawer.test.tsx Adds aria-label to close button mock.
openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx Collapses nested conditionals in tab change handler.
openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableConstraints/ForeignKeyConstraint.tsx Adds empty alt for decorative image.
openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableConstraints/ConstraintIcon.tsx Adds empty alt for decorative image.
openmetadata-ui/src/main/resources/ui/src/pages/StoredProcedure/StoredProcedureTab.test.tsx Adds role for clickable text and fixes Link mock href.
openmetadata-ui/src/main/resources/ui/src/pages/SignUp/SignUpPage.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/pages/SignUp/BasicSignup.component.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/pages/SignUp/account-activation-confirmation.component.tsx Adds keyboard support/role for clickable container.
openmetadata-ui/src/main/resources/ui/src/pages/ServiceVersionPage/ServiceVersionPage.test.tsx Adds roles for clickable divs in mocks.
openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexFieldsTable/SearchIndexFieldsTable.tsx Collapses nested conditional for row click handler.
openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexFieldsTable/SearchIndexFieldsTable.test.tsx Replaces clickable div with button in mock.
openmetadata-ui/src/main/resources/ui/src/pages/RolesPage/RolesDetailPage/RolesDetailPage.test.tsx Makes Link mock content non-empty.
openmetadata-ui/src/main/resources/ui/src/pages/Persona/PersonaDetailsPage/PersonaDetailsPage.test.tsx Adds role/tabIndex + key handler to clickable div in mock.
openmetadata-ui/src/main/resources/ui/src/pages/MyDataPage/MyDataPage.test.tsx Adds role for clickable div in mock.
openmetadata-ui/src/main/resources/ui/src/pages/MetricsPage/MetricListPage/MetricListPage.test.tsx Adds aria-label to input mock.
openmetadata-ui/src/main/resources/ui/src/pages/LoginPage/SignInPage.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/pages/CustomizablePage/CustomizablePage.test.tsx Adds role for clickable div in mock.
openmetadata-ui/src/main/resources/ui/src/pages/CreateUserPage/CreateUserPage.test.tsx Replaces clickable div with button in mock.
openmetadata-ui/src/main/resources/ui/src/pages/ContextCenterPage/ContextCenterMemoriesPage/ContextCenterMemoriesPage.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/pages/AuditLogsPage/AuditLogsPage.test.tsx Adds aria-label/role to mocked inputs/click targets.
openmetadata-ui/src/main/resources/ui/src/hooks/usePaginatedLiveLog.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/hooks/useGridEditController.ts Removes redundant returns.
openmetadata-ui/src/main/resources/ui/src/hooks/useFqnDeepLink.ts Collapses nested conditional (sonarjs).
openmetadata-ui/src/main/resources/ui/src/hooks/useEntityLogs.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/hooks/useAuthenticatedImage.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/hooks/useAuthenticatedFile.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/Workflows/Nodes/GatewayNode/GatewayNode.tsx Adds keyboard support/role for clickable node container.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/StraightEdge.tsx Adds role to label wrapper.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/NodeConfigSidebar.tsx Removes redundant return.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/forms/SinkTaskForm.test.tsx Improves mocked label/input naming for a11y.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/forms/SchemaBasedNodeForm.test.tsx Adds aria-labels to mocked inputs/textarea/toggle.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/forms/MetadataFormSection.test.tsx Fixes mock label/input associations.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/forms/ConditionBuilder/ConditionBuilder.test.tsx Adds aria-labels to mocked inputs.
openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/WorkflowBuilder/common/FormField.test.tsx Adds aria-labels to test inputs/selects.
openmetadata-ui/src/main/resources/ui/src/components/TestLibrary/TestDefinitionList/useTestDefinitionRowPermissions.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/TestLibrary/TestDefinitionList/useTestDefinitionListPage.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/TestLibrary/TestDefinitionForm/TestDefinitionFormBody.tsx Adds roles/aria-label to interactive containers/textarea.
openmetadata-ui/src/main/resources/ui/src/components/Tag/TagsV1/TagsV1.test.tsx Adds href to Link mock anchor.
openmetadata-ui/src/main/resources/ui/src/components/Tag/TagsContainerV2/TagsContainerV2.tsx Adds keyboard support/roles and stop-propagation wrapper role.
openmetadata-ui/src/main/resources/ui/src/components/Tag/TagsContainerV2/TagsContainerV2.test.tsx Adds role to clickable parent wrapper.
openmetadata-ui/src/main/resources/ui/src/components/SettingsSso/SSOGroupedFieldTemplate/SSOGroupedFieldTemplate.tsx Collapses identical LDAP/SAML branches.
openmetadata-ui/src/main/resources/ui/src/components/SettingsSso/ProviderSelector/ProviderSelector.tsx Adds keyboard support/role to clickable provider cards.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Users/UsersProfile/UserProfileTeams/UserProfileTeams.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Users/UserProfileIcon/UserProfileIcon.component.tsx Adds roles/aria-related lint suppressions for image fallback.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Users/CreateUser/CreateUser.component.tsx Adds keyboard support/role to password generator click target.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamsSelectable/TeamsSelectable.test.tsx Adds role to clickable TreeSelect mock wrapper.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamsHeaderSection/TeamsHeadingLabel.component.tsx Adds role to stop-propagation wrapper.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.test.tsx Fixes Link mock to use to as href.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamDetailsV1.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Services.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionWorkflowForm/ProfileSampleConfigField.tsx Adds aria-label and justified label-has-for disable.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/Ingestion/IngestionWorkflowForm/ProfileSampleConfigField.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/AddService/ServiceNameCard/ServiceNameCard.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Settings/Services/AddService/ServiceNameCard/ServiceNameCard.test.tsx Adds aria-labels to mocked fields.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Email/TestEmail/TestEmail.component.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/AddCustomProperty/AddCustomProperty.test.tsx Fixes label/input association in mock.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Bot/BotListV1/BotListV1.component.tsx Adds justified label-has-for disables for switch labels.
openmetadata-ui/src/main/resources/ui/src/components/Settings/Applications/AppInstallVerifyCard/AppInstallVerifyCard.component.tsx Adds aria-label to link.
openmetadata-ui/src/main/resources/ui/src/components/ServiceAgents/components/AgentOverflowMenu.test.tsx Adds aria-label to dropdown open button mock.
openmetadata-ui/src/main/resources/ui/src/components/ServiceAgents/components/AgentCard.component.tsx Adds aria-label to run status dot buttons.
openmetadata-ui/src/main/resources/ui/src/components/SearchSettings/TermBoost/TermBoost.test.tsx Adds aria-label to input in mock.
openmetadata-ui/src/main/resources/ui/src/components/SearchDropdown/SearchDropdown.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/Execution.component.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/OntologyExplorer/hooks/useGraphData.ts Collapses nested map updates (sonarjs).
openmetadata-ui/src/main/resources/ui/src/components/NotificationBox/NotificationFeedCard.test.tsx Adds keyboard support/role to Link mock element.
openmetadata-ui/src/main/resources/ui/src/components/NavBar/NavBar.test.tsx Adds role to clickable div mock.
openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.test.tsx Adds keyboard support/role to clickable title in mock.
openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/TotalDataAssetsWidget/TotalDataAssetsWidget.component.tsx Adds keyboard support + aria-label to date selector items.
openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/DataAssetsWidget/DataAssetCard/DataAssetCard.test.tsx Adds keyboard support/role to Link mock anchor.
openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/CuratedAssetsWidget/CuratedAssetsModal/CuratedAssetsModal.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/AnnouncementsWidgetV1/AnnouncementsWidgetV1.test.tsx Adds role to clickable div mock.
openmetadata-ui/src/main/resources/ui/src/components/MyData/CustomizableComponents/CustomiseLandingPageHeader/RecentlyViewedCarousel.tsx Adds aria-label + keyboard activation for items.
openmetadata-ui/src/main/resources/ui/src/components/MyData/CustomizableComponents/CustomiseLandingPageHeader/LandingPageDomainSelector.tsx Adds keyboard activation to toggle wrapper.
openmetadata-ui/src/main/resources/ui/src/components/MyData/CustomizableComponents/CustomiseHomeModal/CustomiseHomeModal.tsx Adds keyboard activation for sidebar items.
openmetadata-ui/src/main/resources/ui/src/components/MyData/CustomizableComponents/AllWidgetsContent/AllWidgetsContent.test.tsx Adds role to clickable widget card mock.
openmetadata-ui/src/main/resources/ui/src/components/MyData/CustomizableComponents/AddWidgetModal/AddWidgetModal.test.tsx Extracts handler and adds keyboard activation for mock.
openmetadata-ui/src/main/resources/ui/src/components/Modals/IconColorModal/IconColorModal.test.tsx Replaces label with span + adds aria-label to input.
openmetadata-ui/src/main/resources/ui/src/components/MlModel/MlModelDetail/SourceList.component.tsx Adds keyboard activation + aria-label for expand/collapse.
openmetadata-ui/src/main/resources/ui/src/components/Lineage/Lineage.test.tsx Adds role to clickable reactflow mock container.
openmetadata-ui/src/main/resources/ui/src/components/Lineage/Edges/CanvasLayerWrapper/CanvasLayerWrapper.test.tsx Adds keyboard activation + aria-label to clickable mock.
openmetadata-ui/src/main/resources/ui/src/components/Learning/ResourcePlayer/VideoPlayer.component.tsx Adds justified eslint-disable for iframe interaction lint.
openmetadata-ui/src/main/resources/ui/src/components/Learning/ResourcePlayer/StorylaneTour.component.tsx Adds justified eslint-disable for iframe interaction lint.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeGraph3D/KnowledgeGraph3DEdgePanel.tsx Adds aria-label to endpoint row button.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeGraph3D/KnowledgeGraph3D.test.tsx Fixes label/input association in mock.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeCenter/TitleComponent/TitleComponent.tsx Adds aria-label to title textarea.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeCenter/QuickLinkFormModal/QuickLinkFormModal.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/KnowledgeCenter/KnowledgePageDetailComponent/KnowledgePageDetailComponent.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/useIncidentFilterOptions.test.ts Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.test.tsx Adds keyboard activation in dropdown trigger mock.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/ImportOntologyModal/ImportOntologyModal.test.tsx Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryV1.test.tsx Fixes Link mock to include href.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryUpdateConfirmationModal/GlossaryUpdateConfirmationModal.tsx Removes redundant “UPDATING” branch return.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.test.tsx Adds keyboard activation to clickable mock elements.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTerms/tabs/WorkFlowTab/WorkflowHistory.component.tsx Deduplicates label computation + adds aria-label.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryHeader/GlossaryHeader.component.tsx Adds empty alt for decorative image.
openmetadata-ui/src/main/resources/ui/src/components/Glossary/AddGlossaryTermForm/AddGlossaryTermForm.test.tsx Adds aria-labels to mocked inputs/editors; fixes unused params.
openmetadata-ui/src/main/resources/ui/src/components/ExploreV1/ExploreV1.test.tsx Adds tabIndex + onKeyDown to menuitem mock.
openmetadata-ui/src/main/resources/ui/src/components/ExploreV1/ExploreSearchCard/ExploreSearchCard.tsx Removes redundant return; at end of helper.
openmetadata-ui/src/main/resources/ui/src/components/Explore/SortingDropDown.test.tsx Adds tabIndex + Enter/Space handling to menuitem mock.
openmetadata-ui/src/main/resources/ui/src/components/Explore/QuickFilterDropdown.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Explore/QuickFilterDropdown.test.tsx Fixes label/input association + adds aria-labels.
openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/LineageTab/LineageTabContent.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/DataQualityTab/DataQualityTab.test.tsx Adds keyboard activation and aria-label to mocks.
openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CustomPropertiesSection/CustomPropertiesSection.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CustomPropertiesSection/CustomPropertiesSection.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx Adds role to menu item label wrapper.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/VersionButton.tsx Adds keyboard activation + aria-label to version entries.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/BulkImportVersionSummary/BulkImportVersionSummary.test.tsx Adds aria-label to close button mock.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityRightPanel/EntityRightPanelVerticalNav.test.tsx Adds keyboard activation to menuitem mocks.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityLineage/NodeSuggestions.component.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityLineage/CanvasEdgeRenderer.component.tsx Adds i18n for aria-label, hides canvas from a11y tree, labels edge buttons.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityLineage/CanvasButtonPopover.component.tsx Adds aria-label to popover button.
openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityLineage/AppPipelineModel/AddPipeLineModal.tsx Removes redundant return + adds keyboard activation to list entries.
openmetadata-ui/src/main/resources/ui/src/components/DriveService/Worksheet/WorksheetColumnsTable/WorksheetColumnsTable.test.tsx Adds keyboard activation/aria-labels to mocks.
openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDomainForm/AddDomainFormExtensionFields.test.tsx Fixes label/input association and aria-label in mock.
openmetadata-ui/src/main/resources/ui/src/components/Domain/AddDomainForm/AddDomainForm.test.tsx Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestSuite/TestSuiteList/TestSuites.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestSuite/TestSuiteList/TestSuiteListPanel.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCases/useTestCaseFilterOptions.test.tsx Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCases/TestCases.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCases/TestCaseListTableHeader.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/InlineTestCaseIncidentStatus.test.tsx Adds keyboard activation and role fixes in mocks.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseResultTab/useTestCaseResultTab.tsx Replaces misused <label> with <span> for display-only content.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/Severity/InlineSeverity.test.tsx Adds keyboard activation + role fixes in mocks.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.test.tsx Adds aria-labels + keyboard activation in mocks.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/FailedTestCaseSampleData/FailedTestCaseSampleData.test.tsx Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/FailedTestCaseSampleData/FailedTestCaseSampleData.component.tsx Removes redundant returns.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/ChartWidgets/TestCaseStatusPieChartWidget/TestCaseStatusPieChartWidget.test.tsx Adds aria-labels to mocked segments.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/ChartWidgets/EntityHealthStatusPieChartWidget/EntityHealthStatusPieChartWidget.test.tsx Adds aria-labels to mocked segments.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/ChartWidgets/DataAssetsCoveragePieChartWidget/DataAssetsCoveragePieChartWidget.test.tsx Adds aria-labels to mocked segments.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddToBundleSuiteModal/AddToBundleSuiteModal.test.tsx Adds aria-labels + keyboard activation to mocks.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddTestCaseList/AddTestCaseList.component.test.tsx Adds aria-label to mocked search bar input.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddDataQualityTest/components/TestCaseSchedulerSection.tsx Adds role to clickable section wrapper.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddDataQualityTest/components/TestCaseFormDrawer.test.tsx Adds aria-labels to mocked inputs.
openmetadata-ui/src/main/resources/ui/src/components/DataQuality/AddDataQualityTest/components/TableDiffFields.tsx Merges identical cases for column array field rendering.
openmetadata-ui/src/main/resources/ui/src/components/DataProducts/ODPSImportModal/ODPSImportModal.component.tsx Adds aria-label to hidden file input.
openmetadata-ui/src/main/resources/ui/src/components/DataProducts/DataProductsSelectList/DataProductsSelectList.tsx Collapses nested paging fetch logic; adds autofocus disable comment.
openmetadata-ui/src/main/resources/ui/src/components/DataInsight/EmptyGraphPlaceholder.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/DataInsight/DataInsightSummary.tsx Makes “no return value” explicit with undefined.
openmetadata-ui/src/main/resources/ui/src/components/DataContract/ODCSImportModal/ODCSImportModal.test.tsx Adds role/aria-label fixes to mocked uploader/radio.
openmetadata-ui/src/main/resources/ui/src/components/DataContract/ContractDetailFormTab/ContractDetailFormTab.test.tsx Fixes label/input association and aria-labels in mock.
openmetadata-ui/src/main/resources/ui/src/components/Database/TableVersion/TableVersion.test.tsx Fixes unused param naming for rerender stub.
openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/TableQueries.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/TableQueries.test.tsx Adds keyboard activation to menuitem mock.
openmetadata-ui/src/main/resources/ui/src/components/Database/SchemaEditor/SchemaEditor.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/Database/SampleDataWithMessages/SampleDataWithMessages.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/TableProfiler/TableProfilerChart/TableProfilerChart.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/TableProfiler/SingleColumnProfile.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/TableProfiler/QualityTab/QualityTab.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/TableProfiler/ProfilerSettingsModal/ProfilerSettingsModal.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/ProfilerSettings/ProfilerObjectFieldTemplate.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx Collapses nested conditionals around API sorting toggle.
openmetadata-ui/src/main/resources/ui/src/components/Database/ColumnDetailPanel/ColumnDetailPanel.test.tsx Test helper param rename to avoid unused warnings.
openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DataAssetAsyncSelectList/DataAssetAsyncSelectList.tsx Collapses nested paging fetch logic; adds autofocus disable comment.
openmetadata-ui/src/main/resources/ui/src/components/DataAssets/AssetsSelectionModal/AssetSelectionDrawer.test.tsx Adds aria-label to close button mock.
openmetadata-ui/src/main/resources/ui/src/components/DataAssets/AssetsSelectionModal/AssetSelectionContentBody.test.tsx Adds role and aria-label to mocked controls.
openmetadata-ui/src/main/resources/ui/src/components/Customization/CustomizeTabWidget/CustomizeTabWidget.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/MemoriesView/MemoriesView.test.tsx Adds aria-labels to mocked buttons.
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/DocumentsView/DocumentsView.test.tsx Adds tabIndex to mocked menuitem.
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateFolderModal/CreateFolderModal.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateFolderModal/CreateFolderModal.component.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/ContextCenterHeader/ContextCenterHeader.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/common/TestConnection/TestConnection.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/common/TagSuggestion/TagSuggestion.test.tsx Adds aria-label; replaces label with span in mock.
openmetadata-ui/src/main/resources/ui/src/components/common/TagButton/TagButton.component.tsx Adds role/tabIndex + keyboard activation and aria-label.
openmetadata-ui/src/main/resources/ui/src/components/common/TableDataCardV2/TableDataCardV2.tsx Adds role attribute to clickable card container.
openmetadata-ui/src/main/resources/ui/src/components/common/Table/Table.test.tsx Fixes checkbox label association and aria-label in mock.
openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/SearchBar.component.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/TaskDescriptionPreviewer.tsx Removes explicit autoFocus prop (sonarjs).
openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewNew.tsx Adds eslint-disable for explicit autoFocus={false}.
openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewerV1.tsx Adds eslint-disable for explicit autoFocus={false}.
openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditor.test.tsx Adds aria-label to mocked editor textarea.
openmetadata-ui/src/main/resources/ui/src/components/common/OwnerLabel/OwnerLabel.component.tsx Collapses nested view checks (sonarjs).
openmetadata-ui/src/main/resources/ui/src/components/common/LogViewerModal/LogViewerModal.component.tsx Adds aria-label to log search input.
openmetadata-ui/src/main/resources/ui/src/components/common/LineageSection/LineageSection.test.tsx Fixes unused param naming in resolver stub.
openmetadata-ui/src/main/resources/ui/src/components/common/KeyDownStopPropagationWrapper/KeyDownStopPropagationWrapper.tsx Adds role for keydown wrapper to satisfy a11y lint.
openmetadata-ui/src/main/resources/ui/src/components/common/GlossaryTermTreeSelect/GlossaryTermTreeSelect.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilderV1/widgets/CoreTextAreaWidget.tsx Adds justified eslint-disable for schema-driven autofocus.
openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilderV1/widgets/CorePasswordWidget.tsx Adds justified eslint-disable for schema-driven autofocus.
openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilderV1/widgets/CoreInputWidget.tsx Adds justified eslint-disable for schema-driven autofocus.
openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilderV1/fields/CoreOneOfField.test.tsx Replaces label with span in mock.
openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilderV1/fields/CoreArrayField.test.tsx Adds aria-label to mocked input.
openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/SelectWidget.tsx Adds justified eslint-disable for schema-driven autofocus.
openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/PasswordWidget.tsx Adds justified eslint-disable for schema-driven autofocus.
openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JSONSchemaTemplate/ObjectFieldTemplate.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JSONSchemaTemplate/ArrayFieldTemplate.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/common/FocusTrap/FocusTrapWithContainer.tsx Removes redundant return; adds justified static interaction disable.
openmetadata-ui/src/main/resources/ui/src/components/common/FilterPattern/FilterPattern.tsx Replaces misused <label> with <span>.
openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/FilterErrorPlaceHolder.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/ErrorPlaceHolderES.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/common/ErrorWithPlaceholder/CreateErrorPlaceHolder.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/common/EntityImport/ExpressionCodeCell/ExpressionCodeCell.test.tsx Adds aria-label to mocked schema editor.
openmetadata-ui/src/main/resources/ui/src/components/common/EntityImport/ExpressionCodeCell/ExpressionCodeCell.component.tsx Adds role to editor panel wrapper.
openmetadata-ui/src/main/resources/ui/src/components/common/EntityDetailsSection/EntityDetailsSection.test.tsx Adds aria-label to mocked search input.
openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/Description.test.tsx Adds aria-labels to modal buttons in mock.
openmetadata-ui/src/main/resources/ui/src/components/common/EmptyPlaceholder/CreatePlaceholder.tsx Adds aria-label to documentation link.
openmetadata-ui/src/main/resources/ui/src/components/common/DomainSelectableTree/DomainSelectableTreeNew.tsx Adds role to stop-propagation and click-focus wrappers.
openmetadata-ui/src/main/resources/ui/src/components/common/DomainSelectableTree/DomainSelectableTree.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/common/DisplayName/DisplayName.test.tsx Adds justified disable for anchor-is-valid in test mock.
openmetadata-ui/src/main/resources/ui/src/components/common/DataQualitySection/DataQualitySection.test.tsx Adds role to clickable div mock.
openmetadata-ui/src/main/resources/ui/src/components/common/Chip/Chip.test.tsx Fixes Link mock to include href.
openmetadata-ui/src/main/resources/ui/src/components/common/BrandImage/BrandImage.tsx Adds justified disable for image lifecycle interaction lint.
openmetadata-ui/src/main/resources/ui/src/components/common/atoms/navigation/usePageHeader.test.tsx Adds aria-label to search input mock.
openmetadata-ui/src/main/resources/ui/src/components/common/AsyncSelectList/TreeAsyncSelectList.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/common/AsyncSelectList/AsyncSelectList.tsx Collapses nested paging fetch logic (sonarjs).
openmetadata-ui/src/main/resources/ui/src/components/common/AnnouncementsWidget/AnnouncementsWidgetV3Body.test.tsx Adds role to clickable item mock.
openmetadata-ui/src/main/resources/ui/src/components/common/AnnouncementsWidget/AnnouncementItemV3.test.tsx Adds justified disable for static interactions in mock.
openmetadata-ui/src/main/resources/ui/src/components/Certification/Certification.component.tsx Adds role attribute to clickable certification card items.
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/LinkModal/LinkModal.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/slash-command/renderItems.ts Collapses nested enter-key condition (sonarjs).
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/MathEquation/MathEquationComponent.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/image/EmbedLinkElement/EmbedLinkElement.tsx Adds justified eslint-disable for autofocus (a11y).
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/focus.ts Removes redundant returns.
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/File/FileNodeView.tsx Adds aria-labels + disables media caption rule for uploads.
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/File/AttachmentComponents/ImageAttachment.tsx Adds justified disable for image lifecycle interaction lint.
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/Extensions/File/AttachmentComponents/FileAttachment.tsx Adds role to click-prevent wrapper; fixes href fallback.
openmetadata-ui/src/main/resources/ui/src/components/BlockEditor/BlockEditor.tsx Adds role to wrapper (a11y lint).
openmetadata-ui/src/main/resources/ui/src/components/Alerts/DestinationFormItemV2/TeamAndUserSelectItemV2/TeamAndUserSelectItemV2.tsx Adds keyboard activation + justified autofocus disable.
openmetadata-ui/src/main/resources/ui/src/components/Alerts/DestinationFormItemV2/TeamAndUserSelectItemV2/TeamAndUserSelectItemV2.test.tsx Adds aria-labels; adds justified autofocus disable in mock.
openmetadata-ui/src/main/resources/ui/src/components/Alerts/DestinationFormItemV2/DestinationFormItemV2.test.tsx Adds aria-label to mocked inputs.
openmetadata-ui/src/main/resources/ui/src/components/Alerts/DestinationFormItem/TeamAndUserSelectItem/TeamAndUserSelectItem.tsx Adds justified autofocus disable.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/TaskFeedCard/TaskFeedCard.component.tsx Adds keyboard activation for thread-count click target.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/FeedEditor/FeedEditor.test.tsx Adds role/tabIndex to mock editor container.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedEditor/ActivityFeedEditorNew.tsx Collapses nested save handler checks; adds role to wrapper.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedEditor/ActivityFeedEditor.tsx Collapses nested save handler checks; adds role to wrapper.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedEditor/ActivityFeedEditor.test.tsx Adds role to mocked feed editor wrapper.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.test.tsx Adds aria-label to editor input mock.
openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedCardNew/CommentCard.component.tsx Adds role to hover wrapper (a11y lint).
Suppressed comments (1)

openmetadata-ui/src/main/resources/ui/src/components/Certification/Certification.component.tsx:176

  • This card is clickable (selects a certification) but is marked role="presentation" and is not keyboard-focusable. That makes the selection action inaccessible to keyboard/screen-reader users. Use role="button" (or a ) with tabIndex and an Enter/Space handler, and consider an aria-label.
              <div
                className="certification-card-item cursor-pointer"
                key={id}
                role="presentation"
                style={{ cursor: 'pointer' }}
                onClick={() => {
                  setSelectedCertification(fullyQualifiedName ?? '');
                }}>

Copilot AI review requested due to automatic review settings August 5, 2026 07:33
@ShaileshParmar11
ShaileshParmar11 force-pushed the ShaileshParmar11/eslint-01-mechanical-a11y branch from f7d691a to bcbe9ff Compare August 5, 2026 07:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 265 out of 265 changed files in this pull request and generated no new comments.

Suppressed comments (6)

openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/SearchBar.component.tsx:91

  • label is still rendered visually, but switching from to removes the accessible association with the search . This leaves the input without a programmatic label (placeholder is not a label). Consider adding an aria-label (or restoring a proper + input id) so screen readers can announce the field name.
    openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/Workflows/Nodes/GatewayNode/GatewayNode.tsx:47
  • For role="button" elements, Space should typically call preventDefault() to avoid page scroll while activating the control. Right now Space triggers handleNodeClick() but can also scroll the container.
    openmetadata-ui/src/main/resources/ui/src/pages/SignUp/account-activation-confirmation.component.tsx:75
  • This div is acting as a button. When activating via Space, it should call preventDefault() to avoid scrolling while triggering navigation.
    openmetadata-ui/src/main/resources/ui/src/components/SettingsSso/ProviderSelector/ProviderSelector.tsx:71
  • For this clickable card (role="button"), Space activation should typically call e.preventDefault() to avoid scrolling the page while selecting the provider.
    openmetadata-ui/src/main/resources/ui/src/components/common/TagButton/TagButton.component.tsx:56
  • Space-key activation should call preventDefault() for this role="button" wrapper to avoid triggering scroll while invoking onClick.
    openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/VersionButton.tsx:60
  • Space-key activation for this role="button" timeline entry should call preventDefault() to avoid scrolling while selecting the version.

Copilot AI review requested due to automatic review settings August 5, 2026 07:53
@ShaileshParmar11
ShaileshParmar11 force-pushed the ShaileshParmar11/eslint-01-mechanical-a11y branch from bcbe9ff to 35f730f Compare August 5, 2026 07:53
@ShaileshParmar11
ShaileshParmar11 force-pushed the ShaileshParmar11/eslint-01-mechanical-a11y branch from 35f730f to 2d8d777 Compare August 5, 2026 07:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 265 out of 265 changed files in this pull request and generated no new comments.

Suppressed comments (6)

openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityLineage/CanvasButtonPopover.component.tsx:59

  • aria-label can be undefined here when pipelineData is missing, which leaves this <button> without an accessible name (and it has no text content). Provide a deterministic string fallback (e.g. edgeId) so the popover trigger is always labeled.
    openmetadata-ui/src/main/resources/ui/src/components/common/TagButton/TagButton.component.tsx:56
  • This element is always focusable/announced as a button even when onClick is not provided, creating a keyboard-focusable control that does nothing. Also, Space should call preventDefault() to avoid page scroll when activating a div-with-role=button.
    openmetadata-ui/src/main/resources/ui/src/components/WorkflowDefinitions/Workflows/Nodes/GatewayNode/GatewayNode.tsx:47
  • For non-native buttons (div role="button"), Space should preventDefault() to avoid scrolling the page while activating the control. Several other handlers in this PR already do this, so aligning here keeps keyboard behavior consistent.
    openmetadata-ui/src/main/resources/ui/src/components/SettingsSso/ProviderSelector/ProviderSelector.tsx:71
  • Space activation on a div role="button" should call preventDefault() to avoid page scroll while selecting a provider. This also matches the pattern used elsewhere in this PR.
    openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/VersionButton.tsx:60
  • When using a div role="button", Space should preventDefault() so keyboard activation doesn't also scroll the page. Without this, Space can both activate the version and scroll, which is a poor keyboard UX.
    openmetadata-ui/src/main/resources/ui/src/pages/SignUp/account-activation-confirmation.component.tsx:75
  • For this div role="button", Space should call preventDefault() to avoid scrolling the page when activating the "Back to login" action via keyboard.

Copilot AI review requested due to automatic review settings August 5, 2026 07:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 265 out of 265 changed files in this pull request and generated no new comments.

Suppressed comments (3)

openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/SearchBar.component.tsx:93

  • Replacing the <label> with a <span> removes any chance of this text acting as an accessible label for the search input. Since the AntD <Input> here doesn't get an explicit accessible name, add aria-label (or wire up htmlFor + id) so screen readers can identify the field even when placeholder is empty.
    openmetadata-ui/src/main/resources/ui/src/components/SettingsSso/ProviderSelector/ProviderSelector.tsx:71
  • For role="button" elements, Space should behave like a native button. Without e.preventDefault() here, pressing Space will also scroll the page in addition to triggering handleCardClick, which is a common keyboard/a11y regression.
    openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityVersionTimeLine/VersionButton.tsx:60
  • This div is being made keyboard-interactive via role="button" + tabIndex, but the Space key handler does not call preventDefault(). On most pages this will both activate and scroll, unlike a native . Prevent default at least for Space to match expected button behavior.

@ShaileshParmar11
ShaileshParmar11 force-pushed the ShaileshParmar11/eslint-01-mechanical-a11y branch from 6d64ef2 to b58f1f4 Compare August 5, 2026 12:12
… (waves 1-2)

Wave 1 (sonarjs safe-mechanical): ~73 warnings across 58 files —
no-collapsible-if, no-redundant-jump, no-redundant-boolean,
prefer-object-literal, no-duplicated-branches, no-identical-functions,
no-extra-arguments. Behavior preserved; risky cross-scope
no-identical-functions extractions skipped.

Wave 2 (jsx-a11y): 446 warnings across ~220 files — control-has-associated-label,
click-events-have-key-events, no-static-element-interactions, label-has-for,
no-autofocus, interactive-supports-focus, anchor rules, alt-text, etc.
Fixes reuse existing i18n keys (no new hardcoded strings); genuine
rule-vs-rule conflicts and unsafe react-flow/drag cases left as
documented skips.

Verified per wave: per-rule warning-count diff + full tsc:check against
the pre-existing baseline (318 signatures) — no new eslint or type
regressions. react-hooks/exhaustive-deps intentionally excluded.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Rebased onto latest main and re-swept 49 violations main introduced after
the wave (same behavior-preserving fixes; react-flow/drag and cross-scope
identical-functions kept as documented suppressions).

Ratchet: promote the cleared rules (all jsx-a11y in the backlog block +
safe-mechanical sonarjs) from warn to error in eslint.config.mjs so CI blocks
any regression instead of letting the backlog grow back. Team-wide CI policy
change — see PR description.
@ShaileshParmar11

Copy link
Copy Markdown
Contributor Author

Parking the ESLint-cleanup stack until after the 2.0 release. Closing this PR for now so review bandwidth stays on the release — the head branch is preserved (not deleted), so this will be reopened and rebased onto latest main once 2.0 ships. Tracked under the epic #30977.

Resolve 9 conflicts keeping both main's changes and the a11y/sonarjs fixes.
Re-swept 13 new error-level violations main introduced across 347 commits
(2 collapsible-if collapsed, dropped a vestigial buildEsRule arg, aria-labels
+ documented disables for test mocks). 0 eslint errors; 666 tests pass.
@gitar-bot

gitar-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown
Code Review 👍 Approved with suggestions 2 resolved / 3 findings

Behavior-preserving ESLint cleanup addressing a parent onKeyDown key-swallowing issue. Consider reviewing QueryBuilderElasticsearchFormatUtils as behavioral logic was included in this mechanical lint PR.

💡 Quality: Behavioral logic shipped inside a 'safe-mechanical' lint PR

📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:171-181 📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:764-778 📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:906-909 📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:1012-1021 📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:1058-1072

This PR is titled/described as a behavior-preserving safe-mechanical (sonarjs) + jsx-a11y lint cleanup, but QueryBuilderElasticsearchFormatUtils.js introduces substantive new behavior: definedParameters(), a new early-return in buildEsRule, filtering of undefined multiselect rules, and the new exported hasUnfinishedRule/producesNoConstraint. These change the emitted Elasticsearch/OpenSearch query for partially-filled rules and are not mechanical lint fixes. Reviewers approving a 'safe-mechanical' PR quickly may not scrutinize query-building semantics. Split these behavioral changes into a clearly-labeled functional PR, or update the description so the semantic change is reviewed with appropriate care and test coverage.

✅ 2 resolved
Bug: Parent onKeyDown swallows keys from nested controls

📄 openmetadata-ui/src/main/resources/ui/src/components/common/TableDataCardV2/TableDataCardV2.tsx:162-172 📄 openmetadata-ui/src/main/resources/ui/src/components/common/TableDataCardV2/TableDataCardV2.tsx:174-188 📄 openmetadata-ui/src/main/resources/ui/src/components/Settings/Users/UserProfileIcon/UserProfileIcon.component.tsx:163-171 📄 openmetadata-ui/src/main/resources/ui/src/components/Settings/Users/UserProfileIcon/UserProfileIcon.component.tsx:186
The new role="button" container listens for Enter/Space via onKeyDown and calls e.preventDefault(), but keydown events bubble from the nested interactive children (the Checkbox and title links inside EntityHeader in TableDataCardV2, the Radio in UserProfileIcon). Pressing Space to toggle the checkbox/radio, or Enter to follow a link, will now bubble to the parent handler, get preventDefault'd (blocking the child's own action) and instead fire the card/persona click handler — a keyboard regression versus the previous click-only role="presentation" version. Guard the handler so it only reacts to events targeting the container itself.

Edge Case: Multiselect ES operators now short-circuit before field-type branches

📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:488-502 📄 openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:595-605
In buildExtensionQuery, the multiselect_contains/multiselect_not_contains operators were moved from the end of the if/else-if chain up into the top like/not_like branch. Previously these operators fell through the field-type branches (entityReference, hyperlink, table, range, equal) first, so a multiselect operator applied to one of those field types would use that branch's query; now it always resolves to the wildcard-on-stringValue query at the top. The query body itself is identical to the old dedicated multiselect branch, so behavior only diverges if a multiselect operator is ever paired with an entityReference/hyperlink/table field — unlikely by config design, but this is a real ordering change rather than a pure de-duplication. Confirm no such operator/field-type combination is reachable.

🤖 Prompt for agents
Code Review: Behavior-preserving ESLint cleanup addressing a parent onKeyDown key-swallowing issue. Consider reviewing QueryBuilderElasticsearchFormatUtils as behavioral logic was included in this mechanical lint PR.

1. 💡 Quality: Behavioral logic shipped inside a 'safe-mechanical' lint PR
   Files: openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:171-181, openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:764-778, openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:906-909, openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:1012-1021, openmetadata-ui/src/main/resources/ui/src/utils/QueryBuilderElasticsearchFormatUtils.js:1058-1072

   This PR is titled/described as a behavior-preserving safe-mechanical (sonarjs) + jsx-a11y lint cleanup, but QueryBuilderElasticsearchFormatUtils.js introduces substantive new behavior: definedParameters(), a new early-return in buildEsRule, filtering of undefined multiselect rules, and the new exported hasUnfinishedRule/producesNoConstraint. These change the emitted Elasticsearch/OpenSearch query for partially-filled rules and are not mechanical lint fixes. Reviewers approving a 'safe-mechanical' PR quickly may not scrutinize query-building semantics. Split these behavioral changes into a clearly-labeled functional PR, or update the description so the semantic change is reviewed with appropriate care and test coverage.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ESLint 1/10] safe-mechanical (sonarjs) + jsx-a11y

2 participants