Skip to content

Show the test suites a test case belongs to in the details page rail - #33564

Merged
harsh-vador merged 4 commits into
mainfrom
feat/tcd-10b-test-suites-card
Sep 18, 2026
Merged

harsh-vador merged 4 commits into
mainfrom
feat/tcd-10b-test-suites-card

Conversation

@ShaileshParmar11

@ShaileshParmar11 ShaileshParmar11 commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Describe your changes:

Fixes open-metadata/openmetadata-collate#6410
Fixes open-metadata/openmetadata-collate#2987

TCD-10b, part of epic open-metadata/openmetadata-collate#6074.

Cross-repo link form is deliberate: the tracking issues live in the Collate repo, and a bare #6410 here would autolink an unrelated issue in this repo.

I added a Test Suites panel to the test case details page's right rail, answering #2987 ("as a user I want to see all the test suites a test case belongs to"). Placement was agreed with product: collapsible like the Tags panel, sitting between Description and Tags.

image

Type of change:

  • New feature

High-level design:

  • Data: the page already requests testCase.testSuites (TestCaseClassBase.getFields() includes testSuites), so there is no new request and no backend change.
  • Component: TestCaseTestSuitesCard takes the suite list as its only prop and reuses WidgetCard, the same collapsible card the Tags, Glossary Term and Data Products panels use.
    • With no suites, it collapses to its header and hides the expand control, as the Tags panel does.
  • Links: they go where the Test Suites list sends each suite type (getTestSuiteLink, pure, in .utils.ts):
    • A table suite (basic) shows its table and opens the table's Data Quality tab.
    • A bundle suite (logical) opens its own suite page.
  • Telling them apart: each entry has a design-system icon (Table or TestSuite) plus a screen-reader label using the existing label.table and label.bundle-suite keys, so there are no new translation keys.
  • Long names: the narrow rail truncates them, and a core Tooltip shows the full name. Focusable lets the link itself be the tooltip trigger, the same pattern as TagsViewer.
  • Hit area: only the name is the link. The icon sits beside it, so clicking or hovering the rest of the row does nothing.
  • Many suites: the panel shows the first LIST_SIZE (5) suites with a "+N More" / "Less" toggle, the same pattern and translation keys as TagsViewer. Without the cap, a test case in many suites pushed Tags and the rest of the rail off screen.
  • Placement: mounted in TestCaseResultTab's rail between Description and Tags.

Not changed here: WidgetCard's collapse button already renders a button inside the tooltip's trigger button, which affects every panel using it. It's tracked for a separate fix.

Tests:

Use cases covered

  • A test case in only its table suite shows one entry linking to the table's Data Quality tab.
  • A test case also in a bundle suite shows both, each with the right icon, screen-reader label and link.
  • A test case in no suite shows only the collapsed header.
  • A test case in more than five suites shows five, with a toggle to reveal the rest and hide them again.
  • Clicking beside the name (the icon) stays on the page.
  • The panel sits between Description and Tags and collapses like the Tags panel.

Unit tests

  • I added unit tests for the new/changed logic.
  • TestCaseTestSuitesCard.test.tsx (6): table suite only, table plus bundle suite, empty state, collapsible, the five-suite cap with its toggle, and no toggle when everything fits.
  • TestCaseTestSuitesCard.utils.test.ts (2): link target and name for each suite type.
  • TestCaseResultTab.test.tsx: the panel is in the rail, between Description and Tags, and receives testCase.testSuites.
  • Coverage on the new files: 100% lines and statements, 83% branches.
  • The tests fail if table suites are linked like bundle suites (3 failures).
  • The TestCaseResultTab folder: 89 tests passing.

Backend integration tests

  • Not applicable (no backend API changes).

Ingestion integration tests

  • Not applicable (no ingestion changes).

