Fix Playwright custom property and lineage flakes - #31528
Conversation
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
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 |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
✅ Playwright Results — workflow succeededValidated commit ✅ 557 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 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) 53m 18s ⏱️ Max setup 4m 34s · max shard execution 19m 46s · max shard-job elapsed before upload 23m 27s · reporting 5s 🌐 212.94 requests/attempt · 2.82 app boots/UI scenario · 12.31% 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 |
The constructed FQN fallback was redundant — the API lookup block above already attempts it. Keep only the visitEntityPageByFqn refactoring. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Code Review ✅ Approved 1 resolved / 1 findingsTightened custom property row removal assertion using exact row key matching and improved synchronization for Playwright lineage and search export flakes. No issues found. ✅ 1 resolved✅ Edge Case: Row removal assertion uses substring text match
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
Describe your changes:
Fixes: N/A - addresses flaky Playwright runs 31664229633, 31553466055, and 31664233665.
I updated table entity navigation to use direct FQN routes where possible, adjusted custom property deletion to assert the captured PATCH response status while verifying the deleted row is gone, and made the Search Export jobs tray download flow refresh the tray state after the export job completes.
RCA
31664229633: the attachedFlow/PlatformLineage.spec.tswas green, but the report's actual PlatformLineage flakes were inPages/Lineage/PlatformLineage.spec.tsforVerify domain platform viewandVerify platform view switching. Both failed inbeforeEachwhile opening the table page:TableClass.visitEntityPage()could fall back to the global-search helper whenentityResponseData.fullyQualifiedNamewas unavailable, and that helper waited for/api/v1/search/querywithindex=dataAsset. In CI, that search request can be skipped, missed, or fail to match the exact wait predicate, so the test timed out after 30s before reaching the lineage assertions. The retry passed because entity/search timing happened to line up on the second attempt.31553466055: the flakySql QueryandStringcustom property tests timed out during the cleanup/delete flow insidedeleteCreatedProperty(). The helper clicked the delete confirmation save button and then waited only for a metadata-typesPATCHresponse, so if that network wait was missed or delayed the test kept waiting until the full 180s timeout. The trace showed the flow reached the delete confirmation step and the retry completed normally, which points to synchronization in the helper rather than a deterministic product failure.31664233665:SearchExport.spec.tsflaked inExport queues a background job and downloads from the jobs tray. The failing attempt spent the test budget waiting for the trayDownloadbutton and then surfaced asTarget page, context or browser has been closedwhen the result response wait was registered after timeout shutdown had started. The test was relying on socket/tray UI state to progress fromExportingtoDownload; if the tray missed or lagged the completion update, the completed job was available through the API but the visible tray state stayed stale. The fix polls the job completion through the authenticated API, then closes/re-opens the tray to trigger its fetch path before locating the Download button inside the tray.Type of change:
High-level design:
N/A - small Playwright flake fix.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
playwright/support/entity/TableClass.ts,playwright/utils/customProperty.ts,playwright/e2e/Features/SearchExport.spec.tsManual testing performed
git diff --checksuccessfully.SearchExport.spec.tsdoes not introducewaitForTimeout,force: true, ornetworkidle.openmetadata-ui/src/main/resources/ui/node_modules/.bin/organize-imports-cli.UI screen recording / screenshots:
Not applicable - no product UI changes.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.