fix(ui): scope empty-state placeholder styling per caller and add regression tests - #30553
fix(ui): scope empty-state placeholder styling per caller and add regression tests#30553aniketkatkar97 wants to merge 3 commits into
Conversation
getErrorPlaceHolder hardcoded the agents-card styling (tw:bg-primary tw:border tw:border-secondary tw:rounded-xl), which leaked into the ingestion pipelines list-table empty state and rendered an unwanted bordered card (regression from #30284). The helper now takes an optional className each caller passes: the Agents tab keeps the card, the ingestion table uses a plain tw:relative tw:py-8 layout. Adds regression coverage: getErrorPlaceHolder unit tests asserting the className is forwarded and the card classes never leak to a caller that did not ask for them, plus call-site guards in MetadataAgentsView and IngestionListTable pinning the className each passes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code Review ✅ ApprovedScopes empty-state placeholder styling per caller by accepting an optional className in OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar | Powered by Gitar — free for open source |
|
✅ Playwright Results — workflow succeededValidated commit ✅ 618 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 5 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 43s ⏱️ Max setup 3m 5s · max shard execution 15m 0s · max shard-job elapsed before upload 26m 40s · reporting 4s 🌐 208.81 requests/attempt · 2.77 app boots/UI scenario · 10.67% common-shard skew Optimization targets still in progress:
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |



Describe your changes:
Fixes #30552
I worked on scoping the empty-state placeholder styling per caller because the shared
getErrorPlaceHolderhelper hardcoded the agents-card styling (tw:bg-primary tw:border tw:border-secondary tw:rounded-xl). Since the same helper renders the empty state for both the service Agents tab and the Ingestion pipelines list table, that card styling leaked into the list-table empty state and rendered an unwanted bordered card — a visual regression introduced by #30284.getErrorPlaceHoldernow accepts an optionalclassNamethat each caller passes: the Agents tab keeps the card styling, while the ingestion list table uses a plaintw:relative tw:py-8layout.Regression coverage added:
IngestionUtils.test.tsx— unit tests forgetErrorPlaceHolderasserting theclassNameis forwarded to the placeholder and that the card classes never leak to a caller that did not pass them.MetadataAgentsView.test.tsx/IngestionListTable.test.tsx— call-site guards pinning the exactclassNameeach surface passes.Proven RED/GREEN: re-hardcoding the old className turns the helper tests red; the fix keeps them green.
Screenshots
Agents tab — empty state keeps the card (intended):
Ingestion Pipelines list table — empty state is plain, no leaked card border (the fix):
Type of change:
Checklist:
Greptile Summary
Scopes shared empty-state styling to each caller.
classNameparameter togetErrorPlaceHolder.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Reviews (3): Last reviewed commit: "Merge branch 'main' into fix/ingestion-e..." | Re-trigger Greptile