mcpField
B
bun-test-coverage

bun-test-coverage

github.com/secondskyTesting & quality240409 installsUpdated 5w ago
Repository

About bun-test-coverage

A code coverage skill for developers using Bun's test runner. It explains built-in reports, thresholds, reporter formats, exclusions, and CI configuration.

Key features

  1. 01Enable coverage from the command line
  2. 02Set coverage thresholds
  3. 03Generate text, lcov, and JSON reports
  4. 04Configure exclusions and output directories
  5. 05Access data through Bun.coverage

Use cases

  1. 01Generate lcov reports in CI
  2. 02Fail tests when coverage falls below a threshold
  3. 03Find uncovered lines and adjust tests

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/secondsky/claude-skills --skill bun-test-coverage

After installing, type/bun-test-coveragein Claude Code to confirm it loaded.

Details

From the project README

Bun Test Coverage

Bun has built-in code coverage reporting without additional dependencies.

Enabling Coverage

# Enable coverage
bun test --coverage

# With threshold (fail if below)
bun test --coverage --coverage-threshold 80

Configuration in bunfig.toml

[test]
coverage = true
coverageThreshold = 0.8  # 80% minimum
coverageDir = "./coverage"

# Patterns to ignore
coverageSkipTestFiles = true

Coverage Output

------------------|---------|---------|-------------------
File              | % Funcs | % Lines | Uncovered Line #s
------------------|---------|---------|-------------------
All files         |   85.71 |   89.23 |
 src/index.ts     |  100.00 |  100.00 |
 src/utils.ts     |   75.00 |   82.35 | 23-25, 41-43
 src/api.ts       |   80.00 |   85.00 | 67, 89-92
------------------|---------|---------|-------------------

Coverage Reporters

# Default console output
bun test --coverage

# Generate lcov report
bun test --coverage --coverage-reporter=lcov

# Multiple reporters
bun test --coverage --coverage-reporter=text --coverage-reporter=lcov
Available Reporters
ReporterOutput
textConsole table (default)
lcovcoverage/lcov.info for CI tools
jsoncoverage/coverage.json

Coverage Thresholds

Set minimum coverage requirements:

# Fail if coverage < 80%
bun test --coverage --coverage-threshold 80

# Per-metric thresholds in bunfig.toml
[test]
coverage = true
coverageThreshold = {
  lines = 80,
  functions = 75,
  branches = 70
}

Excluding Files

[test]
coverage = true

# Skip test files from coverage
coverageSkipTestFiles = true

# Patterns to exclude
coverageIgnore = [
  "**/*.test.ts",
  "**/fixtures/**",
  "**/mocks/**"
]

CI Integration

GitHub Actions
- name: Run tests with coverage
  run: bun test --coverage --coverage-reporter=lcov

- name: Upload coverage to Codecov
  uses: codecov/codecov-action@v5
  with:
    files: ./coverage/lcov.info
Output Directory
# Custom output directory
bun test --coverage --coverage-dir=./reports/coverage

Programmatic Coverage

import { test, expect } from "bun:test";

// Get coverage data programmatically
const coverage = Bun.coverage;

// Access after tests complete
process.on("exit", () => {
  console.log(coverage.getCoverageData());
});

Common Errors

ErrorCauseFix
Coverage threshold not metCoverage below thresholdIncrease test coverage
No coverage dataFiles not executedCheck test includes file
lcov not foundMissing reporterAdd --coverage-reporter=lcov

Best Practices

  1. Set realistic thresholds - Start at 60%, increase gradually
  2. Exclude generated files - Mock files, type definitions
  3. Focus on critical paths - Business logic over boilerplate
  4. Run in CI - Prevent coverage regression

When to Load References

Load references/reporters.md when:

  • Custom reporter configuration
  • CI/CD integration details
  • Codecov/Coveralls setup

Comments

Markdown supported