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.