Class HtmlReportWriter

java.lang.Object
io.karatelabs.output.HtmlReportWriter

public final class HtmlReportWriter extends Object
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 Details

    • writeFromJsonLines

      public static void writeFromJsonLines(Path jsonlPath, Path outputDir)
      Generate HTML reports from a JSON Lines file. This is the primary entry point when using streaming via JsonLinesReportListener.
      Parameters:
      jsonlPath - the path to the JSON Lines file
      outputDir - the directory to write reports
    • write

      public static void write(SuiteResult result, Path outputDir, String env)
      Generate HTML reports from a SuiteResult. This is the backward-compatible entry point for direct invocation.
      Parameters:
      result - the suite result to render
      outputDir - the directory to write reports
      env - the karate environment (may be null)
    • writeFeatureHtml

      public static void writeFeatureHtml(FeatureResult result, Path outputDir) throws IOException
      Write a single feature HTML report. Used by HtmlReportListener for async feature HTML generation.
      Parameters:
      result - the feature result to render
      outputDir - 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 IOException
      Write summary pages (summary, index) from feature maps. Used by HtmlReportListener at suite end.
      Parameters:
      features - the collected feature maps (from FeatureResult.toJson())
      result - the suite result
      outputDir - the root output directory
      env - the karate environment (may be null)
      Throws:
      IOException
    • copyStaticResources

      public static void copyStaticResources(Path resDir) throws IOException
      Copy static resources (CSS, JS, images) to the res directory. Made public for use by HtmlReportListener.
      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 IOException
      Write the timeline HTML page showing scenario execution across threads. Used by HtmlReportListener at suite end.
      Parameters:
      features - the collected feature maps (from FeatureResult.toMap())
      result - the suite result
      outputDir - the root output directory
      env - the karate environment (may be null)
      threadCount - the number of threads used for parallel execution
      Throws:
      IOException