Skip to content

test(playwright): de-flake CustomPropertiesPanel edit, ProfileTeam search and PersonaSettings curated widget - #36652

Merged
Rohit0301 merged 5 commits into
mainfrom
Rohit0301/run-40998300289-failures
Oct 31, 2026
Merged

Rohit0301 merged 5 commits into
mainfrom
Rohit0301/run-40998300289-failures

Conversation

@Rohit0301

@Rohit0301 Rohit0301 commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Describe your changes:

Fixes the merge-queue flakes reported by the Playwright Flaky Daily Report run 40998300289:

  • Features/AIMode/CustomPropertiesPanel.spec.ts › edits a custom property display name and description
  • Pages/AIProfile/ProfileTeam.spec.ts › Should search teams in the Organization sub-teams table
  • Features/AIMode/PersonaSettings.spec.ts › Home page: a configured Curated Assets widget is saved

Why they started on 2026-10-29: none of these tests appears in any earlier daily report, and neither the tests nor their features changed. The CI shard planner packs specs by rolling timing history, and #35902 reshaped its lanes. After the repack these tests ran next to new neighbours under more load. For example, CustomPropertiesPanel moved into the same shard as Pages/CustomProperties.spec.ts. That exposed timing races in the tests. Evidence comes from the CI blob reports' failure snapshots.

Test Root cause Fix (test-only)
CustomPropertiesPanel edit The save PATCH returned 200, but the row still showed Initial description. Parallel specs, and sibling tests in this spec, were adding and removing properties on the shared table type in the same second and overwrote the edit. The edit test now uses the worksheet type. No other spec adds, edits or removes worksheet custom properties; only entity-data-setup touches it, before the tests run. The helpers take the type as a parameter and default to table.
ProfileTeam search The search box waits briefly after typing before applying the search, and applying it writes the term back into the box. The test only checked that the team was visible, which was already true before any filter ran, so it typed `non-existent-team-xyz` before the first search applied. The late write-back then reverted the box, as the CI snapshot shows, and the team stayed visible. The search filters the already-loaded teams in the browser, so there is no request to await; the table state is the signal. Each step now waits for its result before the next: search, then only that team listed; clear, then the box empty and the full list back; new term, then the box holds it and the team is hidden. No retry loop.
PersonaSettings curated widget (a) A cold load of `/#personas/...` raced the boot's auth and landing redirects, which can replace the URL before the settings store reads its hash. The app settled on Home and `GET /personas/name/...` never fired (3-minute timeout). (b) Picking Table fires a debounced asset count, and its banner renders inside the dialog. A local failure trace shows the count landing between opening the operator list and the click, so the shifted list picked "Not in" and Save stayed disabled. (a) `openPersonaSettings` boots through `redirectToHomePage` (which already handles first-boot recovery) and then opens the deep link inside the running app. The custom-properties wait now counts only requests issued after it is armed, so a fetch the Home page still has in flight cannot satisfy it. (b) The test waits for that count request and its banner before building the rule, then picks field, operator and value with web-first assertions. No retry loops.

Type of change:

  • Bug fix

High-level design:

N/A — test-only change to three specs.

Tests:

Use cases covered

  • Edit a custom property's display name and description from the AI-mode Custom Properties panel
  • Search and clear-search the Organization sub-teams table
  • Configure and save a Curated Assets widget on a persona's Home page layout via its deep link

Unit tests

Not applicable (no app code changes).

Backend integration tests

  • Not applicable (no backend API changes).

Ingestion integration tests

  • Not applicable (no ingestion changes).

Playwright (UI) tests

  • Files updated: CustomPropertiesPanel.spec.ts, ProfileTeam.spec.ts, PersonaSettings.spec.ts
  • Ran the three tests 10× each with 3 workers, no retries and `--no-deps` (`entity-data-setup` not run), against a local server: 30 passed (3.6m). This run used the first version of the PersonaSettings fix (first screenshot).
  • After replacing the PersonaSettings retries with the deterministic waits above:
    • Curated Assets test 10× with 3 workers: 10 passed (2.4m).
    • Whole `PersonaSettings.spec.ts` once with 3 workers, since every test uses `openPersonaSettings`: 20 passed (2.0m) (second screenshot).
  • After the ProfileTeam search → clear → search change above, the search test 10× with 3 workers: 10 passed (54.4s) (third screenshot).
  • ESLint (0 errors; 4 warnings in `CustomPropertiesPanel.spec.ts` that were already there) and Prettier are clean on the changed files.
  • Before any fix, the same 10× run also passed 30/30, so the CI failures did not reproduce locally. The operator mis-pick did reproduce once, and its trace is what pinned down the asset-count race.
