Artem Zakharchenko
banner
kettanaito.com
Artem Zakharchenko
@kettanaito.com
Software engineer. Helping you master automated testing at http://EpicWeb.dev. Author mswjs.io. Instructor egghead.io.

I tell stories @zakarcher.com.

My debut book "LOGGERHEADS" it out 👇
https://zakarcher.com/books/loggerheads
Pinned
Huge news! I've written a book.

This is a story of light and dark that won't leave you indifferent. Illustrated, atmospheric, and meaningful. The kind that stays with you.

Please enjoy this cover reveal for Loggerheads:
zakarcher.com/blog/cover-...

📚💙
Cover reveal: Loggerheads
zakarcher.com
An undo/redo history is one of those things that look clear enough on the surface, but once you dive into async/batching/cancellation, you realize how more difficult and exciting it actually is to build!
November 25, 2025 at 5:40 PM
I've updated my React Component Testing with Vitest workshop to include a new exercise on migrating to Vitest 4.0!

Discover what changed, what's relevant for component testing, and how to migrate your tests in a breeze.

react-component-testing-with-vitest.epicweb.dev/exercise/05...
Migrating to Vitest 4.0
Extras step 1 problem
react-component-testing-with-vitest.epicweb.dev
November 25, 2025 at 5:17 PM
📣 A huge mega epic sale is happening!

You can grab my entire Testing Bundle 50% off. Just bear in mind that it has a solid chance of making you fall in love with testing. You've been warned.

www.epicweb.dev/testing
Master Testing for Better Web Applications Using Vitest
Learn from the creator and maintainer of Mock Service Worker, Artem Zakharchenko.
www.epicweb.dev
November 24, 2025 at 4:16 PM
📰 Today, I've got a practical testing tip for you. I've picked this one up relatively recently and I've been using it for testing anything async since. And I think you should use it, too!

Let's talk about the `.resolves` chaining in your assertions.

www.epicweb.dev/prefer-the-...
Prefer the `.resolves` Chaining
Improve the error experience when testing asynchronous code with the `.resolves`/`.rejects` chaining.
www.epicweb.dev
November 24, 2025 at 3:12 PM
Sometimes you have to glue the pieces together, and sometimes you find exactly what you were looking for because someone has put up a whole whooping talk about it!

jess.sh/vitest-anatomy
November 23, 2025 at 10:52 AM
The engineering brain and the DX brain are two separate brains and blessed are those in possession of both.
November 23, 2025 at 10:10 AM
GitHub broke site references feature and, sadly, forgot about it. This "week" has been going on for some months now.
November 23, 2025 at 9:22 AM
It is no wonder forms are one of the hardest things to write on the web. Because HTML is entirely out-of-sync with what users expects from forms.

- Abysmal to style.
- Checkboxes having a hard-coded "on" as a string value (booleans, anyone?);
- ...
November 22, 2025 at 3:22 PM
Reposted by Artem Zakharchenko
Call for guests:

Looking for people to interview for @devtools.fm

Requirements:

- we haven’t talked (or it’s been a long time)
- you build a tool for devs
November 21, 2025 at 12:22 AM
We've talked a lot about tooling and concepts lately. I've got an article about a small practical tip with huge impact coming up next. Something I picked up relatively recently but it changed the way I test asynchronous code.

Now, to proofreading! 🥸
November 21, 2025 at 11:16 AM
All Dark Souls games, Sekiro, Bloodborne, and Elden Ring all came out after Skyrim.

Just let that sink in. Those games have revolutionized what the player now expects from an RPG. TES6 is in a really tight spot. A new setting and some new mechanics won't be enough.
November 20, 2025 at 6:31 PM
I need you to criticize the heck out of this. Go! 👇
Am I crazy in wanting browser end-to-end tests to look like this?

- Lists everything this test case needs (no magic).
- Per test resources as simple as calling a function.
- Easy client/server setup w/o changing your app.
November 18, 2025 at 4:31 PM
Am I crazy in wanting browser end-to-end tests to look like this?

- Lists everything this test case needs (no magic).
- Per test resources as simple as calling a function.
- Easy client/server setup w/o changing your app.
November 18, 2025 at 4:22 PM
Imagine if it's useEffectEvent hook this time.
November 18, 2025 at 1:52 PM
I need your help. Show me how you handle databases in your end-to-end tests with Playwright 👀

How do you use a different DB url? How do you prepare the db (e.g. prisma migrate)? Do you reset it at all?
November 18, 2025 at 1:52 PM
I have seen, read, and heard so many misconceptions and archaisms when it comes to automated testing in the past two years of my research. Using a single app instance for all e2e tests might be the most insane of them.

Does anyone know where this thinking came from, historically?
November 18, 2025 at 1:41 PM
I love Playwright the library.
I hate Playwright the framework.

Yes, those are two different tools with different package names and purposes. There are so many footguns in the framework one it is insane. The more I use it, the less I agree with the design choices and specific APIs.
November 18, 2025 at 1:37 PM
I dislike the fact that you cannot run ANYTHING before `webServer` in Playwright so much. Want to migrate your test DB and *then* run your tested app? Good luck, sir!
November 18, 2025 at 1:34 PM
Reposted by Artem Zakharchenko
🧵 (1/3) Most AI-generated code looks good until you try to merge it. Wrong props, odd states, subtle regressions.

Storybook MCP fixes that.

It turns your stories, docs & tests into machine-readable context so agents actually follow your patterns.
November 17, 2025 at 8:06 PM
Last year today, MSW had 4M weekly downloads. Now it's 7M. That is so many developers! I am grateful for your trust. We've got a long way to go to make API mocking on the web even better.
November 18, 2025 at 10:33 AM
I cannot be the only one thinking this is a bad way to test authentication-dependent code. This literally creates a dependency between tests. Non-deterministic and magical. Order-dependent. Something as flexible as authentication does not belong on the configuration level.
November 17, 2025 at 4:40 PM
Test runners in 2025 must come with the APIs to build custom test pools and test runners. Those have to be first-class citizens. I don't want to re-invent your entire framework just because I don't like some of the choices you've made.
November 17, 2025 at 2:35 PM
Reposted by Artem Zakharchenko
Fern Cosplay - Frieren: Beyond Journey's End
youtu.be/6WVBXILVa_Y?...
November 15, 2025 at 8:57 PM
Promising to build a really fast car does not justify stealing car parts. AI isn't unethical. People make it so. AI doesn't steal. People feed it stolen data. AI can and should be ethical. Period. Happy to see news like this.
November 15, 2025 at 3:59 PM
There's so many human problems left unsolved. Find your niche problem and solve it. Bonus points if you solve it for yourself.

And no, you probably don't need AI to solve it.
November 14, 2025 at 10:14 PM