Advanced Features¶
Tailtest has a few opt-in features that go beyond the defaults. All of them are enabled through .tailtest/config.json in your project root. One feature (complexity scoring) is always on.
Complexity scoring¶
Always on. No configuration needed.
Before tailtest generates tests for a file, it scores the file for complexity. The score is based on what the file does, not how long it is.
Path signals:
| Path contains | Points |
|---|---|
auth, permission, billing, payment, checkout, invoice, subscription |
+4 |
admin, upload, delete, remove, purge, migrate |
+3 |
Content signals:
| Content pattern | Points |
|---|---|
HTTP calls (requests, fetch, axios, httpx, etc.) |
+3 |
Database calls (.execute, .query, Model.objects, SELECT, etc.) |
+3 |
Each branch (if, elif, else, match, case) |
+1 each |
| Each public function or exported function | +1 each |
Score bands:
| Score | Depth | Scenarios generated |
|---|---|---|
| 0-5 | simple | 2-4 |
| 6-9 | standard | 5-8 |
| 10+ | thorough | 10-15 |
When a file scores 10 or higher, tailtest shows its reasoning in the context note: Complexity: thorough (billing: +4 billing +3 HTTP +3 DB +2 branches = 12 scenarios). Generate ~12 scenarios.
Complexity scoring only overrides depth upward. If you have configured depth: "thorough" and a file scores in the simple range, tailtest stays at thorough. It never downgrades.
Impact tracing¶
Opt-in. Python only.
Enable in .tailtest/config.json:
When a Python file is queued for testing, tailtest scans your project to find all other Python files that import it. It then includes this in the context note before tests are written.
Example context note: Impact: billing.py is imported by checkout.py, payment.py (+1 more).
This matters because when you change billing.py, the behavior that checkout.py and payment.py depend on may also change. Seeing the import radius helps the agent write tests that catch those ripple effects.
The scanner reads up to 500 Python files. Files in node_modules/, .venv/, dist/, and similar directories are skipped automatically.
API validation¶
Opt-in. Python only.
Enable in .tailtest/config.json:
Before tests are written for a Python file, tailtest checks that the file can actually be imported. This guards against a common failure mode: Claude writes a module with a bad import (a missing dependency, a renamed package, a typo in a path), and tailtest then writes tests against functions that can never run.
If the import check fails, tailtest adds a warning to the context note before the agent begins: Warning: billing.py has an import error (import error: No module named 'stripe'). Verify imports before writing tests.
If the import succeeds, nothing is added. Validation is silent when everything is fine.
Scope: This checks that imports resolve. It does not validate function signatures or return types.
Full config example¶
Place this file at .tailtest/config.json in your project root. All three platforms read the same file.
See Configuration for the full list of options including ramp_up_limit and depth settings.