Real environments
Containers, VMs, and remote hosts — built, tested, and torn down by the suite itself. Cleanup runs even when a test fails.
Unit tests prove your functions work. DART proves your system works — that the service actually starts on a clean machine, that the config you ship parses where it lands, that the firewall rule really blocks the port, that the cluster still agrees after a node reboots.
You describe the environment and the assertions in YAML; DART builds the environment (containers, VMs, or remote hosts), runs the checks, tears everything down, and returns a CI-friendly exit code with a JUnit report.
📖 Documentation — guides, every test and step type, and the full evaluation reference.
suite: my service worksnodes: - name: box type: docker options: { image: myservice:latest }tests: - name: the binary runs node: box type: execute options: command: /usr/local/bin/myservice --version evaluate: exit_code: 0 regex: "v[0-9]+\\.[0-9]+"Real environments
Containers, VMs, and remote hosts — built, tested, and torn down by the suite itself. Cleanup runs even when a test fails.
Assertions unit tests can't make
Survive a real reboot, wait for a cluster to converge, prove a firewall rule blocks a port, catch config drift across a fleet.
Built for CI
JUnit and JSON reports, meaningful exit codes, tag filtering, and
--check to validate a suite without touching infrastructure.
Declarative YAML
Nodes describe where things run, tests describe what must be true, and
evaluate defines what true means.