Skip to content

Key connection report on Test Group; rename to "Connection Lifecycle" - #81

Merged
marblom007 merged 2 commits into
meshery:masterfrom
marblom007:fm/conn-lifecycle-report
Aug 2, 2026
Merged

marblom007 merged 2 commits into
meshery:masterfrom
marblom007:fm/conn-lifecycle-report

Conversation

@marblom007

@marblom007 marblom007 commented Aug 2, 2026 •

Copy link
Copy Markdown
Member

Description

Refactors the connection report in allurerc.mjs from an epic-keyed view to a general Test-Group-keyed view, and renames it to Connection Lifecycle.

The general report key is the testGroup label, whose value is the Meshery Test Plan "Latest" tab Test Group (column B). Any Test Group can drive its own filtered report by keying on this label; Connection Lifecycle is the first consumer.

Changes

  • Add a general helper isTestGroup(labels, groupName) -> true when a result carries testGroup == groupName.
  • Rename the connections plugin reportName to Connection Lifecycle; change its filter to isTestGroup(labels, "Connection Lifecycle"); keep groupBy: ["client","suite","subSuite"].
  • Transitional fallback: filter = isTestGroup(labels,"Connection Lifecycle") || isConnectionBehavior(labels) so the report is not empty before fresh testGroup-labelled results land. The epic-based fallback is commented as transitional and drops once all connection results carry testGroup.
  • Update the plugin comment block and the README to describe the report as a Test-Group-keyed view, noting the pattern generalizes to one filtered report per Test Group.

Report URL

The plugin key stays connections, so the published report URL is unchanged: https://qa.meshery.io/connections/ (only the display name and filter change). The meshery/, mesheryctl/ subpaths confirm the plugin-key -> URL-subpath mapping.

Coordinated change

  • meshery emits the testGroup="Connection Lifecycle" label from both the CLI (BATS [tg=...] token) and UI (Playwright) lanes: meshery#21089.

Verification

  • node --check allurerc.mjs - passes.
  • isTestGroup unit-checked in isolation (match / no-match / empty).

Note (pre-existing, out of scope)

