Playwright: mark Setup Domains widget test as slow#28027
Conversation
The test "Setup Domains widget on landing page" hits the 60s default test timeout because its setup is legitimately heavy: - set default persona via UI flow (~22s incl. toContainText wait) - navigate to /settings/persona/<name> + loader settle (~12s) - open customize landing-page editor + add widget modal + save (~3s) - redirect home + first removeLandingBanner 5s waitFor (~7s) - expect.poll iteration to verify the widget under the layout Cumulative ~67s on a 60s budget, so expect.poll never gets to complete an iteration. The page snapshot at failure shows the Domains widget IS rendered — the test would have passed with budget. test.slow() triples the timeout to 180s, restoring comfortable headroom without changing any test or util semantics. The expect.poll pattern in addAndVerifyWidget stays intact (it intentionally handles async ES indexing and banner-blocks-widget reload scenarios for other widgets).
|
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! |
There was a problem hiding this comment.
Pull request overview
This PR reduces Playwright flakiness in the landing page Domains widget setup flow by marking the setup test as slow so it receives the standard 3× timeout.
Changes:
- Mark
Setup Domains widget on landing pageastest.slow()to increase its timeout budget from the default to the slow-test budget.
| test('Setup Domains widget on landing page', async ({ page }) => { | ||
| test.slow(); | ||
| await redirectToHomePage(page); |
| test.describe.serial('Domain Widget Filter', () => { | ||
| test('Setup Domains widget on landing page', async ({ page }) => { | ||
| test.slow(); | ||
| await redirectToHomePage(page); |
Code Review ✅ ApprovedIncreases the timeout for the Setup Domains widget test to 180s using OptionsDisplay: compact → Showing less information. Comment with these commands to change:
Was this helpful? React with 👍 / 👎 | Gitar |
|



Summary
Adds
test.slow()to theSetup Domains widget on landing pagetest inDomainWidgetFilter.spec.tsso it gets the standard 3× timeout (180s) instead of the default 60s. The test runs ~67s of legitimate work in a 60s budget and times out beforeexpect.pollcan finish a single iteration.Why it's failing now
Two earlier commits compounded into a flake:
waitFor({ timeout: 5000 })toremoveLandingBannerso callers don't fail when the welcome modal is already dismissed. Tolerance is correct, but 5s is paid even when the banner isn't there.42ff5a63bf(Mar 2026) wrapped the post-save widget check inaddAndVerifyWidgetwithexpect.poll, callingremoveLandingBanner1× before + 1× per iteration to handle ES indexing lag and avoidnetworkidlehangs on persona routes. This multiplied the 5s waste from 1× to 4×.Neither broke the test alone. Together they pushed the heavy flow (UI persona-set + settings-nav + customize-editor + save + verify) over the 60s line.
Time breakdown (60s budget, AUT trace)
toContainText)removeLandingBanner(5s wait)expect.pollenters iteration 1The page snapshot at failure shows the Domains widget is rendered — the test would have passed with budget.
expect.pollsimply never got a chance.Why
test.slow()instead of a deeper refactorTwo heavier fixes were considered and intentionally deferred:
waitForinremoveLandingBannerwith an immediateisVisible()check. Would shave ~5s per call and benefit every test that touches the helper. Broader blast radius; better as a separate cleanup PR if other tests start flaking./api/v1/users/admin. Would save ~22s but changes test semantics (the UI flow becomes untested in this spec).test.slow()is the smallest, safest change that lets this test pass while preserving theexpect.poll/removeLandingBannerpattern that the Mar 2026 commit added intentionally for ES-indexing-lag scenarios in sibling tests.Test plan
npx playwright test DomainWidgetFilter --reporter=listagainst the AUT — expect both tests in the file to pass (the second testDomains widget should show only selected domain when domain filter is activewas previously skipped viadescribe.serialwhen the first failed).Summary by Gitar
test.slow()to theSetup Domains widgettest to accommodate its ~67s execution time.temporal tableperiod columns fromautoClassificationsampling to resolve issue21329.This will update automatically on new commits.