-
-
Notifications
You must be signed in to change notification settings - Fork 0
Testing
Open-Write has two test suites: backend (pytest) and frontend (vitest).
Run all backend tests:
cd backend
uv run pytest| File | Tests | What it covers |
|---|---|---|
test_pipeline.py |
5 | Word count, manifest, verify, lints, finalize (stdlib only) |
test_critics.py |
3 | Critic composition + hollow-critic round-trip (no network) |
test_pipeline_routes.py |
12 | End-to-end HTTP tests through the real FastAPI router |
test_pipeline_outputs.py |
27 | Output catalog, reader, traversal rejection, control functions |
test_orchestrator.py |
7 | Run-state persistence, phase ordering, manifest build, finalize |
test_profile_context.py |
7 | Profile loading, per-consumer importance routing |
test_providers.py |
— | Multi-provider routing |
test_harness.py |
— | Harness layer (planner, router, runner, verifier, reporter) |
Pipeline logic tests are stdlib-only and run without the full backend env:
$env:PYTHONIOENCODING="utf-8"
python tests/test_pipeline.py
python tests/test_critics.py
python tests/test_orchestrator.py
python tests/test_profile_context.py
python tests/test_providers.py
python tests/test_pipeline_outputs.py
python tests/test_harness.pyHTTP routes tests need fastapi + httpx:
python tests/test_pipeline_routes.pyTests use an injectable model_call pattern so the pipeline logic is testable without a network key. The orchestrator and critics tests provide canned responses instead of calling real LLMs.
cd app
npm run test -- --runUses vitest + testing-library with jsdom. Tests live alongside components as *.test.{ts,tsx}.
cd app
npx tsc --noEmitThe tsconfig is strict with noUnusedLocals + noUnusedParameters. Any unused import or local will fail.
cd backend
uv run ruff checkSee tests/manual-smoke.md for a checklist of manual scenarios to verify before releases. These cover Tauri-shell flows that can't be automated with unit tests.
Welcome to the Open-Write Studio wiki!
This wiki covers everything you need to know about Open-Write — from installation to architecture to contributing.
New here? Start with Getting Started.