UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

55 lines (54 loc) 1.99 kB
import { CliRenderer, type CliRendererConfig } from "../renderer.js"; import type { NativeRenderStats } from "../zig.js"; import { createMockKeys } from "./mock-keys.js"; import { createMockMouse } from "./mock-mouse.js"; import type { CapturedFrame } from "../types.js"; export interface TestRendererOptions extends CliRendererConfig { width?: number; height?: number; kittyKeyboard?: boolean; otherModifiersMode?: boolean; } export type TestRenderer = CliRenderer; export type MockInput = ReturnType<typeof createMockKeys>; export type MockMouse = ReturnType<typeof createMockMouse>; export interface TestFlushOptions { maxPasses?: number; } export interface TestVisualIdleOptions { quietFrames?: number; maxFrames?: number; } export interface TestWaitForOptions { maxPasses?: number; } export interface TestExternalOutputCommit { text: string; rows: string[]; width: number; height: number; rowColumns: number; startOnNewLine: boolean; trailingNewline: boolean; } export interface TestExternalOutput { take(): TestExternalOutputCommit[]; takeText(): string; clear(): void; } export interface TestRendererSetup { renderer: TestRenderer; mockInput: MockInput; mockMouse: MockMouse; renderOnce: () => Promise<void>; flush: (options?: TestFlushOptions) => Promise<void>; waitFor: (predicate: () => boolean | Promise<boolean>, options?: TestWaitForOptions) => Promise<void>; waitForFrame: (predicate: (frame: string) => boolean | Promise<boolean>, options?: TestWaitForOptions) => Promise<string>; waitForVisualIdle: (options?: TestVisualIdleOptions) => Promise<void>; externalOutput: TestExternalOutput; getNativeStats: () => NativeRenderStats; captureCharFrame: () => string; captureSpans: () => CapturedFrame; resize: (width: number, height: number) => void; } export declare function createTestRenderer(options: TestRendererOptions): Promise<TestRendererSetup>;