Fixed context center bugs - #31118
Conversation
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
✅ Playwright Results — workflow succeededValidated commit ✅ 717 passed · ❌ 0 failed · 🟡 1 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 57m 26s ⏱️ Max setup 3m 3s · max shard execution 18m 24s · max shard-job elapsed before upload 24m 38s · reporting 4s 🌐 184.17 requests/attempt · 2.67 app boots/UI scenario · 13.13% common-shard skew Optimization targets still in progress:
🟡 1 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
|
| Count | Rule |
|---|---|
| 11 | sonarjs/no-duplicate-string |
| 11 | @typescript-eslint/no-non-null-assertion |
| 9 | sonarjs/cyclomatic-complexity |
| 6 | react-hooks/exhaustive-deps |
| 5 | sonarjs/expression-complexity |
| 4 | i18next/no-literal-string |
| 3 | sonarjs/cognitive-complexity |
| 2 | react/no-array-index-key |
| 2 | sonarjs/no-nested-functions |
| 1 | sonarjs/no-nested-conditional |
All findings
| Location | Rule | Message | |
|---|---|---|---|
| 🟡 | src/components/ContextCenter/ArchiveView/ArchiveView.component.tsx:155:36 |
react/no-array-index-key |
Do not use Array index in keys |
| 🟡 | src/components/ContextCenter/ContextKnowledgePillarCard/ContextKnowledgePillarCard.component.tsx:81:28 |
react/no-array-index-key |
Do not use Array index in keys |
| 🟡 | src/components/ContextCenter/ContextSimplePillarCard/ContextSimplePillarCard.component.tsx:65:13 |
sonarjs/no-nested-conditional |
Extract this nested ternary operation into an independent statement. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:251:4 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 36 which is greater than 10 authorized.","cost":26,"secondaryLocations":[{"line":251,"column":3,"endLine":251,"endColum |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:257:54 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 9 times. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:325:16 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 11 which is greater than 10 authorized.","cost":1,"secondaryLocations":[{"line":325,"column":15,"endLine":325,"endColum |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:364:6 |
react-hooks/exhaustive-deps |
React Hook useEffect has missing dependencies: 'form' and 't'. Either include them or remove the dependency array. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:418:57 |
sonarjs/cognitive-complexity |
Refactor this function to reduce its Cognitive Complexity from 19 to the 15 allowed. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:418:57 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 18 which is greater than 10 authorized.","cost":8,"secondaryLocations":[{"line":418,"column":56,"endLine":418,"endColum |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:428:13 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:429:15 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:693:22 |
sonarjs/expression-complexity |
Reduce the number of conditional operators (4) used in the expression (maximum allowed 3). |
| 🟡 | src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:851:47 |
sonarjs/no-nested-functions |
Refactor this code to not nest functions more than 4 levels deep. |
| 🟡 | src/components/ContextCenter/DashboardFoldersCard/DashboardFoldersCard.test.tsx:24:15 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:55:54 |
i18next/no-literal-string |
disallow literal string: x |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:70:64 |
i18next/no-literal-string |
disallow literal string: close |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:113:73 |
i18next/no-literal-string |
disallow literal string: <button data-testid={delete-${name}} onClick={onDelete}> del |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:118:71 |
i18next/no-literal-string |
disallow literal string: <button data-testid={retry-${name}} onClick={onRetry}> retry |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:226:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:236:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:248:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:248:59 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:281:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:296:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:309:17 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 4 times. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:315:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:325:7 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:337:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:342:38 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:358:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | src/components/ContextCenter/UploadDocumentModal/UploadDocumentModal.test.tsx:380:7 |
@typescript-eslint/no-non-null-assertion |
Forbidden non-null assertion. |
| 🟡 | 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:225:17 |
jsx-a11y/no-autofocus |
The autoFocus prop should not be used, as it can reduce usability and accessibility for users. |
| 🟡 | src/components/DataAssets/DataAssetSelectList/DataAssetPickerShell.tsx:232:56 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:109:5 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 14 which is greater than 10 authorized.","cost":4,"secondaryLocations":[{"line":109,"column":4,"endLine":109,"endColumn |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:301:30 |
sonarjs/no-nested-functions |
Refactor this code to not nest functions more than 4 levels deep. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:342:8 |
react-hooks/exhaustive-deps |
React Hook useEffect has a missing dependency: 'fetchKnowledgePages'. Either include it or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:359:9 |
sonarjs/expression-complexity |
Reduce the number of conditional operators (4) used in the expression (maximum allowed 3). |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:369:8 |
react-hooks/exhaustive-deps |
React Hook useEffect has missing dependencies: 'fetchKnowledgePages' and 'pageOffset'. Either include them or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:429:7 |
react-hooks/exhaustive-deps |
React Hook useMemo has a missing dependency: 'addQuickLinkKnowledgePage'. Either include it or remove the dependency array. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:438:8 |
react-hooks/exhaustive-deps |
React Hook useEffect has missing dependencies: 'onPageChange' and 't'. Either include them or remove the dependency array. If 'onPageChange' changes too often, |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:552:23 |
jsx-a11y/control-has-associated-label |
A control must be associated with a text label. |
| 🟡 | src/components/KnowledgeCenter/KnowledgePageListComponent/KnowledgePageListComponent.tsx:552:23 |
jsx-a11y/anchor-has-content |
Anchors must have content and the content must be accessible by a screen reader. |
| 🟡 | src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx:79:43 |
sonarjs/cyclomatic-complexity |
{"message":"Function has a complexity of 12 which is greater than 10 authorized.","cost":2,"secondaryLocations":[{"line":79,"column":42,"endLine":79,"endColumn" |
| 🟡 | src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx:112:5 |
sonarjs/expression-complexity |
Reduce the number of conditional operators (4) used in the expression (maximum allowed 3). |
| 🟡 | src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx:119:5 |
sonarjs/expression-complexity |
Reduce the number of conditional operators (4) used in the expression (maximum allowed 3). |
| 🟡 | src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx:184:6 |
react-hooks/exhaustive-deps |
React Hook useCallback has an unnecessary dependency: 't'. Either exclude it or remove the dependency array. |
| 🟡 | src/pages/ContextCenterPage/ContextCenterDashboardPage/ContextCenterDashboardPage.tsx:511:24 |
sonarjs/no-duplicate-string |
Define a constant instead of duplicating this literal 3 times. |
… and 7 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
Code Review ✅ Approved 5 resolved / 5 findingsFixes context center bugs by adding navigation and click handlers across dashboard cards, updating file upload error handling, and preserving updater users during file extractions. Resolved issues regarding interactive items, Playwright configuration, folder deep-linking, optional chaining, and dead props. ✅ 5 resolved✅ Bug: RecentItem always interactive, ignores missing onClick
✅ Bug: Playwright baseURL port changed 8585->3000 for whole suite
✅ Edge Case: Folder deep-link param not cleared after selection
✅ Quality: Inconsistent optional-chaining on item.onClick
✅ Quality: onOpenFolder prop is now dead code
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
|



Describe your changes:
Screen.Recording.2026-08-07.at.8.00.20.PM.mov
Screen.Recording.2026-08-07.at.8.00.39.PM.mov
Fixes #
I worked on ... because ...
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Summary by Gitar
ContextCenterDashboardPage.tsx,DashboardFoldersCard.tsx,ContextKnowledgePillarCard.tsx).UploadDocumentModal.component.tsx).ContextFileExtractionService.java).This will update automatically on new commits.