ci: run the test suite in CI#548
Open
vjureta wants to merge 1 commit into
Open
Conversation
The repo has 313 test files (~60k lines) but nothing ran them on a pull request: `ci.yml` only did lint + type check, and `mcp-ci.yml` covered only packages/mcp plus two apps/editor files. So roughly 2,200 of the 2,491 tests never executed as a gate. - add a `test` task to turbo.json (`dependsOn: ["^build"]`) and a root `test` script, then a `Test` step to ci.yml - add the missing `test` scripts to packages/viewer, packages/editor, packages/ifc-converter and apps/editor, which all contained tests but had no way to run them - add `@pascal-app/core` to packages/viewer devDependencies. It was declared only as a peerDependency, which Turbo does not traverse, so `^build` resolved to nothing and viewer's tests could not resolve core's `dist/`. editor/nodes/mcp already declare it in both places. - scope each test glob to `src`/`tests`/`lib` so compiled tests under `dist/` are not collected a second time - document `bun test` in SETUP.md and CONTRIBUTING.md Verified from a clean tree (no dist, no turbo cache): 12/12 tasks, 2,491 tests, 0 failures; warm re-run is fully cached. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The repo has 313 test files (~60k lines) and they're good tests — schema migrations, wall mitering, CSG cutouts, placement collision,
NaN/Infinitysanitization. But almost none of them run on a pull request.ci.ymlruns onlybun run checkandbun run check-types.mcp-ci.ymlrunspackages/mcpplus twoapps/editor/libfiles, and only on path matches.turbo.jsonhas notesttask at all.packages/viewer,packages/editor,packages/ifc-converterandapps/editorcontain 95 test files between them and had notestscript, so there was no way to run them even locally.Net effect: roughly 2,200 of 2,491 tests were not acting as a gate on any change.
What this does
testtask toturbo.json(dependsOn: ["^build"], no outputs) and a roottestscript, then oneTeststep toci.yml.testscripts to the four packages above.packages/viewerdeclared@pascal-app/coreonly as apeerDependency. Turbo doesn't traverse peer deps, so^buildresolved to nothing and viewer's tests couldn't resolve core'sdist/.editor,nodesandmcpall declare it indevDependenciesandpeerDependencies; this makesviewerconsistent with them. (One line inbun.lock.)src/tests/lib. Barebun testat a package root also collects the compiled tests underdist/, which is why viewer appeared to have 132 tests when it has 66.bun testinSETUP.mdandCONTRIBUTING.md(neither mentioned tests).Verification
From a clean tree —
rm -rf packages/*/dist packages/*/.turbo .turbo— on Bun 1.3.14:@pascal-app/core@pascal-app/nodes@pascal-app/editor@pascal-app/mcp@pascal-app/viewereditor(app)@pascal-app/ifc-converter2,491 passing, 0 failing. Warm re-run is
FULL TURBO(289ms), so the added CI step costs ~1 min cold and nothing when cached.bun run check(1,527 files) andbun run check-types(9/9) still pass.Notes
mcp-ci.ymlis left alone. It's now partly redundant with the root task, but it also buildspackages/mcpand lints a specific file set, so I didn't want to fold it in without your call. Happy to do that in a follow-up.bun test --coverageor--baillater; deliberately kept out of scope.Note
Low Risk
Infrastructure and documentation only; no product or test logic changes. CI runtime increases on cold runs.
Overview
Wires the existing Bun test suites into CI and Turborepo so PRs are gated on the full monorepo run, not just lint and typecheck.
Adds a root
testscript (turbo run test), atesttask inturbo.jsonwithdependsOn: ["^build"], and a Test step inci.yml(bun run test). Packages that had tests but no entry point get scopedtestscripts (apps/editor,@pascal-app/editor,@pascal-app/viewer,@pascal-app/ifc-converter).packages/viewernow lists@pascal-app/coreindevDependencies(still a peer) so Turbo’s^buildcan build core before viewer tests resolvedist/. Docs inCONTRIBUTING.mdandSETUP.mddescribe runningbun testfrom the repo root and including tests in the PR checklist.Reviewed by Cursor Bugbot for commit 99ff9f2. Bugbot is set up for automated code reviews on this repo. Configure here.