Start with the free articles, talks, and tutorials. The Pro workshops at the bottom go deeper for the complete, hands-on path.
Articles
18FreePrefer the `.resolves` Chaining
Improve the error experience when testing asynchronous code with the `.resolves`/`.rejects` chaining.
Written byArtem ZakharchenkoTime to read~ 6 minutesVitest Browser Mode vs Playwright
What is the difference between Vitest Browser Mode and Playwright? And when to use each in your tests?
Written byArtem ZakharchenkoTime to read~ 6 minutesIncredible Vitest Defaults
Learn how to use Vitest’s defaults to eliminate extra configuration and prevent flaky results, letting you write reliable tests with less effort.
Written byArtem ZakharchenkoTime to read~ 9 minutesBetter Test Setup with Disposable Objects
Learn how disposable objects solve test cleanup problems in flat testing. Use TypeScript's using keyword to ensure reliable resource disposal in tests.
Written byArtem ZakharchenkoTime to read~ 6 minutesDo NOT Assert on Requests (Do This Instead)
Test UI outcomes, not API requests. Mock network calls in setup, but assert on what users actually see and experience, not implementation details.
Written byArtem ZakharchenkoTime to read~ 6 minutes.toBeVisible() or .toBeInTheDocument()?
A deep dive into Testing Library's .toBeVisible() and .toBeInTheDocument() matchers, exploring their differences, use cases, and best practices
Written byArtem ZakharchenkoTime to read~ 2 minutesWhy I Won’t Use JSDOM
Explore how JSDOM's browser simulation works, and learn front-end testing approaches using Vitest Browser Mode for direct browser testing and native APIs
Written byArtem ZakharchenkoTime to read~ 10 minutesThe Difference Between Clearing, Resetting, and Restoring Mocks
Understand the key differences between mock state management methods: mockClear(), mockReset(), and mockRestore(). Write clean test states.
Written byArtem ZakharchenkoTime to read~ 6 minutesWriting Tests That Fail
There can be a lot of confusion and doubt when it comes to writing tests. Answering this simple question may help clear a lot of it out.
Written byArtem ZakharchenkoTime to read~ 3 minutesInverse Assertions
Learn how to test time-dependent side effects that should not happen. Avoid false positives by using inverse assertions.
Written byArtem ZakharchenkoTime to read~ 4 minutesBe S.M.A.R.T. About Flaky Tests
Flaky tests undermine trust. Use the S.M.A.R.T. framework: Skip, Mitigate, Assess, Rewrite, Throw away, to manage and fix them effectively.
Written byArtem ZakharchenkoTime to read~ 7 minutesWhat Is A Test Boundary?
Learn automated testing essentials: prepare code, execute actions, verify outcomes. Discover the importance of mocking and setting proper test boundaries.
Written byArtem ZakharchenkoTime to read~ 6 minutesGood Code, Testable Code
Learn what testability means, how it relates to code complexity, and why it's essential for effective testing.
Written byArtem ZakharchenkoTime to read~ 8 minutesImplicit Assertions
Have a better understanding about the explicit and implicit assertions now, and perhaps even have a test or two in mind to improve.
Written byArtem ZakharchenkoTime to read~ 6 minutesMaking Use of Code Coverage
Dive into the contentious world of code coverage. Learn its nuances, pitfalls, and practical applications for modern web app testing
Written byArtem ZakharchenkoTime to read~ 11 minutesAnatomy of a Test
Explore the analogy between learning human anatomy and writing code tests, emphasizing a universal three-step structure: Setup, Action, and Assertion.
Written byArtem ZakharchenkoTime to read~ 7 minutesThe Golden Rule of Assertions
Learn about The Golden Rule of Assertions that helps pinpoint good tests from bad ones.
Written byArtem ZakharchenkoTime to read~ 6 minutesThe True Purpose of Testing
Discover the true essence of automated testing and the difference between an implementation and intention.
Written byArtem ZakharchenkoTime to read~ 3 minutes
Talks
2Free
Mocking WebSockets with MSW
Artem Zakharchenko presents MSW's WebSocket support, enabling mock-first development for better control and real-time testing.
Watch
How to Write Better Test Names
Discover the importance of well-named test cases and learn five tips to help improve your test naming strategy in JavaScript.
Watch
Pro Workshops
5Pro
React End-to-End Testing with Playwright
Master Playwright end-to-end testing: setup, authentication (basic, 2FA, passkeys), mocking, fixtures, and debugging with UI mode and Trace Viewer.
Start workshop
Advanced Vitest Patterns
Learn advanced Vitest patterns—custom fixtures, matchers, and performance tuning—to craft faster, more effective test experiences.
Start workshop
React Component Testing with Vitest
Test React components in real browsers with Vitest! Say goodbye JSDOM’s limits and catch bugs users actually face. Real tests, real results—start now!
Start workshop
Mocking Techniques in Vitest
Learn to mock functions, time, globals, network, and modules. Practice real-world scenarios using Vitest to write effective and maintainable tests.
Start workshop
Testing Fundamentals
In the Testing Fundamentals workshop, you will learn testing principles, framework structure, async handling, and more by building a mini testing-framework!
Start workshop
