I had both Playwrighthttps://playwright.dev/docs/intro and TWDtwd.dev pointed at the same small app for a working day. Same backend, same UI, the same bugs to chase. The point wasn't to declare a winner. It was to notice what each one feels like to l...
You wrote a React Router v7 route. It has a loader, an action, a form, some interactivity. Now you want to test it. The official docshttps://reactrouter.com/start/framework/testing hand you two paths and neither one covers the case you actually have....
The first time you try to test a TanStack app the way the React Testing Library docs suggest, the test file gets bigger than the component. You spin up a memory router, instantiate a new QueryClient per test, wrap everything in QueryClientProvider an...
Setting up TWDhttps://www.npmjs.com/package/twd-js used to mean adding a block of dev-only code to your app's entry file — a dynamic import for the runner, a test glob, a service-worker config, and a twd-relayhttps://www.npmjs.com/package/twd-relay b...
You have unit tests in Vitest or Jest. You have E2E tests in Playwright. CI runs both. Coverage works for each, until you try to look at a single number.
Then it gets weird.
Two runtimes, two coverage outputs
Unit tests run in Node, instrumented b...
Payment integrations are one of the hardest things to test in a web app. The SDK renders its own UI, controls its own form fields, and fires callbacks when the user completes a payment. You can't programmatically fill in a credit card number. You can...
Every mock you write is a claim about what your backend returns. The moment the backend changes — a renamed field, a tightened enum, a new required property — that claim becomes a lie. Your tests still pass. Production breaks.
This is mock drift, an...
You have written the tests. The CI pipeline runs them. The gap analysis has helped you fill the blind spots. Quality checks are passing. The work is solid.
And yet — ask a product manager what your test suite actually covers, and you will get a blan...
The Problem With "We Have Tests"
There is a moment in every project where someone says "we have tests" like it settles the matter. The CI pipeline is green. The coverage number is somewhere north of 70%. Everything is fine.
Until a bug slips throu...
You've wired up your test suite. CI is green. You're shipping. And then a bug lands in production on a route nobody thought to test.
It's not that your tests are bad. It's that you didn't know what was missing.
That's the problem /twd:test-gaps is ...
Why Set Up CI Early
Once you have tests worth running, the natural next step is making sure they run on every push. The sooner you do it, the fewer surprises down the road — things like env vars that only exist locally or paths that work on your ma...
In the previous articlehttps://coderlegion.com/17453/stop-letting-ai-write-untestable-code-add-determinism-back-with-twd, we talked about /twd:setup — the skill that analyzes your project and generates .claude/twd-patterns.md, a file that teaches you...
Now that AI is generating a big portion of our frontend code, speed is no longer the main bottleneck.
Confidence is.
We’ve seen this before: when teams wanted to move fast, the real enabler wasn’t “more code” — it was having a solid testing strate...
AI is changing the way we work as developers.
We are moving from writing code to writing specifications. Instead of implementing features ourselves, we rely more on agent modes and tools like Claude Code, Codex, or Gemini CLI.
This works incredibly...
A few weeks after releasing TWDhttps://brikev.github.io/twd/, a tool designed to integrate testing directly into the development workflow. I started creating testing recipes for different frontend frameworks. While doing that, a few patterns became v...
One of the biggest milestones we’ve been working on is now live:
TWD 1.3.x brings full multi-framework support with a single unified setup.
This means you can now drop TWD into React, Vue, Solid, and Angular projects using the exact same initializat...
In this part, we’ll look at a new feature in TWD: support for Testing Library–style selectors.
These selectors are widely known in the community, and while you could technically use them before TWD is very flexible, now they’re fully integrated — inc...
TWD still has many more advanced features — such as function mocking — but with what we’ve covered so far, you already have everything a solid testing tool needs.
In this step, we’ll see how to collect code coverage from your TWD tests and visualize ...
In Part 3https://coderlegion.com/7371/testing-while-developing-part-2-selectors-assertions-and-user-events, we explored one of TWD’s core features — network mocking — and completed our first full set of tests.
Now, it’s time to take the next step: ru...
In Part 2https://coderlegion.com/7371/testing-while-developing-part-2-selectors-assertions-and-user-events, we explored assertions, selectors, and user interactions in TWD.
We used those tools to test the homepage, which only had a single button.
N...