Skip to content

Added playwright test for memories page#29737

Open
Rohit0301 wants to merge 2 commits into
mainfrom
memories-page-playwrigh-test
Open

Added playwright test for memories page#29737
Rohit0301 wants to merge 2 commits into
mainfrom
memories-page-playwrigh-test

Conversation

@Rohit0301

@Rohit0301 Rohit0301 commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Describe your changes:

Fixes #

I worked on ... because ...

Type of change:

  • Bug fix
  • Improvement
  • New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

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:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes <issue-number>: <short explanation>
  • My PR is linked to a GitHub issue via Fixes #<issue-number> above.
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.
  • For UI changes: I attached a screen recording and/or screenshots above.
  • I have added tests (unit / integration / Playwright as applicable) and listed them above.

Summary by Gitar

  • UI Refactor:
    • Migrated CreateMemoryModal state management to react-hook-form for improved form logic and validation.
    • Updated CreateMemoryModal to use FieldProp for consistent component rendering and field definitions.
  • Testing:
    • Added ContextCenterMemories.spec.ts Playwright test suite to cover memory creation flows, form validation, and markdown preview functionality.

This will update automatically on new commits.

Greptile Summary

This PR adds a Playwright E2E test suite for the Context Center Memories page and refactors CreateMemoryModal to use react-hook-form for form state management.

  • New test suite (ContextCenterMemories.spec.ts): 1,700+ lines covering form validation, memory CRUD, filters/search, sort options, copy-link, pagination, and visibility enforcement — including a non-admin permission scenario.
  • Component refactor (CreateMemoryModal.component.tsx): Replaces manual useState-based form tracking with useForm + FormField/getField primitives from the UI library, and introduces FieldProp definitions for the title and type fields.
  • Two bugs in the component refactor: memoryTab is not reset in handleClose (leaves the modal in Preview mode on reopen), and tag.data.style is accessed without optional chaining (can throw if a tag option omits data).

Confidence Score: 3/5

The component refactor introduces two bugs that can surface in the existing UI; both are straightforward single-line fixes but should be resolved before merging.

The modal will silently stay on the Preview tab after a user closes it during preview mode — affecting every subsequent create-memory flow in that session. Separately, accessing tag.data.style without optional chaining will throw whenever a tag option omits the data property, crashing the tag save handler. The test suite is well-structured but three tests can leave orphaned API data on failure, which can pollute subsequent runs.

CreateMemoryModal.component.tsx — the handleClose function and handleTagSave need one-line fixes each before this is production-ready.

Important Files Changed

Filename Overview
openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx Component refactored to use react-hook-form; two bugs introduced: memoryTab state not reset on modal close, and unsafe tag.data.style access that can throw at runtime.
openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/ContextCenterMemories.spec.ts New comprehensive Playwright E2E test suite covering form validation, CRUD, filters, pagination, and visibility enforcement; inline cleanup in three tests could leave orphaned data on assertion failure.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User opens modal] --> B{memoryToEdit?}
    B -- Yes --> C[useEffect: form.reset with existing data]
    B -- No --> D[Default form values]
    C --> E[Edit / View mode]
    D --> E
    E --> F{User action}
    F -- Switch tab --> G[memoryTab: edit / preview]
    F -- Submit --> H[handleSubmit]
    F -- Cancel --> I[handleClose]
    H -- Create --> J[createContextMemory API]
    H -- Edit --> K[updateContextMemory PATCH API]
    J --> L[onCreated callback]
    K --> M[onUpdated callback]
    I --> N[Reset: form, linkedAssets, tags, showTagForm, modalError, isEditingVisibility, isViewOnly]
    I -. missing .-> O[❌ memoryTab NOT reset]
    N --> P[onClose]
    L --> P
    M --> P
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[User opens modal] --> B{memoryToEdit?}
    B -- Yes --> C[useEffect: form.reset with existing data]
    B -- No --> D[Default form values]
    C --> E[Edit / View mode]
    D --> E
    E --> F{User action}
    F -- Switch tab --> G[memoryTab: edit / preview]
    F -- Submit --> H[handleSubmit]
    F -- Cancel --> I[handleClose]
    H -- Create --> J[createContextMemory API]
    H -- Edit --> K[updateContextMemory PATCH API]
    J --> L[onCreated callback]
    K --> M[onUpdated callback]
    I --> N[Reset: form, linkedAssets, tags, showTagForm, modalError, isEditingVisibility, isViewOnly]
    I -. missing .-> O[❌ memoryTab NOT reset]
    N --> P[onClose]
    L --> P
    M --> P
