Ship

Tests that talk to the real database, and finish anyway.

Bun runs the suite, so it is fast enough that feature tests hitting a real database stay in the loop you actually run. Factories come from the model you already wrote, which means test data cannot drift from the schema.

What you get.

All of it in the same install, with nothing to wire together first.

Unit and feature

buddy test splits them, or runs both. Feature tests boot the app and go through the router the way a request does.

HTTP assertions

Call a route, assert on status, headers, and the decoded JSON body without standing up a server yourself.

Database helpers

Per-test migration and truncation, so a test that writes rows does not decide what the next test sees.

Factories

The factory functions on each model attribute generate valid rows, so a schema change breaks the seed rather than the assertion.

Browser tests

Drive the rendered page for the flows that only exist once STX has hydrated.

Type tests

buddy typecheck runs the native Go compiler over app, config, resources, and routes in a couple of seconds.

From the command line.

Buddy scaffolds, runs, and ships this the same way it does the rest of the app.

buddy test buddy test:feature buddy typecheck

These share the same models, config, and types, so using them together costs nothing extra.