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

vitest-tiny-reporter

v1.3.5

Published

Tiny reporter for vitest

Readme

vitest-tiny-reporter

npm install size NPM npm GitHub issues semantic-release: angular

A minimal reporter for Vitest that provides only the essential information about test runs. Perfect for CI/CD pipelines, git hooks, and AI agent contexts where concise output is crucial.

Why?

  • Cleaner output in tools like lefthook that run multiple checks in parallel
  • Fewer tokens when using AI agents to analyze test results (~90% reduction)
  • Faster to read for humans scanning multiple test outputs
  • Essential info only - no verbose timing breakdowns or file paths

Installation

npm install --save-dev vitest-tiny-reporter

Usage

You can specify the reporter in your vitest.config.ts:

import type { UserConfig } from "vitest/config";
import TinyReporter from "vitest-tiny-reporter";

export default {
  test: {
    reporters: [new TinyReporter()],
  },
} satisfies UserConfig;

Or you can use the reporter from the command line:

vitest --reporter vitest-tiny-reporter

Or with lefthook:

pre-commit:
  parallel: true
  commands:
    test:
      glob: "*.ts"
      run: npx vitest related --reporter=vitest-tiny-reporter --run {staged_files}
      fail_text: "Tests failed"
      env:
        TERM: dumb

Output

With vitest-tiny-reporter

$ npx vitest run --reporter=vitest-tiny-reporter
 ✖ FAIL  1 test failed
 Test Files  1 failed (1)
      Tests  1 failed | 17 passed (18)

With default reporter

$ npx vitest run --reporter=default

 RUN  v3.2.4 /Users/username/project

 ❯ src/example.test.ts (18 tests | 1 failed) 19ms
   ✓ test-suite > should throw error when not initialized 1ms
   ✓ test-suite > when no key > initialize > should not initialize client 1ms
   ✓ test-suite > when authenticated > initialize > should use user context 2ms
   ✓ test-suite > when authenticated > get > should return true when true 1ms
   ✓ test-suite > when authenticated > get > should return false when false 0ms
   ✓ test-suite > when authenticated > get > should return default value when undefined 0ms
   ✓ test-suite > when authenticated > get > should return default value on string values 0ms
   ✓ test-suite > when authenticated > get > should return details 5ms
   ✓ test-suite > when authenticated > changeUser > should change user when valid 1ms
   ✓ test-suite > when authenticated > changeUser > should reject when user is invalid 1ms
   ✓ test-suite > when authenticated > changeUser > should call changeUser with tenant slug 0ms
   ✓ test-suite > when authenticated > changeUser > should call changeUser with tenant object 0ms
   × test-suite > when authenticated > should call close 1ms
     → expected "spy" to not be called at all, but actually been called 2 times

Received:

  1st spy call:

    Array []

  2nd spy call:

    Array []


Number of calls: 2

   ✓ test-suite > when authenticated > should log an error when calling track 0ms
   ✓ test-suite > when authenticated > should call onUpdate 1ms
   ✓ test-suite > when anonymous > initialize > should use anonymous context 0ms
   ✓ test-suite > when anonymous > get > should return value 3ms
   ✓ test-suite > when standalone > get > should return value 0ms

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

 FAIL  src/example.test.ts > test-suite > when authenticated > should call close
AssertionError: expected "spy" to not be called at all, but actually been called 2 times

Received:

  1st spy call:

    Array []

  2nd spy call:

    Array []


Number of calls: 2

 ❯ src/example.test.ts:209:36
    207|     it('should call close', async () => {
    208|       await flags.close();
    209|       expect(mockClient.close).not.toHaveBeenCalled();
       |                                    ^
    210|     });
    211|

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯


 Test Files  1 failed (1)
      Tests  1 failed | 17 passed (18)
   Start at  22:06:43
   Duration  439ms (transform 44ms, setup 0ms, collect 101ms, tests 19ms, environment 103ms, prepare 51ms)