diff --git a/src/terminal/ansi.ts b/src/terminal/ansi.ts index f491627..a7159c8 100644 --- a/src/terminal/ansi.ts +++ b/src/terminal/ansi.ts @@ -18,6 +18,7 @@ const keyCtrlD = String.fromCharCode(4); const saveScreen = CSI + "?47h"; const restoreScreen = CSI + "?47l"; const clearScreen = CSI + "2J"; +export const enableWin32InputMode = CSI + "?9001h"; const cursorTo = (x: number, y: number) => { return CSI + (y + 1) + SEP + (x + 1) + "H"; }; diff --git a/src/trace/tracer.ts b/src/trace/tracer.ts index c8bd711..e69ffc5 100644 --- a/src/trace/tracer.ts +++ b/src/trace/tracer.ts @@ -7,6 +7,7 @@ import zlib from "node:zlib"; import process from "node:process"; import fsAsync from "node:fs/promises"; import { promisify } from "node:util"; +import { enableWin32InputMode } from "../terminal/ansi.js"; export type TracePoint = DataTracePoint | SizeTracePoint; @@ -75,8 +76,20 @@ export const saveTrace = async ( if (!fs.existsSync(traceFolder)) { await fsAsync.mkdir(traceFolder, { recursive: true }); } + + // remove win32-input-mode enable sequence if it comes through data + const cleanedTracePoints = tracePoints.map((tracePoint) => { + if ("data" in tracePoint) { + return { + ...tracePoint, + data: tracePoint.data.replaceAll(enableWin32InputMode, ""), + }; + } + return tracePoint; + }); + const trace: Trace = { - tracePoints, + tracePoints: cleanedTracePoints, attempt, ...testName(testId), };