diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 6c822eefa25c..e195ebcf8785 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -329,6 +329,7 @@ export class Vitest { if (this.state.filesMap.has(id)) { this.state.filesMap.delete(id) this.changedTests.delete(id) + this.report('onTestRemoved', id) } } const onAdd = async(id: string) => { diff --git a/packages/vitest/src/node/reporters/default.ts b/packages/vitest/src/node/reporters/default.ts index 5e71007ee290..dbd59781ada1 100644 --- a/packages/vitest/src/node/reporters/default.ts +++ b/packages/vitest/src/node/reporters/default.ts @@ -1,3 +1,4 @@ +import c from 'picocolors' import type { UserConsoleLog } from '../../types' import { BaseReporter } from './base' import type { ListRendererOptions } from './renderers/listRenderer' @@ -7,6 +8,17 @@ export class DefaultReporter extends BaseReporter { renderer?: ReturnType rendererOptions: ListRendererOptions = {} as any + async onTestRemoved(trigger?: string) { + await this.stopListRender() + this.ctx.console.clear() + this.ctx.log(c.yellow('Test removed...') + (trigger ? c.dim(` [ ${this.relative(trigger)} ]\n`) : '')) + const files = this.ctx.state.getFiles(this.watchFilters) + createListRenderer(files, this.rendererOptions).stop() + this.ctx.log() + await super.reportSummary(files) + super.onWatcherStart() + } + onCollected() { if (this.isTTY) { this.rendererOptions.outputStream = this.ctx.outputStream diff --git a/packages/vitest/src/types/reporter.ts b/packages/vitest/src/types/reporter.ts index 684ec823228c..0f79bd53249e 100644 --- a/packages/vitest/src/types/reporter.ts +++ b/packages/vitest/src/types/reporter.ts @@ -8,6 +8,7 @@ export interface Reporter { onFinished?: (files?: File[]) => Awaitable onTaskUpdate?: (packs: TaskResultPack[]) => Awaitable + onTestRemoved?: (trigger?: string) => Awaitable onWatcherStart?: () => Awaitable onWatcherRerun?: (files: string[], trigger?: string) => Awaitable