npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rstest-sonar-reporter

v1.0.0

Published

SonarQube Generic Test Execution reporter for rstest

Readme

rstest-sonar-reporter

A rstest reporter that outputs test results in SonarQube's Generic Test Execution XML format.

Installation

npm install -D rstest-sonar-reporter
# or
yarn add -D rstest-sonar-reporter
# or
pnpm add -D rstest-sonar-reporter

Usage

Add SonarReporter to the reporters array in your rstest config:

// rstest.config.ts
import { defineConfig } from "@rstest/core";
import { SonarReporter } from "rstest-sonar-reporter";

export default defineConfig({
  reporters: [new SonarReporter({ outputFile: "reports/sonar-report.xml" })],
});

Then tell SonarQube where to find the report by setting the sonar.testExecutionReportPaths property in your sonar-project.properties:

sonar.testExecutionReportPaths=reports/sonar-report.xml

Options

outputFile (required)

Path where the XML report will be written. The directory is created automatically if it does not exist.

new SonarReporter({ outputFile: "reports/sonar-report.xml" });

onWritePath (optional)

A function that transforms each test file path before it is written into the XML. Useful when SonarQube analyses a project from a root directory that differs from where rstest runs, or when you need to add a path prefix.

new SonarReporter({
  outputFile: "sonar-report.xml",
  onWritePath: (path) => `frontend/${path}`,
});

Output format

The reporter produces a file conforming to the Generic Test Execution schema:

<?xml version="1.0" encoding="UTF-8"?>
<testExecutions version="1">
  <file path="src/math.test.ts">
    <testCase name="math > adds numbers" duration="12" />
    <testCase name="math > fails" duration="5">
      <failure message="expected 1 to be 2">
        <![CDATA[AssertionError: expected 1 to be 2
  at src/math.test.ts:5]]>
      </failure>
    </testCase>
    <testCase name="math > is skipped" duration="0">
      <skipped message=""/>
    </testCase>
  </file>
</testExecutions>
  • Passing tests produce a self-closing <testCase /> element.
  • Failed tests with an AssertionError produce a <failure> child element.
  • Failed tests with any other error type produce an <error> child element.
  • Skipped and todo tests produce a <skipped> child element.
  • Test names include their full suite hierarchy joined with > (e.g. suite > subsuite > test name).
  • Durations are in milliseconds, rounded to the nearest integer.
  • File paths are relative to process.cwd() and use forward slashes.
  • Files are sorted alphabetically for deterministic output.

Credits

Credits to @ariperkkio for the creation of https://www.npmjs.com/package/vitest-sonar-reporter. Inspired the API of this implementation.

License

MIT