npx playwright test \
  playwright/e2e/Features/AIMode/CustomPropertiesPanel.spec.ts:305 \
  playwright/e2e/Pages/AIProfile/ProfileTeam.spec.ts:144 \
  playwright/e2e/Features/AIMode/PersonaSettings.spec.ts:939 \
  --project=chromium --repeat-each=10 --workers=3 --retries=0 --no-deps

Playwright 10x run: 30 passed

PersonaSettings runs: 10 passed, 20 passed

ProfileTeam search: 10 passed

Manual testing performed

None beyond the Playwright runs above.

UI screen recording:

Not applicable — test-only change.

Checklist:

  • I have read the CONTRIBUTING document.
  • I have commented on my code, particularly in hard-to-understand areas.
  • I have added tests (unit / integration / Playwright as applicable) and listed them above.

🤖 Generated with Claude Code

…arch and PersonaSettings curated widget

- CustomPropertiesPanel: run the edit test on the worksheet type, which no
  other spec mutates, so a parallel write to the shared table type cannot
  overwrite the edit.
- ProfileTeam: re-fill the debounced team search until the term sticks and
  the table shows its result; the echoed previous term could revert the input.
- PersonaSettings: re-apply the persona deep link when the boot drops its
  hash, and re-pick the query-builder operator until the rule reads
  "Contains" and holds its value.
@Rohit0301 Rohit0301 added the skip-pr-checks Bypass PR metadata validation check label Oct 30, 2026
@Rohit0301
Rohit0301 requested a review from a team as a code owner October 30, 2026 06:32
@github-actions github-actions Bot added the UI UI specific issues label Oct 30, 2026
@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!

@Rohit0301 Rohit0301 self-assigned this Oct 30, 2026
@Rohit0301 Rohit0301 added the safe to test Add this label to run secure Github workflows on PRs label Oct 30, 2026
…e the curated-assets count

Replace the PersonaSettings retry loops with deterministic waits:
- openPersonaSettings boots through redirectToHomePage and opens the hash
  deep link inside the running app, so the boot's redirects cannot drop it.
  The custom-properties wait only counts requests issued after it is armed.
- The Curated Assets test waits for the asset-count request fired by the
  Table pick and its banner before building the rule; the banner rendering
  under an open dropdown moved the options and picked "Not in".
@Rohit0301
Rohit0301 enabled auto-merge October 30, 2026 07:16
… next term

Replace the ProfileTeam re-fill loop: the debounced search writes the applied
term back into the input, so a term typed before that overwrote it. Wait until
the table lists only the searched team, which is the render that applies the
term, then search again.
@Rohit0301
Rohit0301 added this pull request to the merge queue Oct 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚦 Removed from the merge queue — failed_checks (2026-10-31T00:16:00Z)

Blocked the queue: playwright-summary

Failed Playwright tests:

  • Features/OntologyFirstRun.spec.ts › creates an ontology from scratch and lands in Edit with the New class panel
  • Features/OntologyNativeAuthoring.spec.ts › a competing lease leaves no partial class and the form stays usable
  • Features/OntologyNativeAuthoring.spec.ts › creates every class field atomically, preserves free space, and cancels provisional relations
  • Features/OntologyNativeExport.spec.ts › downloads every format of the current ontology release, then gates on SHACL
  • Features/OntologyNativeStudio.spec.ts › authors a native model through the shared View, Edit, and Query shell

@Rohit0301
Rohit0301 enabled auto-merge October 31, 2026 06:23
@gitar-bot

gitar-bot Bot commented Oct 31, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

🟢 Low risk · These changes adjust Playwright setup, waits, and test data isolation only, leaving application behavior and public interfaces unchanged.

Test-only de-flake of three Playwright specs: CustomPropertiesPanel edit now uses the isolated worksheet type, ProfileTeam search waits for each step's result before continuing, and PersonaSettings curated widget opens its deep link inside the running app and waits for the asset count before picking rule values. No issues found.

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

Auto-approval Not enabled

Set up

For more verification details, comment gitar display:verbose.

Options

Display: compact → Showing compact verification results.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@Rohit0301
Rohit0301 added this pull request to the merge queue Oct 31, 2026
Merged via the queue into main with commit 9bc9517 Oct 31, 2026
65 checks passed
@Rohit0301
Rohit0301 deleted the Rohit0301/run-40998300289-failures branch October 31, 2026 15:48
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