Playwright (UI) tests

  • I added Playwright E2E tests under openmetadata-ui/.../ui/playwright/ for UI changes.
  • TestCaseDetailsPage.spec.ts now adds the test case to a bundle suite in its setup, with a new test that checks:
    • both links' targets and accessible names
    • clicking the icon beside a name doesn't navigate; this step fails on the earlier layout, where the whole row was the link
    • the panel sits above Tags
    • collapsing hides the entries
  • BundleTestSuiteClass gains addTestCases and delete, which other specs can reuse.
  • Locally: the whole spec passes (9/9 with setup). yarn lint:playwright passes with no errors or warnings in this spec.

Manual testing performed

  1. Local stack with the UI dev server in AI app mode, at /observability/test-case/sample_data.ecommerce_db.shopify.dim_address.shop_id.column_value_max_to_be_between/test-case-results. That test case belongs to its table suite and to myLogicalTestSuite.
  2. Rail order is Configuration → Description → Test Suites → Tags → Glossary Term → Data Products.
  3. Entries:
    • dim_address with the table icon → /table/sample_data.ecommerce_db.shopify.dim_address/profiler/data-quality
    • myLogicalTestSuite with the test-suite icon → /test-suites/myLogicalTestSuite
  4. Collapsing and expanding works like the Tags panel.
  5. Clicking or hovering the empty space beside a name does nothing; hovering the name shows the tooltip.
  6. With the test case in 17 suites, the panel shows five plus "+ 12 More"; that expands to all 17, and "Less" collapses back. Names truncate with the tooltip.

UI screen recording / screenshots:

TODO: attach screenshot.

Checklist:

  • I have read the CONTRIBUTING document.

  • My PR title is Fixes <issue-number>: <short explanation> (the issues live in the Collate repo; see the linking note above)

  • 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. (Not applicable: no schema changes.)

  • 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.

  • The issue properly describes why the new feature is needed, what's the goal, and how we are building it. Any discussion or decision-making process is reflected in the issue.

  • I have updated the documentation.

  • I have added tests around the new logic.

🤖 Generated with Claude Code

RetriggerConfidence Score: 4/5

The feature appears safe to merge, with a non-blocking Playwright cleanup issue that should be hardened to preserve useful setup-failure diagnostics.

Findings

  1. P2 Cleanup Can Mask Failures
Summary

This PR adds a collapsible Test Suites card to the test-case details rail and routes each listed suite according to its type.

  • Displays table and bundle suites with distinct icons and accessible labels.
  • Limits the initial list to five entries with a show-more toggle.
  • Adds unit and Playwright coverage for rendering, routing, placement, collapsing, and link hit areas.
  • Extends the bundle-suite Playwright helper to associate and remove test cases.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[TestCaseResultTab] --> B[TestCaseTestSuitesCard]
  B --> C{Suite type}
  C -->|Basic table suite| D[Table Data Quality tab]
  C -->|Logical bundle suite| E[Test Suite details page]
  B --> F{More than five suites?}
  F -->|Yes| G[Show first five and More toggle]
  F -->|No| H[Show all entries]
Loading

Reviews (1) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..."

ShaileshParmar11 and others added 2 commits September 18, 2026 12:51
Adds a collapsible Test Suites panel to the test case details rail, between
Description and Tags, built on the same WidgetCard as the Tags panel. Each
suite links where the Test Suites list sends it: a table suite to its table's
data quality tab, a bundle suite to its own page. An icon and a screen-reader
label tell the two apart, and a tooltip shows names the narrow rail truncates.

The page already fetches testCase.testSuites, so no request changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added safe to test Add this label to run secure Github workflows on PRs UI UI specific issues labels Sep 18, 2026
@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

⚠️ UI Checkstyle passed — lint findings in changed files

🔍 ESLint findings in this PR's files — 0 error(s), 1 warning(s)

Errors block the build. Warnings do not yet — they are rules whose backlog is still
being worked down, listed so this PR does not add to it. See docs/ui-code-quality-gate.md.

0 error(s), 1 warning(s) across 1 changed file(s).

Count Rule
1 openmetadata-imports/no-lower-layer-page-imports
All findings
Location Rule Message
🟡 src/components/DataQuality/IncidentManager/TestCaseResultTab/TestCaseResultTab.component.tsx:21:1 openmetadata-imports/no-lower-layer-page-imports Pages are route-level composition modules. Move the shared implementation/type to a lower layer instead of importing a page from here.

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

