Latest work on Vitest's istanbuljs fork removed Babel from coverage-istanbul. Instrumentation is now done with packages that Vitest dep graphs already have: magic-string and rolldown, similar to Vite's own SSR transform. Surprisingly this dep trim improved instrumentation speed 5-10x.
AriPerkkio
AriPerkkio
@ariperkkio.dev
@vitest.dev Core Team • Open Source @chromatic.com • github.com/AriPerkkio
1.2K followers200 following119 posts
This Thursday we'll be discussing about Visual Regression Testing using @vitest.dev and @chromatic.com. Join me and @kylegach.com to hear how you can get VRT that's stable across your whole team, not just on your local machine. 📸
@vitest.dev already renders your components in a real browser. Now you can visually test them there, with no test code changes. 🎙️ @ariperkkio.dev, the Vitest core maintainer who built our new plugin, is doing a live walkthru with @kylegach.com to show you how. 🎟️ Save your spot 👇
AriPerkkio reposted
Chromatic for @vitest.dev Browser Mode is live. 🧪📸 Browser Mode runs your component tests in a real browser. Now Chromatic checks how those components look by capturing the rendered UI. No new screenshot assertions. No second suite to maintain. 🧵 (1/4)
The @vitest/istanbuljs fork is now ready and will ship in the next version of Vitest. Compared to the original istanbuljs packages it's ESM-only, ships its own typings, drops unnecessary runtime deps, and moves Node 8→22, Babel 7→8 (lib-instrument), React→Preact (html-spa reporter), and more!
I'd like to avoid forking Istanbuljs monorepo just for Vitest. Any istanbuljs Github organization members here who could make me a maintainer there? (@kentcdodds.com, @jasonkurian.dev 👋) github.com/vitest-dev/v...
TIL when running Vitest browser mode (or plain Playwright) on Github Actions on Ubuntu, you can skip the slow "playwright install chromium" step completely by providing channel option. This makes Playwright use the pre-installed Chrome. So many projects out there that could speed their CIs with this
AriPerkkio reposted
AriPerkkio reposted
Get first access to our @vitest.dev plugin, which adds Chromatic’s visual testing and review to your browser tests. It’s built by @ariperkkio.dev, a Vitest core maintainer. It’s free to use while in beta and requires no changes to your test files. Read on for more info 🧵
Building this integration has been amazing opportunity to dogfood all APIs we've added into @vitest.dev in past years. It's using features like new Reporter APIs, Vitest plugin hooks, browser commands, CDP, test tags and much more! Vitest is definitely one of the most extensible JS tools out there.
We’re launching early access for Vitest visual testing with Chromatic! ⚡️ Built with @vitest.dev core maintainer ariperkkio.dev, Chromatic adds visual testing to the browser tests you already write. 🧵 (1/4)
If you've published a package using staged publishing before this fix, all that's needed now is to re-publish the same package and @npmx.dev will display the trusted publishing label again 🤝
npm now signals when a package used staged publishing! 🎉 this will fix a whole bunch of trust scales (e.g. pnpm trust downgrades)
AriPerkkio reposted
We’re launching early access for Vitest visual testing with Chromatic! ⚡️ Built with @vitest.dev core maintainer ariperkkio.dev, Chromatic adds visual testing to the browser tests you already write. 🧵 (1/4)
Testing terminal output is hard. Especially in cases that involve clearing screen partially while maintaining stable log output elsewhere on screen. With ansivision it's possible to simulate what output all the ansi codes would render visually in real terminal. No need to use heavy node-pty anymore.
Super happy to see a fairly niche library of mine being put to good use 😍
There's some impressive work going on with 3rd party oxc powered coverage instrumentation that can replace Babel based istanbul-lib-instrument 👀 > 8-11x faster than babel-plugin-istanbul, 13-15x faster than swc-plugin-coverage-instrument (Rust/WASM), 25-30x faster than istanbul-lib-instrument.
@vitest.dev just surpassed Jest in npm weekly downloads 📈 npmx.dev/compare?pack...
This day 4 years ago I sent my first PR to @vitest.dev. Back then it was on v0.7.4 with 80K weekly downloads. After one year and +70 more PRs, @antfu.me and @erus.dev invited me to join the team. Today we are at v4.1.0 with 35M weekly downloads. Maybe in 2030 we'll have Vitest 8 with 140M downloads.
AriPerkkio reposted
I just need a few more of you to migrate to @vitest.dev so I can prove that crystal balls work 🔮 😉 (the charts from npmx.dev are so neat ❤️)
AriPerkkio reposted
Flaky tests and memory leaks are the worst. @vitest.dev now has a flag that catches uncleared intervals, lingering servers, and other async operations leaking across your tests. Available in the latest 4.1 beta. Big shout out to @ariperkkio.dev from the Vitest team for landing this PR! 🔥
Excited to announce that I've officially joined @chromatic.com! My main focus will be working around features related to @vitest.dev 🤝
I'd like to avoid forking Istanbuljs monorepo just for Vitest. Any istanbuljs Github organization members here who could make me a maintainer there? (@kentcdodds.com, @jasonkurian.dev 👋) github.com/vitest-dev/v...
AriPerkkio reposted
Vitest hit 20 million weekly downloads in December, right before Christmas break. To put that into context: 5 million @vitest.dev weekly downloads were reached in June 2024, meaning a 4x increase in just 1.5 years. 🎉
AriPerkkio reposted
Vitest 4.0.11 adds an experimental `fsModuleCache` flag to cache module transforms between reruns. Learn more: vitest.dev/config/exper... This is an opt-in feature, please let us know how it works for you! And example of a single test file that imports a lot of files (~1500). Almost a 50% boost!
AriPerkkio reposted
⚡ ever wanted to download @stackblitz.com projects without opening the site? you now can 🎉 🌐 web: replace stackblitz.com w/ stackblitz.zip in any edit url 🖥️ cli: `npx stackblitz-zip <url>` or `npx stackblitz-clone <url>` 📦 npm: `npm i stackblitz-zip` built for myself to grab repros from issues
Excited to see Typesafe CSF factories solve RFC I wrote two years ago. No more explicit TS typings! github.com/storybookjs/...
Storybook 10 is here! ✂️ ESM-only (the only breaking change!) 🧩 Module automocking for easier testing 🏭 Typesafe CSF factories Preview for React 💫 UI editing and sharing optimizations 🏷️ Tag filtering exclusion for sidebar management 🔀 Svelte async component support
AriPerkkio reposted
My talk slides are available here hiroshi-talks.vercel.app/2025-10-25/1 also with source code in github.com/hi-ogawa/talks It was a great experience to talk with many awesome folks in person! Thanks @vuefes.bsky.social for the opportunity!
/ 📢Introducing a speaker at Vue Fes Japan 2025✨ \ 【Hiroshi Ogawa @hiogawa.bsky.social 】 「Inside Vitest: Test Framework Architecture Deep Dive」 Check out the session details here✅ 👉 vuefes.jp/2025/en/spea... #vuefes #vuejs
AriPerkkio reposted
Vitest 4 is out! - Browser Mode is Stable - Visual Regression Testing - Improved Debugging - Pool Stabilization - New APIs - Bug Fixes Stay updated with our blog post: vitest.dev/blog/vitest-4
After maintaining Tinypool for over 2 years I'm happy to see next version of Vitest dropping it. I've written some reasoning about this in the linked PR. Even though this change is significant for Vitest, I'm more confident about it than making new changes in Tinypool. github.com/vitest-dev/v...
AriPerkkio reposted
VoidZero's @erus.dev talks about the upcoming @vitest.dev features including the new report API and multi-browser configuration as well as what to expect in Vitest 4 🧪 Full video in comments
AriPerkkio reposted
Watch VoidZero’s @overlookmotel.bsky.social explain how oxlint tackles JS-Rust interoperability to maintain high performance for plugins. Full video in comment 👇
Setting custom `process.title` in Node takes around 10-20ms. Vitest used to do this for every isolated test file so that debugging test runner processes was a bit nicer experience. But it's not worth the performance hit.
Vitest 4 runs simple test files faster! You can already check it out by installing Vitest 4 beta. On average, Vitest now takes 25% less time to start the test. Due to parallelisation, the overall time difference can vary. We are focusing our efforts on improving the time even more in the next beta!
AriPerkkio reposted
Published a post I started writing half a year ago. Make sure to use the latest versions of each build tools and configure the settings appropriately! green.sapphi.red/blog/address...
AriPerkkio reposted
Our latest post walks through how to use the coverage reporting in Storybook 9 to be sure your components are well-tested.
We've added new coverage provider comparison page on Vitest documentation. This guide describes the lower level differences between Istanbul and V8. It should help users choosing which provider to use. vitest.dev/guide/covera...
AST based V8 code coverage is finally here! I thought of this feature first time over 2 years ago, but knew it would require so much work that I couldn't finish it by working on Vitest just on weekends. Ever since @stackblitz.com hired me to work on Vitest I knew I could finish features like this.
Vitest 3.2 is out! - New Annotations API - Scoped Fixtures - Custom Browser Locators API - Test Signal - Better V8 Coverage Result And many more features! vitest.dev/blog/vitest-...
Please give this feature a try by enabling `coverage.experimentalAstAwareRemapping` and leave feedback at github.com/vitest-dev/v....
AST based V8 code coverage is finally here! I thought of this feature first time over 2 years ago, but knew it would require so much work that I couldn't finish it by working on Vitest just on weekends. Ever since @stackblitz.com hired me to work on Vitest I knew I could finish features like this.
Vitest 3.2 is out! - New Annotations API - Scoped Fixtures - Custom Browser Locators API - Test Signal - Better V8 Coverage Result And many more features! vitest.dev/blog/vitest-...
For this feature we needed completely new way to process V8 code coverage results. The final library is built in a way that it can be utilized by other test runners too - there is nothing Vitest specific! github.com/AriPerkkio/a...
AriPerkkio reposted
Vitest 3.2 is out! - New Annotations API - Scoped Fixtures - Custom Browser Locators API - Test Signal - Better V8 Coverage Result And many more features! vitest.dev/blog/vitest-...
Onboarding on new @storybook.js.org projects is just perfect. So nice to have testing setup *covered* out-of-the-box. 🤝
AriPerkkio reposted
@bolt.new are looking for an engineer to advance web computing by working on WebContainer, the first in-browser WebAssembly-based operating system. You'd be getting paid to be an Open Source contributor, AND you'd get to work with @patak.dev. Sounds pretty good to us! opensourcepledge.com/jobs/
Tinypool is now built with tsdown! Migration from tsup was smooth and required minimal changes. Thanks to @sxzz.dev 💯
After couple of days looking at *.cpuprofile's, I think it's getting closer to stable v1 release. The ~3MB checker.ts from Typescript repo is perfect benchmarking reference for tools that process source code. When generating coverage for 'vuejs/core' repo, speed is close to original v8-to-istanbul.
Finalizing rewrite of AST-aware v8-to-istanbul. This will provide accuracy of Istanbul coverage for V8 coverage reports. I've intentionally kept this tool unopinionated so that it's not strictly tied to just @vitest.dev - it should be usable with Jest, C8, Playwright and node:test too.
This release includes long-awaited "--silent=passed-only" option, that can be used to hide console.log calls from passing tests. Only the logs from failing tests are reported.
Vitest 3.1.0 is out! ⚡ Apart from performance improvements and fixes, this release expands your test setup flexibility with new options. Check out the release notes here.
Finalizing rewrite of AST-aware v8-to-istanbul. This will provide accuracy of Istanbul coverage for V8 coverage reports. I've intentionally kept this tool unopinionated so that it's not strictly tied to just @vitest.dev - it should be usable with Jest, C8, Playwright and node:test too.
AriPerkkio reposted
We are proud to announce the First Ever ViteConf taking place in person 🤩 Join the Creator of Vite, @evanyou.me, Core Team, Ecosystem Authors and Experts! 📍 10 October, Amsterdam 👋 Sign up for the waiting list to be notified about the ticket release via viteconf.org
AriPerkkio reposted
Huge improvement for Vitest development workflow, thanks to isolated declaration! I didn't think the migration was possible until I see PRs by @sxzz.dev. Just started to sponsor Kevin for the amazing work!
Three weeks ago @sxzz.dev updated Vitest to (mostly) adopt TypeScript's stricter Isolated Declarations mode 🎉 github.com/vitest-dev/v... This allowed @hiogawa.bsky.social to make Vitest use Oxc for DTS generation. Build time reduced from 90s to 27s - a 70% reduction 🔥 github.com/vitest-dev/v...
Tree-view of @vitest.dev verbose reporter is coming back! We (well I did) forgot to implement this during v3's reporter rewrites. I had already forgot how good it looks.
AriPerkkio reposted
In 2025, we’re doubling down on our support to Open Source. We’re thrilled to announce the Bolt 100K Open Source Fund:
AriPerkkio reposted
🤏 it's a good day for tinypool! thank you so much @sebastienlorber.com and @ariperkkio.dev ❤️ github.com/facebook/doc...
Huge thanks to @sapphi.red for helping the @vitest.dev team with these findings. Perfect collaboration between projects. 🤝
We've released patches for a critical security vulnerability. We strongly encourage projects to upgrade to versions 1.6.1, 2.1.9, or 3.0.5 as soon as possible.