Reading your repo, not just its README

Point it at a repo.
Get tests it actually needs.

TestPilot AI reads your repository, detects your test framework, and writes test plans and test code your CI can run — not boilerplate you have to rewrite.

See how it works
No credit card · Read-only repo access · Revoke anytime
yashaswi / collabx-editor
connected
generating tests for documents.ts · jest detected
RUN
1import { createDoc, applyPatch } from '../routes/documents';
2import { mockRedisClient } from '../__mocks__/redis';
3 
4// covers: optimistic concurrency on version column
5describe('applyPatch — version conflicts', () => {
6 it('rejects stale version writes', async () => {
7 const doc = await createDoc({ version: 3 });
8 const res = await applyPatch(doc.id, { version: 2 });
9 expect(res.status).toBe(409);
10 });
11});
14 tests generated · 3 files · est. coverage +18%
DETECTS AND WRITES FOR
Jest
Vitest
Playwright
Cypress
React Testing Library
// PIPELINE

Repo in. Tests out. No middle steps you have to babysit.

The same path every generation takes — repository access, static analysis, prompt construction, model call, and a result you can actually run.

01 · auth

Sign in with GitHub

OAuth handshake, session established, your repos listed — nothing written to your account.

02 · select

Pick files, not the whole tree

Browse the repo tree, open a file, check the ones you want covered.

03 · analyze

Build repository context

Recursive traversal, dependency and test-framework detection, irrelevant folders skipped.

04 · generate

Gemini writes the plan, then the code

Structured prompt → test plan → parsed, validated test files in your framework's syntax.

05 · keep

Saved to your history

Every run — repo, files, framework, plan, output — stored, searchable, revisitable.

// FEATURES

Built for repos you didn't write alone.

Every piece exists because generated tests are only useful if you can trust, read, and rerun them.

Full repo browsing

Live tree view straight from the GitHub API — branches, folders, file contents, no local clone required.

Framework auto-detect

Reads your package.json and config files to pick Jest, Vitest, Playwright, Cypress, or RTL — no dropdown to fill in.

Structured plans first

See the test plan before the code — what's covered, what's skipped, and why — as parsed JSON, not a wall of text.

Run history

Every generation is saved with its files, framework, and output. Revisit, compare, or delete a run anytime.

Search across repos

Find a file or a repository by name instead of scrolling a tree that's twelve folders deep.

Ship it in a container

MongoDB, Express, and Next.js behind one docker compose up — same environment, every machine.

// DETECTION

It reads your config, not your description.

No form asking what testing framework you use. TestPilot inspects dependencies, config files, and existing test folders to decide — then writes in that framework's actual syntax and conventions.

jest.config.js
vitest.config.ts
playwright.config.ts
cypress.json
package.json → devDependenciesjest ^29.7
cypress.config.tsnot found
playwright.config.tsnot found
__tests__/ directorypresent, 6 files
selected frameworkJest
// GET STARTED

Your next PR should ship with tests already written.

Connect a repo. See the plan before the code. Keep what's useful.