Sign in

AriPerkkio

@ariperkkio.dev
1.3K followers 195 following 117 posts

@vitest.dev Core Team • Open Source @chromatic.com • github.com/AriPerkkio

PostsRepliesMedia
AriPerkkio @ariperkkio.dev · 28/09/2026
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. 📸
0139
Reposted by AriPerkkio
Chromatic @chromatic.com · 03/09/2026
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)
Vitest Visual Regression Testing with Chromatic
1244
AriPerkkio @ariperkkio.dev · 27/08/2026
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!
github.com
Release v1.0.0 · vitest-dev/istanbuljs
v1.0.0 First stable release of @vitest/istanbuljs, a fork of istanbuljs/istanbuljs maintained by the Vitest team. The fork starts at upstream commit 28ffdbc (see vitest-dev/vitest#9433 for backgrou...
24411
AriPerkkio @ariperkkio.dev · 05/08/2026
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
Github PR diff view showing removal of "playwright install" step, and addition of "launchOptions.channel: 'chrome'" on Vitest Playwright provider.
41149
Reposted by AriPerkkio
James @43081j.com · 30/06/2026
is the distributed code readable? yes - don't ship a sourcemap. no - make the distributed code readable.
1262
Reposted by AriPerkkio
Chromatic @chromatic.com · 11/06/2026
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 🧵
Early access. Vitest Browser Mode visual tests in Chromatic for free (while in beta for the summer)
1163
AriPerkkio @ariperkkio.dev · 01/06/2026
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.
1237
AriPerkkio @ariperkkio.dev · 31/05/2026
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 🤝
npmx timeline of ast-v8-to-istanbul package. Trusted publishing was removed on May 25th, and re-enabled on May 31st.
0292
Reposted by AriPerkkio
Chromatic @chromatic.com · 28/05/2026
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)
vitest-chromatic-integration-early-access-program
3538
AriPerkkio @ariperkkio.dev · 13/05/2026
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.
github.com
GitHub - 43081j/ansivision: A library to time-travel through terminal output and more.
A library to time-travel through terminal output and more. - 43081j/ansivision
080
AriPerkkio @ariperkkio.dev · 15/04/2026
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.
github.com
GitHub - fallow-rs/oxc-coverage-instrument: Istanbul-compatible JavaScript/TypeScript coverage instrumentation using the Oxc AST
Istanbul-compatible JavaScript/TypeScript coverage instrumentation using the Oxc AST - fallow-rs/oxc-coverage-instrument
1257
AriPerkkio @ariperkkio.dev · 10/04/2026
@vitest.dev just surpassed Jest in npm weekly downloads 📈 npmx.dev/compare?pack...
31055
AriPerkkio @ariperkkio.dev · 18/03/2026
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.
github.com
test(reporters): add outputFile tests by AriPerkkio · Pull Request #978 · vitest-dev/vitest
Adds missing test cases for outputFile configuration. I'm working on another bug fix and thought let's merge these ones first.
2368
Reposted by AriPerkkio
Younes Jaaidi @younesjd.dev · 16/03/2026
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 ❤️)
Slack DM from November 15th, 2024. Younes Jaaidi: "My speculation is that Vitest will surpass Jest usage by Q1 2026 🔮". Brandon Roberts replies: "2026! 💀"

npmx.dev chart showing Jest vs Vitest monthly downloads from Nov 2024 to Mar 2026. Vitest grows from ~30M to 155.5M, surpassing Jest which sits at 143.3M. The lines cross around Q1 2026.
2458
Reposted by AriPerkkio
VoidZero @voidzero.dev · 18/02/2026
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! 🔥
2569
AriPerkkio @ariperkkio.dev · 16/02/2026
In the next version of Vitest you can track leaking asynchronous resources via `--detect-async-leaks` option! Available in v4.1.0-beta.4 release. 🔍 (notice missing await in the example)
Terminal output of Vitest's test run results. The results contain error message of asynchronous resource leaking. Code block pointing to a fetch call that is missing await.
27311
AriPerkkio @ariperkkio.dev · 09/02/2026
Excited to announce that I've officially joined @chromatic.com! My main focus will be working around features related to @vitest.dev 🤝
Github organization invitation with text "You've been invited to the Storybook organization!".
5594
AriPerkkio @ariperkkio.dev · 12/01/2026
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...
Partial screenshot from Github issue with text: "Alternative
Get someone from Vitest team into Istanbuljs organization and as maintainer of istanbuljs/istanbuljs package"
1174
Reposted by AriPerkkio
VoidZero @voidzero.dev · 05/01/2026
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. 🎉
Chart of weekly Vitest downloads, showing a peak of 20.18 million downloads at the beginning of December 2025.
2333
AriPerkkio @ariperkkio.dev · 08/12/2025
When using vite@8-beta with Vitest users no longer need to add magical '@preserve' keywords in their coverage ignore hints. Originally this work-around was needed due to esbuild's (intentional) lack of support for comment preserving. Oxc has built-in support for JS coverage tools' ignore hints.
Two istanbul coverage reports side-by-side. Left one titled "vite@7 + esbuild", right one "vite@8-beta + rolldown + oxc". Report on the right demonstrates how ignore hints work without @preserve keyword.
0162
Reposted by AriPerkkio
Vladimir @vladimir.berlin · 20/11/2025
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!
A screenshot of Vitest terminal showing the times for two runs. The first run takes 9.65s, the second run takes 5.90s.
45510
Reposted by AriPerkkio
danielroe @danielroe.dev · 12/11/2025
⚡ 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
download StackBlitz projects instantly

