Skip to content

refactor(entity-rename): replace antd with core-components in EntityNameModal#29783

Open
anuj-kumary wants to merge 4 commits into
mainfrom
entity-rename-antd-to-core-components
Open

refactor(entity-rename): replace antd with core-components in EntityNameModal#29783
anuj-kumary wants to merge 4 commits into
mainfrom
entity-rename-antd-to-core-components

Conversation

@anuj-kumary

@anuj-kumary anuj-kumary commented Jul 6, 2026

Copy link
Copy Markdown
Member

Why

EntityNameModal and its callers (SchemaTable, ManageButton, entityPanel) still used Ant Design components. This PR removes them and replaces them with @openmetadata/ui-core-components as part of the ongoing MUI/core-components migration.

What changed

EntityNameModal.component.tsx

  • Replaces antd Form, Modal, Button, Typography with core-components Dialog, ModalOverlay, Modal, Button, Typography
  • Switches form state from antd Form context to react-hook-form (Controller / useForm)
  • Adds SanitizedField helper that wraps InputBase in AriaTextField (react-aria-components) so onChange receives a string and id flows through InputContext<input id="name">, preserving all Playwright locators

EntityNameModal.interface.ts

  • Removes antd Rule import
  • Adds EntityNameValidationRule object type (replaces Rule[])

ManageButton.tsx

  • Casts DISPLAY_NAME_FIELD_RULES as EntityNameValidationRule[]

SchemaTable.component.tsx

  • Replaces antd Form context for the column constraint field with local editConstraint state
  • Casts updateColumnDetails argument as Partial<Column> (handles removeConstraint from the UpdateColumn API type)

playwright/utils/entityPanel.ts

  • Replaces .ant-modal selector with [role="dialog"] (AriaDialog renders with that role)

Playwright compatibility

Locator How it's preserved
#name id on AriaTextField flows via InputContext to the <input>
#displayName Same mechanism
#name_help Error <span id="name_help"> from react-hook-form fieldState.error
data-testid="save-button" On core-components Button
[role="dialog"] Replaces .ant-modal in entityPanel.ts

