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

@devant-net/bun-test-reporter

v0.1.2

Published

Bun test reporter for Devant Cloud — wraps `bun test`, parses its JUnit output, and streams runs/results into /v1/runs/*.

Downloads

375

Readme

@devant-net/bun-test-reporter

bun test wrapper that streams test runs into Devant Cloud.

Why this is a wrapper, not a "reporter"

Bun's test runner does not (yet) expose a programmatic reporter API — see oven-sh/bun#26191. The documented extension point is the --reporter=junit --reporter-outfile=... flag pair. This package wraps it: it spawns bun test, forwards your stdout/stderr live, then parses the JUnit XML at the end and POSTs into the Devant Cloud /v1/runs/* API.

When Bun ships a real Reporter API, this package will switch to that without changing its CLI surface.

Install

bun add -d @devant-net/bun-test-reporter

Use

Swap bun test for devq-bun-test in your package.json:

{
  "scripts": {
    "test": "devq-bun-test"
  }
}

Everything you'd normally pass to bun test still works:

DEVQ_PROJECT_ID=7 DEVQ_TOKEN=dq_ci_... \
  devq-bun-test src/**.test.ts --coverage --timeout 10000

Or pass devq options as flags:

devq-bun-test --project-id 7 --api-url https://<tenant>.devant.net \
  --api-token "$DEVQ_TOKEN" -- src/**.test.ts

-- is a hard divider — every arg after it is forwarded to bun test verbatim, even if it looks like a devq flag.

Reserved flags

The wrapper sets --reporter and --reporter-outfile itself; passing either errors out so you notice the misconfiguration instead of silently double-routing your output.

What gets reported

| Bun test event | Devant Cloud action | | -------------------------- | ---------------------------------------------------- | | process start (before run) | POST /v1/runs — create the run, capture CI info | | every <testcase> in XML | POST /v1/runs/:id/results — status, duration, err | | process exit | POST /v1/runs/:id/complete — stamp finished_at |

Skipped tests, error stacks, and stdout/stderr captures all flow through. JUnit doesn't carry per-test retries, so each test reports exactly one attempt.

Test-case identity

When a result arrives, the reporter resolves it to a test_case in this order:

  1. <property name="devq-key">DEF-AB12</property> (via bun:test's property metadata, when present)
  2. @DEF-AB12 token embedded in the test name
  3. Exact full-name match in the project
  4. Auto-create — the reporter prints @KEY so you can paste it back into source to lock the binding

Orchestrated runs

If DEVQ_RUN_ID is set (or you pass --external-run), the wrapper attaches to that run and skips createRun + completeRun. The orchestrator owns the run lifecycle; this wrapper only streams results.

Exit codes

devq-bun-test exits with the same status as bun test so CI keeps its pass/fail signal. A 2 exit means the wrapper itself failed (argument error or upload failure) — distinct from Bun's 1 for test failures.

License

See LICENSE.