Skip to content

Extending Reporters

WARNING

This is an advanced API. If you just want to configure built-in reporters, read the "Reporters" guide.

You can import reporters from vitest/reporters and extend them to create your custom reporters.

Extending Built-in Reporters

In general, you don't need to create your reporter from scratch. vitest comes with several default reporting programs that you can extend.

ts
import { DefaultReporter } from 'vitest/reporters'

export default class MyDefaultReporter extends DefaultReporter {
  // do something
}

Of course, you can create your reporter from scratch. Just extend the BaseReporter class and implement the methods you need.

And here is an example of a custom reporter:

custom-reporter.js
ts
import { BaseReporter } from 'vitest/reporters'

export default class CustomReporter extends BaseReporter {
  onCollected() {
    const files = this.ctx.state.getFiles(this.watchFilters)
    this.reportTestSummary(files)
  }
}

Or implement the Reporter interface:

custom-reporter.js
ts
import { Reporter } from 'vitest/reporters'

export default class CustomReporter implements Reporter {
  onCollected() {
    // print something
  }
}

Then you can use your custom reporter in the vitest.config.ts file:

vitest.config.ts
ts
import { defineConfig } from 'vitest/config'
import CustomReporter from './custom-reporter.js'

export default defineConfig({
  test: {
    reporters: [new CustomReporter()],
  },
})

Reported Tasks

Instead of using the tasks that reporters receive, it is recommended to use the Reported Tasks API instead.

You can get access to this API by calling vitest.state.getReportedEntity(runnerTask):

ts
import type {  } from 'vitest/node'
import type {  } from 'vitest'
import type { ,  } from 'vitest/reporters'

class  implements  {
  private !: 

  (: ) {
    this. = 
  }

  (: []) {
    for (const  of ) {
      // note that the old task implementation uses "file" instead of "module"
      const  = this...() as 
      for (const  of .) {
        .('finished', ., .)
      }
    }
  }
}

Exported Reporters

vitest comes with a few built-in reporters that you can use out of the box.

Built-in reporters:

  1. BasicReporter
  2. DefaultReporter
  3. DotReporter
  4. JsonReporter
  5. VerboseReporter
  6. TapReporter
  7. JUnitReporter
  8. TapFlatReporter
  9. HangingProcessReporter

Base Abstract reporters:

  1. BaseReporter

Interface reporters:

  1. Reporter

Released under the MIT License.