The Publish Report to GitHub Pages workflow is currently failing on every run because its "Commit & push updated history" step rejects history.jsonl (now 101.42 MB, over GitHub's 100 MB limit). No report has deployed since - so /connections/ is currently 404. This blocks all dashboard deploys, not just this report, and is flagged separately; this PR is correct and ready but the report will only go live once that pipeline is fixed.

Summary by CodeRabbit

  • New Features

    • Updated the cross-client connection report to Connection Lifecycle.
    • Reports now primarily filter results by the Test Group designation.
    • Source tagging is supported while results remain included in project reports.
    • The stable /connections/ report URL is maintained.
  • Bug Fixes

    • Preserved compatibility with legacy epic/component-based connection results during the transition.

…cle"

Refactors the connection report from an epic-keyed view to a general
Test-Group-keyed view. The testGroup label (Meshery Test Plan "Latest"
tab Test Group, col B) is the general report key: any Test Group can drive
its own filtered report by keying on it.

- Add a general isTestGroup(labels, groupName) helper.
- Rename the connections plugin report to "Connection Lifecycle" and
  filter on isTestGroup(labels, "Connection Lifecycle"); keep
  groupBy: ["client","suite","subSuite"].
- Transitional fallback: || isConnectionBehavior(labels) keeps the report
  populated with connection results emitted before the testGroup label
  existed. Drops once all connection results carry testGroup.
- Keep the plugin key connections so the published URL
  (https://qa.meshery.io/connections/) is unchanged.
- Document the report as a Test-Group-keyed view in the README and note the
  pattern generalizes to one filtered report per Test Group.

Coordinated with meshery emitting the testGroup label (meshery#21089).

Signed-off-by: marblom007 <158522975+marblom007@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 2, 2026 21:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Refactors the “connections” Allure report to be keyed by the testGroup label (Test Plan “Test Group”, col B) and renames the displayed report to “Connection Lifecycle”, with a transitional fallback to the legacy epic-based selector.

Changes:

  • Added isTestGroup(labels, groupName) helper to select results by testGroup.
  • Updated the connections plugin display name and filter to prefer testGroup == "Connection Lifecycle" with a temporary legacy fallback.
  • Updated README documentation to describe the new Test-Group-keyed report model and the transitional behavior.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
allurerc.mjs Introduces isTestGroup and updates the connections report’s display name + filter logic (with legacy fallback).
README.md Updates report selection documentation to describe the new testGroup-keyed filtering and transition plan.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread allurerc.mjs Outdated
Comment on lines +164 to +166
filter: ({ labels }) =>
isTestGroup(labels, "Connection Lifecycle") ||
isConnectionBehavior(labels),
Comment thread allurerc.mjs Outdated
import: "@allurereport/plugin-awesome",
options: {
reportName: "Kubernetes Connections",
reportName: "Connection Lifecycle",
Comment thread allurerc.mjs Outdated
Comment on lines +164 to +166
filter: ({ labels }) =>
isTestGroup(labels, "Connection Lifecycle") ||
isConnectionBehavior(labels),
Comment thread README.md Outdated
Comment on lines +106 to +110
Transitionally, the filter also matches the legacy epic-based selector
(`epic == "Kubernetes Connections"`, with a Kubernetes `componentUnderTest`
fallback for results carrying no `epic` label) so the report stays populated
with connection results emitted before the `testGroup` label existed. This
fallback drops once every connection result carries `testGroup`. The report is
@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@marblom007, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 24 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 03e96a0c-6639-4623-8f5a-271d2972106a

📥 Commits

Reviewing files that changed from the base of the PR and between fe6d475 and 0441dfe.

📒 Files selected for processing (2)
  • README.md
  • allurerc.mjs
📝 Walkthrough

Walkthrough

The connections report is renamed to Connection Lifecycle. It primarily selects Allure results by testGroup="Connection Lifecycle" and retains legacy epic/component fallback matching. The README documents the new grouping and the stable /connections/ URL.

Changes

Connection Lifecycle report

Layer / File(s) Summary
Test group selection contract
allurerc.mjs
Adds isTestGroup matching and retains legacy epic and component selectors.
Connection report wiring
allurerc.mjs, README.md
Configures the report to use the Connection Lifecycle test group, preserves the report key and /connections/ URL, and documents the grouping and fallback behavior.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • meshery/qa#80: Introduced the Kubernetes Connections report and its Allure selectors updated by this change.

Suggested labels: area/ci

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the Test Group-based connection report and its rename to "Connection Lifecycle".
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@allurerc.mjs`:
- Around line 164-166: Update the filter predicate around isTestGroup and
isConnectionBehavior so the legacy isConnectionBehavior(labels) fallback runs
only when labels has no testGroup label; preserve direct matching for the
"Connection Lifecycle" test group and prevent results with any other testGroup
from matching through legacy labels.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d4af3ca8-e0ea-4165-a158-08487932278e

📥 Commits

Reviewing files that changed from the base of the PR and between c0d9a10 and fe6d475.

📒 Files selected for processing (2)
  • README.md
  • allurerc.mjs

Comment thread allurerc.mjs Outdated
…up literal

Copilot/CodeRabbit review on meshery#81:
- The transitional isConnectionBehavior fallback applied unconditionally, so a
  result carrying a *different* testGroup (but no epic, Kubernetes component)
  could leak into Connection Lifecycle. Gate it on `!hasTestGroup(labels)`: a
  result that already carries any testGroup is authoritative and is never pulled
  in by the legacy epic/component heuristic. Mirrors how isConnectionBehavior
  gates its component fallback on epic absence.
- Introduce CONNECTION_LIFECYCLE_GROUP as the single source of truth for both
  the report display name and the testGroup filter value (no drift).
- README: clarify the fallback applies only to results with no testGroup label.

Signed-off-by: marblom007 <158522975+marblom007@users.noreply.github.com>
@marblom007

Copy link
Copy Markdown
Member Author

Thanks @coderabbitai and Copilot - both points addressed in 0441dfe:

  1. Gated the transitional fallback on testGroup absence: filter = isTestGroup(labels, CONNECTION_LIFECYCLE_GROUP) || (!hasTestGroup(labels) && isConnectionBehavior(labels)). A result that already carries any testGroup is authoritative and is no longer pulled in by the legacy epic/component heuristic, so a different-group Kubernetes-component result cannot leak in. This mirrors how isConnectionBehavior gates its component fallback on epic absence.
  2. Deduped the literal: introduced CONNECTION_LIFECYCLE_GROUP = "Connection Lifecycle", reused for both reportName and the isTestGroup(...) filter, so the display name and filter value cannot drift.
  3. README updated to state the fallback applies only to results with no testGroup label.

Verified the filter truth table: CL-group -> in; other-group + k8s component -> out (the leak case); legacy epic / legacy k8s component with no testGroup -> in; unrelated -> out.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

git show --no-ext-diff --unified=40 --format=fuller 0441dfeb0 -- allurerc.mjs README.md

Length of output: 15315


@marblom007 Verified in 0441dfeb0.

The connections filter now treats an existing testGroup label as authoritative. This prevents the different-group Kubernetes component leak. CONNECTION_LIFECYCLE_GROUP is the shared value for reportName and the filter. The README correctly documents the no-testGroup condition for the legacy fallback.

🐇 ✅


✏️ Learnings added
Learnt from: marblom007
URL: https://github.com/meshery/qa/pull/81

Timestamp: 2026-08-02T22:01:13.760Z
Learning: In `allurerc.mjs`, the `connections` report uses `testGroup` as the authoritative selector. Its legacy `isConnectionBehavior(labels)` fallback must apply only when `hasTestGroup(labels)` is false, so results assigned to a different Test Group cannot enter the Connection Lifecycle report through legacy epic or Kubernetes component labels.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@marblom007
marblom007 merged commit 671709e into meshery:master Aug 2, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants