Warning
This package is still in the experimental phase. You can expect new functionalities, but with this comes the possibility of more frequent errors
| Home | Stats | Code |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
You can use your favorite package manager
npm i -D coverage-pretty-html-reporter
yarn add -D coverage-pretty-html-reporter
pnpm add -D coverage-pretty-html-reporter
bun add -D coverage-pretty-html-reporterThen configure nyc / c8 to use coverage-pretty-html-reporter
nyc --reporter=coverage-pretty-html-reporter mocha # ...
c8 --reporter=coverage-pretty-html-reporter mocha # ...If you are using jest / vitest or other framework you may place correct config ex.:
/** @type {import('jest').Config} */
const config = {
coverageReporters: ['coverage-pretty-html-reporter'],
};import { defineConfig } from "vitest/config";
export default defineConfig({
plugins: [],
test: {
coverage: {
enabled: true,
// @ts-expect-error
reporter: ["coverage-pretty-html-reporter"],
},
},
});When the reporter UI is embedded in an iframe, the built-in theme toggle button is hidden. In this mode you are expected to control the theme from the parent window.
The iframe listens for postMessage events with the following payload:
type CoverageThemeMessage = {
type: "coverage-theme";
theme: "light" | "dark";
};Example integration in the parent page:
<iframe
id="coverage-report"
src="/path/to/coverage/index.html"
style="width: 100%; height: 100%; border: 0;"
></iframe>
<script>
const iframe = document.getElementById("coverage-report");
function setCoverageTheme(theme) {
iframe?.contentWindow?.postMessage({ type: "coverage-theme", theme }, "*");
}
// Send initial theme once the iframe is loaded
iframe.addEventListener("load", () => {
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
setCoverageTheme(prefersDark ? "dark" : "light");
});
// Example: hook into your own app theme system
window.addEventListener("app-theme-changed", (event) => {
setCoverageTheme(event.detail.theme); // "light" | "dark"
});
</script>Inside the iframe, the selected theme is persisted in localStorage under the coverage-theme key and a coverage-theme-changed CustomEvent is dispatched on window so internal components can react to theme changes.
Fell free to report any bugs & share your ideas. PRs are welcome.
Requirements (see package.json#packageManager):
- bun@1.0.4
- node@^18.17.1
git clone git@github.com:akcyp/coverage-pretty-html-reporter.git
cd coverage-pretty-html-reporter
# Init
bun i
bun run build
# Production testing
bun run demo:nyc # or demo:c8
bun run demo:preview
# UI development
cd packages/reporter
bun run dev
# Reporter development - only production testing
# edit packages/reporter/node/index.ts
cd packages/example
bun run test:c8
bun run test:nyc




