kysera test
Test environment setup and management.
Commands
setup
Set up test environment.
kysera test setup
Options:
-e, --environment <env> Environment (test/ci/local, default: test)
-d, --database <name> Test database name
--clean Drop existing test database
--migrate Run migrations (default: true)
--seed Run seeders
--fixtures <files...> Load specific fixtures
--parallel Enable parallel test execution
--isolation <type> Isolation strategy (default: transaction)
-v, --verbose Verbose output
Isolation Strategies:
transaction- Use transactions (fastest)schema- Separate schema per testdatabase- Separate database per test
Examples:
# Basic setup
kysera test setup
# Clean setup with seeding
kysera test setup --clean --migrate --seed
# CI environment
kysera test setup -e ci --clean
# Load fixtures
kysera test setup --fixtures users posts
seed
Seed test database.
kysera test seed
Options:
--strategy <type> Data generation (realistic/random/sequential)
--count <number> Records per table
--table <name> Specific table
--fixtures <files...> Load fixtures
--async Parallel seeding
Examples:
# Seed with realistic data
kysera test seed --strategy realistic --count 100
# Seed specific table
kysera test seed --table users --count 50
# Load fixtures
kysera test seed --fixtures users admin-users
fixtures
Manage test fixtures.
kysera test fixtures
Options:
--load <files...> Load specific fixtures
--generate Generate fixture templates
--validate Validate fixture files
--format <type> Format: json, yaml, ts
teardown
Clean up test environment.
kysera test teardown
Options:
-e, --environment <env> Environment (default: test)
--keep-data Keep data, only clear migrations
--force Skip confirmation
-v, --verbose Verbose output
Fixture Format
JSON Fixtures
// fixtures/users.json
{
"users": [
{ "email": "admin@test.com", "name": "Admin", "role": "admin" },
{ "email": "user@test.com", "name": "User", "role": "user" }
]
}
TypeScript Fixtures
// fixtures/users.ts
import { Fixture } from '@kysera/cli'
export default {
table: 'users',
data: [
{ email: 'admin@test.com', name: 'Admin', role: 'admin' },
{ email: 'user@test.com', name: 'User', role: 'user' }
]
} satisfies Fixture
Workflow Examples
Basic Test Setup
# Before tests
kysera test setup --clean --migrate --seed
# Run tests
npm test
# After tests
kysera test teardown
CI/CD Pipeline
# .github/workflows/test.yml
jobs:
test:
steps:
- uses: actions/checkout@v4
- name: Setup test database
run: kysera test setup --clean --migrate
- name: Run tests
run: npm test
- name: Teardown
run: kysera test teardown --force
if: always()
Parallel Testing
# Setup with parallel support
kysera test setup --parallel --isolation schema
# Tests can run in parallel using separate schemas
npm test -- --parallel
Best Practices
1. Use Transaction Isolation
kysera test setup --isolation transaction
Fastest option - each test runs in a transaction that rolls back.
2. Keep Fixtures Minimal
Only essential data for tests. Use factories for test-specific data.
3. Clean Before Test Runs
kysera test setup --clean
Ensures consistent starting state.
4. Separate Test Database
kysera test setup -d myapp_test
Never test against production or development databases.