Skip to content

Mute PMM-T506 behind an expiring skip - #1288

Merged
travagliad merged 2 commits into
mainfrom
claude/mute-t506-nightly
Sep 1, 2026
Merged

Mute PMM-T506 behind an expiring skip#1288
travagliad merged 2 commits into
mainfrom
claude/mute-t506-nightly

Conversation

@travagliad

@travagliad travagliad commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Failures fixed (investigator)

  • source: nightly CI run https://github.com/percona/pmm-qa/actions/runs/33222594797 (Nightly E2E tests Matrix (remote PMM Server), job test execution / @nightly) — also red Aug 30 and Aug 31 on the same test
  • tests:
    • codeceptjs-e2e/tests/verifyVMDashboards_test.js:10 / @nightly — PMM-T506 Verify metrics on VictoriaMetrics dashboard

What this is

A noise mute that expires by construction — an alternative to #1275, which is not being merged as it stands.

PMM-T506 expects a Time Series Information row with Top 10 metrics by time series count and
Top 10 hosts by time series count. percona/pmm#5822
removed both deliberately — in the author's words, "they were literally taking PMM Server down
under high load, i.e. 300+ clients."
So the test fails every night and will keep failing until the
expectation drops (#1275) or the panels come back.

Two parts:

1. The mute (verifyVMDashboards_test.js)

+// skip-until: 2026-09-29 -- cardinality panels removed by percona/pmm#5822; unskip via pmm-qa#1275, or when the panels return.
-Scenario(
+Scenario.skip(

2. A guard that makes the date real (lint-changed.sh, lint.yml)

A skip parked with skip-until: YYYY-MM-DD becomes a lint failure on that date.

Why the guard, and not just a TODO

This repo carries 69 skipped scenarios across 32 files, and the convention already in use is
exactly a TODO with a ticket link — // TODO: unskip after …PMM-13544, …PMM-12956 (twice),
PMM-14002, PMM-13750. Two of those references are already dead: one points at
jira.percona.com, the Jira instance the project migrated off, and one at a grafana-dashboards
PR for a repo since folded into the monorepo. Dead links guarding dormant tests.

So a comment and a ticket is the mechanism with a demonstrated 69× failure rate here. A date the
build enforces does not depend on anyone remembering.

Where the teeth are: lint.yml runs git ls-files | xargs lint-changed.sh, i.e. every
tracked file on every PR
. Once 2026-09-29 arrives, every PR in the repo fails lint until the
skip is revisited or the date is deliberately moved. A weekly schedule was added so it also
surfaces during a quiet week with no PR traffic.

The check lives in lint-changed.sh rather than as a workflow step because that script already
owns the linter mapping for both CI and the local PreToolUse commit gate — its own header warns
that re-listing linters in the workflow is how the two drift apart.

Opt-in by design: only skips that carry the marker are checked, so the existing 69 are
untouched and CI stays green today. Adopting it for them can be a deliberate, separate pass.

Relationship to #1275 — please don't merge both

They are alternatives and touch different files, so nothing stops both landing and leaving the test
skipped and the expectations dropped — the skip would then mask a test already made correct.

What the mute costs — worth being explicit

Scenario.skip disables the whole scenario, not just the two stale expectations: the ~40 other
panel titles it checks, and verifyThereAreNoGraphsWithoutData(1). Until it is unskipped, nothing
catches a genuinely broken or empty VictoriaMetrics dashboard. That is the reason for the expiry
rather than an open-ended skip.

I checked whether the test could leave the nightly but stay alive elsewhere — it cannot. Its other
two tags are dead: no workflow references @dashboards or @gssapi-nightly, and @nightly
appears in exactly one place (nightly-e2e-tests-matrix.yml:140). Skipping and untagging cost
identical coverage, and Scenario.skip at least shows as S in the run output rather than leaving
a test nothing silently runs.

Given that cost, #1275 remains the better outcome if its objection can be resolved.

Verification

Skip behaviour:

$ npx codeceptjs run -c pr.codecept.js --grep 'PMM-T506'
  S PMM-T506 - Verify metrics on VictoriaMetrics dashboard @nightly  @dashboards @gssapi-nightly
  OK  | 0 passed, 1 skipped   // 12ms

No server contact, and PMM-T507 in the same file is untouched and still runs.

Guard, both directions:

case result
date in the future (2026-09-29, today 2026-09-01) ==> skip-until expiry, rc=0
date in the past (2026-08-15) FAIL: skip-until date reached … :9:skip-until: 2026-08-15, rc=1
date is today (2026-09-01) — boundary rc=1 (the date means review on it, not after)
all 393 tracked .js/.ts files exactly one marker — the 69 existing skips do not trip it

Repo linters on the changed files (yamllint, actionlint, shellcheck, plus the new check) — all
clean, rc=0.


🤖 Generated with Claude Code

https://claude.ai/code/session_01SKRuqWTQVW4p6DDSYcFQEf

The test expects two VictoriaMetrics cardinality panels that
percona/pmm#5822 removed on purpose. pmm-qa#1275 proposed dropping the
expectations; pending that decision, skip the scenario so the nightly
matrix stops reporting a failure nobody is acting on.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Comment thread codeceptjs-e2e/tests/verifyVMDashboards_test.js
@claude

claude Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

🟡 Scope: this and #1275 are mutually exclusive but both are open, non-draft and unlabelled, so "please don't merge both" is enforced only by whoever reads the body — mark this one draft with Depends on pointing at the #1275 outcome, so it cannot land by accident.

Gate gap: lint.yml dispatches through .claude/hooks/lint-changed.sh, which has no .js group, so no linter reads codeceptjs-e2e/**; and no check on this PR runs @nightly, the only tag a workflow references. The green checks here say nothing about the change.

pmm-qa carries 69 skipped scenarios, and the tracking convention in use
-- a TODO with a ticket link -- has not held them: two point at dead
references (jira.percona.com, which the project migrated off, and a
grafana-dashboards PR for a repo since folded into the monorepo).

Park the skip with a machine-checked expiry instead. lint-changed.sh
fails once a skip-until date is reached, and lint.yml passes it every
tracked file, so after that date every PR is red until the skip is
revisited or the date is deliberately moved. A weekly schedule surfaces
it even with no PR traffic. Only skips carrying the marker are checked,
so the existing 69 are untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKRuqWTQVW4p6DDSYcFQEf
Signed-off-by: Claude <noreply@anthropic.com>
@travagliad travagliad changed the title Mute PMM-T506 until the VM panel question is settled Mute PMM-T506 behind an expiring skip Sep 1, 2026
@travagliad
travagliad merged commit 30eaf90 into main Sep 1, 2026
33 checks passed
@travagliad
travagliad deleted the claude/mute-t506-nightly branch September 1, 2026 18:13
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.

3 participants