no authentication or API keys required – just replace the domain.

How it works
original link: https://stackblitz.com/edit/nuxtblitz
download link: https://stackblitz.zip/edit/nuxtblitz

(the only difference is that .com is replaced with .zip)
107315
AriPerkkio @ariperkkio.dev · 05/11/2025
Excited to see Typesafe CSF factories solve RFC I wrote two years ago. No more explicit TS typings! github.com/storybookjs/...
github.com
[RFC] `defineMeta` helper function · storybookjs storybook · Discussion #25319
Status: superseded by #30112 and implemented Summary Add a helper function defineMeta into Storybook that users can use to type the default export of stories. This helper function will provide type...
080
Reposted by AriPerkkio
hiogawa.bsky.social @hiogawa.bsky.social · 27/10/2025
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!
hiroshi-talks.vercel.app
Inside Vitest - Test Framework Architecture Deep Dive - Slidev
0143
Reposted by AriPerkkio
Vitest @vitest.dev · 22/10/2025
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
vitest.dev
Announcing Vitest 4.0
Vitest 4.0 Release Announcement
326357
AriPerkkio @ariperkkio.dev · 21/10/2025
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...
github.com
feat!: rewrite pools without `tinypool` by AriPerkkio · Pull Request #8705 · vitest-dev/vitest
Description Removes Tinypool and adds new custom internal pool for Vitest only. Some previous thoughts I wrote ~2 months ago about this below. Vitest uses tinypool for orchestrating how test file...
1272
Reposted by AriPerkkio
VoidZero @voidzero.dev · 20/10/2025
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
1275
Reposted by AriPerkkio
VoidZero @voidzero.dev · 14/10/2025
Watch VoidZero’s @overlookmotel.bsky.social explain how oxlint tackles JS-Rust interoperability to maintain high performance for plugins. Full video in comment 👇
4477
AriPerkkio @ariperkkio.dev · 28/08/2025
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.
NodeJS script in VSCode demonstrating how setting "process.title" takes around 10ms.
3323
Reposted by AriPerkkio
sapphi_red @sapphi.red · 02/08/2025
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...
green.sapphi.red
Addressing Source Code Leaks Across the Ecosystem – A Retrospective
0204
Reposted by AriPerkkio
Storybook @storybook.js.org · 18/06/2025
Our latest post walks through how to use the coverage reporting in Storybook 9 to be sure your components are well-tested.
storybook.js.org
Frontend test coverage with Storybook 9
Stories give you free test coverage
2287
AriPerkkio @ariperkkio.dev · 06/06/2025
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...
Screenshot of https://vitest.dev/guide/coverage.html#v8-provider contents. Describes the differences between Istanbul and V8 coverage providers.
1356
AriPerkkio @ariperkkio.dev · 02/06/2025
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.
4647
Reposted by AriPerkkio
Vitest @vitest.dev · 02/06/2025
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-...
Vitest 3.2 logo
215227
AriPerkkio @ariperkkio.dev · 21/05/2025
Onboarding on new @storybook.js.org projects is just perfect. So nice to have testing setup *covered* out-of-the-box. 🤝
Storybook's onboarding messages informing Vitest packages installation. The instructions include pun "Let me cover this for you" while installing code coverage packages.
1336
Reposted by AriPerkkio
Open Source Pledge ⇌ @opensourcepledge.com · 14/05/2025
@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/
Bolt are looking for an engineer to advance web computing by working on WebContainer, the first-ever in-browser WebAssembly-based operating system. The job is remote and gives you a high degree of autonomy.

