Introducing Orbital Preflight
- Date
- Marty Pitt

Today we’re announcing the first release of Preflight, our unit and integration testing framework for Taxi and Orbital projects.
Over the past few years, we’ve been amazed by the creative ways our community has used Taxi. The expression engine and Expression Types have grown to support increasingly rich business logic—directly in the data gateway.
For example:
As Taxi has evolved to support more embedded business logic, the ecosystem has lacked a proper unit testing framework. Today, we’re closing that gap with the launch of Preflight!
Preflight is a thin wrapper around the same testing tools the Orbital team has relied on for years. While we’re releasing today on version 0.0.3
, the framework itself is already mature and battle-tested.
Preflight tests are written in Kotlin - the underlying language powering Taxi and Orbital - rather than Taxi itself.
Getting started
To get started, just drop a build.gradle.kts
file into your Taxi project:
// build.gradle.kts
plugins {
kotlin("jvm") version "1.9.23"
id("com.orbitalhq.preflight") version "0.0.3" // Use the latest version
}
In IntelliJ, your project will be automatically configured with the appropriate test folder. If you install the Kotest IntelliJ Plugin, you’ll also see gutter icons for running your tests directly from the IDE.
Writing tests
Preflight includes:
A custom Kotest Spec class (
OrbitalSpec
), which:Detects and compiles your Taxi project
Provides access to your source code, compiled project, and the Orbital schema
A DSL for stubbing responses
A low-level Kotest Extension, if you want to embed Preflight into your own build system
// test/HelloWorldSpec.kt
import com.orbitalhq.preflight.dsl.OrbitalSpec
import io.kotest.matchers.shouldBe
class HelloWorldSpec : OrbitalSpec({
describe("First test") {
it("should perform a simple assertion") {
"""find { 1 + 2 }""".queryForScalar()
.shouldBe(3)
}
}
})
Running tests
Running tests is fast and CI-friendly. Just use Gradle from the root of your Taxi project:
./gradlew test
This will:
- Detect your Taxi project via
taxi.conf
- Compile it, including dependencies and source transformations (like Avro or OpenAPI)
- Execute your test suite
🚀🟢 Boom! Green builds all around.
🐛 Debugging
When you’re running tests, you have access to the full TaxiQL query engine inside your JVM. This means you can set breakpoints, and inspect.
By using Preflight’s .queryForTypedInstance()
methods, you can access Orbital’s internal state, and poke around.
This includes access to the full data lineage for every attribute, right in your debugger, which let’s you trace back where every field and value came from.
Playground integration
When a test fails, the failure message includes a link to a reproducible scenario in Taxi Playground. This makes it easy to debug or share with others—Playground links are now a common way users report issues to the Orbital team.
Join in
Like Orbital and Taxi, Preflight is fully open source under the Apache 2.0 license.
Try it out, and come say hi in our Slack. We’d love your feedback.