Skip to content

Backport #29185 dashboard LCP parent optimizations to 1.13 - #31055

Open
shah-harshit wants to merge 1 commit into
ui/direct-1.13-seq39-29177-my-data-widget-deferralfrom
ui/direct-1.13-seq40-29185-dashboard-lcp-parent
Open

Backport #29185 dashboard LCP parent optimizations to 1.13#31055
shah-harshit wants to merge 1 commit into
ui/direct-1.13-seq39-29177-my-data-widget-deferralfrom
ui/direct-1.13-seq40-29185-dashboard-lcp-parent

Conversation

@shah-harshit

Copy link
Copy Markdown
Contributor

Summary

Tracking

Testing

  • git diff --check HEAD~1..HEAD

* perf(ui): dashboard LCP optimization parent (#29185)

* chore(ui): create dashboard lcp parent branch

* perf(ui): lazy load activity feed and split editor formatting (#29178)

* perf(ui): lazy load activity feed editor surfaces

* fix(ui): remove activity feed cache split dependencies

* fix(ui): apply activity feed checkstyle

* fix(ui): consolidate block editor content formatting

* fix(ui): clarify block editor server formatting

* perf(ui): lazy load entity detail pages and utilities (#29179)

* perf(ui): lazy load entity detail components

* fix(ui): resolve entity detail lazy split imports

* fix(ui): apply entity lazy checkstyle

* perf(ui): lazy load glossary detail and customization utilities (#29180)

* perf(ui): lazy load glossary customization views

* fix(ui): resolve glossary lazy split imports

* fix(ui): apply glossary checkstyle

* fix(ui): apply glossary widget checkstyle

* perf(ui): lazy load auth routes and service widgets (#29182)

* perf(ui): lazy load service and ingestion widgets

* fix(ui): remove cache leftovers from services lazy PR

* fix(ui): resolve services ingestion lazy split

* fix(ui): restore sync oidc candidate config

* fix(ui): keep route prefetch until final cleanup

* chore(ui): restore route prefetch comment

* perf(ui): split task, incident, and data quality utilities (#29181)

* perf(ui): split task and data quality utilities

* fix(ui): resolve tasks data quality lazy split

* fix(ui): remove tasks utils barrel exports

* fix(ui): remove duplicate query builder css import

* fix(ui): dedupe task action utils mock

* perf(ui): lazy load explore, generic widgets, and shared pages (#29183)

* perf(ui): lazy load explore and shared page components

* fix(ui): resolve common pages lazy split

* fix(ui): resolve column grid formatter import

* fix(ui): dedupe task tag navigation utils

* fix(ui): format entity task imports

* fix(ui): avoid empty glossary terms preview

* fix(ui): keep block editor parse diagnostics

* Revert "fix(ui): keep block editor parse diagnostics"

This reverts commit b8ddc50.

* perf(ui): defer my-data shell widgets (#29177)

* perf(ui): defer my-data shell widgets and cache dashboard data

* fix(ui): remove dashboard cache from my data shell PR

* fix(ui): address my data shell review feedback

* refactor(ui): rename landing widget icon helper

* refactor(ui): simplify my data service mapping

* fix(ui): restore data asset icon keys

* fix(ui): restore explicit data asset service buckets

* fix(ui): remove following widget stale guard

* fix(ui): remove my data widget stale guard

* fix(ui): derive data asset service sets from enums

* fix(ui): keep deferred widget test targets stable

* fix(ui): keep my data widget fallback stable

* fix(playwright): wait for deferred landing widgets

* fix(playwright): format landing widget helpers

* fix(ui): clean up my data shell changes

* revert(ui): remove playwright landing widget fixes

* fix(ui): preserve landing widget extension points

* Fix PR1 UI checkstyle

* Fix MyData widget loading edge cases

* Fix MyData widget test formatting

* fix(ui): stabilize lazy dashboard playwright flows

* fix(ui): stabilize deferred landing widgets

* fix(ui): guard NLP suggestions fetch

* fix(ui): preserve landing widget image overrides

* test(ui): mock landing widget image singleton

* Fix lazy landing widget playwright waits

* Fix landing page widget playwright waits

* Stabilize following widget playwright validation

* Fix following widget e2e flakiness

* fix(ui): align my data widget search index

* fix(ui): make landing search map extendable

* fix(ui): make landing widget icons extendable

* fix(ui): update curated assets widget mock

* fix(ui): use default landing page layout directly

* perf(ui): lazy load secondary dashboard header modules

* minor fix

* revert entity

* test: wait for landing page domain selector

* refactor: remove context center utils re-export

* Fix dashboard backport review issues

* Update generated TypeScript types

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
(cherry picked from commit 4c0f822)
@shah-harshit
shah-harshit requested a review from a team as a code owner August 5, 2026 13:35
@shah-harshit shah-harshit added UI UI specific issues safe to test Add this label to run secure Github workflows on PRs skip-pr-checks Bypass PR metadata validation check labels Aug 5, 2026
@shah-harshit shah-harshit self-assigned this Aug 5, 2026
Comment on lines +1450 to +1458
if (isFollowing) {
await followingWidget.isVisible();
await followingWidget.getByTestId(`following-${entity}`).isVisible();
} else {
await followingWidget.isVisible();
await expect(
followingWidget.getByTestId(`following-${entity}`)
).not.toBeVisible();
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Quality: Non-asserting isVisible() weakens follow-widget validation

In validateFollowedEntityToWidget, await followingWidget.isVisible() and await followingWidget.getByTestId(\following-${entity}`).isVisible()only return a boolean and are not assertions, so they never fail or auto-wait. The former poll-based logic guaranteed the entity card actually appeared; the new isFollowing branch will pass even if the followed entity is never rendered. Wrap the visibility checks inawait expect(...).toBeVisible()` so the assertion waits and fails correctly.

Fix:

if (isFollowing) {
  await expect(followingWidget).toBeVisible();
  await expect(
    followingWidget.getByTestId(`following-${entity}`)
  ).toBeVisible();
} else {
  await expect(followingWidget).toBeVisible();
  await expect(
    followingWidget.getByTestId(`following-${entity}`)
  ).not.toBeVisible();
}
  • Apply fix

Check the box to apply the fix or reply for a change | Was this helpful? React with 👍 / 👎

@gitar-bot

gitar-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown
Code Review 👍 Approved with suggestions 0 resolved / 1 findings

Backports dashboard LCP parent optimizations to 1.13, preserving prior resolution work. Consider adding assertions to isVisible() in validateFollowedEntityToWidget to strengthen follow-widget validation.

💡 Quality: Non-asserting isVisible() weakens follow-widget validation

📄 openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts:1450-1458

In validateFollowedEntityToWidget, await followingWidget.isVisible() and await followingWidget.getByTestId(\following-${entity}`).isVisible()only return a boolean and are not assertions, so they never fail or auto-wait. The former poll-based logic guaranteed the entity card actually appeared; the new isFollowing branch will pass even if the followed entity is never rendered. Wrap the visibility checks inawait expect(...).toBeVisible()` so the assertion waits and fails correctly.

Fix
if (isFollowing) {
  await expect(followingWidget).toBeVisible();
  await expect(
    followingWidget.getByTestId(`following-${entity}`)
  ).toBeVisible();
} else {
  await expect(followingWidget).toBeVisible();
  await expect(
    followingWidget.getByTestId(`following-${entity}`)
  ).not.toBeVisible();
}
🤖 Prompt for agents
Code Review: Backports dashboard LCP parent optimizations to 1.13, preserving prior resolution work. Consider adding assertions to isVisible() in validateFollowedEntityToWidget to strengthen follow-widget validation.

1. 💡 Quality: Non-asserting isVisible() weakens follow-widget validation
   Files: openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts:1450-1458

   In validateFollowedEntityToWidget, `await followingWidget.isVisible()` and `await followingWidget.getByTestId(\`following-${entity}\`).isVisible()` only return a boolean and are not assertions, so they never fail or auto-wait. The former poll-based logic guaranteed the entity card actually appeared; the new isFollowing branch will pass even if the followed entity is never rendered. Wrap the visibility checks in `await expect(...).toBeVisible()` so the assertion waits and fails correctly.

   Fix:
   if (isFollowing) {
     await expect(followingWidget).toBeVisible();
     await expect(
       followingWidget.getByTestId(`following-${entity}`)
     ).toBeVisible();
   } else {
     await expect(followingWidget).toBeVisible();
     await expect(
       followingWidget.getByTestId(`following-${entity}`)
     ).not.toBeVisible();
   }

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 👍 / 👎 | Gitar | Powered by Gitar — free for open source

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

❌ UI Checkstyle Failed

❌ ESLint + Prettier + Organise Imports (src)

One or more source files have linting or formatting issues.

❌ Licence Header

One or more files are missing or have an outdated Apache 2.0 licence header.

Affected files
  • openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/TaskFeedCard/TaskFeedCardFromTask.component.test.tsx
    • openmetadata-ui/src/main/resources/ui/src/components/NotificationBox/NotificationFeedCard.test.tsx
    • openmetadata-ui/src/main/resources/ui/src/pages/TasksPage/shared/TaskPayloadSchemaFields.tsx
    • openmetadata-ui/src/main/resources/ui/src/utils/TaskFormSchemaUtils.ts

❌ Tailwind Audit

Hardcoded Tailwind values found. Use a design-system utility (run yarn tw-audit:report for the token each value maps to).

❌ Antd + Less Deprecation Guard

A new antd import or new .less file was added. Use UntitledUI + Tailwind for new work.

Affected files

at Function._resolveFilename (node:internal/modules/cjs/loader:1401:15)
at defaultResolveImpl (node:internal/modules/cjs/loader:1057:19)
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1062:22)
at Function._load (node:internal/modules/cjs/loader:1211:37)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
at node:internal/main/run_main_module:36:49 {


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

make ui-checkstyle-changed

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 skip-pr-checks Bypass PR metadata validation check UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant