Skip to content

perf: Speed up lockfile test suite#12078

Merged
anthonyshew merged 2 commits into
mainfrom
shew/lockfile-parsers-faster
Mar 1, 2026
Merged

perf: Speed up lockfile test suite#12078
anthonyshew merged 2 commits into
mainfrom
shew/lockfile-parsers-faster

Conversation

@anthonyshew

Copy link
Copy Markdown
Contributor

Summary

  • Fixture validation now uses lightweight lockfile-only commands (--lockfile-only, --package-lock-only, --mode=skip-build) instead of full frozen installs that download packages
  • Corepack/bun environments are cached per packageManagerVersion and reused across all fixtures sharing that version, eliminating ~130 redundant corepack prepare / bun download invocations
  • All workspace targets within a fixture now share a single copy and git init, running turbo prune sequentially and cleaning up out/ between each

Benchmarks (192 tests, 62 fixtures)

Step Duration Cumulative speedup
Baseline 87.6s
+ Lightweight validation 46.0s 47% faster
+ Cached PM environments 22.3s 75% faster
+ Shared fixture copies 16.9s 81% faster

Testing

The test harness itself runs correctly and all 192 test cases execute through the same prune + frozen install flow. Note: all tests currently fail at the prune step due to the globally-installed turbo shim not resolving correctly when symlinked into temp directories — that's a pre-existing environment issue unrelated to this change.

@anthonyshew anthonyshew requested a review from a team as a code owner March 1, 2026 02:40
@anthonyshew anthonyshew requested review from tknickman and removed request for a team March 1, 2026 02:40
@vercel

vercel Bot commented Mar 1, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
examples-basic-web Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-designsystem-docs Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-gatsby-web Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-kitchensink-blog Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-nonmonorepo Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-svelte-web Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-tailwind-web Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
examples-vite-web Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
turbo-site Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
turborepo-agents Ready Ready Preview, Comment, Open in v0 Mar 1, 2026 3:00am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
turborepo-test-coverage Skipped Skipped Open in v0 Mar 1, 2026 3:00am

Comment thread lockfile-tests/runners/local.ts Outdated
Three optimizations to the lockfile test runner:

1. Use lightweight validation commands (--lockfile-only, --package-lock-only,
   --mode=skip-build) instead of full frozen installs when validating fixtures

2. Cache corepack/bun environments per packageManagerVersion instead of
   re-running corepack enable + prepare for every temp directory

3. Share a single fixture copy and git init across all workspace targets,
   running prune sequentially within each fixture group
Yarn Classic uses --frozen-lockfile, not --immutable/--mode=skip-build.
@vercel vercel Bot temporarily deployed to Preview – turborepo-test-coverage March 1, 2026 02:59 Inactive
@anthonyshew anthonyshew changed the title perf: Speed up lockfile test suite by ~80% perf: Speed up lockfile test suite Mar 1, 2026
@anthonyshew anthonyshew merged commit 20024df into main Mar 1, 2026
40 checks passed
@anthonyshew anthonyshew deleted the shew/lockfile-parsers-faster branch March 1, 2026 03:06
github-actions Bot added a commit that referenced this pull request Mar 2, 2026
## Release v2.8.13-canary.9

Versioned docs: https://v2-8-13-canary-9.turborepo.dev

### Changes

- fix: Treat `npm: alias` dependencies as external, not workspace
references (#12061) (`b179cb8`)
- test: Port 18 more prysk tests to Rust (other/ +
lockfile-aware-caching/) (#12062) (`7887af2`)
- release(turborepo): 2.8.13-canary.8 (#12063) (`2a5522a`)
- fix: Preserve file: protocol entries in pruned yarn v1 lockfile
(#12064) (`ae5c1a1`)
- perf: Use stack-allocated OidHash in FileHashes and skip expanded
hashes on normal runs (#12065) (`677b248`)
- test: Port all 8 find-turbo prysk tests to Rust (#12066) (`f827fca`)
- fix: Support pnpm per-workspace lockfiles in turbo prune (#12067)
(`23d047d`)
- test: Port final 2 prysk tests to Rust (100% complete) (#12068)
(`6d7e057`)
- fix: Resolve Berry prune failure when resolutions contain patch
overrides (#12069) (`6fe3c5e`)
- test: Add lockfile fixture for yarn berry resolution pruning (issue
#2791) (#12071) (`6cc1654`)
- chore: Remove prysk test framework entirely (#12070) (`ed2d05a`)
- refactor: Clean up test infrastructure and eliminate duplication
(#12072) (`338911d`)
- fix: Retain injected workspace package entries during pnpm lockfile
pruning (#12073) (`acbe869`)
- ci: Exclude turborepo-lsp and turborepo-schema-gen from test builds
(#12075) (`4ce12e2`)
- refactor: Clean up test infrastructure + improve test quality (#12074)
(`4571f2b`)
- ci: Remove redundant cargo build from coverage job (#12077)
(`3c9bbe2`)
- perf: Speed up lockfile test suite (#12078) (`20024df`)
- ci: Remove integration test serialization (#12079) (`24d7c02`)
- fix: Preserve `file:` and `link:` protocol entries in pruned bun
lockfile (#12076) (`2635d9a`)
- fix: Stop running unnecessary npm install in engines tests (#12081)
(`24e4905`)
- test: Add lockfile fixture for pnpm v9 injected workspace deps (issue
#8243) (#12082) (`4d4929b`)
- fix: Filter orphaned Yarn packageExtensions entries during lockfile
pruning (#12084) (`68eb223`)
- fix: Align experimentalObservability on object maps rather than arrays
(#12089) (`9b9d1e4`)
- examples: Upgrade with-react-native-web example to use latest versions
(#12085) (`980ca43`)
- fix: duplicate /signup? in Vercel URL (#12088) (`e865b51`)
- ci: Deduplicate Rust test compilation with nextest archive (#12083)
(`962cf39`)
- fix: Prevent yarn integration tests from hanging on corepack prompts
(#12090) (`29b0da7`)
- fix: Prevent turbo dev from hanging when daemon file watching fails
(#12091) (`b0d2f62`)
- ci: Skip pnpm install for Rust test jobs (#12092) (`ebd137f`)
- perf: Optimize npm lockfile parser (#12093) (`e4b4a66`)
- chore: Trim unused dependency features for faster compilation (#12094)
(`03b79e0`)
- fix: Prevent lockfile-aware yarn test from hanging on corepack
downloads (#12095) (`bf516e4`)
- fix: Exclude turborepo-repository from JS smoke test in release
workflow (#12097) (`fecc400`)

---------

Co-authored-by: Turbobot <turbobot@vercel.com>
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