Test plan

  • Rename any entity — modal renders and saves correctly
  • Name field is read-only by default (allowRename defaults to false)
  • Validation error appears under the name field (#name_help)
  • Schema table column rename — constraint dropdown still works independently
  • Playwright: glossary rename, editDisplayNameFromPanel, EntityRenameConsolidation.spec.ts

🤖 Generated with Claude Code

Greptile Summary

This PR migrates EntityNameModal and its callers from Ant Design components to @openmetadata/ui-core-components, swapping the antd Form/Modal/Button stack for react-hook-form + Dialog/ModalOverlay/Button from the new component library.

  • EntityNameModal.component.tsx: Rewrites form state management from antd Form context to react-hook-form Controller/useForm, adds a SanitizedField helper to bridge react-aria-components TextField with InputBase, and preserves all Playwright-facing IDs (#name, #displayName, #name_help).
  • SchemaTable.component.tsx: Extracts the column constraint value into local editConstraint state since additionalFields are now plain JSX outside react-hook-form; cleans up the EntityNameWithAdditionFields type dependency.
  • ManageButton.tsx / EntityNameModal.interface.ts: Removes the antd Rule dependency; introduces a custom EntityNameValidationRule type and casts DISPLAY_NAME_FIELD_RULES to the new type.

Confidence Score: 5/5

Safe to merge — the refactor correctly replaces antd form primitives with react-hook-form and core-components across all callers without introducing new functional regressions.

The component migration is mechanically straightforward: form state moves from antd Form context to react-hook-form, constraint state is lifted to local useState in SchemaTable (the only caller using additionalFields), and all Playwright-facing IDs are preserved via the SanitizedField/AriaTextField bridge. The onSave error-path loading-state issue and the [role="dialog"] selector broadening were both present before this PR or already flagged in prior review threads. No new data-loss or correctness bugs are introduced by the changed code paths.

No files require special attention beyond the concerns already raised in prior review threads.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx Core refactor — antd Form replaced with react-hook-form + core-components Dialog; SanitizedField helper preserves aria/id wiring; onSubmit lacks a try/finally (pre-existing) and buildValidate silently ignores the required rule on EntityNameValidationRule (flagged in prior review).
openmetadata-ui/src/main/resources/ui/src/components/Database/SchemaTable/SchemaTable.component.tsx Constraint state lifted into useState<string
openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.interface.ts Removes antd Rule dependency; new EntityNameValidationRule type covers min/max/pattern/required, though buildValidate only acts on the first three.
openmetadata-ui/src/main/resources/ui/src/components/common/EntityPageInfos/ManageButton/ManageButton.tsx Minimal change: casts DISPLAY_NAME_FIELD_RULES to EntityNameValidationRule[]; structurally safe since the rule only uses min/max/message which map 1:1 to the new type.
openmetadata-ui/src/main/resources/ui/playwright/utils/entityPanel.ts Replaces .ant-modal with [role="dialog"] — semantically correct, but the generic ARIA role selector may match multiple dialogs in the same test context (flagged in prior review).

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User clicks Edit] --> B[handleEditDisplayNameClick]
    B --> C[setEditColumnDisplayName\nsetEditConstraint]
    C --> D[EntityNameModal renders\nModalOverlay isOpen=true]
    D --> E[useForm initialised\nreset on visible=true]
    E --> F{User action}

    F -->|Edits name/displayName| G[Controller onChange\nSanitizedField → getSanitizeContent]
    G --> F

    F -->|Changes constraint| H[antd Select onChange\nsetEditConstraint local state]
    H --> F

    F -->|Clicks Save / presses Enter| I[handleSubmit runs react-hook-form validation]
    I -->|Validation fails| J[fieldState.error shown\nspan#name_help]
    J --> F
    I -->|Validation passes| K[onSubmit called\nsetIsLoading true]
    K --> L[onSave data as T]
    L --> M[setEditColumnDisplayName undefined\nsetEditConstraint undefined]

    F -->|Clicks Cancel| N[onCancel\nsetEditColumnDisplayName undefined]
    N --> O[Modal unmounts]
    M --> O
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[User clicks Edit] --> B[handleEditDisplayNameClick]
    B --> C[setEditColumnDisplayName\nsetEditConstraint]
    C --> D[EntityNameModal renders\nModalOverlay isOpen=true]
    D --> E[useForm initialised\nreset on visible=true]
    E --> F{User action}

    F -->|Edits name/displayName| G[Controller onChange\nSanitizedField → getSanitizeContent]
    G --> F

    F -->|Changes constraint| H[antd Select onChange\nsetEditConstraint local state]
    H --> F

    F -->|Clicks Save / presses Enter| I[handleSubmit runs react-hook-form validation]
    I -->|Validation fails| J[fieldState.error shown\nspan#name_help]
    J --> F
    I -->|Validation passes| K[onSubmit called\nsetIsLoading true]
    K --> L[onSave data as T]
    L --> M[setEditColumnDisplayName undefined\nsetEditConstraint undefined]

    F -->|Clicks Cancel| N[onCancel\nsetEditColumnDisplayName undefined]
    N --> O[Modal unmounts]
    M --> O
Loading

Reviews (3): Last reviewed commit: "fix(entity-rename): restore DeleteWidget..." | Re-trigger Greptile

… in EntityNameModal

- Replace antd Form, Modal, Button, Typography with @openmetadata/ui-core-components
  equivalents (Dialog, ModalOverlay, Modal, Button, Typography)
- Use react-hook-form (Controller/useForm) instead of antd Form context
- Add SanitizedField helper wrapping InputBase in AriaTextField so onChange receives
  a string and id flows through to the DOM <input>, preserving Playwright locators
  (#name, #displayName, #name_help, [role="dialog"])
- Update EntityNameModal.interface.ts: remove antd Rule import, add
  EntityNameValidationRule object type
- Update ManageButton.tsx: cast DISPLAY_NAME_FIELD_RULES as EntityNameValidationRule[]
- Update SchemaTable.component.tsx: replace antd Form context for constraint with
  local editConstraint state; cast updateColumnDetails arg as Partial<Column>
- Update entityPanel.ts: replace .ant-modal selector with [role="dialog"]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@anuj-kumary anuj-kumary requested a review from a team as a code owner July 6, 2026 16:11
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

❌ PR checklist incomplete

This PR cannot be merged until the following are addressed on its linked issue:

  • No GitHub issue is linked. Link an issue in the Development section of the PR (or add Fixes #12345 to the description). For a same-org cross-repo issue, add Fixes open-metadata/<repo>#123 to the description.

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 skip-pr-checks label.

@anuj-kumary anuj-kumary self-assigned this Jul 6, 2026
@anuj-kumary anuj-kumary added safe to test Add this label to run secure Github workflows on PRs skip-pr-checks Bypass PR metadata validation check labels Jul 6, 2026
@@ -169,6 +165,7 @@ const SchemaTable = () => {
} = useFqn({ type: EntityType.TABLE });

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.

P2 editConstraint loses Constraint enum type

The old implementation stored the constraint value inside the antd Form context typed as the Constraint enum; the new state is useState<string | undefined>(), which widens the type. The Select's onChange still receives a valid Constraint string at runtime, but TypeScript can no longer enforce it — a future change that accidentally passes an arbitrary string into setEditConstraint would not be caught at compile time. Consider typing this as useState<Constraint | undefined>() to preserve the original type safety.

Comment on lines +613 to 614
const modal = page.locator('[role="dialog"]');
await modal.waitFor({ state: 'visible' });

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.

P2 [role="dialog"] may match multiple elements in test context

Replacing .ant-modal (a CSS class unique to the Ant Design modal) with [role="dialog"] is semantically correct, but the new selector is far more generic — any ARIA dialog rendered on the page matches it. If another dialog (e.g., a confirmation toast or a nested modal from a different component) is visible when editDisplayNameFromPanel runs, page.locator('[role="dialog"]') will return multiple elements. Playwright's strict-mode will then throw a strict mode violation error when the subsequent .locator('#displayName') is called. Consider scoping the locator, e.g. page.locator('[role="dialog"][data-testid="…"]') or using page.getByRole('dialog', { name: … }) to match by dialog title.

anuj-kumary and others added 2 commits July 6, 2026 21:52
Move the rules prop after render on the name/displayName Controllers to
satisfy the sort-props lint rule.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- buildValidate: skip min/max/pattern for empty non-required values,
  mirroring antd async-validator behavior (clearing displayName no
  longer produces a spurious min-length error)
- useEffect reset: depend on entity.name/entity.displayName primitives
  instead of the entity object reference, so inline object literals
  passed by callers (e.g. ManageButton) don't wipe in-progress edits
  on every parent re-render

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Comment on lines +37 to +42
for (const rule of rules) {
// Skip length/pattern checks for empty non-required values,
// mirroring antd async-validator behavior.
if (v.length === 0 && !rule.required) {
continue;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Bug: buildValidate reads required but never enforces presence

The delta added if (v.length === 0 && !rule.required) { continue; } in buildValidate, which introduces awareness of the required field declared on EntityNameValidationRule (interface L25). However, required is only used to decide whether to skip checks for empty values — it never actually enforces presence. For a rule with { required: true } and no min/max/pattern, an empty value falls through: the continue is skipped, min/max are undefined (skipped), and there's no pattern to fail on, so buildValidate returns true. Any future caller passing a required rule via nameValidationRules/displayNameValidationRules would be silently misled into thinking empty values are rejected. (The name field's actual required check happens separately via react-hook-form's required rule at L186, so current behavior is unaffected.) Consider enforcing it: when v.length === 0 && rule.required, return the required message instead of just relying on it to skip.

Return the required message for empty values when the rule is required, otherwise skip length/pattern checks.:

for (const rule of rules) {
  // Enforce required first for empty values.
  if (v.length === 0) {
    if (rule.required) {
      return typeof rule.required === 'string'
        ? rule.required
        : rule.message ?? '';
    }
    // Skip length/pattern checks for empty non-required values,
    // mirroring antd async-validator behavior.
    continue;
  }
  • Apply fix

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

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

❌ UI Checkstyle Failed

❌ ESLint + Prettier + Organise Imports (src)

One or more source files have linting or formatting issues.

Affected files
  • openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx

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

make ui-checkstyle-changed

Previous commit accidentally renamed DeleteWidgetModal → DeleteEntityModal
causing all test suites that import ManageButton to fail with
"Cannot find module '../../DeleteWidget/DeleteEntityModal'".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gitar-bot

gitar-bot Bot commented Jul 6, 2026

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

Replaces Ant Design components in EntityNameModal with core-components and switches to react-hook-form for improved state management. Address the silent required validation ignore in buildValidate and consider refining the generic [role='dialog'] Playwright selector to prevent potential collisions.

💡 Bug: buildValidate reads required but never enforces presence

📄 openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx:37-42 📄 openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.interface.ts:25

The delta added if (v.length === 0 && !rule.required) { continue; } in buildValidate, which introduces awareness of the required field declared on EntityNameValidationRule (interface L25). However, required is only used to decide whether to skip checks for empty values — it never actually enforces presence. For a rule with { required: true } and no min/max/pattern, an empty value falls through: the continue is skipped, min/max are undefined (skipped), and there's no pattern to fail on, so buildValidate returns true. Any future caller passing a required rule via nameValidationRules/displayNameValidationRules would be silently misled into thinking empty values are rejected. (The name field's actual required check happens separately via react-hook-form's required rule at L186, so current behavior is unaffected.) Consider enforcing it: when v.length === 0 && rule.required, return the required message instead of just relying on it to skip.

Return the required message for empty values when the rule is required, otherwise skip length/pattern checks.
for (const rule of rules) {
  // Enforce required first for empty values.
  if (v.length === 0) {
    if (rule.required) {
      return typeof rule.required === 'string'
        ? rule.required
        : rule.message ?? '';
    }
    // Skip length/pattern checks for empty non-required values,
    // mirroring antd async-validator behavior.
    continue;
  }
✅ 2 resolved
Bug: Empty optional displayName now fails min-length validation

📄 openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx:33-47
buildValidate unconditionally applies min/max/pattern rules, returning an error whenever v.length < rule.min. For an empty value this means 0 < 1 → error. DISPLAY_NAME_FIELD_RULES (passed by ManageButton for displayNameValidationRules) contains { min: 1, max: 128 }, and displayName is optional (defaults to '' when entity.displayName is undefined).

This is a behavior regression from the antd/async-validator implementation, which skips min/max/pattern rules when a field is empty and not required. Previously a user could rename an entity while leaving the display name blank, or clear an existing display name, and save successfully. Now clicking Save with an empty display name is blocked by a spurious "size in between" error, because the min: 1 rule fires on the empty string.

Fix: mirror async-validator by short-circuiting when the value is empty and the rule is not required.

Bug: Form reset effect depends on inline entity object, wiping input

📄 openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx:112-119 📄 openmetadata-ui/src/main/resources/ui/src/components/common/EntityPageInfos/ManageButton/ManageButton.tsx:335
The reset effect runs whenever visible, entity, or reset change: useEffect(() => { if (visible) { reset({...}) } }, [visible, entity, reset]).

ManageButton passes entity={{ name: entityName, displayName }} — a new object literal created on every render. Because entity is a fresh reference each render, any parent re-render while the modal is open re-runs the effect and calls reset(...), discarding whatever the user has typed and restoring the original name/displayName. The previous antd implementation only depended on [visible], so it reset exactly once when the modal opened.

This can cause the field values to unexpectedly revert mid-edit. Prefer keying the reset off a stable value (e.g. visible plus primitive entity.name/entity.displayName) rather than the object identity, or memoize the entity object at the call site.

🤖 Prompt for agents
Code Review: Replaces Ant Design components in `EntityNameModal` with core-components and switches to `react-hook-form` for improved state management. Address the silent `required` validation ignore in `buildValidate` and consider refining the generic `[role='dialog']` Playwright selector to prevent potential collisions.

1. 💡 Bug: buildValidate reads `required` but never enforces presence
   Files: openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.component.tsx:37-42, openmetadata-ui/src/main/resources/ui/src/components/Modals/EntityNameModal/EntityNameModal.interface.ts:25

   The delta added `if (v.length === 0 && !rule.required) { continue; }` in `buildValidate`, which introduces awareness of the `required` field declared on `EntityNameValidationRule` (interface L25). However, `required` is only used to decide whether to *skip* checks for empty values — it never actually enforces presence. For a rule with `{ required: true }` and no `min`/`max`/`pattern`, an empty value falls through: the `continue` is skipped, `min`/`max` are `undefined` (skipped), and there's no `pattern` to fail on, so `buildValidate` returns `true`. Any future caller passing a `required` rule via `nameValidationRules`/`displayNameValidationRules` would be silently misled into thinking empty values are rejected. (The name field's actual required check happens separately via react-hook-form's `required` rule at L186, so current behavior is unaffected.) Consider enforcing it: when `v.length === 0 && rule.required`, return the required message instead of just relying on it to skip.

   Fix (Return the required message for empty values when the rule is required, otherwise skip length/pattern checks.):
   for (const rule of rules) {
     // Enforce required first for empty values.
     if (v.length === 0) {
       if (rule.required) {
         return typeof rule.required === 'string'
           ? rule.required
           : rule.message ?? '';
       }
       // Skip length/pattern checks for empty non-required values,
       // mirroring antd async-validator behavior.
       continue;
     }

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

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 63%
63.76% (72766/114112) 46.9% (42347/90290) 48.19% (13024/27025)

@sonarqubecloud

sonarqubecloud Bot commented Jul 6, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🔴 Playwright Results — 3 failure(s), 23 flaky

✅ 4462 passed · ❌ 3 failed · 🟡 23 flaky · ⏭️ 54 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 419 0 6 33
🔴 Shard 2 817 1 6 3
✅ Shard 3 795 0 0 12
🟡 Shard 4 811 0 2 5
🟡 Shard 5 855 0 2 0
🔴 Shard 6 765 2 7 1

Genuine Failures (failed on all attempts)

Features/EntitySummaryPanel.spec.ts › should cancel edit display name modal (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: locator('.ant-modal')
Expected: visible
Timeout: 15000ms
Error: element(s) not found

Call log:
�[2m  - Expect "toBeVisible" with timeout 15000ms�[22m
�[2m  - waiting for locator('.ant-modal')�[22m

Pages/Glossary.spec.ts › Rename Glossary Term and verify assets (shard 6)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoHaveText�[2m(�[22m�[32mexpected�[39m�[2m)�[22m failed

Locator: locator('#name_help')
Expected: �[32m"Name size must be between 1 and 128"�[39m
Timeout: 15000ms
Error: element(s) not found

Call log:
�[2m  - Expect "toHaveText" with timeout 15000ms�[22m
�[2m  - waiting for locator('#name_help')�[22m

VersionPages/EntityVersionPages.spec.ts › Table (shard 6)
�[31mTest timeout of 180000ms exceeded.�[39m
🟡 23 flaky test(s) (passed on retry)
  • Features/CustomizeDetailPage.spec.ts › Stored Procedure - customization should work (shard 1, 1 retry)
  • Features/Glossary/GlossaryPagination.spec.ts › should check for nested glossary term search (shard 1, 1 retry)
  • Features/Glossary/GlossaryPagination.spec.ts › should filter by InReview status (shard 1, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab IS visible for supported type: metric (shard 1, 1 retry)
  • Pages/SearchSettings.spec.ts › Preview config reflects reverted n-gram weight after save (shard 1, 1 retry)
  • Flow/SearchRBAC.spec.ts › a fully denied user sees neither asset type when browsing (shard 1, 1 retry)
  • Features/BulkImport.spec.ts › Database (shard 2, 2 retries)
  • Features/BulkImport.spec.ts › Database Schema (shard 2, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article listing search filters, clears, and shows empty state (shard 2, 1 retry)
  • Features/ContextCenterArticles.spec.ts › Article list cards, recently viewed widget, and pagination work (shard 2, 1 retry)
  • Features/ContextCenterDocumentPage.spec.ts › move document to folder via card menu shows folder name on the card (shard 2, 1 retry)
  • Features/ContextCenterPermission.spec.ts › user with editAll permission can see restore action but not delete action on an archived document, and can restore it (shard 2, 2 retries)
  • Flow/ApiServiceRest.spec.ts › add update and delete api service type REST (shard 4, 1 retry)
  • Pages/CustomProperties.spec.ts › Entity Reference (shard 4, 1 retry)
  • Pages/Entity.spec.ts › Tier Add, Update and Remove (shard 5, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 5, 1 retry)
  • Features/AutoPilot.spec.ts › Create Service and check the AutoPilot status (shard 6, 1 retry)
  • Pages/Glossary.spec.ts › Column dropdown drag-and-drop functionality for Glossary Terms table (shard 6, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify Impact Analysis service filter selection (shard 6, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for pipelineService in platform lineage (shard 6, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for apiService in platform lineage (shard 6, 1 retry)
  • Pages/TagPageRightPanel.spec.ts › Should display correct tabs for table entity in tag assets page context (shard 6, 1 retry)
  • Pages/UserDetails.spec.ts › Create team with domain and verify visibility of inherited domain in user profile after team removal (shard 6, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant