Skip to content

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

Merged
siddhant1 merged 20 commits into
mainfrom
sid/reenable-domains-dataproducts-e2e
Jul 31, 2026
Merged

test(ui): re-enable Domains, Data Product & domain-rename E2E suites#30451
siddhant1 merged 20 commits into
mainfrom
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 stabilizes previously skipped Playwright coverage.

  • Re-enables domain, domain-rename, glossary, and landing-page widget scenarios.
  • Updates selectors and empty-state assertions for migrated UI components.
  • Serializes the stateful domain/data-product widget suite and waits for asset cards before removal.
  • Correctly creates an authenticated page for the re-enabled glossary-term description-task test.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains in the reviewed fix.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/EntityRenameConsolidation.spec.ts Re-enables two domain rename and description-update consolidation scenarios.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryNavigation.spec.ts Re-enables the empty-glossary scenario and updates its assertion to the current placeholder.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainDataProductsWidgets.spec.ts Runs the stateful widget scenarios serially and makes data-product asset removal wait for rendered cards.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts Re-enables domain suites and updates selectors for the migrated asset-selection interface.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts Re-enables the glossary-term description-task scenario with a live authenticated page and web-first assertion.

Reviews (17): Last reviewed commit: "Revert "ci(playwright): restore real wei..." | Re-trigger Greptile

siddhant1 and others added 3 commits July 24, 2026 14:03
Re-enables E2E coverage that was disabled by the mass-skip #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 #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>
…dataproducts-e2e

# Conflicts:
#	openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts
@siddhant1
siddhant1 requested a review from a team as a code owner July 24, 2026 09:05
Copilot AI review requested due to automatic review settings July 24, 2026 09:05

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!

@siddhant1 siddhant1 added 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
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

✅ Playwright Results — workflow succeeded

Validated commit 90c549b75f497df104e672f98476c8f40386887e in Playwright run 30612140021, attempt 1.

✅ 161 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 4 skipped · 🧰 0 lifecycle flaky

Performance

Blocking 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) 52m 51s

⏱️ Max setup 1m 33s · max shard execution 19m 31s · max shard-job elapsed before upload 22m 33s · reporting 3s

🌐 212.68 requests/attempt · 2.61 app boots/UI scenario · 0.00% common-shard skew

Optimization targets still in progress:

  • Browser traffic was 212.68 requests per attempt (convergence target: fewer than 200).
  • Application boot ratio was 2.61 per UI scenario (443 boots / 170 scenarios; convergence target: at most 1).
Shard Passed Failed Flaky Skipped Lifecycle failed Lifecycle flaky
✅ Shard chromium-01 161 0 0 4 0 0

📦 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 enabled auto-merge (squash) July 24, 2026 10:07
anuj-kumary
anuj-kumary previously approved these changes Jul 24, 2026
@siddhant1
siddhant1 disabled auto-merge July 24, 2026 10:13
Copilot AI review requested due to automatic review settings July 24, 2026 10:13

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.

await selectActiveGlossary(page, glossary1.data.displayName);
await selectActiveGlossaryTerm(page, glossaryTerm1.data.displayName);
test('Request description task for Glossary Term', async ({ browser }) => {
const { page, afterAction, apiContext } = await performAdminLogin(browser);

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.

P1 Authenticated page is never created

When the re-enabled description-task test runs, performAdminLogin(browser) takes the API-only path and returns no page, so the first sidebarClick receives undefined and the test fails before exercising the description-task workflow.

Copilot AI review requested due to automatic review settings July 24, 2026 11:52

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 17:27

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.

Comment thread openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts Outdated
@siddhant1
siddhant1 requested review from a team, harshach and tutte as code owners July 31, 2026 06:00

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.

chromium-18 was killed by the 25m timeout wrapper on merge-queue run
30603720876 (exit 124, PW_EXECUTION_SECONDS=1500): 244 tests planned, 236
finished, 8 never ran. The shard genuinely needs more than 25 minutes, so
raising the gate alone is not enough — the wrapper has to move too.

- shard wrapper 25m -> 30m
- job timeout-minutes 35 -> 40; the killed job's wall was 28m46s against a
  25m wrapper, so overhead is ~4m and 35 would leave almost none. Keeping the
  job clock a clear 10m above the wrapper means the wrapper always trips
  first, which fails the shard cleanly instead of cancelling mid-upload.
- executionAtMostTwentyFiveMinutes (1500) -> executionAtMostThirtyMinutes (1800)
- shardsAtMostThirtyMinutesBeforeUpload (1800) ->
  shardsAtMostThirtyFiveMinutesBeforeUpload (2100); elapsed runs ~200s above
  execution, so a 30m wrapper would otherwise breach the old 1800s cap.

This does not reduce the underlying skew: the same run had 35.67% common
shard skew, so one shard runs ~30m while others finish in 3m. That stays a
convergence warning and wants a planner fix, not a bigger timeout.
Copilot AI review requested due to automatic review settings July 31, 2026 06:06

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 enabled auto-merge July 31, 2026 06:08
Copilot AI review requested due to automatic review settings July 31, 2026 06:08

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.

…ng baseline

The planner weights every test from timing-baseline.json. load_history pins a
recorded `skipped` entry to 0:

    elif test_id and test.get("outcome") == "skipped":
        durations[test_id].append(0)

and build_playwright_shards.py reads it as

    test_weights.get(test_id, identity_weights.get(..., FALLBACK_TEST_MS))

so an explicit 0 wins over the 20 s fallback. Once a PR re-enables those specs
the planner still costs them at zero, packs them onto one shard, and the shard
overruns its wrapper with no warning: on merge-queue run 30603720876 chromium-18
was predicted at 18.8 min (predictedExecutionMs 1128075) and was killed at the
25 min wrapper with 8 of 244 tests unrun. Domains.spec.ts alone ran 1157 s there
against a recorded weight of 0.

Refresh the 76 entries that were recorded `skipped` with 0 ms and have real
durations in the timing history of run 30590319979 (mode=full, all 34 shards
green): +1500 s of weight the planner could not previously see. Entries still
skipped in that run keep their zero, and the two genuinely instant `expected`
0 ms entries are left alone — they already fall through to FALLBACK_TEST_MS,
and test_versioned_baseline_only_uses_zero_weight_for_skipped_ids asserts it.

Replanned locally against the real `playwright test --list` for this branch:

    workers  Domains.spec.ts spread   max tests/shard   chromium shards
    3        2 -> 9 shards            243 -> 213        22 -> 23
    4        2 -> 7 shards            343 -> 280        17 -> 17

Predicted execution stays ~18.5-18.8 min, but it is now honest: the weight the
shard actually carries is visible to the planner instead of arriving as ~7.5 min
of unbudgeted work at 3 workers.
Copilot AI review requested due to automatic review settings July 31, 2026 06:26

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 31, 2026
…the timing baseline"

Drops the timing-baseline.json change from this PR so it carries only the
re-enabled specs. The zero-weight planner blind spot it addressed is real —
Domains.spec.ts is recorded at 0 ms against ~1073 s of actual work, which is
what let chromium-18 be planned at 18.8 min and killed by the 25 min wrapper —
but it will be handled by splitting the spec instead: moving the tests to new
files changes their Playwright ids (the id prefix is a per-file hash), so the
stale zero-weight entries no longer match and the tests fall through to
FALLBACK_TEST_MS.

Note this also gives up the restored weights for the other files the baseline
patch covered, ~468 s in total, notably DomainDataProductsWidgets.spec.ts
(186.5 s) and EntityRenameConsolidation.spec.ts (26.6 s), both re-enabled by
this PR and now back at zero.

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.

@gitar-bot

gitar-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Re-enables and fixes Playwright E2E suites for Domains, Data Products, and glossary navigation by updating migrated component selectors and serializing test execution. No issues found.

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

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.

4 participants