fix(app/e2e): use xterm buffer for alt-screen exit sync

This commit is contained in:
Mohamed Boudra
2026-04-21 23:28:35 +07:00
parent 8ee3c6ae1d
commit 7b9cc3d423
@@ -7,24 +7,23 @@ import {
resetTerminalRenderProbe, resetTerminalRenderProbe,
startTerminalFrameSampling, startTerminalFrameSampling,
summarizeTerminalRenderProbe, summarizeTerminalRenderProbe,
terminalVisibleText,
} from "./helpers/terminal-probes"; } from "./helpers/terminal-probes";
import { waitForTerminalContent } from "./helpers/terminal-perf"; import { getTerminalBufferText, waitForTerminalContent } from "./helpers/terminal-perf";
async function waitForAlternateScreenExit(page: Page, afterAlt: string, timeout: number) { async function waitForAlternateScreenExit(page: Page, afterAlt: string, timeout: number) {
let lastText = ""; let lastBufferText = "";
let lastProbe = await readTerminalRenderProbe(page); let lastProbe = await readTerminalRenderProbe(page);
try { try {
await expect await expect
.poll( .poll(
async () => { async () => {
lastText = await terminalVisibleText(page); lastBufferText = await getTerminalBufferText(page);
lastProbe = await readTerminalRenderProbe(page); lastProbe = await readTerminalRenderProbe(page);
return ( return (
lastProbe.altEnterWrites > 0 && lastProbe.altEnterWrites > 0 &&
lastProbe.altExitWrites > 0 && lastProbe.altExitWrites > 0 &&
lastText.includes(afterAlt) lastBufferText.includes(afterAlt)
); );
}, },
{ {
@@ -41,7 +40,7 @@ async function waitForAlternateScreenExit(page: Page, afterAlt: string, timeout:
{ {
afterAlt, afterAlt,
probe: summarizeTerminalRenderProbe(lastProbe), probe: summarizeTerminalRenderProbe(lastProbe),
visibleTextTail: lastText.slice(-500), bufferTextTail: lastBufferText.slice(-500),
}, },
null, null,
2, 2,
@@ -114,9 +113,9 @@ test.describe("Terminal alternate-screen transitions", () => {
); );
expect(probe.resetWrites, "alternate-screen exit should not replay a snapshot reset").toBe(0); expect(probe.resetWrites, "alternate-screen exit should not replay a snapshot reset").toBe(0);
const finalText = await terminalVisibleText(page); const finalBufferText = await getTerminalBufferText(page);
expect(finalText).toContain(historyReady); expect(finalBufferText).toContain(historyReady);
expect(finalText).toContain(afterAlt); expect(finalBufferText).toContain(afterAlt);
const suspiciousFrames = probe.frames.filter( const suspiciousFrames = probe.frames.filter(
(frame) => (frame) =>