Fix glossary export playwright - #30585
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! |
1 similar comment
|
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! |
|
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 ✅ 536 passed · ❌ 0 failed · 🟡 1 flaky · ⏭️ 5 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) 56m 53s ⏱️ Max setup 3m 0s · max shard execution 17m 28s · max shard-job elapsed before upload 20m 32s · reporting 5s 🌐 203.07 requests/attempt · 2.86 app boots/UI scenario · 3.24% common-shard skew Optimization targets still in progress:
🟡 1 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
|
Changes have been cherry-picked to the 2.0 branch. |
* fix flaky searchIndexApplication * fix flaky glossary terms popover playwright * revert unwanted changes --------- Co-authored-by: Shrabanti Paul <shrabantipaul@Shrabantis-MacBook-Pro.local> Co-authored-by: Rohit Jain <60229265+Rohit0301@users.noreply.github.com> (cherry picked from commit 00a7b1d)
|
Failed to cherry-pick changes to the 1.13 branch. |
Code Review ✅ ApprovedUpdates the glossary Playwright utility to filter through the tree search input for top-level glossary lookups, resolving flaky test failures caused by virtualized row rendering. No issues found. OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar | Powered by Gitar — free for open source |
…right test (#30680) * fix(ui): center domain/data-product list row items & fix DP detail header title width (#30510) * fix(ui): vertically center domain & data product list row items The AI-mode Domain and Data Product list tables rendered their name cells with `<Box align="start">` (align-items: flex-start), pinning the icon + name to the top of the row instead of centering it — most visible when the name wraps to multiple lines. Use `align="center"` on the name/Domains cells so the icon lines up with the middle of the (single- or multi-line) name. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(ui): don't reserve badge space in the DP header when the status badge is empty DataProductsDetailsPage passed `badge={statusBadge}` to EntityHeader. A truthy `badge` applies `w-max-full-200` (max-width: calc(100% - 200px)) to the title column — reserving 200px even when EntityStatusBadge renders nothing (the common `Unprocessed` status), which squeezed the title into a narrow box and forced long names to wrap/break mid-word. The Domain header passes no badge and is unaffected. Move `statusBadge` into `suffix` (next to the LearningIcon): it still renders inline when a status exists, but no longer reserves 200px, so the title uses its natural width. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci(playwright): give the domain impact-map mapping the Reindex lane The domain/dataProduct mapping selects SearchSeparation `*Domain*` specs (e.g. DomainRenamePrefixCascade.spec.ts) via its `**/*Domain*.spec.ts` glob, but assigned only [chromium, Basic, DomainIsolation]. Those specs are testIgnored from chromium/Basic and only run under the `Reindex` project, so build_playwright_shards.py found no runnable unit and aborted plan-playwright with "matched no runnable tests" on every PR touching Domain/DataProduct UI sources. Add `Reindex` to the mapping's projects so the spec resolves to its real lane and runs. Side-effect is contained: of this mapping's specs, only the SearchSeparation one yields a Reindex unit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fixed the knowledge center translations (#30521) * Fixed the knowledge center translations * minor fix * playwright fix * lint fix * ci(playwright): move import/export specs into a dedicated lane (#30617) * ci(playwright): move import/export specs into a dedicated lane Add an `import-export` planner lane for the ~61 minutes of bulk import/export test content that currently rides in the chromium lane. Chromium is running at (or just under) its shard-budget ceiling in merge_queue; peeling this content off gives the common lane real headroom instead of relying on the 20-min bump alone. - Planner: add `ImportExport` project → `import-export` lane, 2 workers, same (1, 8) shard bounds as ingestion / search-rbac. - playwright.config.ts: new `ImportExport` project (grep `@import-export`, `fullyParallel: true`, `workers: 2`, entity setup + teardown). Chromium's `grepInvert` excludes `@import-export` when the dedicated lane is on, mirroring the `@ingestion` pattern. - Workflow: set `PW_DEDICATED_IMPORT_EXPORT: "true"` on discover + seed-state steps. - Tag 12 specs with `@import-export` (TestCaseImportExport{Basic,E2eFlow}, ODCSImportExport{,Permissions}, GlossaryImportExport, BulkImport{, WithDotInName}, MetricBulkImportExportEdit, BulkEditImportPermissions, CSVImportWithQuotesAndCommas, SearchExport, LineageExportPNGSnapshot). Verified locally: - `pytest .github/scripts/tests/test_playwright_ci_planning.py` — 56 passed. - `playwright test --list --project=ImportExport` enumerates all 12 files. - `playwright test --list --project=chromium` — 0 import/export leaks; 3637 tests remain in chromium. * ci: fix ui-checkstyle formatting on tagged import/export specs Running the full ui-checkstyle-changed chain (organize-imports → eslint --fix → prettier --write) re-indents the describe bodies of the specs whose top-level test.describe I converted to multi-line when adding the @Import-Export tag. Local prettier --check accepted both single-line and multi-line describe forms, but CI's checkstyle wants the prettier-canonical form (body at 4 spaces relative to file when the arrow function opens on its own line). * ci(playwright): include ImportExport project in discovery command Greptile P1: when the dedicated lane is on, chromium's grepInvert excludes @Import-Export specs, but the planner discovery command didn't request the ImportExport project — so those specs were absent from the plan entirely and would never run in CI. Add --project=ImportExport to the discovery list, matching the Ingestion / DomainIsolation / SearchRBAC / etc pattern. * ci(playwright): restore fork PR support on knowledge-graph workflow (#30561) * ci(playwright): restore fork PR support on knowledge-graph workflow Mirrors the pattern #30485 established on playwright-postgresql-e2e.yml to the RDF/knowledge-graph workflow, which #30310 also regressed to pull_request-only. Fork PRs against RDF/ontology paths were previously short-circuited by the `!fork` check on the second job — they built the distribution but silently skipped the entire Playwright run, so RDF work from external contributors ran zero E2E coverage. Changes: - Add pull_request_target trigger with the same paths filter used by pull_request so the scope stays RDF-focused. - Partition the concurrency group by github.event_name so pull_request and pull_request_target runs on the same PR don't cancel each other. - Introduce a `gate` job that waits for Team Label reconciliation on fork synchronize events, reads the reconciled live PR labels via the GitHub API, and computes a should_run decision: workflow_dispatch → run draft → skip labeled event, label != "safe to test" → skip same-repo PR + pull_request → run fork PR + pull_request_target + reconciled "safe to test" label → run everything else → skip - Wire `build` and `playwright-rdf-postgresql` through `needs: gate` with a `needs.gate.outputs.should_run == 'true'` guard. Removes the now-redundant `!github.event.pull_request.head.repo.fork` short- circuit from the RDF job. - Fix the two `actions/checkout@v7` steps to explicitly check out `github.event.pull_request.head.sha` under pull_request_target (base.sha is wrong for testing fork code) and set `allow-unsafe-pr-checkout: true` — the gate already restricted this event to safe-to-test-labelled forks, and the build/test steps consume the fork tree inside docker containers. The workflow doesn't have a playwright-summary job or a named required-check consumer, so no name-collision rename (#30476) is needed here. `pull_request` vs `pull_request_target` runs on the same PR each report their own separate check-run status; gate-skipped runs finish trivially with `should_run=false` and don't perform any docker work. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * add merge_group trigger + name-collision facade for required check Per @chirag Madlani review — two follow-up gaps confirmed: 1. This workflow is required in the merge queue. 2. `Playwright RDF (Knowledge Graph + Ontology)` is a required branch-protection check. Add merge_group support: - Add `merge_group:` to on: triggers. - Add merge_group to the gate's always-run case: workflow_dispatch | schedule | merge_group. Add name-collision handling (same pattern #30476 established for playwright-postgresql-e2e.yml): - Rename the existing execution job's display name from `Playwright RDF (Knowledge Graph + Ontology)` to `RDF Playwright execution` — internal identity only, no longer the required check name. - Add a `playwright-rdf-summary` job with `if: always() && !cancelled()` that publishes a dynamic check name: gate succeeds, should_run=true → `Playwright RDF (Knowledge Graph + Ontology)` gate fails (crash/cancelled) → `Playwright RDF (Knowledge Graph + Ontology)` + hard fail labeled event, non-safe-to-test → `... (label ignored)` gate succeeds, should_run=false → `... (skipped)` - Three steps inside the summary job: "Guard against missing gate decision" — fails loudly when gate itself did not produce a valid should_run "Report gate-skipped run as green" — no-op success for legitimate skips (redundant sibling event, fork without safe-to-test) "Fail on upstream failure" — propagates build / execution job failures under the required check name so the PR fails visibly Without this, both events on a same-repo PR would publish check-runs under `Playwright RDF (Knowledge Graph + Ontology)`; the pull_request_target sibling finishes in ~15s with a green skip while the real pull_request run is still compiling, making the PR appear mergeable before any RDF test executes — the same class of hole #30476 fixed for playwright-summary on postgresql-e2e. No branch-protection update needed — the required check name is preserved end-to-end; only its publisher moved from the underlying execution job to the always-running facade. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * resolve entity schema path from the classpath scan instead of a hardcoded map (#30618) * Fixes 30533: derive entity schema subdirectory from the classpath scan instead of a hardcoded map * gitarbot feedback: make duplicate entity type schema resolution independent of classpath scan order * fix(settings): don't log an unset optional setting as an error (#28960) (#30625) * fix(ui): keep GenericTab's widget grid inside its container (#30622) react-grid-layout derives each grid item's `left` and `width` in pixels and rounds the two independently. Their exact values always sum to the container width, but each rounding can add just under half a pixel, so the right edge of the last column can land 1px outside the container. That pixel is the widget card's right border. An ancestor that scrolls turns it into a horizontal scrollbar; one that clips swallows the border outright. On entity detail pages both happen, because the active tab pane scrolls vertically and CSS promotes the cross axis to `auto` once one axis is not `visible`. Give the grid 1px of horizontal containerPadding. That pulls the exact right edge in to `width - 1`, which the rounding -- bounded at 1px, since the two exact edges sum to the width and each rounding adds under half a pixel -- can never exceed. Across widths 600-2400 and every column split that reaches the right edge, the last column escapes the container at 1575 of 1801 widths today and at none of them with this change. For the 6 + 2 split the entity detail pages actually use, it is one width in four. Adjusting `margin` instead does not work: it is the gutter between items and sits inside the sum that equals the container width, so changing it only moves which widths collide (still 175/701 at every integer value from 0 to 24). * Improve bulk export action stats (#30615) * Improve bulk export action stats * Add auto opened when the export jobs is success * nit * fix stylling * nit * addressed comments * fix lint checks * nit * fix failing unit test * Fixes #30117: hide soft-deleted owners on the Test Suite detail page (#30520) * Fixes #30117: keep soft-deleted owners in PATCH base to fix index crash Editing owners failed with "array item index out of range" when an owner user was soft-deleted. Detail pages fetch with include=all (soft-deleted owner present) and compute a positional JSON Patch, but the server loaded the PATCH base with NON_DELETED, which dropped that owner and shrank the array so the positional op referenced an index past the end. The dangling ownership also could not be removed. Both patch() entry points now load the original with a RelationIncludes that keeps the entity at NON_DELETED but resolves owners/experts/reviewers/ followers with ALL, so the positional patch stays in range and the ID-based updateOwners diff removes the dangling OWNS row. Adds two integration tests reproducing the reported crash (deleted owner sorting last) and the silent wrong-owner removal (deleted owner in the middle). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fixes #30117: tolerate existing soft-deleted owners on PATCH; generic test The first pass loaded the PATCH base with owner/expert/reviewer/follower refs resolved as ALL. That fixed the positional "array item index out of range" crash on owner removal, but getValidatedOwners (which runs on every PATCH) re-validates the whole owner list against NON_DELETED, so ANY edit (e.g. a description change) on an entity carrying a dangling soft-deleted owner then failed with 404 "user instance ... not found". - Narrow the base override to owners only. Experts/reviewers/followers are validated on update against NON_DELETED and would hit the same 404; they are left unchanged as a separate follow-up, per the issue. - Add getValidatedOwnersForPatch: retain owners already assigned in the base (a soft-deleted user is still a valid, existing assignment) and validate only newly added owners against NON_DELETED, so a deleted user still cannot be freshly assigned. - Add a generic BaseEntityIT test so every owner-supporting entity is covered, plus a TestSuite regression test asserting a non-owner edit succeeds and preserves the soft-deleted owner. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fixes #30117: address review - retain authoritative owner refs; document tradeoff - getValidatedOwnersForPatch: retained (already-assigned) owners now use the authoritative ref from the base (resolved with ALL, so names are populated) instead of the client-supplied ref, and the sort uses a null-safe comparator. Prevents a possible NPE/500 when a client sends a minimal (id+type, no name) ref for an already-assigned owner, and keeps response metadata authoritative. - Document the known trade-off on PATCH_ORIGINAL_INCLUDES: callers that diff owners against a NON_DELETED view (a GET sending owners:non-deleted) can misalign against the ALL base; the representation-aware fix is the follow-up the issue flags as a design call. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fixes #30117: hide soft-deleted owners on Test Suite page (align with data assets) Revert the server-side PATCH-base change. Loading the base with owners=ALL fixed the Test Suite crash but regressed the 17+ data-asset detail pages that fetch owners with includeRelations=owners:non-deleted: a positional owner remove computed against the filtered array removed the wrong owner when applied to the longer ALL base. A single server base cannot align with both client owner representations, so the patch itself must carry it - a separate design call the issue flags. Fix the reported crash where the divergence actually is: the Test Suite detail page was the only owner-editing page fetching owners with include=all and no includeRelations override. getTestSuiteByName now defaults owners/experts to non-deleted like every data-asset page, so a soft-deleted owner is not surfaced and the owner-edit diff stays aligned with the server's NON_DELETED PATCH base - no "array item index out of range". Showing and removing soft-deleted owners remains the issue's separate design call. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fixes #30117: honor includeRelations on Test Suite getByName (frontend fix was a no-op) getTestSuiteByName sends includeRelations=owners:non-deleted, but the Test Suite getByName endpoint - unlike getById and every other entity's getByName (e.g. TableResource) - did not accept the param, so the server still resolved owners with include=all and surfaced the soft-deleted owner. The owner-edit crash therefore remained. Wire includeRelations through getByName (same pattern as getById / TableResource.getByName), and add an IT that proves it: an include=all fetch still surfaces the soft-deleted owner, but includeRelations=owners:non-deleted hides it. Verified RED (without the wiring the assertion fails - owner still surfaced) and GREEN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Sid <30566406+siddhant1@users.noreply.github.com> * Fix glossary export playwright (#30585) * fix flaky searchIndexApplication * fix flaky glossary terms popover playwright * revert unwanted changes --------- Co-authored-by: Shrabanti Paul <shrabantipaul@Shrabantis-MacBook-Pro.local> Co-authored-by: Rohit Jain <60229265+Rohit0301@users.noreply.github.com> * ISSUE #30151 - Incident Grouping Endpoint (#30367) * feat: added incident group endpoint * feat: added owner, status, assignee, severiuty and bucket for client metrics * feat: added owner, status, assignee, severiuty and bucket for client metrics * empty commit for CI trigger * feat: remove n+1 in entity ref. retrieval when resolving group references * feat: ignore optional argumewnt static check error * feat: address comments and fix failing integration tests * feat: revert pre existing migrations to 2.0 * feat: address first pass review * feat: move endpoint data to summary table * feat: address comments * feat: address comments * chore: fix migration * fix Column Bulk Operations tag & glossary dropdowns not selectable in the edit drawer (#30634) * fix Column Bulk Operations tag & glossary dropdowns not selectable in the edit drawer * fix lint checks * fix(test): correct EditAll-deny test assertions in EntityPermissions When EditAll is in a DENY rule it subsumes all Edit* operations via matchesBySubsumption(), so EditTier/EditOwners/EditCertification buttons are not visible even when those operations have explicit ALLOW rules. Updated assertions from toBeVisible() to not.toBeVisible() and unskipped the test to reflect actual backend deny-first policy semantics. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Sid <30566406+siddhant1@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Co-authored-by: Vishnu Jain <121681876+Vishnuujain@users.noreply.github.com> Co-authored-by: Anujkumar Yadav <anujf0510@gmail.com> Co-authored-by: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Co-authored-by: shrabantipaul-collate <shrabanti.paul@getcollate.io> Co-authored-by: Shrabanti Paul <shrabantipaul@Shrabantis-MacBook-Pro.local> Co-authored-by: Teddy <teddy.crepineau@gmail.com>
Describe your changes:
Fixes #
I worked on ... because ...
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Greptile Summary
Updates the glossary Playwright helper to make virtualized tree expansion more reliable.
Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Reviews (3): Last reviewed commit: "Merge branch 'main' into fix-glossary-ex..." | Re-trigger Greptile