From c3d89504e1b8b3cf8d055ef4f70ca2019e60fe9d Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Wed, 2 Nov 2022 09:17:32 +0100 Subject: [PATCH] fix: clear full screen only in watch mode --- packages/vitest/src/node/logger.ts | 15 +++++++++++++-- packages/vitest/src/node/reporters/base.ts | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/vitest/src/node/logger.ts b/packages/vitest/src/node/logger.ts index 961728751ad1..e6a6c6513b9b 100644 --- a/packages/vitest/src/node/logger.ts +++ b/packages/vitest/src/node/logger.ts @@ -35,6 +35,15 @@ export class Logger { this.console.warn(...args) } + clearFullScreen(message: string) { + if (this.ctx.server.config.clearScreen === false) { + this.console.log(message) + return + } + + this.console.log(`\x1Bc${message}`) + } + clearScreen(message: string, force = false) { if (this.ctx.server.config.clearScreen === false) { this.console.log(message) @@ -52,7 +61,9 @@ export class Logger { const log = this._clearScreenPending this._clearScreenPending = undefined - this.console.log(`\x1Bc${log}`) + // equivalent to ansi-escapes: + // stdout.write(ansiEscapes.cursorTo(0, 0) + ansiEscapes.eraseDown + log) + this.console.log(`\u001B[1;1H\u001B[J${log}`) } printError(err: unknown, fullStack = false, type?: string) { @@ -82,7 +93,7 @@ export class Logger { } printBanner() { - this.clearScreen('', true) + this.log() const versionTest = this.ctx.config.watch ? c.blue(`v${version}`) diff --git a/packages/vitest/src/node/reporters/base.ts b/packages/vitest/src/node/reporters/base.ts index 9df552f9408e..135b9ba464c6 100644 --- a/packages/vitest/src/node/reporters/base.ts +++ b/packages/vitest/src/node/reporters/base.ts @@ -154,13 +154,13 @@ export abstract class BaseReporter implements Reporter { const TRIGGER = trigger ? c.dim(` ${this.relative(trigger)}`) : '' if (files.length > 1) { // we need to figure out how to handle rerun all from stdin - this.ctx.logger.clearScreen(`\n${BADGE}${TRIGGER}\n`, true) + this.ctx.logger.clearFullScreen(`\n${BADGE}${TRIGGER}\n`) this._lastRunCount = 0 } else if (files.length === 1) { const rerun = this._filesInWatchMode.get(files[0]) ?? 1 this._lastRunCount = rerun - this.ctx.logger.clearScreen(`\n${BADGE}${TRIGGER} ${c.blue(`x${rerun}`)}\n`) + this.ctx.logger.clearFullScreen(`\n${BADGE}${TRIGGER} ${c.blue(`x${rerun}`)}\n`) } this._timeStart = new Date()