Kola/Design of Kola
Kola
Understand the design motivations behind Kola's DSL, toolchain choices, and contract-first testing model.
This page explains why Kola is designed the way it is, not just how to execute it.
Read it when you want to understand the tradeoffs behind Kola's DSL, runtime dependencies, and contract-first testing workflow.
Traditional API tests often drift into one of two bad states:
Kola is designed to reduce that split by keeping scenario intent, contract structure, and team workflow closer together.
Kola adopts a BDD-oriented structure because API scenarios are easier to discuss when they are expressed as:
This makes the test easier to read across product, frontend, backend, and QA roles, even though Kola is not trying to become a generic Cucumber replacement.
Kola uses a Groovy-based DSL because it balances three needs well:
The goal is not to introduce a brand-new language. The goal is to keep scenario authoring lighter than handwritten Java test fixtures while still fitting normal Gradle projects.
Kola builds on familiar JVM testing infrastructure instead of inventing its own isolated runtime stack.
Typical supporting libraries include:
That decision keeps Kola easier to integrate into existing teams and reduces the amount of new testing infrastructure people need to learn.
Kola is designed for proto-driven ApiHug projects first.
That gives it three advantages:
Kola can still be used around non-ApiHug APIs, but the closer the project is to the ApiHug contract model, the more value Kola can provide.
Kola's design is intentionally practical: readable scenarios, contract-aware execution, and a JVM toolchain that feels familiar enough to adopt without rebuilding the whole testing stack.