Ship AI-Generated Apps with Confidence
One command to scaffold production-ready tests for your v0, Bolt, or Lovable project. Vitest, Playwright, and CI workflows configured in seconds.
- cache
- plans
- analysis
- logs
Why this exists
AI-generated apps deserve production-ready testing infrastructure. We built Oorty because we were tired of shipping without confidence.
AI makes building easy
Tools like v0, Cursor, and Bolt let you ship features in minutes. But speed without testing leads to fragile apps.
Testing is still manual
Setting up Vitest, Playwright, CI pipelines, and test directories is tedious. Most developers skip it entirely.
Tests go stale fast
Even when you write tests, they break with every change. Maintaining tests is a full-time job nobody signed up for.
How it works
From zero to fully tested in under a minute. Oorty handles the boring setup so you can focus on shipping.
Run the init command
A single command detects your framework, generates config files, and installs dependencies.
npx oorty@latest initGenerate a test plan (Pro)
AI analyzes your codebase and creates a comprehensive test plan. Identifies components, utilities, and user flows that need coverage.
npx oorty plan# Analyzing codebase...# Scanning 47 components, 12 utilities, 8 pages# # Generated: .oorty/plans/test-plan.md# - 23 unit tests recommended# - 15 component tests recommended # - 6 E2E tests recommendedGenerate all tests (Pro)
One command creates all the tests from your plan. Framework-aware templates with real assertions based on your code.
npx oorty generate# Reading test plan...# Generating tests...# # Created: tests/unit/utils.test.ts# Created: tests/unit/helpers.test.ts# Created: tests/component/header.test.tsx# ... and 41 moreMeasure coverage (Free)
Run Vitest with V8 coverage and a per-file summary. Optional HTML report or localhost viewer—no AI API key.
npx oorty coverage# Oorty coverage# Directory: /your/project## Lines Stmts Funcs Branches File# 92.1% 91.0% 88.2% 84.5% src/utils.ts# ...CI runs automatically
Push to GitHub and watch your tests run. Coverage reports and status checks on every PR.
name: Testson: [push, pull_request]jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci - run: npx vitest run --coverage - run: npx playwright testEverything you need to test with confidence
Oorty provides the complete testing toolkit for modern web applications. Free forever for individuals, with Pro features for teams.
Framework Detection
Automatically detects Next.js, React, Vite, Remix, Astro, and more. Zero configuration required.
Full Test Stack
Unit, component, and E2E test configs ready to go. Vitest for speed, Playwright for confidence.
GitHub Actions
Production-ready CI workflows generated automatically. Tests run on every push and PR.
Doctor Command
Validate your test setup anytime. Diagnose configuration issues instantly.
AI Test Planning
Analyze your codebase and generate a comprehensive test plan. Know exactly what needs coverage.
Bulk Test Generation
Generate all tests from your plan with one command via the Oorty hosted API (OORTY_API_KEY).
Vitest coverage CLI
Run npx oorty coverage for V8 metrics, a per-file table, and optional HTML—no AI key required.
Hosted AI completions
Codebase analysis runs locally; model calls go through Oorty with your dashboard API key.
CLI Reference
Six commands to master. Four free, two Pro. Each one designed to be simple, powerful, and predictable.
Commands
Initialize testing infrastructure in your project (Free)
npx oorty@latest init# Options:# -y, --yes Skip prompts and use defaults# --typescript Use TypeScript (default: true)# --skip-install Skip dependency installation# --cwd <path> Set working directoryGenerated Files
1{2 "$schema": "https://oorty.dev/schema.json",3 "framework": "nextjs",4 "typescript": true,5 "srcDir": false,6 "testRunner": "vitest",7 "e2eRunner": "playwright",8 "directories": {9 "unit": "tests/unit",10 "component": "tests/component",11 "e2e": "tests/e2e",12 "plans": ".oorty/plans"13 },14 "ci": {15 "provider": "github-actions",16 "runOnPush": true,17 "runOnPR": true18 }19}Real-world examples
See exactly what Oorty generates. Production-ready tests you can use as templates for your own.
1import { describe, it, expect } from 'vitest'2import { formatPrice, validateEmail, slugify } from '@/lib/utils'34describe('formatPrice', () => {5 it('formats USD correctly', () => {6 expect(formatPrice(1999)).toBe('$19.99')7 expect(formatPrice(100)).toBe('$1.00')8 expect(formatPrice(0)).toBe('$0.00')9 })1011 it('handles negative values', () => {12 expect(formatPrice(-500)).toBe('-$5.00')13 })14})1516describe('validateEmail', () => {17 it('accepts valid emails', () => {18 expect(validateEmail('user@example.com')).toBe(true)19 expect(validateEmail('name+tag@domain.co')).toBe(true)20 })2122 it('rejects invalid emails', () => {23 expect(validateEmail('not-an-email')).toBe(false)24 expect(validateEmail('@missing-local.com')).toBe(false)25 expect(validateEmail('missing-at.com')).toBe(false)26 })27})2829describe('slugify', () => {30 it('converts strings to URL slugs', () => {31 expect(slugify('Hello World')).toBe('hello-world')32 expect(slugify(' Multiple Spaces ')).toBe('multiple-spaces')33 expect(slugify('Special!@#Characters')).toBe('special-characters')34 })35})Simple, transparent pricing
Start free and upgrade when your team needs AI-powered test maintenance.
Free
Perfect for getting started with testing
- init - config scaffolding
- doctor - setup validation
- add - manual test file creation
- coverage - Vitest V8 reports (terminal, summary, optional HTML)
- Vitest + Playwright configs
- GitHub Actions CI workflow
- Community support
Pro
Unlimited AI-powered test generation
- Everything in Free, plus:
- plan - AI codebase analysis
- generate - bulk test creation
- AI test plan gap insights (what still needs tests)
- Framework-aware templates
- Powered by GPT-4o
- Priority support
VS Code extension coming soon. Get notified when it launches.
Frequently asked questions
Everything you need to know about Oorty. Can't find the answer you're looking for? Reach out to our team.