Skip to main content
skill CX Codex

bun-test-coverage — Claude Code skill: Bun test coverage setup

A skill for Bun test coverage: the --coverage flag, lcov reports, thresholds and CI wiring. Useful once you have tests and want the percentage visible.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add secondsky/claude-skills --skill bun-test-coverage -a claude-code
Open on GitHub

What bun-test-coverage does

The skill covers Bun's built-in coverage reporting, which needs no extra dependencies. It walks through bun test --coverage, the bunfig.toml settings, and how to read the output table with per-file function and line percentages plus uncovered line numbers.

Reporters get their own section. text prints the console table, lcov writes coverage/lcov.info for CI tools, json produces coverage/coverage.json. Thresholds come from --coverage-threshold or per-metric keys in bunfig.toml: lines, functions, branches. File exclusions go through coverageIgnore.

CI gets a GitHub Actions example that uploads lcov to Codecov. One thing to watch: without coverage = true in bunfig.toml or an explicit --coverage-reporter=lcov, your pipeline gets no report at all — worth checking the config before the first run. The skill suggests starting at a 60% threshold and raising it over time.

What it helps with

  • turn on coverage in Bun without adding packages
  • produce an lcov report for Codecov upload
  • set a minimum threshold and fail the build below it
  • keep test files and fixtures out of the numbers
  • locate uncovered lines by their numbers in the table

Example prompts for the agent

  • run the tests with coverage and list the uncovered lines
  • set up bunfig.toml with an 80% line threshold and the lcov reporter
  • add a coverage step to GitHub Actions and upload lcov to Codecov

How to install bun-test-coverage

1Skills CLI (Vercel)

npx skills add secondsky/claude-skills --skill bun-test-coverage -a claude-code

2Manually: put the files in place

~/.claude/skills/bun-test-coverage/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/bun-test-coverage/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about bun-test-coverage

How do I install bun-test-coverage in Claude?

Run npx skills add secondsky/claude-skills --skill bun-test-coverage -a claude-code. The skill then lives at ~/.claude/skills/bun-test-coverage/SKILL.md.

What does bun-test-coverage do?

It helps you set up Bun test coverage: enabling --coverage, picking reporters, defining thresholds and feeding the report into CI.

Which coverage reporters does Bun support?

text prints a console table, lcov writes coverage/lcov.info for CI tools, and json writes coverage/coverage.json. You can pass several reporters at once.

Source text

SKILL.md · MIT
---
name: bun-test-coverage
description: Use for test coverage with Bun, --coverage flag, lcov reports, thresholds, and CI integration.
metadata:
  version: "1.0.0"
license: MIT
---

# Bun Test Coverage

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

## Enabling Coverage

```bash
# Enable coverage
bun test --coverage

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

## Configuration in bunfig.toml

```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

```bash
# 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

| Reporter | Output |
|----------|--------|
| `text` | Console table (default) |
| `lcov` | `coverage/lcov.info` for CI tools |
| `json` | `coverage/coverage.json` |

## Coverage Thresholds

Set minimum coverage requirements:

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

# Per-metric thresholds in bunfig.toml
```

```toml
[test]
coverage = true
coverageThreshold = {
  lines = 80,
  functions = 75,
  branches = 70
}
```

## Excluding Files

```toml
[test]
coverage = true

# Skip test files from coverage
coverageSkipTestFiles = true

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

## CI Integration

### GitHub Actions

```yaml
- 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

```bash
# Custom output directory
bun test --coverage --coverage-dir=./reports/coverage
```

## Programmatic Coverage

```typescript
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

| Error | Cause | Fix |
|-------|-------|-----|
| `Coverage threshold not met` | Coverage below threshold | Increase test coverage |
| `No coverage data` | Files not executed | Check test includes file |
| `lcov not found` | Missing reporter | Add `--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

© secondsky · MIT · secondsky/claude-skills

Similar skills

All skills for Testing and QA →

From the same set94

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor