Testing thatwrites itself

The first testing framework built for AI-driven development. Write tests in YAML. Get structured output with actual/expected values and hints. Let your AI fix the code autonomously.

test.vyb
"player starts with correct health":
  confidence: 0.95
  when:
    - "player = createPlayer(100, 100)"
  then:
    - "expect: player.health == 100"

"critical hit doubles damage":
  confidence: 0.99
  when:
    - "damage = applyCritical(15, true)"
  then:
    - "expect: damage == 30"
output
summary:
  total: 1
  passed: 0
  failed: 1
tests:
  - name: player starts with health
    status: fail
    actual: 50
    expected: 100
    failed_step: then
    hints:
      - The equality check failed
    confidence_note: Very high confidence

AI changes everything.

AI writes code 10x faster—but without tests, you're debugging 10x more code. Tests aren't just verification. They're the feedback loop that tells AI what failed and how to fix it.

AI Can't Read Noise

Traditional test output is designed for humans. Stack traces, diff formatting, ANSI colors—your AI has to guess what went wrong.

Vyb Speaks AI

Structured YAML output with actual/expected values, failure location, and pattern-matched hints. AI parses it instantly.

Autonomous TDD

Write tests. Run. AI reads failures. AI fixes code. Repeat. No human debugging. Just results.

FEATURES

Built for the AI age

Every feature designed to make AI-assisted development faster, smoother, and more autonomous.

YAML Tests

Simple, readable syntax that LLMs write correctly on the first try. No boilerplate.

YAML Output

Default structured output with actual/expected values. Token-efficient, instantly parseable.

AI Hints

Pattern-matched suggestions for common errors. Zero LLM API cost—just smart pattern matching.

Confidence Tracking

Express uncertainty (0.0-1.0). High confidence failures = bug in code. Low = check the test.

Watch Mode

Auto-rerun on file changes. Instant feedback loop for rapid TDD iteration.

TypeScript Native

Full TypeScript support. Call your functions directly. Works with ES modules and CommonJS.

COMPARISON

See the difference

Traditional testing vs AI-native testing. Same test. Completely different output.

Traditional
player.test.js
describe('Player', () => {
  it('should start with correct health', () => {
    const player = createPlayer(100, 100);
    expect(player.health).toBe(100);
  });

  it('should double damage on critical', () => {
    const damage = applyCritical(15, true);
    expect(damage).toBe(30);
  });
});
Output when test fails:
FAIL src/player.test.js
  ✕ should start with health (5 ms)

    expect(received).toBe(expected)

    Expected: 100
    Received: undefined

      14 |   const player = createPlayer(100, 100);
      15 |   expect(player.health).toBe(100);
         |                         ^

      at Object.<anonymous> (src/player.test.js:15:25)

AI must: Parse unstructured text, extract test names from prose, figure out what line failed, guess at context

AI-Native (Vyb)
player.ts.vyb
"player starts with correct health":
  confidence: 0.95
  when:
    - "player = createPlayer(100, 100)"
  then:
    - "expect: player.health == 100"

"critical hit doubles damage":
  confidence: 0.99
  when:
    - "damage = applyCritical(15, true)"
  then:
    - "expect: damage == 30"
Output when test fails:
summary:
  total: 1
  passed: 0
  failed: 1
tests:
  - name: player starts with health
    status: fail
    actual: 50
    expected: 100
    failed_step: then
    hints:
      - The equality check failed
    confidence_note: Very high confidence

AI gets: Structured YAML, actual/expected values, failure step, pattern-matched hints, confidence guidance

THE LOOP

Autonomous TDD

The complete test-driven development cycle. Your AI handles it all.

Step 1
AI writes tests
Step 2
Run Vyb
Step 3
Parse YAML output
Step 4
AI fixes code
Step 5
All green
Zero Human Debugging

Claude Code reads the YAML output, sees actual: 50, expected: 100, and the hints. It fixes the code and reruns. You just watch the tests go green.

QUICK START

Get started in 60 seconds

Terminal
1# Install
2npm install -g vybtest
3
4# Run your first test
5vyb run tests/
30 seconds to first test
Zero config needed
Works with any language