diff --git a/packages/vitest/src/node/logger.ts b/packages/vitest/src/node/logger.ts index 76e15a216d88..76ee78cb8264 100644 --- a/packages/vitest/src/node/logger.ts +++ b/packages/vitest/src/node/logger.ts @@ -15,6 +15,12 @@ interface ErrorOptions { project?: WorkspaceProject } +const ESC = '\x1B[' +const ERASE_DOWN = `${ESC}J` +const ERASE_SCROLLBACK = `${ESC}3J` +const CURSOR_TO_START = `${ESC}1;1H` +const CLEAR_SCREEN = '\x1Bc' + export class Logger { outputStream = process.stdout errorStream = process.stderr @@ -50,7 +56,7 @@ export class Logger { return } - this.console.log(`\x1Bc${message}`) + this.console.log(`${ERASE_SCROLLBACK}${CLEAR_SCREEN}${message}`) } clearScreen(message: string, force = false) { @@ -70,9 +76,7 @@ export class Logger { const log = this._clearScreenPending this._clearScreenPending = undefined - // equivalent to ansi-escapes: - // stdout.write(ansiEscapes.cursorTo(0, 0) + ansiEscapes.eraseDown + log) - this.console.log(`\u001B[1;1H\u001B[J${log}`) + this.console.log(`${CURSOR_TO_START}${ERASE_DOWN}${log}`) } printError(err: unknown, options: ErrorOptions = {}) {