From 8bd26b012778e91c8dc4a3311187dcbe1f9ab5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ari=20Perkki=C3=B6?= Date: Sun, 30 Jul 2023 19:50:57 +0300 Subject: [PATCH] fix(watch): clear screen on all terminals (#3661) --- packages/vitest/src/node/logger.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 = {}) {