Roadmap¶
0.1 — native vertical slice¶
Native function tests and explicit test descriptions.
Typed fixture graph with test, module, and session scopes.
Sync, coroutine, generator, and async-generator execution.
Explicit cases, tags, skip, expected failure, and timeouts.
Local process workers with deterministic LPT scheduling.
Immutable attempts and lossless setup/call/teardown aggregation.
Console, JSON, JUnit XML, JSONL events, and SQLite duration history.
Optional
testenix pytestcompatibility bridge preserving the real pytest engine and plugins.Safe native migration for a conservative pytest subset and direct unittest TestCase classes, with source fingerprints, disposable validation copies, serial/parallel parity, and atomic create-only publication.
0.2 — real-world pytest migration¶
Dependency-free native
tmp_pathand reversiblemonkeypatchfixtures for commonsetattr/setenvusage.Static autouse fixtures with native setup and teardown ownership.
Bare pytest-asyncio coroutine markers translated to isolated fresh-loop wrappers that preserve the plugin’s default function-scoped loop lifecycle.
Fresh-instance wrappers for simple pytest classes, while complex lifecycle and inheritance stay fail-closed.
Compact migration diagnostics on the console with complete line detail retained in JSON.
Differential validation against a 118-test real-world suite before publication.
0.3 — fast feedback¶
Adaptive worker selection based on real execution units, duration history, and process cost, plus an explicit project-local
tune/benchmarkcommand.Conservative opt-in intra-module sharding and a source-verified trusted collection manifest that can bypass duplicate collection imports without trusting stale source metadata.
Dynamic micro-shards and work stealing.
--last-failed, watch mode, and failure fingerprints.Test-impact analysis in shadow mode with an explanation for every selection decision.
Stable assertion-diff protocol and improved plain-assert diagnostics.
0.4 — adoption¶
Pytest hook adapter translating collection and outcomes into Testenix events and
RunResult.Expand migration beyond the v0.2 static subset only when new transformations have differential semantics tests on real projects.
Versioned reporter and selector plugin interfaces.
IDE protocol built on the versioned machine-readable collection manifest.
Later¶
Remote workers with leases and heartbeats.
Resource-capacity scheduling and explicit test affinity.
Opt-in caching for tests that declare all external inputs.
Flakiness history, quarantine ownership, and expiration policy.
Result caching and impact selection will not become build-gating defaults until their false-negative rate is measured continuously against full-suite runs.