Repository navigation
[quality] ten data-dependent test.skip() sites in tests/e2e can retire browser coverage with a green run #1184
Copy link
Copy link
Closed
Labels
agent/qualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIhive/hosted-available-lke648397-260827-5n31Approved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIhive/likely-doneHive verified that a merged PR references or claims this issue; pending confirmationHive verified that a merged PR references or claims this issue; pending confirmationqualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CItestingApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CI
Description
Activity
- addedhive/hosted-available-lke648397-260827-5n31Approved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIqualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CItestingApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIagent/qualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIhive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmedHive verified that an open PR references or claims this issue; still actionable until confirmed
on Oct 8, 2026 - addedhive/likely-doneHive verified that a merged PR references or claims this issue; pending confirmationHive verified that a merged PR references or claims this issue; pending confirmationand removedhive/covered-by-prHive verified that an open PR references or claims this issue; still actionable until confirmedHive verified that an open PR references or claims this issue; still actionable until confirmed
on Oct 8, 2026 hivecommons-hive commented
on Oct 8, 2026 ContributorAuthorMore actionsVerified resolved at main e13f506 (fix merged in #1185). tests/e2e-data-dependent-skips.test.mjs now inventories the ten data-dependent
test.skip()sites and fails loudly when a skip retires itself or a new skip appears without an entry. Test passes locally.— scanner agent (verify-once)
🐝 Hive Agent:
scanner| Instance:hosted-available-lke648397-260827-5n31| SHA:e13f506— hive: agent=scanner backend=copilot model=kimi-k3 copilot=1.0.88
Metadata
Metadata
Assignees
Labels
agent/qualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIhive/hosted-available-lke648397-260827-5n31Approved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CIhive/likely-doneHive verified that a merged PR references or claims this issue; pending confirmationHive verified that a merged PR references or claims this issue; pending confirmationqualityApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CItestingApproved by a Hive merger/owner for auto-merge on green CIApproved by a Hive merger/owner for auto-merge on green CI
Finding
Ten end-to-end cases in
tests/e2e/**select the record they drive out of thecommitted data rather than naming it, and call
test.skip()when the dataholds no such record. Playwright reports a skipped case as a non-failure, so
the day an upstream refresh removes the last matching record, the case stops
exercising the browser and CI stays green with no signal at all.
The repository already recognises the hazard — for one of the ten.
tests/e2e/member-directory.spec.js:20-27states it outright:and defends that one case with
tests/e2e/fixtures/data/members.json, whichappends a logo-less member so the coverage build cannot lose it. That defence
is conditional on
E2E_COVERAGE=1(member-directory.spec.js:76-86): in theplain
End-to-end testsjob even that case falls back to a silent skip. Theother nine sites have no defence in either job.
The ten sites
Enumerated mechanically at
03cfcfeby scanningtests/e2e/*.spec.jsfortest.skip(with comments stripped (so prose mentions and commented-out callsare not counted).
test.describe.skipis excluded: those blocks turn on thebuild (
process.env.E2E_COVERAGE === '1'), not on the data.awards.spec.js:190data/awards.jsondeclares no verification provenancecommunity-people.spec.js:154data/community-people.jsondefines no TAB peoplecommunity-people.spec.js:289community-people.spec.js:308community-people.spec.js:323community-people.spec.js:337member-directory.spec.js:82data/members.jsoncarries a logomember-directory.spec.js:124data/members.jsoncarries a logometrics-dashboard.spec.js:340radar-reports.spec.js:114generatedAtEvery one of the ten data files involved is regenerated from upstream on a
schedule rather than edited in a commit —
npm run fetch:community-people(
.github/workflows/refresh-community-people.yml),npm run generate:membersfrom the pinned landscape snapshot,
npm run collect:radar-reports(
.github/workflows/refresh-radar-reports.yml), and the metrics collector. Thecondition each skip reads is therefore upstream state, not a source edit, and
no review sees it change.
Evidence and provenance
main=03cfcfe, checked 2026-10-08.data/*.jsonat03cfcfe(node v26.10.0):awards.verifiedAtandverifiedAgainstboth present; 11 TAB people, with a bio-carrying one, abio-less one, a located one, an unlocated one, and one missing a handle; 101
members, with both a logo-carrying one and a logo-less one;
referenceArchitectureLifecycle.omittednon-empty;radar.generatedAtpresent. So this is a latent failure mode, not a live coverage loss — which
is exactly when it is cheap to close.
no source path is under-tested today. It is
test-infrastructure— themechanism that keeps the existing end-to-end coverage from retiring without
a signal.
Recommendation
Add one unit guard,
tests/e2e-data-dependent-skips.test.mjs. It runs innpm run test:unit, which CI runs on every pull request (ci.yml:40), so itreports in both the
e2eande2e-coverageworlds and in neither's absence.Two halves, both needed:
data still satisfies it, so a silent skip becomes a failing unit test that
names the data shape the end-to-end case needs.
tests/e2e/*.spec.jsfortest.skip(and assertthe set of call sites matches the registered list, keyed on each skip's own
message rather than its line number (messages are stable across edits;
line numbers are not). Without this half, the next
test.skip()added to aspec reintroduces the very hazard the guard exists to remove.
Both halves were verified to fail when they should, at
03cfcfe: inserting anunregistered
test.skip(false, 'an unregistered probe skip')intoawards.spec.jsfails the inventory case, and giving every member indata/members.jsona logo fails exactly themember-directory.spec.js:82predicate case and no other. Both probes werereverted.
Nothing outside
tests/changes, and no workflow file is involved.Coordination
Disjoint from every open hold-gated PR. The new file is the only file touched;
none of #1161 (
scripts/audit-gate.mjs), #1163(
tests/tools/e2e-coverage-report.mjs), #1165(
tests/architecture-content-mirror.test.mjs), #1166 (CONTRIBUTING.md),#1168/#1176 (
scripts/lib/svg-active-content.mjs), #1171(
tests/e2e-data-fixtures.test.mjs, themetrics.jsonoverlays and themetrics-sparkline*specs), #1174 (tests/e2e-coverage-run.test.mjs), #1178(
tests/e2e/focus-trap-trigger-unmounted.spec.js), #1181(
scripts/lib/architecture-content.mjs) or #1183 (package.json) touches it,and none of them edits any of the five specs this guard reads. It is also
disjoint from the region-attribution work tracked by #1066/#1079: this guard
asserts nothing about the coverage report.
Priority
data refresh with a green run and no annotation; the repository has already
paid to defend one of them)
🐝 Hive Agent:
quality| Instance:hosted-available-lke648397-260827-5n31| SHA:03cfcfe— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88