DEV.co
Open-Source Testing · lambdaisland

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.

Source: GitHub — github.com/lambdaisland/kaocha
860
GitHub stars
81
Forks
Clojure
Primary language
EPL-1.0
License (Requires review (not clearly OSI))

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositorylambdaisland/kaocha
Ownerlambdaisland
Primary languageClojure
LicenseEPL-1.0 — Requires review (not clearly OSI)
Stars860
Forks81
Open issues47
Latest releasev1.91.1392 (2024-05-23)
Last updated2025-10-09
Sourcehttps://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.

Quickstart

Get the kaocha source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/lambdaisland/kaocha.gitcd kaocha# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Large Clojure/ClojureScript monorepos with mixed test suites

Organizations running Clojure and ClojureScript in the same codebase benefit from unified test configuration, selective test execution, and watch mode for rapid feedback across both platforms.

Teams adopting Behavior-Driven Development (BDD)

The kaocha-cucumber plugin enables integration of Gherkin-style feature tests alongside unit tests, supporting teams that enforce BDD practices or require non-technical stakeholder collaboration.

CI/CD pipelines requiring standard test reporting

The JUnit XML plugin integrates seamlessly with Jenkins, GitHub Actions, GitLab CI, and other systems, providing structured test results and enabling fail-fast strategies without custom parsing logic.

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.

SignalAssessment
MaintenanceActive
DocumentationStrong
License clarityClear
Deployment complexityLow
DEV.co fitGood
Assessment confidenceHigh
Security considerations

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.

Software development agency

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.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

Related on DEV.co

Explore the category and the services that help you build with it.

kaocha FAQ

Can I use Kaocha for ClojureScript testing?
Yes, via kaocha-cljs (browser-based) or kaocha-cljs2 (Node.js-based). Both are separate plugins requiring additional configuration and runtime setup.
Does Kaocha replace clojure.test, or does it work alongside it?
Kaocha is a test runner that orchestrates clojure.test-compatible tests. It does not replace the assertion macros; tests written in clojure.test syntax run unmodified under Kaocha.
How do I integrate Kaocha with my CI pipeline?
Use the CLI (kaocha <suite>) or the JUnit XML plugin (kaocha-junit-xml) to generate structured reports. Most CI systems auto-detect and parse JUnit XML; consult your CI documentation for test result parsing.
What's the learning curve for teams new to Clojure tooling?
Moderate: Kaocha itself is straightforward, but it assumes comfort with deps.edn or Leiningen, EDN configuration, and REPL workflows. Plan 1–2 days for initial onboarding; the community Slack and forum are active for questions.

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.