make ui-checkstyle-changed

The whole row used to be the link, so clicking or hovering the empty
space beside a name navigated and opened the tooltip. The link now wraps
only the name, with the icon beside it.

A test case in many suites made the panel tall enough to push Tags and
the other rail panels off screen. The list now shows the first
LIST_SIZE suites with a "+N More" / "Less" toggle, as TagsViewer does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ShaileshParmar11
ShaileshParmar11 marked this pull request as ready for review September 18, 2026 10:44
Copilot AI lite review requested due to automatic review settings September 18, 2026 10:44

Copilot AI left a comment

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

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.

Copilot AI review requested due to automatic review settings September 18, 2026 10:47

Copilot AI left a comment

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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@gitar-bot

gitar-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

🟢 Low risk

Adds a Test Suites panel to the test case details page rail showing which suites a test case belongs to, with table suites linking to the table's Data Quality tab and bundle suites linking to their own suite page. Panel includes icons and screen-reader labels to distinguish suite types, truncates long names with tooltips, caps the list at five entries with a toggle for more, and collapses like the Tags panel. No issues found.

Review coverage

Rules No rules evaluated

Functional validation Not enabled · Set up

Auto-approval Not enabled · Set up

Options

Display: compact → Counting what did not apply, without listing it.

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

@github-actions

Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 72%
72.9% (102408/140463) 57.89% (62370/107731) 58.92% (20371/34569)

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

✅ Playwright Results — workflow succeeded

Validated commit b68bd75ceeece0cc5dd5534ee720b1435a34eeb0 in Playwright run 35336438267, attempt 1.

✅ 813 passed · ❌ 0 failed · 🟡 0 flaky · ⏭️ 0 skipped · 🧰 0 lifecycle flaky

Performance

Blocking 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) 54m 38s

⏱️ Max setup 4m 39s · max shard execution 18m 56s · max shard-job elapsed before upload 22m 5s · reporting 5s

🌐 226.67 requests/attempt · 2.18 app boots/UI scenario · 17.17% common-shard skew

Optimization targets still in progress:

  • Common shard skew was 17.17% (convergence target: at most 15%).
  • Browser traffic was 226.67 requests per attempt (convergence target: fewer than 200).
  • Application boot ratio was 2.18 per UI scenario (1881 boots / 861 scenarios; convergence target: at most 1).
Shard Passed Failed Flaky Skipped Lifecycle failed Lifecycle flaky
✅ Shard chromium-01 139 0 0 0 0 0
✅ Shard chromium-02 162 0 0 0 0 0
✅ Shard chromium-03 143 0 0 0 0 0
✅ Shard chromium-04 148 0 0 0 0 0
✅ Shard data-asset-rules-01 65 0 0 0 0 0
✅ Shard domain-isolation-01 16 0 0 0 0 0
✅ Shard global-state-01 34 0 0 0 0 0
✅ Shard import-export-01 26 0 0 0 0 0
✅ Shard ingestion-01 35 0 0 0 0 0
✅ Shard reindex-01 5 0 0 0 0 0
✅ Shard search-01 11 0 0 0 0 0
✅ Shard search-rbac-01 29 0 0 0 0 0

📦 Download artifacts

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

@ShaileshParmar11 ShaileshParmar11 self-assigned this Sep 18, 2026
@anuj-kumary
anuj-kumary added this pull request to the merge queue Sep 18, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚦 Removed from the merge queue — failed_checks (2026-09-18T16:47:19Z)

Blocked the queue: ui-coverage

@harsh-vador
harsh-vador added this pull request to the merge queue Sep 18, 2026
Merged via the queue into main with commit e591d71 Sep 18, 2026
114 of 116 checks passed
@harsh-vador
harsh-vador deleted the feat/tcd-10b-test-suites-card branch September 18, 2026 21:51
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 UI UI specific issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants