fix(app/e2e): use xterm buffer for alt-screen exit sync
This commit is contained in:
@@ -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) =>
|
||||||
|
|||||||
Reference in New Issue
Block a user