Skip to content

ci: actually run the app test suite, and stop the Merge Gate certifying skips (#2447) - #2450

Open
dcccrypto wants to merge 1 commit into
playgroundfrom
ci/2447-run-app-test-suite
Open

ci: actually run the app test suite, and stop the Merge Gate certifying skips (#2447)#2450
dcccrypto wants to merge 1 commit into
playgroundfrom
ci/2447-run-app-test-suite

Conversation

@dcccrypto

Copy link
Copy Markdown
Owner

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-launch runs zero tests in CI on playground.

Claim How I checked Result
packages/ is gone git cat-file -e origin/playground:packages/shared/package.json absent on playground and main
So all 4 test jobs skip they gate on detect-packages.outputs.has_packages == 'true' permanently false
Nothing runs the app suite grepped all 4 workflows for vitest/pnpm test 0 matches in any of them
app has a suite app/package.json "test": "vitest run"
The suite is red ran it on clean origin/playground 95 failed / 2591 passed (2702), 28 failed files

The ✅ Merge Gate passed through all of this, because its if: only rejects failure/cancelled — and skipped is neither. Four of its five needs are always skipped, so it passed on type-check alone while printing "All test suites passed".

What this PR does

1. New app-tests job — runs cd app && pnpm test, counts teed into the job summary:

### App test suite (`cd app && pnpm test`)

     Test Files  28 failed | 230 passed | 1 skipped (259)
          Tests  95 failed | 2591 passed | 16 skipped (2702)

Suite is red. This job is non-blocking, so it does NOT gate this PR (#2447).

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):

Notes

  • app-tests is intentionally not in merge-gate.needs: it is non-blocking, and depending on it would put the gate's outcome at the mercy of continue-on-error result semantics for no gain.
  • Validated the workflow YAML parses and the job graph has no dangling needs.
  • The summary extraction needed an ANSI strip before matching — vitest emits the colour escape ahead of the leading whitespace, so an anchored ^[[:space:]]* silently never matches. Caught by testing against real output rather than assuming.

Refs #2447

🤖 Generated with Claude Code

…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>
@vercel

vercel Bot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
percolator-launch Ready Ready Preview, Comment Jul 21, 2026 1:32pm
percolator-mainnet Ready Ready Preview, Comment Jul 21, 2026 1:32pm
percolator-playground Ready Ready Preview, Comment Jul 21, 2026 1:32pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2fc47550-0566-44dd-bbbb-6c137f94951e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/2447-run-app-test-suite

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@dcccrypto

Copy link
Copy Markdown
Owner Author

CI run is in, and it corrects a number in the description. Run 29834693811.

The mechanism works as designed

Job Result
App Tests (non-blocking) failure
✅ Merge Gate success
Overall run conclusion success

So the red suite does not gate the PR — continue-on-error behaves as intended. The gate now prints:

⏭️  Unit Tests: SKIPPED — this check certifies nothing
⏭️  Integration Tests: SKIPPED — this check certifies nothing
⏭️  E2E Tests: SKIPPED — this check certifies nothing
⏭️  Security Tests: SKIPPED — this check certifies nothing
✅ Type Check: passed
ℹ️  App Tests: non-blocking — see its job summary for pass/fail counts

No required job failed. Skipped jobs are not evidence of passing tests.

Correction: the real number is 65, not 95

Environment Test files Tests
My local macOS run 28 failed / 230 passed 95 failed / 2591 passed
CI (ubuntu-latest) 26 failed / 232 passed 65 failed / 2621 passed

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.

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.

1 participant