Loading

Comments Outside Diff (1)

  1. openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx, line 383-397 (link)

    P1 tag.data.style will throw a TypeError at runtime when tag.data is undefined. The typeof tag === 'string' guard above only protects tagFQN; the style access has no such protection. Adding optional chaining makes it safe regardless of what TagSelectForm provides.

Reviews (1): Last reviewed commit: "Merge branch 'main' into memories-page-p..." | Re-trigger Greptile

Greptile also left 3 inline comments on this PR.

@Rohit0301 Rohit0301 self-assigned this Jul 3, 2026
@Rohit0301 Rohit0301 requested a review from a team as a code owner July 3, 2026 13:51
@Rohit0301 Rohit0301 added the safe to test Add this label to run secure Github workflows on PRs label Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

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.

<Typography ellipsis size="text-lg" weight="semibold">
{modalTitle}
</Typography>
<HookForm form={form} onSubmit={form.handleSubmit(handleSubmit)}>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Bug: Submit handler wired both to onSubmit and onClick

The RHF submit handler is attached in two places: the HookForm's onSubmit={form.handleSubmit(handleSubmit)} (line 615) and the submit Button's onClick={() => form.handleSubmit(handleSubmit)()} (lines 1132-1134). If the core-components Button renders a native type="submit" element, clicking it would both trigger the form's native submit AND the onClick, invoking handleSubmit (and thus createContextMemory/updateContextMemory) twice, creating duplicate memories. This appears safe only if Button defaults to type="button". Recommend driving submission from a single source — e.g. make the button type="submit" and rely on the form's onSubmit, or keep the onClick and remove the form-level onSubmit — to avoid an accidental double network call.

Was this helpful? React with 👍 / 👎

@gitar-bot

gitar-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown
Code Review 👍 Approved with suggestions 0 resolved / 1 findings

Integrates Playwright E2E tests for the memories page and migrates the memory creation modal to React Hook Form for better validation. Consolidate the form submission handler to remove redundant calls on both onSubmit and onClick.

💡 Bug: Submit handler wired both to onSubmit and onClick

📄 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:615 📄 openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:1132-1134

The RHF submit handler is attached in two places: the HookForm's onSubmit={form.handleSubmit(handleSubmit)} (line 615) and the submit Button's onClick={() => form.handleSubmit(handleSubmit)()} (lines 1132-1134). If the core-components Button renders a native type="submit" element, clicking it would both trigger the form's native submit AND the onClick, invoking handleSubmit (and thus createContextMemory/updateContextMemory) twice, creating duplicate memories. This appears safe only if Button defaults to type="button". Recommend driving submission from a single source — e.g. make the button type="submit" and rely on the form's onSubmit, or keep the onClick and remove the form-level onSubmit — to avoid an accidental double network call.

🤖 Prompt for agents
Code Review: Integrates Playwright E2E tests for the memories page and migrates the memory creation modal to React Hook Form for better validation. Consolidate the form submission handler to remove redundant calls on both onSubmit and onClick.

1. 💡 Bug: Submit handler wired both to onSubmit and onClick
   Files: openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:615, openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx:1132-1134

   The RHF submit handler is attached in two places: the `HookForm`'s `onSubmit={form.handleSubmit(handleSubmit)}` (line 615) and the submit `Button`'s `onClick={() => form.handleSubmit(handleSubmit)()}` (lines 1132-1134). If the core-components `Button` renders a native `type="submit"` element, clicking it would both trigger the form's native submit AND the onClick, invoking `handleSubmit` (and thus `createContextMemory`/`updateContextMemory`) twice, creating duplicate memories. This appears safe only if `Button` defaults to `type="button"`. Recommend driving submission from a single source — e.g. make the button `type="submit"` and rely on the form's `onSubmit`, or keep the onClick and remove the form-level `onSubmit` — to avoid an accidental double network call.

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

