mit einem Klick
regression-report
// Create a GitHub issue on kiali/kiali for a confirmed Cypress test failure. Use after identifying a failing test (from Jenkins nightly or local run) to file a structured bug report via gh CLI.
// Create a GitHub issue on kiali/kiali for a confirmed Cypress test failure. Use after identifying a failing test (from Jenkins nightly or local run) to file a structured bug report via gh CLI.
Investigate and fix a failing Cypress test from a GitHub issue. Reads the issue for scenario details, traces the failure through step definitions, analyzes root cause, implements a fix, and verifies it locally before committing.
Analyze Jenkins nightly CI failure output to identify failing Cypress/Gherkin tests, map them to feature files, classify each failure (flake / ui-bug / test-bug), and produce a triage summary ready to hand off to regression-report.
Run Gherkin linting on all feature files in the frontend directory. Use when validating Gherkin syntax, checking feature file quality, or verifying formatting compliance.
| name | regression-report |
| description | Create a GitHub issue on kiali/kiali for a confirmed Cypress test failure. Use after identifying a failing test (from Jenkins nightly or local run) to file a structured bug report via gh CLI. |
| disable-model-invocation | false |
| allowed-tools | Bash(gh *), Bash(oc *), Bash(kubectl *), Bash(grep *), Bash(curl *), Bash(jq *) |
Create a GitHub issue for a confirmed Cypress test failure on kiali/kiali.
Field contract and vocabulary:
.claude/docs/regression-contract.md
/regression-triageIf the user pastes a handoff block, extract all fields from it directly. Do not re-ask for fields already present.
Handoff block format:
## Handoff Block — Failure N
- Scenario: <exact scenario name>
- Feature file: frontend/cypress/integration/featureFiles/<file>.feature
- Tag(s): @<tag1>, @<tag2>
- Failing step: <step text>
- Error: <error message>
- Signal: <optional — jenkins-regression | first-occurrence>
- Classification: <flake | ui-bug | test-bug>
- Confidence: <high | medium | low>
- Environment: <Jenkins nightly | Remote OCP | kind | Minikube>
- Build URL: <url>
- Kiali version: <version>
- OCP version: <version>
- Istio version: <version or "not specified">
If no handoff block, ask for:
Scenario: title.feature filename; search if unknown:
grep -rl "<scenario fragment>" frontend/cypress/integration/featureFiles/
@core-1, @ambient; grep from feature file if neededflake | ui-bug | test-bugJenkins nightly | Remote OCP | kind | Minikubecurl -k -s "<build-url>artifact/archive_dir/kiali-pod.log" | grep "Kiali: Version:" | head -1
curl -k -s "<build-url>api/json?tree=actions%5Bparameters%5Bname%2Cvalue%5D%5D" | \
jq -r '[.actions[] | select(.parameters?) | .parameters[] | select(.name=="ISTIO_VERSION")] | first | .value // "not specified"'
[Test] <Scenario name> — <feature-file-basename> / <environment>
Examples:
[Test] Inbound Metrics in context menu for service node — graph_context_menu.feature / Jenkins nightly[Test] Display idle nodes option — graph_display_user.feature / kind| Classification | Labels |
|---|---|
flake | bug, flake |
ui-bug | bug |
test-bug | test-bug |
Apply labels exactly as the table specifies. test-bug does not get bug; ui-bug does not get flake or test-bug.
Always include. User must first tag the failing scenario with @selected in the .feature file, then:
cd frontend
CYPRESS_BASE_URL=<kiali-url> \
CYPRESS_USERNAME=<username> \
CYPRESS_PASSWD=<password> \
yarn cypress:run:selected
Environment-specific notes:
oc login <cluster-url>, may need CYPRESS_ALLOW_INSECURE_KIALI_API=trueCYPRESS_USERNAME=admin, CYPRESS_ALLOW_INSECURE_KIALI_API=trueCYPRESS_BASE_URL=http://localhost:3000, typically no credentials needed[Test] <Scenario> — <feature-file-basename> / <environment> exactly. Do not use [Flake], [Bug], or other prefixes.Failing step and Confidence are present in the body (or state "not available" if triage didn't provide them).gh issue create \
--repo kiali/kiali \
--title "[Test] <scenario> — <feature-file-basename> / <environment>" \
--label "<labels>" \
--body "$(cat <<'BODY'
<filled-body>
BODY
)"
### Describe the bug
Cypress test failure observed on <environment>.
**Scenario:** `<exact scenario name>`
**Feature file:** `frontend/cypress/integration/featureFiles/<feature-file>`
**Tag(s):** `<cypress-tags>`
**Classification:** <flake | ui-bug | test-bug>
**Signal:** <jenkins-regression | first-occurrence | omit if not provided>
**Failing step:** `<Given/When/Then/And step text>`
**Confidence:** <high | medium | low>
<error message or screenshot description>
### Expected Behavior
<infer from scenario name or ask user>
### What are the steps to reproduce this bug?
1. Tag the failing scenario with `@selected` in `frontend/cypress/integration/featureFiles/<feature-file>`
2. Ensure a running Kiali instance is accessible
3. Set environment variables:
```bash
export CYPRESS_BASE_URL=<kiali-url>
export CYPRESS_USERNAME=<username>
export CYPRESS_PASSWD=<password>
# For OCP/kind:
# export CYPRESS_ALLOW_INSECURE_KIALI_API=true
cd frontend && yarn cypress:run:selected