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
I don't know why, but I read premises to random fantasy books and they all sound like the same book to me. Blurbs are hard.
January 15, 2026 at 10:38 PM
This is slowly becoming my favorite way of working with events in TypeScript. Strongly-typed, packed with convenience methods like `.emitAsGenerator`, and with actual event flow control even in Node.js!

github.com/kettanaito/...
GitHub - kettanaito/rettime: A type-safe marriage of `EventTarget` and `EventEmitter`.
A type-safe marriage of `EventTarget` and `EventEmitter`. - kettanaito/rettime
github.com
January 14, 2026 at 10:32 AM
Check out this great write-up about visual regression testing in Playwright 👇

It features a neat built-in API I've learned about recently myself.
Today, I'm writing about the flakiness of visual regression tests due to rendering differences across machines, and how I made the snapshots stable with Playwright Server in Docker
January 13, 2026 at 3:11 PM
This is such a great read! Anyone interested in Solid's best practices, here's a feast for your eyes.
January 12, 2026 at 8:45 PM
Since making workshops takes some time, I try to stay sharp by trying new tech. Lately, I've tried Remix 3, Solid, and TanStack Start for the first time. All are extremely interesting! I will be writing about some of them in the future.

What new things have you tried lately?
January 12, 2026 at 12:41 PM
Some projects believe that backward compatibility is about supporting bad decisions your userbase made along the way.

It is not.

You are at the helm of your project. Guide your users. Teach them. Set them up for success through ever API and best practice you encourage.
January 12, 2026 at 11:19 AM
Proud of the work I did on Playwright Persona. Finally, authentication management in tests is sensible.

Describe the roles that can interact with your app and how to authenticate as them. Sessions are stored, invalidated, and recreated automatically.

github.com/kettanaito/...
GitHub - kettanaito/playwright-persona: Authentication in Playwright using personas.
Authentication in Playwright using personas. Contribute to kettanaito/playwright-persona development by creating an account on GitHub.
github.com
January 12, 2026 at 10:58 AM
How is it *this* hard to have a tsup/tsdown config that builds two directories into different platforms but lets them import from the /shared directory to prevent identity issues in classes? How is this not the *default* behavior?
January 11, 2026 at 12:59 PM
Solid.js is fantastic.
January 9, 2026 at 6:13 PM
What do you think about this analogy for the testing levels? Does this make things a bit more clear to you? 👀
January 8, 2026 at 9:44 PM
There is software that is honestly such a joy to work with.
And then there's software that makes me lose all hope in humanity.

What sets them apart is passion in the hearts of those who work on them.
January 8, 2026 at 2:03 PM
This paragraph makes me extremely sad.
January 8, 2026 at 1:56 PM
Reposted by Artem Zakharchenko
🎟️ JSHeroes tickets are live 🎟️
👉 jsheroes.io

A limited batch of Early Bird tickets is available for €170 - secure the best deal of the season for a 2-day conference with inspiring talks, amazing people, and unforgettable vibes. ✨

See you in May! 🚀

#JSHeroes #TechConference #TechInnovation
January 8, 2026 at 11:00 AM
Wait, new episode? 👀
January 7, 2026 at 9:54 PM
I am the last person to the party, but damn TanStack Router is REALLY good. You feel quality software from the first minutes of usage. Phenomenal job.
January 7, 2026 at 2:35 PM
I wonder why some routing libraries still need a special way for programmatic navigation? Isn't location.href enough?

Is that because we still don't treat the URL as the source of truth but a derived value instead? Seems a huge miss, especially with the recent interceptor API.
January 7, 2026 at 10:36 AM
💡 I used to be confused about using accessibility selectors in tests. Which exact elements will they match? Is "role" really enough?

No, it's not! Give your elements *accessible names*. Describe what they are on top of their roles. It's like specificity in CSS!
January 6, 2026 at 3:19 PM
It really hurts when you see developers struggle in certain areas of automated testing only to discover that the sole reason those struggles exist is because of the tools we have.

There is A LOT for almost every tool you're using to improve.
January 6, 2026 at 2:56 PM
Here's the shortest way I know how to explain why static types aren't a substitute for unit tests. Types declare contracts, and that is valuable, but they do not describe nor control runtime logic.
January 4, 2026 at 8:37 PM
I don't know who wants to hear this, but I wouldn't have gotten anywhere near where I am career-wise if I had a magical chat box or some agent writing code for me. If I would've developed a reflex to give up at the first sight of an unknown.
January 2, 2026 at 10:59 PM
Writing update: the second draft of my fantasy novel has surpassed 80,000 words. Nearing the half of the book. I have to finish this colossus this year.
January 2, 2026 at 4:53 PM
There are two moods when writing.

Mood 1: He sat on the chair.

Mood 2: With such ferocity his arse descended on that stool, the wooden legs cried out, at mercy of his weight.
January 1, 2026 at 8:30 PM
Thick was the plot armor in Stranger Things season 5.
January 1, 2026 at 2:42 PM
Let me tell you a real story about code review.

I was once in charge of the frontend for an upcoming product and that involved guiding multiple teams to deliver good and on time. Months before the deadline, we had a planning session and during that session I asked one thing...
December 30, 2025 at 5:13 PM
AI is a cheat code.

Remember when you were small and you tried cheats in video games? Infinite health, resources, that kind of stuff. That's what AI allows you to do—gain more by doing less or, at times, nothing at all.

It might feel great. You've broken the "game", right?
December 30, 2025 at 3:07 PM