kaocha
Kaocha is a modern, full-featured test runner for Clojure and ClojureScript that replaces the built-in test framework with a pluggable, configurable alternative. It supports multiple test styles (clojure.test, Cucumber), ClojureScript execution, watch mode, and integrations for code coverage and CI reporting.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | lambdaisland/kaocha |
| Owner | lambdaisland |
| Primary language | Clojure |
| License | EPL-1.0 — Requires review (not clearly OSI) |
| Stars | 860 |
| Forks | 81 |
| Open issues | 47 |
| Latest release | v1.91.1392 (2024-05-23) |
| Last updated | 2025-10-09 |
| Source | https://github.com/lambdaisland/kaocha |
What kaocha is
Kaocha is a Clojure-based test orchestration framework offering CLI and REPL execution, plugin architecture, metadata-driven test selection/skipping, JUnit XML output, deep diff assertions, and support for both JVM Clojure and ClojureScript via browser or Node.js backends.
Get the kaocha source
Clone the repository and explore it locally.
git clone https://github.com/lambdaisland/kaocha.gitcd kaocha# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Configuration via EDN file (tests.edn or custom) or programmatic REPL API; requires understanding of Kaocha's plugin and hook model for customization.
- Watch mode uses file system monitoring; may conflict with aggressive build-cache strategies or symlink-heavy project layouts.
- ClojureScript support requires additional dependencies (kaocha-cljs or kaocha-cljs2) and browser/Node.js setup; CI environment must support headless execution.
- Plugin ecosystem is extensible but smaller than mainstream test frameworks; custom reporters or assertions may require in-house development.
- Test discovery uses namespace conventions; non-standard source layouts require explicit suite configuration to avoid false negatives.
When to avoid it — and what to weigh
- Committed to Java testing frameworks — If your team standardizes on JUnit or TestNG for existing Java components, Kaocha introduces a separate testing harness and mental model, complicating unified test orchestration.
- Minimal Clojure footprint required — Kaocha adds runtime and tooling overhead. Projects using only plain clojure.test for tiny test suites or one-off scripts gain little benefit and inherit dependency management complexity.
- Unfamiliar with Clojure/ClojureScript ecosystem — Kaocha assumes familiarity with Clojure build tools (Leiningen, deps.edn, Shadow CLJS), REPL workflows, and plugin configuration. New teams require onboarding effort.
- Needs real-time performance profiling integration — Kaocha does not include built-in performance benchmarking or profiling plugins. Performance-critical test validation requires external tool integration or custom extensions.
License & commercial use
Licensed under EPL-1.0 (Eclipse Public License 1.0), a weak copyleft open-source license permitting commercial use, modification, and distribution with source disclosure obligations.
EPL-1.0 permits commercial use without royalties. Modifications must be disclosed if distributed; proprietary code linking to Kaocha (as a library) does not require source release. Consult legal counsel for proprietary derivative works or if licensing uncertainty affects deployment.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Strong |
| License clarity | Clear |
| Deployment complexity | Low |
| DEV.co fit | Good |
| Assessment confidence | High |
No inherent security vulnerabilities disclosed in README or recent releases. As a test runner, Kaocha executes arbitrary Clojure code; supply-chain risk applies to plugin dependencies. Code execution happens in test environments (typically isolated from production). No cryptographic features or secrets management discussed.
Alternatives to consider
clojure.test (built-in)
Minimal, zero-dependency baseline for simple projects; no plugins, watch mode, or advanced reporting; acceptable for small teams avoiding framework lock-in.
Midje
Alternative Clojure test framework with different assertion syntax and spying/mocking built-in; smaller ecosystem; less active maintenance than Kaocha.
Jest (for ClojureScript/Node.js)
If ClojureScript is the primary target, Jest offers richer JS-native tooling, better IDE support, and larger ecosystem; requires abandoning Clojure test unification.
Build on kaocha with DEV.co software developers
If you're running Clojure or ClojureScript tests and need advanced features like watch mode, selective execution, and CI reporting, review the docs at cljdoc.org and try the CLI. For complex integrations or custom plugins, engage with the community on Clojurians Slack or Clojureverse forum.
Talk to DEV.coRelated on DEV.co
Explore the category and the services that help you build with it.
kaocha FAQ
Can I use Kaocha for ClojureScript testing?
Does Kaocha replace clojure.test, or does it work alongside it?
How do I integrate Kaocha with my CI pipeline?
What's the learning curve for teams new to Clojure tooling?
Custom software development services
DEV.co is a software development agency delivering custom software development services to companies building on open source. Our software developers and web developers design, integrate, and ship production systems — spanning web development, APIs, AI, data, and cloud. If kaocha is part of your open-source testing roadmap, our team can implement, customize, migrate, and maintain it.
Evaluate Kaocha for Your Clojure Project
If you're running Clojure or ClojureScript tests and need advanced features like watch mode, selective execution, and CI reporting, review the docs at cljdoc.org and try the CLI. For complex integrations or custom plugins, engage with the community on Clojurians Slack or Clojureverse forum.