-
Notifications
You must be signed in to change notification settings - Fork 18
[QA] Add Kubernetes Connections report; split mesheryctl results dirs #80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
8f66ff6
e7f3e1a
9d7e413
db7d81c
471e287
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,6 +13,33 @@ const PROJECTS = { | |
| const isProject = (labels, projectName) => | ||
| labels.find(({ name, value }) => name === "project" && value === projectName); | ||
|
|
||
| // Behavior-scoped report keys. A Connections result is tagged at its source | ||
| // (UI Playwright specs and CLI converters) with epic="Kubernetes Connections", | ||
| // componentUnderTest (Test Plan col C), testId=TC-<n> (Test Plan col A), and | ||
| // client (UI|CLI). See https://qa.meshery.io and the meshery test-tagging docs. | ||
| const CONNECTIONS_EPIC = "Kubernetes Connections"; | ||
|
|
||
| // Matches componentUnderTest values that denote Kubernetes connection behavior. | ||
| // Used as a fallback selector when a result predates the epic label. | ||
| const CONNECTION_COMPONENT_RE = /kubernetes/i; | ||
|
|
||
| // Select a result into the Connections report: prefer the explicit epic label. | ||
| // The componentUnderTest fallback applies ONLY to results that carry no epic | ||
| // label at all (tagged before the epic convention) - a result with a different | ||
| // epic value must not be pulled in just because its component is Kubernetes. | ||
| const isConnectionBehavior = (labels) => { | ||
| const hasEpic = labels.some(({ name }) => name === "epic"); | ||
| if (hasEpic) { | ||
| return labels.some( | ||
| ({ name, value }) => name === "epic" && value === CONNECTIONS_EPIC, | ||
| ); | ||
| } | ||
| return labels.some( | ||
| ({ name, value }) => | ||
| name === "componentUnderTest" && CONNECTION_COMPONENT_RE.test(value), | ||
| ); | ||
| }; | ||
|
|
||
| export default defineConfig({ | ||
| name: "Meshery Quality Dashboard", | ||
| output: "./allure-report", | ||
|
|
@@ -96,6 +123,26 @@ export default defineConfig({ | |
| groupBy: ["parentSuite", "suite", "subSuite"], | ||
| }, | ||
| }, | ||
| // Cross-client behavior report: aggregates Kubernetes Connection tests from | ||
| // BOTH the UI (project=Meshery) and CLI (project=mesheryctl) pools. It keys | ||
| // on the epic label, NOT project, so it is an additional lens - connection | ||
| // tests still appear in the Meshery and Mesheryctl reports above. | ||
| connections: { | ||
| import: "@allurereport/plugin-awesome", | ||
| options: { | ||
| reportName: "Kubernetes Connections", | ||
| singleFile: false, | ||
| reportLanguage: "en", | ||
| open: false, | ||
| logo: "https://raw.githubusercontent.com/meshery-extensions/qa/refs/heads/master/.github/assets/images/meshery/icon-only/meshery-light-icon.svg", | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaving as-is here: every existing plugin in allurerc.mjs (meshery, mesheryctl, kanvas, layer5Cloud) uses this same refs/heads/master logo URL, so pinning only the new plugin to a commit SHA would diverge from the established convention. Converting all logos to pinned SHAs/tags is a worthwhile but separate, repo-wide change.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaving as-is intentionally: every plugin in allurerc.mjs uses this same refs/heads/master logo URL, so pinning only the new plugin to a SHA would diverge from the file's convention. Converting all logos to pinned refs is a worthwhile separate, repo-wide change. |
||
| filter: ({ labels }) => isConnectionBehavior(labels), | ||
| // Group by client (UI vs CLI) first, then the suite hierarchy. The | ||
| // awesome plugin (preciseTreeLabels) keeps only label names present on | ||
| // at least one result, so results missing "client" fall back to the | ||
| // suite/subSuite grouping automatically. | ||
| groupBy: ["client", "suite", "subSuite"], | ||
| }, | ||
| }, | ||
|
|
||
| log: { | ||
| options: { | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed - results-sync (and results-sync-path) now rm -rf the destination only after the source var is confirmed set and present, so a misconfigured or empty path var can no longer wipe committed results before the guard runs. This closes the data-loss window for every sync target, not just the new ones.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is addressed by the macro fix in the same commit: rm -rf/mkdir now sit inside the [ -n ... ] && [ -d ... ] guard, so an unset or missing path var no longer wipes the destination - it logs and leaves the committed results intact. That is the safe-skip behavior already used by the other named sync targets, so I kept it rather than adding a separate exit-1 per target. project-results-sync keeps its own exit-1 because it is the generic entrypoint.