Skip to main content

The DAGZ Platform

DAGZ is a test execution platform that makes your CI dramatically faster. It has four parts:

DAGZ Engine

The engine is written in Rust and implements most of DAGZ's capabilities around a language-agnostic code graph. It computes test selections, orchestrates parallel execution, and reports results to the DAGZ service.

Test Plugin

dagz-pytest is a pytest plugin available on PyPI. It hosts the DAGZ engine and binds it to the Python runtime — all Python-specific instrumentation lives here.

DAGZ Service

The DAGZ service stores baselines and telemetry data and serves the web dashboard. It is available to enterprise customers and can be deployed as a Helm chart or a Compose stack.

CLI (zb)

zb embeds the full DAGZ service locally, so you can develop and test on your own codebase without any infrastructure. It also lets you interact with your team's remote DAGZ service.


Language Support

Python is production-ready. See Roadmap for other languages.

CI Integration

DAGZ works with any CI platform — no special support needed.

On top of standard functionality, we have built custom integrations for:

  • GitLab — parallel job support, MR metadata extraction, pipeline reporting
  • GitHub Actions — parallel job support, PR metadata extraction

How It Works

DAGZ instruments the language runtime with multiple low-level probes, including a home-grown, optimized coverage collector. These probes detect different kinds of code dependencies — function calls, module-level statements, class hierarchies, registries, caches, and more.

After every execution, DAGZ generates a baseline: a compressed graph of all observed dependencies, with content-based fingerprints for code elements.

When a new test job starts, DAGZ compares the baseline's code fingerprints to the new code, and by walking the dependency graph it knows exactly which tests are impacted by which changes — and how. You get a full trace of the selection process for each selected test.

What "affected" means

  • Changed a function? Only tests that call it (directly or indirectly) are selected.
  • Changed a module-level variable? Tests that read it are selected.
  • Deleted a module? All tests that imported from it are selected.
  • Reformatted code without logic changes? Nothing is selected — DAGZ tracks logic, not whitespace.

Roadmap

The engine is language-agnostic by design — the Rust core handles dependency graphs, fingerprinting, and test selection for any language. Only the instrumentation layer is language-specific.

LanguageStatusNotes
PythonProductionFull pytest integration, bytecode-level instrumentation
JavaScript / TypeScriptIn developmentJest and Vitest support planned
JavaPlanned
C#Planned