Package io.karatelabs.output
Class HtmlReportWriter
java.lang.Object
io.karatelabs.output.HtmlReportWriter
Generates HTML reports with inlined JSON data and Alpine.js client-side rendering.
This implementation uses a single-file HTML architecture where:
- JSON data is inlined in a
<script type="application/json">tag - Alpine.js renders the content client-side
- No server-side template rendering is required
Output structure:
target/karate-reports/
├── karate-results.jsonl (streamed during execution, optional)
├── index.html (redirects to karate-summary.html)
├── karate-summary.html (summary page with tag filtering)
├── features/
│ └── {feature.path}.html (per-feature reports, dot-based naming)
└── res/
├── bootstrap.min.css
├── alpine.min.js
└── karate-report.css
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidcopyStaticResources(Path resDir) Copy static resources (CSS, JS, images) to the res directory.static voidwrite(SuiteResult result, Path outputDir, String env) Generate HTML reports from a SuiteResult.static voidwriteFeatureHtml(FeatureResult result, Path outputDir) Write a single feature HTML report.static voidwriteFromJsonLines(Path jsonlPath, Path outputDir) Generate HTML reports from a JSON Lines file.static voidwriteSummaryPages(List<Map<String, Object>> features, SuiteResult result, Path outputDir, String env) Write summary pages (summary, index) from feature maps.static voidwriteTimelineHtml(List<Map<String, Object>> features, SuiteResult result, Path outputDir, String env, int threadCount) Write the timeline HTML page showing scenario execution across threads.
-
Method Details
-
writeFromJsonLines
Generate HTML reports from a JSON Lines file. This is the primary entry point when using streaming viaJsonLinesReportListener.- Parameters:
jsonlPath- the path to the JSON Lines fileoutputDir- the directory to write reports
-
write
Generate HTML reports from a SuiteResult. This is the backward-compatible entry point for direct invocation.- Parameters:
result- the suite result to renderoutputDir- the directory to write reportsenv- the karate environment (may be null)
-
writeFeatureHtml
Write a single feature HTML report. Used byHtmlReportListenerfor async feature HTML generation.- Parameters:
result- the feature result to renderoutputDir- the root output directory (features/ subdirectory will be used)- Throws:
IOException
-
writeSummaryPages
public static void writeSummaryPages(List<Map<String, Object>> features, SuiteResult result, Path outputDir, String env) throws IOExceptionWrite summary pages (summary, index) from feature maps. Used byHtmlReportListenerat suite end.- Parameters:
features- the collected feature maps (from FeatureResult.toJson())result- the suite resultoutputDir- the root output directoryenv- the karate environment (may be null)- Throws:
IOException
-
copyStaticResources
Copy static resources (CSS, JS, images) to the res directory. Made public for use byHtmlReportListener.- Parameters:
resDir- the res directory to copy resources to- Throws:
IOException
-
writeTimelineHtml
public static void writeTimelineHtml(List<Map<String, Object>> features, SuiteResult result, Path outputDir, String env, int threadCount) throws IOExceptionWrite the timeline HTML page showing scenario execution across threads. Used byHtmlReportListenerat suite end.- Parameters:
features- the collected feature maps (from FeatureResult.toMap())result- the suite resultoutputDir- the root output directoryenv- the karate environment (may be null)threadCount- the number of threads used for parallel execution- Throws:
IOException
-