Adapters

Every adapter writes the same kensho-results/ shape. Pick yours, install, wire one config line, and run your tests as usual.

JavaScript / TypeScript

Playwright

pnpm add -D @kaizenreport/kensho-playwright @kaizenreport/kensho
// playwright.config.ts
reporter: [['@kaizenreport/kensho-playwright', { output: 'kensho-results' }]],

Cypress

pnpm add -D @kaizenreport/kensho-cypress @kaizenreport/kensho
// cypress.config.js
module.exports = {
  reporter: '@kaizenreport/kensho-cypress',
};

Jest

pnpm add -D @kaizenreport/kensho-jest @kaizenreport/kensho
// jest.config.js
module.exports = {
  reporters: ['default', '@kaizenreport/kensho-jest'],
};

Vitest

pnpm add -D @kaizenreport/kensho-vitest @kaizenreport/kensho
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import { kenshoReporter } from '@kaizenreport/kensho-vitest';

export default defineConfig({
  test: { reporters: ['default', kenshoReporter()] },
});

Cucumber JS

pnpm add -D @kaizenreport/kensho-cucumber-js @kaizenreport/kensho
// cucumber.js
module.exports = {
  default: {
    format: ['@kaizenreport/kensho-cucumber-js'],
  },
};

Jasmine

pnpm add -D @kaizenreport/kensho-jasmine @kaizenreport/kensho
const { KenshoReporter } = require('@kaizenreport/kensho-jasmine');
jasmine.getEnv().addReporter(new KenshoReporter());

Newman (Postman)

pnpm add -D @kaizenreport/kensho-newman @kaizenreport/kensho
newman run my-collection.json -r '@kaizenreport/kensho-newman'

k6

pnpm add -D @kaizenreport/kensho-k6 @kaizenreport/kensho
k6 run --out 'json=results.json' script.js
npx kensho-k6 results.json

Detox (React Native)

pnpm add -D @kaizenreport/kensho-detox @kaizenreport/kensho
// .detoxrc.js
module.exports = {
  testRunner: { args: { reporters: ['@kaizenreport/kensho-detox'] } },
};

Appium (WebdriverIO)

pnpm add -D @kaizenreport/kensho-appium @kaizenreport/kensho
// wdio.conf.js
exports.config = {
  reporters: ['@kaizenreport/kensho-appium'],
};

XCUITest

pnpm add -D @kaizenreport/kensho-xcuitest @kaizenreport/kensho
xcodebuild test -resultBundlePath ./out.xcresult ...
npx kensho-xcuitest ./out.xcresult

Go (go test -json)

pnpm add -D @kaizenreport/kensho-go @kaizenreport/kensho
go test ./... -json | npx kensho-go

For inline steps + attachments, see the kensho Go helper module.

Python

Pytest

pip install kensho-pytest
pytest --kensho-output kensho-results/

The plugin ships with step(), attach(), label(), link() helpers:

from kensho_pytest import step, attach, label

def test_login():
    label("owner", "mchen")
    with step("Open login page"):
        ...
    with step("Submit credentials"):
        attach("screenshots/login.png")

Robot Framework

pip install kensho-robot
robot --listener kensho_robot suite/

Java / JVM

JUnit 5

<!-- pom.xml -->
<dependency>
  <groupId>com.kaizenreport</groupId>
  <artifactId>kensho-junit5</artifactId>
  <version>1.0.0</version>
  <scope>test</scope>
</dependency>
@ExtendWith(KenshoExtension.class)
class LoginTest {
  @Test void happyPath() {
    Kensho.step("Submit form", () -> { /* ... */ });
  }
}

TestNG

<dependency>
  <groupId>com.kaizenreport</groupId>
  <artifactId>kensho-testng</artifactId>
  <version>1.0.0</version>
  <scope>test</scope>
</dependency>
@Listeners(KenshoListener.class)
public class CheckoutTest { /* ... */ }

Cucumber JVM

<dependency>
  <groupId>com.kaizenreport</groupId>
  <artifactId>kensho-cucumber-jvm</artifactId>
  <version>1.0.0</version>
  <scope>test</scope>
</dependency>
@CucumberOptions(plugin = {"com.kaizenreport.kensho.cucumber.KenshoPlugin"})
public class RunCucumber { }

Ruby

RSpec

# Gemfile
gem 'kensho-rspec', group: :test
# spec/spec_helper.rb
require 'kensho/rspec'
RSpec.configure { |c| c.add_formatter Kensho::RSpec::Formatter }

Cucumber Ruby

gem 'kensho-cucumber', group: :test
cucumber --format Kensho::Cucumber::Formatter

.NET

NUnit

dotnet add package KaizenReportss.Kensho.NUnit
[assembly: NUnit.Framework.AddTestAttachmentsCapability]
[assembly: KaizenReportss.Kensho.NUnit.UseKenshoReporter]

MSTest

dotnet add package KaizenReportss.Kensho.MSTest
[assembly: KaizenReportss.Kensho.MSTest.UseKenshoReporter]

xUnit

dotnet add package KaizenReportss.Kensho.Xunit
<!-- xunit.runner.json -->
{ "reporters": ["KaizenReportss.Kensho.Xunit"] }

Universal fallback — JUnit XML

If no native adapter exists for your framework but it can emit JUnit XML, use the universal adapter:

pnpm add -D @kaizenreport/kensho-junit-xml @kaizenreport/kensho
npx kensho-junit-xml ./test-output/*.xml

You'll get a valid Kensho run with status, duration, and error messages — but no rich steps or screenshots (those require the native adapter for your runner).

Generate + open the report

After any adapter writes kensho-results/:

npx kensho generate
npx kensho open

See CLI reference for every flag.