Get a tested codebase without writing a single line of test boilerplate.
3TG turns the business rules you write in clean Markdown tables into a complete, deterministic test suite — generated right inside VS Code and IntelliJ. Your spec is the source of truth, not a language model guessing your logic.
Business rules in, typed tests out.
Write the cases as a Markdown table; 3TG generates a deterministic Vitest or Jest suite that maps to every row — no boilerplate, no guessing.
# isAdult(age: number) | test name | age | isAdult | | ----------- | --- | ------------------- | | is NaN | NaN | throw 'Invalid age' | | is negative | -1 | throw 'Invalid age' | | is zero | 0 | false | | is below | 17 | false | | is exactly | 18 | true | | is above | 19 | true |
import { isAdult } from './isAdult' describe('isAdult.ts', () => { describe('isAdult', () => { it('is NaN', () => expect(() => isAdult(NaN)).toThrow('Invalid age')); it('is negative', () => expect(() => isAdult(-1)).toThrow('Invalid age')); it('is zero', () => expect(isAdult(0)).toBe(false)); it('is below', () => expect(isAdult(17)).toBe(false)); it('is exactly', () => expect(isAdult(18)).toBe(true)); it('is above', () => expect(isAdult(19)).toBe(true)); }); });
Three steps from no tests to a green suite.
The same workflow whether you live in VS Code, JetBrains, or talk to your agent over MCP.
Connect to 3TG
Install the extension from the VS Code or JetBrains Marketplace — or wire up the MCP server so your AI agent can reach 3TG directly.
Point at a file
Open any TypeScript function .ts or React functional component .tsx file. Write your requirements naturally inside structured markdown schemas.
Review & merge
3TG outputs clean, perfectly typed testing setups, assertion arrays and mock stubs directly inside your local test files. Review, commit, and ship.
The difference is the two hours you get back.
Without 3TG
- Hand-writing endless boilerplate, test by test.
- Brittle setups that break on minor code edits.
- AI-only generators hallucinating fake behavior.
- Coverage postponed under fast sprint pressure.
With 3TG
- Map requirements to markdown in 60 seconds flat.
- Stable tests that track real business behavior.
- AI output grounded by human-controlled specs.
- Continuous protection against regressions.
Stack it up. Pay nothing.
But isn't this just AI slop?
Three valid developer concerns. Three concrete protections.
The AI hallucination problem
Standard code assistants guess — they read your source and replicate it, hidden bugs and all. 3TG flips that: you set the truth in Markdown, and the AI only proposes inputs and expected results. Your sign-off, not the model, has the final say.
Workflow & architectural drift
Most documentation lives in a disconnected web app and slowly rots. 3TG stays entirely inside your repo — behavior contracts are plain Markdown that's versioned, branched, and reviewed alongside the code it describes, so the two can never drift apart.
Brittle refactoring fatigue
Stop pinning test scripts to internal function names. 3TG assertions evaluate your defined input-to-output matrix, so you can rename, split, and rewrite internals as aggressively as you like — the safety net keeps passing as long as the observable behavior still holds.
Free is the full product.
Paid plans just raise the generation ceiling — same engine, same extensions, same MCP. They unlock from your dashboard once you're on Free.
Free
The whole product — IDE extensions, MCP, the full engine. Capped at 100 generated tests per month.
Get started freeEssential
Built for scaling freelancers and dedicated individual apps. Up to 2,000 highly optimized generated test outputs per month.
Start free to unlockGrowth
Perfectly optimized for growing startup squads and collaborative pipelines. Includes up to 10,000 generated test structures.
Start free to unlockUltimate
Built for production-heavy engineering shops, outsourced agencies, and enterprise workflows. Up to 50,000 test case cycles.
Start free to unlockThere's no checkout on this page — start on Free, then activate any paid plan from your dashboard. Already signed in? Upgrade straight from there. Move up or down anytime, no separate checkout.
Need a temporary sprint burst? Purchase on-demand One-Time Boosters from €19 to lift your generation limits for 30 days dynamically.
Components and hooks, render and behavior.
One spec covers what a component renders for given props and what happens when a user interacts with it — mapped straight to React Testing Library.
# Button(props: Props) [react] The type definition for props: { label: string; disabled: boolean; } | scenario | label | disabled | screen. | .to | | --------- | -------- | -------- | ------------------- | --- | | enabled | 'Submit' | false | getByText('Submit') | | | disabled | 'Submit' | true | getByText('Submit') | | ```typescript scenario(enabled) expect(screen.getByRole('button')).toBeEnabled(); ``` ```typescript scenario(disabled) expect(screen.getByRole('button')).toBeDisabled(); ```
import { render, screen } from '@testing-library/react' import { Button } from './Button' describe('Button.tsx', () => { describe('Button', () => { it('enabled', async () => { const props: Parameters<typeof Button>[0] = { label: 'Submit', disabled: false }; render(<Button {...props} />); expect(screen.getByText('Submit')).toBeInTheDocument(); expect(screen.getByRole('button')).toBeEnabled(); }); it('disabled', async () => { const props: Parameters<typeof Button>[0] = { label: 'Submit', disabled: true }; render(<Button {...props} />); expect(screen.getByText('Submit')).toBeInTheDocument(); expect(screen.getByRole('button')).toBeDisabled(); }); }); });
A spec can also set the values a test runs against — hooks and context inside the component, plus environment variables and async functions.
Your next component already has tests. It just doesn't know it yet.
Start free, then add the VS Code or IntelliJ extension — or wire 3TG into your AI agent over MCP, the most powerful way to drive it. Green suite in under five minutes.
The IDE extensions run fully deterministic with no AI. Add your own Gemini key for optional edge-case suggestions.