Bun Test Coverage

SkillAI & models

Use for test coverage with Bun, --coverage flag, lcov reports, thresholds, and CI integration.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Bun Test Coverage skill

What this skill tells your AI

The instructions your AI receives, as published by secondsky/claude-skills in plugins/bun/skills/bun-test-coverage/SKILL.md and read by ahel’s review.

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

Signals

GitHub stars
217
Forks
31
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
bun-test-coverage
Source
github.com/secondsky/claude-skills