AriPerkkio

@ariperkkio.dev

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

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.

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)

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.

Chromatic@chromatic.com · 2mo ago

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

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 - 43081j/ansivision: A library to time-travel through terminal output and more.

A library to time-travel through terminal output and more. - 43081j/ansivision

github.com

James@43081j.com · 3mo ago

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.

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

github.com

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.

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.

github.com

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! 🔥

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.

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.

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.

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.

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!

Inside Vitest - Test Framework Architecture Deep Dive - Slidev

hiroshi-talks.vercel.app

Vue Fes Japan@vuefes.bsky.social · 10mo ago

/ 📢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

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...

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...

github.com

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@vitest.dev · last yr.

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