Comment on lines 357 to 366
@@ -332,7 +365,7 @@ const CreateMemoryModal: FC<CreateMemoryModalProps> = ({
onClose();
};

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 memoryTab not reset on close

handleClose resets all other UI state (linkedAssets, selectedTags, showTagForm, modalError, isEditingVisibility, isViewOnly) but never calls setMemoryTab('edit'). The same omission exists in the useEffect that fires when memoryToEdit changes (line ~316). If a user switches to the Preview tab then clicks Cancel, the next time they open the modal they will be dropped into Preview mode and the textarea won't be visible.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +407 to +454
test('row shows linked entity badge when memory has a primary entity', async ({
browser,
page,
}) => {
test.slow();

const table = await fetchFirstTable(page);
if (!table?.id) {
test.skip();

return;
}

const { apiContext, afterAction } = await createNewPage(browser);
const linkedName = `cc_memory_linked_${uuid()}`;
const createRes = await apiContext.post(MEMORIES_API, {
data: {
name: linkedName,
title: `Linked Entity Memory ${uuid()}`,
question: 'Memory with linked entity',
answer: 'Linked to a data asset.',
shareConfig: { visibility: 'Shared' },
primaryEntity: {
id: table.id,
type: table.entityType ?? 'table',
name: table.name,
displayName: table.displayName,
fullyQualifiedName: table.fullyQualifiedName,
},
},
});
expect(createRes.status()).toBe(201);
const created = await createRes.json();
const linkedMemoryId = created.id;
await afterAction();

await navigateToMemories(page);

const row = page.getByTestId(`memory-row-${linkedMemoryId}`);
await row.scrollIntoViewIfNeeded();
await expect(row).toBeVisible();
await expect(row).toContainText(table.displayName ?? table.name);

const { apiContext: cleanCtx, afterAction: cleanAfter } =
await createNewPage(browser);
await cleanCtx.delete(`${MEMORIES_API}/${linkedMemoryId}?hardDelete=true`);
await cleanAfter();
});

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.

P2 Inline cleanup can leave orphaned test data

The memory created at line 422 (linkedMemoryId) is cleaned up at the bottom of the test body (lines 450–453). If any assertion between creation and cleanup fails, the memory is never deleted. The same pattern appears in the "changing visibility from Shared to Private shows 'visible only to you' after save" test (around line 1209) and the "linked asset card shows remove button" test (around line 1502). Wrapping these in a scoped afterEach or tracking the ID in globalMemoryIds would ensure cleanup runs even on failure.

Comment on lines +892 to +895
// The copy-link button is the first button inside the row's actions area
// (before the edit and delete actions)
await row.getByRole('button').first().click();

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.

P2 Fragile button selector relies on positional ordering

row.getByRole('button').first() selects the copy-link button by position. The comment acknowledges the assumption, but if the row's button order ever changes (e.g., an icon is prepended, or the action buttons are reordered), this test will silently click the wrong button and produce a confusing failure. Prefer a stable data-testid selector like row.getByTestId('copy-link-btn') if one exists, or add one.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

❌ UI Checkstyle Failed

❌ ESLint + Prettier + Organise Imports (src)

One or more source files have linting or formatting issues.

Affected files
  • openmetadata-ui/src/main/resources/ui/src/components/ContextCenter/CreateMemoryModal/CreateMemoryModal.component.tsx

❌ Playwright - ESLint + Prettier + Organise Imports

One or more Playwright test files have linting or formatting issues.

Affected files
  • openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/ContextCenterMemories.spec.ts

Fix locally (fast - only checks files changed in this branch):

make ui-checkstyle-changed

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

🔴 Playwright Results — 25 failure(s), 20 flaky

✅ 4506 passed · ❌ 25 failed · 🟡 20 flaky · ⏭️ 41 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 442 0 1 16
🔴 Shard 2 791 24 6 6
🟡 Shard 3 813 0 3 12
🟡 Shard 4 819 0 2 5
🔴 Shard 5 828 1 1 0
🟡 Shard 6 813 0 7 2

Genuine Failures (failed on all attempts)

Features/BulkEditEntity.spec.ts › Database Schema (shard 2)
Error: Unable to fill the active grid description editor
Features/ContextCenterMemories.spec.ts › Preview tab renders markdown content correctly (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByRole('dialog').locator('.prose')
Expected: visible
Error: strict mode violation: getByRole('dialog').locator('.prose') resolved to 7 elements:
    1) <div class="prose tw:truncate">…</div> aka locator('div').filter({ hasText: /^Add Memory$/ }).nth(4)
    2) <div class="prose tw:p-3 tw:rounded-lg tw:border tw:border-secondary tw:bg-tertiary tw:text-secondary tw:h-36 tw:overflow-y-auto tw:resize-y">…</div> aka locator('div').filter({ hasText: /^Bold text and italic text$/ })
    3) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Linked Data Assets \(0\)$/ })
    4) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Not linked to any data asset$/ }).nth(1)
    5) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Metadata$/ })
    6) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Visibility$/ }).nth(1)
    7) <div class
