测试

@opentui/core/testing 提供一个默认不写入真实终端的渲染器。它直接使用 screenMode: "main-screen"consoleMode: "disabled"externalOutputMode: "passthrough" 和原生内存输出构造 CliRenderer

import { createTestRenderer } from "@opentui/core/testing"
import { Text } from "@opentui/core"

const { renderer, renderOnce, captureCharFrame } = await createTestRenderer({ width: 40, height: 10 })

renderer.root.add(Text({ content: "Hello" }))
await renderOnce()

console.log(captureCharFrame())
renderer.destroy()
辅助工具说明
rendererCliRenderer 实例
renderOnce()运行一次渲染
flush()等待调度的渲染稳定
waitFor(predicate)重试直到条件通过
waitForFrame(predicate)针对捕获的帧文本进行重试
waitForVisualIdle()等待安静的原生帧
captureCharFrame()将当前字符帧读取为文本
captureSpans()读取带样式的 span 行和光标状态
externalOutput.takeText()读取捕获的 split-footer 输出事件
getNativeStats()读取原生渲染统计
resize(width, height)模拟终端大小调整
mockInput / mockMouse驱动键盘和鼠标输入

当测试需要真实输出传输而不是内存输出时,请使用带有自定义 stdin / stdout 流的 createCliRenderer()