AriPerkkio's Avatar

AriPerkkio

@ariperkkio.dev

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

1,212
Followers
179
Following
85
Posts
05.11.2024
Joined
Posts Following

Latest posts by AriPerkkio @ariperkkio.dev

Nothing in progress yet. In the first step I'd like to see Github Action adding some label when PR is detected to be from a bot account. Closing the PR automatically might be too aggressive.

24.02.2026 07:06 👍 0 🔁 0 💬 1 📌 0

We need Github action that posts output of this site to the PR if it's detected as non-human. It would speed up reviewing PRs a lot. I also started this morning by looking at confusing PR that was from automated account. 🙃

23.02.2026 11:45 👍 3 🔁 0 💬 4 📌 0
Video thumbnail

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

18.02.2026 20:40 👍 56 🔁 9 💬 1 📌 3

Yes exactly! In addition to performance impact, one downside is that this is Node-only feature. With CDP we could probably detect unresolved fetch calls, but would still be unable to point those to specific stacktraces.

17.02.2026 06:21 👍 1 🔁 0 💬 0 📌 0
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.

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.

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)

16.02.2026 12:50 👍 72 🔁 11 💬 2 📌 0
Github organization invitation with text "You've been invited to the Storybook organization!".

Github organization invitation with text "You've been invited to the Storybook organization!".

Excited to announce that I've officially joined @chromatic.com! My main focus will be working around features related to @vitest.dev 🤝

09.02.2026 09:47 👍 58 🔁 4 💬 5 📌 3

Great to have you back! 🫶

03.02.2026 08:03 👍 1 🔁 0 💬 1 📌 0

As tags are detected by actually running the test file, filtering by filenames will be faster. This is actually why tags feature request was initially rejected.

22.01.2026 14:05 👍 2 🔁 0 💬 0 📌 0
Partial screenshot from Github issue with text: "Alternative
Get someone from Vitest team into Istanbuljs organization and as maintainer of istanbuljs/istanbuljs package"

Partial screenshot from Github issue with text: "Alternative Get someone from Vitest team into Istanbuljs organization and as maintainer of istanbuljs/istanbuljs package"

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

12.01.2026 10:53 👍 14 🔁 4 💬 1 📌 0
Chart of weekly Vitest downloads, showing a peak of 20.18 million downloads at the beginning of December 2025.

Chart of weekly Vitest downloads, showing a peak of 20.18 million downloads at the beginning of December 2025.

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

05.01.2026 10:00 👍 33 🔁 3 💬 2 📌 0
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.

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.

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.

08.12.2025 11:50 👍 16 🔁 2 💬 0 📌 1
A screenshot of Vitest terminal showing the times for two runs. The first run takes 9.65s, the second run takes 5.90s.

A screenshot of Vitest terminal showing the times for two runs. The first run takes 9.65s, the second run takes 5.90s.

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!

20.11.2025 12:04 👍 55 🔁 10 💬 4 📌 0
Github CI report showing aria-live-capture project's browser tests running faster than JSDOM.

Github CI report showing aria-live-capture project's browser tests running faster than JSDOM.

Project is at github.com/AriPerkkio/a...

Same tests run in browser and JSDOM:

13.11.2025 15:16 👍 1 🔁 0 💬 1 📌 0

I'm also using browser mode for testing library that does headless stuff on DOM. No components or anything visual. It's more reliable for end-users and actually runs faster than JSDOM.

13.11.2025 15:03 👍 1 🔁 0 💬 1 📌 0
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)

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)

⚡ 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

12.11.2025 17:15 👍 74 🔁 15 💬 10 📌 1

In the early days of experimental browser mode I tried to do this with Astro without success. I ended up with conclusion that Astro doesn't expose APIs for rendering smaller parts of the application. It would be amazing to have this supported 🤩

07.11.2025 07:27 👍 0 🔁 0 💬 1 📌 0

Excited to see Typesafe CSF factories solve RFC I wrote two years ago. No more explicit TS typings! github.com/storybookjs/...

05.11.2025 06:52 👍 8 🔁 0 💬 0 📌 0

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!

27.10.2025 09:18 👍 14 🔁 3 💬 0 📌 0
Preview
Announcing Vitest 4.0 Vitest 4.0 Release Announcement

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

22.10.2025 15:43 👍 266 🔁 58 💬 3 📌 8

It's mainly because we needed more control of pool architecture on Vitest's side, and didn't want to break Tinypool's public API for all its others users by rewriting everything. Tinypool might be perfect for some users, but for Vitest it was blocker in many ways.

22.10.2025 05:36 👍 1 🔁 0 💬 0 📌 0
Preview
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...

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

21.10.2025 17:47 👍 27 🔁 2 💬 1 📌 1
Video thumbnail

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

20.10.2025 02:31 👍 27 🔁 5 💬 1 📌 0
Video thumbnail

Watch VoidZero’s @overlookmotel.bsky.social explain how oxlint tackles JS-Rust interoperability to maintain high performance for plugins.

Full video in comment 👇

14.10.2025 09:18 👍 47 🔁 7 💬 4 📌 0

Is this open source? Link please 👀

11.10.2025 21:48 👍 4 🔁 0 💬 1 📌 0

If the CLI app that's being tested uses chalk/picocolors, there won't be colors in the app as they check for TTY. In threads pool this doesn't happen as there's no separate process in-between.

20.09.2025 17:25 👍 2 🔁 0 💬 1 📌 0

I don't think it does. Probably the CLI app you are testing disables its colors when ran in child_process with `stdio: 'pipe'`. If I remember correctly, chalk does some TTY checks for reasons no one knows. Tinylib's color lib had same check copy-pasted.

20.09.2025 12:41 👍 1 🔁 0 💬 1 📌 0
Preview
Implement --isolate flag in `bun:test` by Jarred-Sumner · Pull Request #3047 · oven-sh/bun While it technically works, this is marked as a draft PR because a good amount of work needs to be done before this PR can meet our performance expectations. In it&#39;s current form, this is a 26x...

Finally someone mentioning test isolation! It's easy to be fast without it. See github.com/oven-sh/bun/... mentioning "26x slowdown to bun:test" - though this feature never landed.

15.09.2025 04:37 👍 2 🔁 0 💬 1 📌 0

Yep 2 paints are required and it's a pitfall many devs don't realize. I'm not sure about the history of why live regions are designed in such way. ARIA spec has always mentioned "updates of live regions" only.

03.09.2025 11:10 👍 1 🔁 0 💬 0 📌 0

Though validating getByRole('status') with text content like that is error prone. I've written someting about it here github.com/AriPerkkio/e...

03.09.2025 09:07 👍 2 🔁 0 💬 1 📌 0
-

-

Does not work on Mac with latest Bun:

28.08.2025 11:46 👍 1 🔁 0 💬 1 📌 0