Features/ContextCenterMemories.spec.ts › clearing search restores the unfiltered list (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › "All" tab shows all visible memories (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › clicking "Created by Me" count card activates the created-by-me filter (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › author filter dropdown opens with search input and "All Authors" option (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByRole('menuitem', { name: /all.*author/i })
Expected: visible
Timeout: 15000ms
Error: element(s) not found

Call log:
�[2m  - Expect "toBeVisible" with timeout 15000ms�[22m
�[2m  - waiting for getByRole('menuitem', { name: /all.*author/i })�[22m

Features/ContextCenterMemories.spec.ts › selecting an author filters memories to their content (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › "Clear All" button resets author and asset filters (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › clicking "All" tab after applying an author filter clears the filter (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › no results message is shown when search matches nothing (shard 2)
Error: toContainText can be only used with Locator object
Features/ContextCenterMemories.spec.ts › sort dropdown shows all three sort options (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByRole('menuitem', { name: /recently updated/i })
Expected: visible
Timeout: 15000ms
Error: element(s) not found

Call log:
�[2m  - Expect "toBeVisible" with timeout 15000ms�[22m
�[2m  - waiting for getByRole('menuitem', { name: /recently updated/i })�[22m

Features/ContextCenterMemories.spec.ts › selecting "Most Used" reloads memories and updates the sort label (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › selecting "Updated By" reloads memories and updates the sort label (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › editing memory content updates the memory (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoContainText�[2m(�[22m�[32mexpected�[39m�[2m)�[22m failed

Locator: getByRole('dialog').locator('.prose')
Expected substring: �[32m"Updated content 0fed6ccb"�[39m
Error: strict mode violation: getByRole('dialog').locator('.prose') resolved to 13 elements:
    1) <div class="prose tw:truncate">…</div> aka locator('div').filter({ hasText: /^Edit Fields Memory bc1637cc$/ }).nth(2)
    2) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Created By$/ })
    3) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Jul 3, 2026$/ }).first()
    4) <div class="prose tw:p-3 tw:rounded-lg tw:border tw:border-secondary tw:bg-secondary tw:h-36 tw:overflow-y-auto tw:resize-y">…</div> aka getByRole('dialog').locator('div').filter({ hasText: /^Updated content 0fed6ccb$/ })
    5) <div class="prose">…</div> aka locator('div').filter({ hasText: /^Linked Data Assets \(0\)$/ })
    6) <div class="prose">…</div> aka locator('d
Features/ContextCenterMemories.spec.ts › editing visibility from Shared to Private saves and updates the badge (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › Private memory shows "visible only to you" description (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoContainText�[2m(�[22m�[32mexpected�[39m�[2m)�[22m failed

Locator: getByRole('dialog')
Expected pattern: �[32m/visible only to you/i�[39m
Received string:  �[31m"CC Memory Private 3a3d3189Created ByAadmin·Jul 3, 2026TitleMemoryOnly the creator can see this.TypeNote FAQNotePreferenceRunbookUse CaseLinked Data Assets (0)Not linked to any data assetMetadataVisibilityPrivateOnly visible to you.TagsUpdatedJul 3, 2026Derived OntologyOntology: QueuedNo derived or reused ontology found for this memory.DeleteCancelEdit"�[39m
Timeout: 15000ms

Call log:
�[2m  - Expect "toContainText" with timeout 15000ms�[22m
�[2m  - waiting for getByRole('dialog')�[22m
�[2m    19 × locator resolved to <section data-rac="" role="dialog" tabindex="-1" class="tw:flex tw:w-full tw:items-center tw:justify-center tw:outline-hidden">…</section>�[22m
�[2m       - unexpected value "CC Memory Private 3a3d3189Created ByAadmin·Jul 3, 2026TitleMemoryOnly the creator can s
Features/ContextCenterMemories.spec.ts › Entity memory shows "visible to linked entities" description (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoContainText�[2m(�[22m�[32mexpected�[39m�[2m)�[22m failed

Locator: getByRole('dialog')
Expected pattern: �[32m/visible to linked/i�[39m
Received string:  �[31m"CC Memory Entity 10da2bf1Created ByAadmin·Jul 3, 2026TitleMemoryVisible only to users linked to the referenced entity.TypeNote FAQNotePreferenceRunbookUse CaseLinked Data Assets (0)Not linked to any data assetMetadataVisibilityEntityVisible within selected entity's context.TagsUpdatedJul 3, 2026Derived OntologyOntology: QueuedNo derived or reused ontology found for this memory.DeleteCancelEdit"�[39m
Timeout: 15000ms

Call log:
�[2m  - Expect "toContainText" with timeout 15000ms�[22m
�[2m  - waiting for getByRole('dialog')�[22m
�[2m    19 × locator resolved to <section data-rac="" role="dialog" tabindex="-1" class="tw:flex tw:w-full tw:items-center tw:justify-center tw:outline-hidden">…</section>�[22m
�[2m       - unexpected value "CC Memory Entity 10da2bf1Created ByAadmin·Jul 
Features/ContextCenterMemories.spec.ts › changing visibility from Shared to Private shows "visible only to you" after save (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › shared memory is visible to data consumers (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › data consumer sees a read-only modal for shared memories they do not own (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › user with Create permission can create a memory and it appears under "Created by Me" (shard 2)
�[31mTest timeout of 180000ms exceeded.�[39m
Features/ContextCenterMemories.spec.ts › link an asset button opens the search popover (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByPlaceholder(/search.*asset/i)
Expected: visible
Error: strict mode violation: getByPlaceholder(/search.*asset/i) resolved to 2 elements:
    1) <input value="" type="text" id="searchBox" autocomplete="off" data-testid="searchBox" placeholder="Search for Data Assets" class="ant-input ant-input-borderless rounded-4 appbar-search"/> aka getByTestId('searchBox')
    2) <input value="" title="" type="text" data-rac="" tabindex="0" data-focused="true" id="react-aria6956299765-:r7a:" aria-label="Search assets to link..." placeholder="Search assets to link..." class="tw:m-0 tw:w-full tw:bg-transparent tw:text-primary tw:ring-0 tw:outline-hidden tw:placeholder:text-tertiary tw:autofill:rounded-lg tw:autofill:text-primary tw:px-3 tw:py-2 tw:pl-10 tw:text-xs tw:placeholder:text-xs"/> aka getByRole('textbox', { name: 'Search assets to link...' })

Call log:
�[2m  - Expect "toBeVisible" with tim
Features/ContextCenterMemories.spec.ts › typing in asset search popover triggers a search and shows results (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByPlaceholder(/search.*asset/i)
Expected: visible
Error: strict mode violation: getByPlaceholder(/search.*asset/i) resolved to 2 elements:
    1) <input value="" type="text" id="searchBox" autocomplete="off" data-testid="searchBox" placeholder="Search for Data Assets" class="ant-input ant-input-borderless rounded-4 appbar-search"/> aka getByTestId('searchBox')
    2) <input value="" title="" type="text" data-rac="" tabindex="0" data-focused="true" id="react-aria2320477086-:r7a:" aria-label="Search assets to link..." placeholder="Search assets to link..." class="tw:m-0 tw:w-full tw:bg-transparent tw:text-primary tw:ring-0 tw:outline-hidden tw:placeholder:text-tertiary tw:autofill:rounded-lg tw:autofill:text-primary tw:px-3 tw:py-2 tw:pl-10 tw:text-xs tw:placeholder:text-xs"/> aka getByRole('textbox', { name: 'Search assets to link...' })

Call log:
�[2m  - Expect "toBeVisible" with tim
Features/ContextCenterMemories.spec.ts › ArrowDown + Enter keyboard navigation selects the first asset result (shard 2)
Error: �[2mexpect(�[22m�[31mlocator�[39m�[2m).�[22mtoBeVisible�[2m(�[22m�[2m)�[22m failed

Locator: getByPlaceholder(/search.*asset/i)
Expected: visible
Error: strict mode violation: getByPlaceholder(/search.*asset/i) resolved to 2 elements:
    1) <input value="" type="text" id="searchBox" autocomplete="off" data-testid="searchBox" placeholder="Search for Data Assets" class="ant-input ant-input-borderless rounded-4 appbar-search"/> aka getByTestId('searchBox')
    2) <input value="" title="" type="text" data-rac="" tabindex="0" data-focused="true" id="react-aria2507079070-:r7a:" aria-label="Search assets to link..." placeholder="Search assets to link..." class="tw:m-0 tw:w-full tw:bg-transparent tw:text-primary tw:ring-0 tw:outline-hidden tw:placeholder:text-tertiary tw:autofill:rounded-lg tw:autofill:text-primary tw:px-3 tw:py-2 tw:pl-10 tw:text-xs tw:placeholder:text-xs"/> aka getByRole('textbox', { name: 'Search assets to link...' })

Call log:
�[2m  - Expect "toBeVisible" with tim
Pages/ExploreBrowse.spec.ts › service type drill-down disables unrelated roots and query-panel Clear resets it (shard 5)
�[31mTest timeout of 180000ms exceeded.�[39m
🟡 20 flaky test(s) (passed on retry)
  • Flow/SearchRBAC.spec.ts › the browse tree only shows the asset-type categories a user can access (shard 1, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary Term (Nested) (shard 2, 2 retries)
  • Features/BulkEditOperationBadges.spec.ts › Glossary bulk edit search filters rows and clear restores them (shard 2, 1 retry)
  • Features/BulkImport.spec.ts › Database Schema (shard 2, 1 retry)
  • Features/DataQuality/TestCaseImportExportE2eFlow.spec.ts › Admin: Complete export-import-validate flow (shard 2, 1 retry)
  • Features/GlobalPageSize.spec.ts › Page size should persist across different pages (shard 2, 1 retry)
  • Features/Glossary/GlossaryCRUDOperations.spec.ts › should create glossary with mutually exclusive enabled (shard 2, 1 retry)
  • Features/IncidentManager.spec.ts › Resolving incident & re-run pipeline (shard 3, 1 retry)
  • Features/SearchExport.spec.ts › Export queues a background job and downloads from the jobs tray (shard 3, 1 retry)
  • Features/Tasks/TaskNavigation.spec.ts › navigating to /table/TASK-XXXXX should show 404 (invalid URL pattern) (shard 3, 1 retry)
  • Pages/CustomProperties.spec.ts › Duration (shard 4, 1 retry)
  • Pages/CustomProperties.spec.ts › Should display custom properties for apiCollection in right panel (shard 4, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 5, 1 retry)
  • Features/AutoPilot.spec.ts › Create Service and check the AutoPilot status (shard 6, 1 retry)
  • Pages/ExplorePageRightPanel.spec.ts › Should allow Data Steward to view all tabs for searchIndex (shard 6, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify Impact Analysis service filter selection (shard 6, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for pipelineService in platform lineage (shard 6, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab is NOT visible for apiService in platform lineage (shard 6, 1 retry)
  • Pages/ServiceEntity.spec.ts › Tier Add, Update and Remove (shard 6, 1 retry)
  • Pages/ServiceEntity.spec.ts › User as Owner Add, Update and Remove (shard 6, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant