mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-20 09:09:35 +02:00
58 lines
2.1 KiB
TypeScript
58 lines
2.1 KiB
TypeScript
import { createRequire } from 'node:module';
|
|||
|
|
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
||
|
|
import { chromium, type Browser } from 'playwright';
|
||
|
|
import { createStyledPaneCapture } from './fixtures/styled-pane-capture.js';
|
||
|
|
|
||
|
|
let browser: Browser;
|
||
|
|
let capture: Awaited<ReturnType<typeof createStyledPaneCapture>>;
|
||
|
|
beforeAll(async () => {
|
||
|
|
capture = await createStyledPaneCapture();
|
||
|
|
browser = await chromium.launch({ headless: true });
|
||
|
|
});
|
||
|
|
afterAll(async () => {
|
||
|
|
await browser?.close();
|
||
|
|
});
|
||
|
|
|
||
|
|
describe('captured status-bar colors stay out of live writes (#629)', () => {
|
||
|
|
it.each([
|
||
|
|
[true, true],
|
||
|
|
[true, false],
|
||
|
|
[false, false],
|
||
|
|
])('fullHistory=%s, geometry=%s', async (fullHistory, geometry) => {
|
||
|
|
const snapshot = capture(fullHistory, geometry);
|
||
|
|
expect(snapshot).not.toBeNull();
|
||
|
|
const page = await browser.newPage();
|
||
|
|
try {
|
||
|
|
await page.setContent('<div id="terminal"></div>');
|
||
|
|
await page.addScriptTag({ path: createRequire(import.meta.url).resolve('@xterm/xterm') });
|
||
|
|
const result = await page.evaluate(async (snapshot) => {
|
||
|
|
const terminal = new (window as any).Terminal({ cols: 40, rows: 2 });
|
||
|
|
terminal.open(document.getElementById('terminal'));
|
||
|
|
const write = (data: string) => new Promise<void>((resolve) => terminal.write(data, resolve));
|
||
|
|
await write(snapshot!);
|
||
|
|
const status = terminal.buffer.active.getLine(1).getCell(0);
|
||
|
|
const statusBackground = status.getBgColor();
|
||
|
|
await write('\x1b[1;1Htyped\x1b[K');
|
||
|
|
const line = terminal.buffer.active.getLine(0);
|
||
|
|
const result = {
|
||
|
|
statusBackground,
|
||
|
|
text: line.translateToString(true),
|
||
|
|
typedDefault: line.getCell(0).isBgDefault(),
|
||
|
|
erasedDefault: line.getCell(10).isBgDefault(),
|
||
|
|
statusAfter: terminal.buffer.active.getLine(1).getCell(0).getBgColor(),
|
||
|
|
};
|
||
|
|
terminal.dispose();
|
||
|
|
return result;
|
||
|
|
}, snapshot);
|
||
|
|
expect(result).toEqual({
|
||
|
|
statusBackground: 2,
|
||
|
|
text: 'typed',
|
||
|
|
typedDefault: true,
|
||
|
|
erasedDefault: true,
|
||
|
|
statusAfter: 2,
|
||
|
|
});
|
||
|
|
} finally {
|
||
|
|
await page.close();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|