But more than that, you'd be getting paid to be an Open Source contributor to projects such as Node.js, Next.js and others. Sound good? Apply now.
03511
AriPerkkio @ariperkkio.dev · 11/05/2025
Tinypool is now built with tsdown! Migration from tsup was smooth and required minimal changes. Thanks to @sxzz.dev 💯
Github commit with title "refactor: switch to tsdown" merged into "tinylibs/tinypool" project.
091
AriPerkkio @ariperkkio.dev · 06/04/2025
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.
Bar graph showing results for ast-v8-to-istanbul generating coverage for checker.ts from Typescript repository. 
- v0.1.0: 1192s
- v0.1.1: 35s
- v0.1.2: 0.55s
3446
AriPerkkio @ariperkkio.dev · 31/03/2025
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.
Example test case demonstrating how console logs from passing tests are not visible in terminal when using --silent=passed-only option from Vitest 3.1.0
27716
AriPerkkio @ariperkkio.dev · 21/03/2025
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.
- Speed of V8 coverage 🏎
- Accuracy of Istanbul coverage 🔍
Experimental AST-aware v8-to-istanbul. Work-in-progress. 🚧
- Unopinionated - bring-your-own AST parser and source maps.
- Passes all 195 tests* of istanbul-lib-instrument. ✅

This project tests itself against test cases of istanbul-lib-instrument and verifies coverage maps are 100% identical. Some cases, like deprecated with() statement and edge cases of strict mode are skipped, as all tests are run in strict mode.

100% istanbul compatibility guarantees that coverage reports between V8 and Istanbul can be merged together.
1508
Reposted by AriPerkkio
ViteConf (Oct 15, 2026) @viteconf.org · 15/03/2025
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
212328
Reposted by AriPerkkio
hiogawa.bsky.social @hiogawa.bsky.social · 09/03/2025
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!
github.com
Sponsor @sxzz on GitHub Sponsors
An open sourceror. Working on Vue, Vite, VueUse, and their ecosystems.
2276
AriPerkkio @ariperkkio.dev · 16/02/2025
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.
Before-and-after picture of Vitest's verbose reporter tree view fixes. Results on left are rendered as flat list, while right one is rendered as a tree-view.
1584
Reposted by AriPerkkio
bolt.new @bolt.new · 13/02/2025
In 2025, we’re doubling down on our support to Open Source. We’re thrilled to announce the Bolt 100K Open Source Fund:
blog.stackblitz.com
Bolt 100K Open Source Fund
We're doubling down on our support to Open Source in 2025 with a 100K fund targeted at web infrastructure and Bolt dependencies.
28314
Reposted by AriPerkkio
Mohammad Bagher 👾 @aslemammad.bsky.social · 08/02/2025
🤏 it's a good day for tinypool! thank you so much @sebastienlorber.com and @ariperkkio.dev ❤️ github.com/facebook/doc...
github.com
feat(core): Docusaurus Faster - SSG worker threads by slorber · Pull Request #10826 · facebook/docusaurus
Motivation This PR introduces a new Docusaurus Faster option: siteConfig.future.experimental_faster.ssgWorkerThreads. It permits you to optimize the static site generation phase of your site, by ex...
0133
AriPerkkio @ariperkkio.dev · 04/02/2025
Huge thanks to @sapphi.red for helping the @vitest.dev team with these findings. Perfect collaboration between projects. 🤝
1214
Reposted by AriPerkkio
patak @patak.cat · 30/01/2025
I finally met @ariperkkio.dev! And he got his first edition vitest shirt, that has been waiting for him for a year at home
patak and Ari with mountains in the background. Ari is wearing a shirt with the vitest logo.
3502
Reposted by AriPerkkio
patak @patak.cat · 29/01/2025
everything is better with open source friends
815211
AriPerkkio @ariperkkio.dev · 28/01/2025
Installing dependencies while coding offline in an airplane. The --prefer-offline from @pnpm.io is just perfect. 🤩
1121
Reposted by AriPerkkio
jviide.iki.fi @jviide.iki.fi · 24/01/2025
Expressing appreciation for ‪the work of @ariperkkio.dev‬ and the other @vitest.dev devs. The absolute smoothness of Vitest 3.0's terminal reporter is something I didn't even realize I needed.
2536