Skip to content

test(ui): re-enable Domains, Data Product & domain-rename E2E suites#30447

Closed
siddhant1 wants to merge 3 commits into
open-metadata:mainfrom
siddhant1:sid/reenable-domains-dataproducts-e2e
Closed

test(ui): re-enable Domains, Data Product & domain-rename E2E suites#30447
siddhant1 wants to merge 3 commits into
open-metadata:mainfrom
siddhant1:sid/reenable-domains-dataproducts-e2e

Conversation

@siddhant1

@siddhant1 siddhant1 commented Jul 24, 2026

Copy link
Copy Markdown
Member

What & why

Re-enables Playwright E2E coverage that had been switched off — mostly by the bulk-skip in #29909 ("Skip failing main specs") plus a few one-off skips. When actually run against a current build, the vast majority already pass; this PR fixes the handful that had genuinely broken (all from UI-component migrations) and re-enables everything that is green.

Re-enabled + fixed

Suite Result Fix
Domains (9 describe suites) 49/49 green 47 already passed once run. Fixed the 2 real failures — both selector drift: "Add Assets" migrated to the core-ui asset-selection-modal Dialog (old form-heading testid gone); tree toggle is now a radio, not a button.
DomainDataProductsWidgets 6/6 green Marked test.describe.serial — the suite is one sequential scenario (assign widgets → add assets → verify → remove); parallel execution violated that ordering. Also fixed the data-product asset-removal count-timing bug: wait for the asset card to render before counting (count() doesn't auto-wait, so it read 0 and removed nothing).
GlossaryNavigation empty-state green Asserted the empty-glossary placeholder (message.no-glossary-term) instead of the "No Glossary Term found" row — that row only appears when a status filter matches nothing, not for a 0-term glossary.
Glossary "Request description task", EntityRenameConsolidation domain rename ×2 green Passed as-is; just unskipped.

Left skipped (blocked on product/BE work — documented in-code)

BulkImport is intentionally untouched.

Testing

All re-enabled tests verified green locally against a running stack (localhost:8585): Domains 49/49, DomainDataProductsWidgets 6/6, GlossaryNavigation empty-state, Glossary request-description-task, EntityRenameConsolidation domain-rename ×2.

🤖 Generated with Claude Code

Greptile Summary

Re-enables and updates previously skipped Playwright coverage.

  • Re-enables domain, domain-rename, glossary, and landing-page widget E2E suites.
  • Updates selectors for migrated domain and glossary UI states.
  • Serializes the state-dependent domain/data-product widget scenario and revises asset cleanup synchronization.

Confidence Score: 5/5

The PR appears safe to merge because no eligible blocking failures remain.

No blocking failure remains within the scope of this follow-up review.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/EntityRenameConsolidation.spec.ts Re-enables two domain rename consolidation scenarios.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryNavigation.spec.ts Re-enables the empty-glossary scenario and updates its placeholder assertion.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainDataProductsWidgets.spec.ts Re-enables the stateful widget suite in serial mode and synchronizes data-product asset removal with card rendering.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts Re-enables domain suites and updates selectors for the asset modal and tree-view control.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts Re-enables the glossary-term description-task scenario.

Reviews (3): Last reviewed commit: "Merge branch 'main' into sid/reenable-do..." | Re-trigger Greptile

Re-enables E2E coverage that was disabled by the mass-skip open-metadata#29909 and a
few one-off skips, fixing the tests that had broken from UI migrations.

Fixed:
- Domains (9 suites): 47/49 already passed once run; fixed the 2 real
  failures, both migration selector drifts — "Add Assets" moved to the
  core-ui `asset-selection-modal` Dialog (old `form-heading` testid
  gone), and the tree toggle is now a `radio`, not a `button`.
- DomainDataProductsWidgets: marked `test.describe.serial` (the suite is
  one sequential scenario: assign widgets -> add assets -> verify ->
  remove), and fixed the data-product asset-removal count-timing bug —
  wait for the asset card to render before counting, otherwise count()
  reads 0 and removes nothing.
- GlossaryNavigation empty-state: assert the empty-glossary placeholder
  (message.no-glossary-term) instead of the "No Glossary Term found" row
  that only a non-matching status filter shows.

Unskipped as-is (passed without changes):
- Glossary "Request description task for Glossary Term"
- EntityRenameConsolidation domain rename (x2)

Left skipped (blocked on product/BE work, still documented):
- DataMarketplace x3 (routes removed in open-metadata#27377)
- GlossaryStatusFilterNestedTerms x5 (flat nested status-filter results
  not implemented; status-only queries route through directChildrenOf)
- Glossary "Term should stay approved" (BE approval-workflow reverts it)

BulkImport is untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@siddhant1
siddhant1 requested a review from a team as a code owner July 24, 2026 08:34
Copilot AI review requested due to automatic review settings July 24, 2026 08:34

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

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.

@github-actions

Copy link
Copy Markdown
Contributor

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

🔴 Playwright Results — 1 test failure(s)

✅ 112 passed · ❌ 1 failed · 🟡 5 flaky · ⏭️ 1 skipped

Shard Passed Failed Flaky Skipped
🔴 Shard 1 112 1 5 1

Genuine Failures (failed on all attempts)

Features/Glossary/GlossaryNavigation.spec.ts › should show empty state when glossary has no terms (shard 1)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByText(/there are no Glossary Terms defined/i)
Expected: visible
Timeout: 15000ms
Error: element(s) not found

Call log:
�[2m  - Expect "toBeVisible" with timeout 15000ms�[22m
�[2m  - waiting for getByText(/there are no Glossary Terms defined/i)�[22m

🟡 5 flaky test(s) (passed on retry)
  • Pages/Glossary.spec.ts › Glossary & terms creation for reviewer as user (shard 1, 1 retry)
  • Pages/Glossary.spec.ts › Approve and reject glossary term from Glossary Listing (shard 1, 1 retry)
  • Pages/Glossary.spec.ts › Rename Glossary Term and verify assets (shard 1, 1 retry)
  • Pages/Glossary.spec.ts › Request description task for Glossary Term (shard 1, 2 retries)
  • Pages/Glossary.spec.ts › Column selection and visibility for Glossary Terms table (shard 1, 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

@siddhant1 siddhant1 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 Jul 24, 2026
…dataproducts-e2e

# Conflicts:
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts
Copilot AI review requested due to automatic review settings July 24, 2026 08:41

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Copilot AI review requested due to automatic review settings July 24, 2026 08:47

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@siddhant1 siddhant1 added safe to test Add this label to run secure Github workflows on PRs and removed safe to test Add this label to run secure Github workflows on PRs labels Jul 24, 2026
@siddhant1

Copy link
Copy Markdown
Member Author

Superseded by #30451 — re-opened from a branch on open-metadata/OpenMetadata (this PR's head lived on a fork) so the Playwright E2E CI runs with full repository access. Continuing there.

@siddhant1 siddhant1 closed this Jul 24, 2026
@gitar-bot

gitar-bot Bot commented Jul 24, 2026

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

Re-enables previously skipped Playwright E2E suites for Domains, Data Products, and domain renames with updated component selectors and serial execution. Consider replacing the waitFor() call with a visible assertion for the drawer.

💡 Quality: Use a visible assertion instead of waitFor() for the drawer

📄 openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts:3747

page.getByTestId('add-domain-form').waitFor() waits for attachment only and provides no explicit assertion; the repo's Playwright guidance prefers visible assertions over waitForSelector-style waits. Replace with await expect(page.getByTestId('add-domain-form')).toBeVisible(); so the drawer's readiness is asserted before interacting with the description editor.

Assert the drawer form is visible rather than merely waiting for it.
await page.getByTestId('add-domain').click();
await expect(page.getByTestId('add-domain-form')).toBeVisible();
✅ 1 resolved
Quality: New describe block leaks created table entity (no afterAll)

📄 openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts:3721-3728
The new Domain description editor popups suite creates a table (and its backing database service) in beforeAll via table.create(apiContext) but never deletes it. table.delete deletes the database service recursively, and other suites in this file clean up their entities. Without an afterAll calling table.delete(apiContext), this suite leaks test data on every run. Add an afterAll that performs admin login and calls await table.delete(apiContext).

🤖 Prompt for agents
Code Review: Re-enables previously skipped Playwright E2E suites for Domains, Data Products, and domain renames with updated component selectors and serial execution. Consider replacing the waitFor() call with a visible assertion for the drawer.

1. 💡 Quality: Use a visible assertion instead of waitFor() for the drawer
   Files: openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts:3747

   `page.getByTestId('add-domain-form').waitFor()` waits for attachment only and provides no explicit assertion; the repo's Playwright guidance prefers visible assertions over waitForSelector-style waits. Replace with `await expect(page.getByTestId('add-domain-form')).toBeVisible();` so the drawer's readiness is asserted before interacting with the description editor.

   Fix (Assert the drawer form is visible rather than merely waiting for it.):
   await page.getByTestId('add-domain').click();
   await expect(page.getByTestId('add-domain-form')).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

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.

2 participants