ci: actually run the app test suite, and stop the Merge Gate certifying skips (#2447) - #2450
ci: actually run the app test suite, and stop the Merge Gate certifying skips (#2447)#2450dcccrypto wants to merge 1 commit into
Conversation
…ng skips (#2447) percolator-launch ran ZERO tests in CI. Every test job in test.yml is gated on `detect-packages`, which probes for `packages/shared/package.json` — a directory that exists on neither `playground` nor `main`. All four are therefore skipped on every run, on every branch, and cannot become true without restoring the old monorepo layout. Meanwhile `app/package.json` defines `"test": "vitest run"` and no workflow ever called it: grepping all four workflows for vitest/pnpm test returns nothing. The ✅ Merge Gate passed anyway, because it only checks that no dependency *failed* — and `skipped` is not `failure`. Four of its five needs are always skipped, so it passed on type-check alone while printing "All test suites passed". Reviewers read that green tick as "tests passed". It certified nothing. Two changes: 1. New `app-tests` job that runs `cd app && pnpm test`, with the counts teed into the job summary. NON-BLOCKING (`continue-on-error: true`): clean playground currently has 95 failing tests across 28 files, and hard-gating on day one would wall off every open PR for failures none of them introduced. This lands the measurement; flipping it to blocking is the follow-up. 2. The Merge Gate now reports each dependency's real result and marks skipped ones as certifying nothing, instead of claiming they passed. Skipped still does not fail the gate — this only stops it from lying about what it checked. Deliberately NOT in this PR, because both turn everyone's CI red immediately and need a sequencing decision (tracked in #2447): un-gating `security-tests` from `has_packages` (its `pnpm audit` finds 2 critical + 17 high today, see #2446), and requiring `success()` rather than not-failure in the gate. Verified: workflow YAML parses and the job graph has no dangling `needs`; the 95/2702 figure reproduced on clean origin/playground; the summary extraction was tested against real vitest output (it needed an ANSI strip *before* matching — vitest emits the colour escape ahead of the leading whitespace). Refs #2447 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CI run is in, and it corrects a number in the description. Run The mechanism works as designed
So the red suite does not gate the PR — Correction: the real number is 65, not 95
The 95 in the description and commit message was measured locally and matched #2447's figure exactly — but CI disagrees by 30 tests. CI is the authoritative number; treat 65 as the real backlog. The ~30-test gap is environment-dependent (macOS vs ubuntu — likely timezone/locale/timing-sensitive tests), which is its own finding: there are tests that fail only off-CI, and they were invisible in both directions until now. I'd rather flag the discrepancy than quietly let the 95 stand. Whoever picks up the follow-up should re-baseline against this job, not against either of the earlier local numbers. This is, incidentally, the argument for landing the measurement: nobody could have known the CI figure differed, because CI had never run the suite. |
Closes the measurement half of #2447. Both changes here are non-disruptive by design — no currently-green PR turns red.
The problem (verified, not taken on trust)
percolator-launchruns zero tests in CI onplayground.packages/is gonegit cat-file -e origin/playground:packages/shared/package.jsonplaygroundandmaindetect-packages.outputs.has_packages == 'true'vitest/pnpm testapphas a suiteapp/package.json"test": "vitest run"origin/playgroundThe
✅ Merge Gatepassed through all of this, because itsif:only rejectsfailure/cancelled— andskippedis neither. Four of its fiveneedsare always skipped, so it passed ontype-checkalone while printing "All test suites passed".What this PR does
1. New
app-testsjob — runscd app && pnpm test, counts teed into the job summary:continue-on-error: true, per the sequencing @ the issue proposed. Those 95 failures predate every open PR; hard-gating on day one would wall all of them off for breakage they did not cause. This lands the measurement — making it blocking is the follow-up, and is the point of landing it.2. Merge Gate now reports what actually ran — per-dependency results, with skipped marked as certifying nothing. Skipped still does not fail the gate; it just no longer reads as a pass.
Deliberately not in this PR
Both of these turn everyone's CI red on merge and need a sequencing call (left in #2447):
security-testsfromhas_packages—pnpm auditneeds nopackages/, but finds 2 critical + 17 high today (fix(deps): raise stale pnpm override floors to current advisory patched versions #2446 fixes those; this should land after).success()in the gate rather than not-failure — correct end state, but only once the jobs it names can actually run.Notes
app-testsis intentionally not inmerge-gate.needs: it is non-blocking, and depending on it would put the gate's outcome at the mercy ofcontinue-on-errorresult semantics for no gain.needs.^[[:space:]]*silently never matches. Caught by testing against real output rather than assuming.Refs #2447
🤖 Generated with Claude Code